diff --git a/I2C_Scanner_ESP32.ino b/I2C_Scanner_ESP32.ino new file mode 100644 index 0000000..6de007a --- /dev/null +++ b/I2C_Scanner_ESP32.ino @@ -0,0 +1,90 @@ +/* + * I2C-Scanner fuer ESP32 + * ----------------------- + * Zweck: Pruefen, ob die HUSKYLENS 2 (oder ein anderes I2C-Geraet) + * ueberhaupt am I2C-Bus antwortet. + * + * Warum dieser Test? + * Wenn im Hauptprogramm staendig "HuskyLens 2 nicht gefunden" erscheint, + * liegt das FAST IMMER an der Hardware (Verkabelung / Stromversorgung), + * nicht am Programm. Dieser Scanner trennt beide Faelle sauber: + * + * -> Scanner findet 0x32 = Verkabelung/Strom OK, Fehler liegt im Programm. + * -> Scanner findet NICHTS = Verkabelung, Pins, Masse oder Stromversorgung + * pruefen (siehe Checkliste unten). + * + * Die HUSKYLENS 2 meldet sich im I2C-Modus auf der Adresse 0x32. + * + * Wichtig bei der HUSKYLENS 2: + * - Sie braucht mehr Strom, als die I2C-Pins des ESP32 liefern koennen! + * -> Kamera zusaetzlich ueber ihren eigenen USB-C-Anschluss mit Strom + * versorgen (Netzteil/Powerbank). + * - Gemeinsame Masse (GND) zwischen ESP32 und Kamera nicht vergessen. + * - Im Kamera-Menue muss "Protocol Type" auf I2C stehen (ist Standard). + * + * Anschluss (Standard ESP32-WROOM / DevKit): + * SDA -> GPIO 21 + * SCL -> GPIO 22 + * GND -> GND + * (Bei ESP32-S3 / -C3 ggf. andere Pins! Dann I2C_SDA / I2C_SCL unten anpassen.) + * + * Nach dem Hochladen: Seriellen Monitor mit 115200 Baud oeffnen. + */ + +#include + +#define I2C_SDA 21 // ggf. an euer Board anpassen +#define I2C_SCL 22 // ggf. an euer Board anpassen + +void setup() { + Serial.begin(115200); + delay(500); + + Wire.begin(I2C_SDA, I2C_SCL); + + Serial.println("================================="); + Serial.println(" I2C-Scanner fuer ESP32"); + Serial.println("================================="); + Serial.println("Gesucht wird u.a. die HUSKYLENS 2 auf Adresse 0x32."); + Serial.println(); +} + +void loop() { + byte gefunden = 0; + + Serial.println("Scanne I2C-Bus ..."); + + for (byte adresse = 1; adresse < 127; adresse++) { + Wire.beginTransmission(adresse); + byte fehler = Wire.endTransmission(); + + if (fehler == 0) { + gefunden++; + Serial.print(" -> Geraet gefunden auf Adresse 0x"); + if (adresse < 16) Serial.print("0"); + Serial.print(adresse, HEX); + + if (adresse == 0x32) { + Serial.print(" <== das ist die HUSKYLENS 2!"); + } + Serial.println(); + } + } + + if (gefunden == 0) { + Serial.println(" Kein I2C-Geraet gefunden!"); + Serial.println(" Bitte pruefen:"); + Serial.println(" 1. HUSKYLENS 2 ueber eigenen USB-C mit Strom versorgt?"); + Serial.println(" 2. SDA/SCL richtig verbunden (nicht vertauscht)?"); + Serial.println(" 3. Gemeinsame Masse (GND) zwischen ESP32 und Kamera?"); + Serial.println(" 4. Richtige Pins fuer euer ESP32-Board eingestellt?"); + Serial.println(" 5. Am Kamera-Menue Protocol Type = I2C?"); + } else { + Serial.print(" Fertig. "); + Serial.print(gefunden); + Serial.println(" Geraet(e) gefunden."); + } + + Serial.println(); + delay(3000); +}