scanner-i2c.ino

Arduino Nano ESP32 · Archivo : scanner-i2c.ino · Lenguaje : Arduino · Uso : Trouver les adresses I2C sur les broches choisies

La fuerza del ESP32-S3: el I2C se enruta a cualquier pin gracias a la matriz GPIO. Este escáner declara explícitamente SDA=D6/SCL=D5 de la Nano ESP32 y enumera periféricos: el reflejo antes de usar un sensor con dirección dudosa.

Hardware

Un Arduino Nano ESP32 (ESP32-S3 de doble núcleo, Wi-Fi 2,4 GHz + Bluetooth Low Energy, formato físico compatible con el Nano, USB nativo, pines de 3,3 V únicamente). Nano ESP32, uno o varios módulos I2C (dirección 0x76, 0x3C, 0x68...), pull-up si el bus es casero.

Cableado

SDA→D6, SCL→D5 (pinado Wire por defecto de la placa), VCC/GND según módulo.

Funcionamiento

Wire.begin(sda, scl) enruta el controlador I2C a los pines pedidos. endTransmission() prueba el ACK dirección a dirección, de 0x08 a 0x77.

Ejecución

Instala el paquete Arduino ESP32 Boards (o sigue la guía oficial del Nano ESP32), selecciona Arduino Nano ESP32 y carga. Los pines son de 3,3 V: nunca envíes 5 V a una entrada. El monitor serie usa el USB nativo.

Variantes

Crea dos buses Wire(0) y Wire(1) para aislar dos sensores sensibles, o cambia el pinado si choca con un periférico SPI.

scanner-i2c.ino

// Sur l'ESP32-S3, I2C est sur la matrice de broches : on choisit SDA/SCL.
// La Nano ESP32 expose Wire sur D6 (SDA) / D5 (SCL) par defaut.
#include <Wire.h>

const int SDA = 6;
const int SCL = 5;

void setup() {
  Serial.begin(115200);
  Wire.begin(SDA, SCL); // brochage explicite : pas de surprise
  Serial.println(F("Scan I2C 0x08-0x77..."));
  int trouves = 0;
  for (byte a = 0x08; a <= 0x77; a++) {
    Wire.beginTransmission(a);
    if (Wire.endTransmission() == 0) {
      Serial.print(F("repond a 0x"));
      Serial.println(a, HEX);
      trouves++;
    }
  }
  if (!trouves) Serial.println(F("aucun peripherique"));
  // Poursuite : ouvrir le bus avec les memes broches partout ailleurs
}

void loop() { delay(1000); }

← Volver a la ficha