scanner-i2c.ino

Arduino Nano ESP32 · Fichier : scanner-i2c.ino · Langage : Arduino · Usage : Trouver les adresses I2C sur les broches choisies

La force de l'ESP32-S3 : l'I2C est routable sur n'importe quelle broche grâce à la GPIO matrix. Ce scanner déclare explicitement SDA=D6/SCL=D5 de la Nano ESP32 puis énumère les périphériques — le réflexe avant d'utiliser un capteur dont l'adresse est douteuse.

Matériel requis

Un Arduino Nano ESP32 (ESP32-S3 double cœur, Wi-Fi 2,4 GHz + Bluetooth Low Energy, brochage physique compatible Nano, USB natif, broches 3,3 V uniquement). Nano ESP32, un ou plusieurs modules I2C (adresse 0x76, 0x3C, 0x68...), pull-up si bus bricolé.

Câblage

SDA→D6, SCL→D5 (brochage Wire par défaut de la carte), VCC/GND selon module.

Fonctionnement

Wire.begin(sda, scl) route le contrôleur I2C sur les broches demandées. endTransmission() teste l'ACK adresse par adresse, de 0x08 à 0x77.

Exécution

Installez le package Arduino ESP32 Boards (ou le guide Nano ESP32 officiel), sélectionnez Arduino Nano ESP32, téléversez. Les broches sont en 3,3 V : n'envoyez jamais 5 V sur une entrée. Le moniteur série utilise l'USB natif.

Variantes

Créez deux bus Wire(0) et Wire(1) pour isoler deux capteurs sensibles, ou changez de brochage en cas de conflit avec un périphérique 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); }

← Retour à la fiche