I2C-Scanner zum Testen der HuskyLens-Verbindung hinzugefuegt

This commit is contained in:
Stefan Franke 2026-07-15 10:22:49 +00:00
parent 27c24fd24d
commit 112e9b39b9

90
I2C_Scanner_ESP32.ino Normal file
View file

@ -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 <Wire.h>
#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);
}