I²C Doctor Dokumentation
Version 1.0.0
Übersicht
Der I²C Doctor ist ein Embedded Diagnose-Tool mit Display zur einfachen Analyse deiner physischen I²C-Anwendung mit konkreten Empfehlungen (in Englisch).
Spezifikationen
| I²C-Schnittstellen | 1× GROVE/STEMMA, 1× QT/qwIIC, 2× 2.54mm Stiftleiste (male/female) (SDA & SCL sind jeweils durch einen 100Ω Serienwiderstand geschützt) |
|---|---|
| I²C-Geschwindigkeiten | 10kHz / 50kHz / 100kHz / 200kHz / 400kHz / 1MHz |
| I²C-Pullups (zuschaltbar) | 10kΩ / 4.7kΩ / 2.2kΩ / 1kΩ |
| Microkontroller | ESP32 (Dual-Core 240MHz mit 4MB Flash) |
| Display | 1.3" 240x240 TFT |
| Eingangsspannung | 5V (USB-C) |
| VDD (I²C) | 3 – 5V (5V-tolerant) |
| Stromaufnahme | < 200 mA |
| VDD Ausgangsstrom (max.) | ~100 mA (PTC-Sicherung) |
| Abmessungen | 80 × 40 mm (PCB) + ~1.5mm je für USB und Schiebeschalter 84 × 50 mm (Gehäuse) + ~3mm für Schiebeschalter |
| Höhe | 11.5 mm 15.5 mm (Gehäuse mit Pin header) 20mm (PCB mit Nylon-Abstandshaltern) |
| Temperatur | 0 – 70 °C |
| Gewicht | 22 g (PCB + Nylon-Abstandshaltern) 43 g (PCB + Gehäuse) |
| ESD-Schutz (USB & I²C) | Luftentladung: ±15 kV | Kontaktentladung: ±8 kV |
| Firmware-Update | Manuell via Binary-Upload (Access Point) oder USB (ESP Flasher Tool) |
Hardware
Der I²C Doctor bietet die folgende Peripherie:

- #1 I²C-Schnittstelle - Verschiedene Buchsen um deine I²C-Anwendung möglichst einfach mit dem I²C Doctor zu verbinden
- #2 Variable Pullups - Mit den beiden DIP-Switches können wahlweise 4 verschiedenen Pullup-Widerstände (10k, 4.7k, 2.2k, 1k) an SDA (links) und SCL (rechts) dazugeschaltet werden
- #3 Status LEDs - Die 4 Status-LEDs zeigen den aktuellen Zustand des I²C-Busses
- #4 VDD Select Switch - Der VDD SELECT Schiebeschalter verbindet die Spannungsversorgung des I²C Doctors (3.3V) mit dem I²C-Bus
- #5 Display - Das 240x240 TFT Display zeigt das Menü und die verschiedenen Tools des I²C Doctors
- #6 Buttons - Mit den drei Knöpfen kann der I²C Doctor bedient werden
- #7 USB - USB-C-Buchse zum Starten deines I²C Doctors. Serielle Kommunikation: 115200 Baud. Das PWR-LED signalisiert eine saubere 5V Spannungsversorgung
Menü-Navigation
Nach dem Start wird auf dem Display ein Menü dargestellt. Mit den drei Knöpfen rechts navigierst du:
- Button #1 (Oben) → UP
- Button #2 (Mitte) → ENTER (kurzer Klick) / BACK (langer Klick)
- Button #3 (Unten) → DOWN
Diagnose
Die Diagnose ist das Core-Feature des I²C Doctors. Sie analysiert den physikalischen Zustand deiner I²C-Anwendung und gibt Empfehlungen ab.
Ablauf:
- Spannungen messen und Pullups prüfen
- SDA und SCL auf Kurzschlüsse prüfen
- Widerstandswerte, Rise Times, Ströme und Geschwindigkeiten evaluieren
- Angehängte Geräte suchen
- Score berechnen und Empfehlungen formulieren
Scan
Mit dem Address Scanner können angehängte Geräte gefunden werden. Dank einer Datenbank populärer Sensoren können gefundene Geräte teilweise identifiziert werden:
- Grün: eindeutig identifizierter Sensor
- Gelb: mehrere mögliche Sensoren
- Weiss: unbekanntes Gerät
Pullups
Der Pullup Analyzer misst live die Pullup-Widerstände für SDA und SCL und bewertet sie als HIGH (zu hoch), LOW (zu tief) oder GOOD (passend).
Abhängig von der in den Settings gewählten Target Speed werden folgende Grenzwerte verwendet:
Rise Time Grenzwerte
| Target Speed | Rise Time (WARN) | Rise Time (BAD) |
|---|---|---|
| 10 kHz | 8 µs | 12 µs |
| 50 kHz | 2 µs | 3 µs |
| 100 kHz | 800 ns | 1200 ns |
| 200 kHz | 600 ns | 900 ns |
| 400 kHz | 250 ns | 400 ns |
| 1 MHz | 100 ns | 160 ns |
Strom Grenzwerte
| Target Speed | Strom (WARN) | Strom (BAD) |
|---|---|---|
| 10 kHz | 2 mA | 3 mA |
| 50 kHz | 2 mA | 3 mA |
| 100 kHz | 2 mA | 3 mA |
| 200 kHz | 2 mA | 3 mA |
| 400 kHz | 4 mA | 6 mA |
| 1 MHz | 14 mA | 20 mA |
Live Monitor
Der Live Monitor ist ein stiller Zuhörer. Er analysiert passiv die I²C-Kommunikation eines angehängten Masters:
- Aktuelle Busgeschwindigkeit
- Anzahl gesendeter Pakete
- Auslastung in Bytes/s (%)
- Letzte 8 empfangene Bytes und letzte Adresse
Stress Test
Mit dem Stress Test kann die Stabilität der I²C-Kommunikation eines einzelnen Geräts geprüft werden. Dabei wird eine grosse Anzahl (Count) I²C-Read-Befehle an die eingestellte Adresse (Addr) mit der gewählten Geschwindigkeit (Speed) gesendet und deren ACKs geprüft.
Fault Injection
Mittels Fault Injection können Fehlverhalten und Extremfälle simuliert werden:
Long Cable (C)
Schaltet eine von vier wählbaren Kapazitäten an SDA und SCL, um schlechte Busqualität bzw. lange Kabel zu simulieren. 50 pF entspricht ca. 1 m Kabellänge.
Noise (EMV)
Injiziert kurze Störimpulse auf SDA im Intervall von 1–100 Hz. Bei einer positiven SCL-Flanke wird SDA gezielt für ~8 µs auf LOW gezogen.
SDA Hold
Simuliert einen fehlerhaften Sensor, der den Bus blockiert. Beim ersten Datenbit wird SDA für eine einstellbare Dauer (ca. 5 µs – 1 ms) auf LOW gezogen.
Clock Stretch
Simuliert einen Sensor, der nach einem Befehl zusätzliche Rechenzeit benötigt. Nach einem ACK-Bit wird SCL für eine einstellbare Dauer (ca. 5 µs – 1 ms) auf LOW gezogen.
Bus Recovery
Im Falle eines blockierten I²C-Busses (SDA bleibt LOW) kann Bus Recovery versuchen, den Bus wieder freizugeben. Es werden 9 Clock-Pulse (je ~5 µs) und eine STOP-Bedingung gesendet.
Addr. Converter
Wandelt eine 7-Bit-Adresse in die entsprechenden 8-Bit-Äquivalente für Write und Read um.
Speed Scout
Ermittelt die maximal noch funktionierende Lese-Geschwindigkeit eines Sensors. Für dauerhaft stabile Kommunikation empfiehlt es sich, die in der Diagnose vorgeschlagenen Geschwindigkeiten zu verwenden.
Continuous Scan
Scannt kontinuierlich alle I²C-Adressen. Gefundene Geräte werden mit X markiert. Neu erkannte Geräte erscheinen für zwei Runden in Grün, entfernte Geräte für zwei Runden in Rot (/).
Write / Read
Write Byte
Sendet ein einzelnes Byte an das eingestellte Gerät (Addr).
Write Register
Schreibt ein einzelnes Byte in ein Register des eingestellten Geräts (Addr).
Read Bytes
Liest 1–4 Bytes (Len) vom eingestellten Gerät (Addr). Gelesene Daten werden in Hex (Big-Endian) angezeigt.
Read Register
Liest ein einzelnes Byte aus einem Register des eingestellten Geräts (Addr).
Register Dump
Liest alle Register (0x00–0xFF) des eingestellten Geräts aus und stellt sie als Hex-Tabelle dar. Mit Klick nach unten wird die nächste Seite angezeigt.
Sensor Simulator
Im Sensor Simulator fungiert der I²C Doctor als I²C-Slave. Wähle eine beliebige Adresse und ein Daten-Byte und starte mit START. Das eingestellte Byte (TX) kann nun von einem I²C-Master gelesen werden. Die letzten 8 an diesen Slave gesendeten Bytes (LAST RX) werden ebenfalls in Hex angezeigt.
Settings
In den Settings können global gültige Werte eingestellt werden. Alle Settings werden persistent gespeichert.
Target Speed
Die gewünschte I²C-Geschwindigkeit. Wird überall dort angezeigt (oben links), wo sie verwendet wird.
Display Rotation
Dreht die Display-Ausrichtung — z.B. für Linkshänder.
Display Brightness
Passt die Display-Helligkeit an (1–100%).
Calibration
Jeder I²C Doctor wird in der Fabrik kalibriert. Mit diesem Setting kann der Kalibrierungsprozess bei Bedarf wiederholt werden.
Factory Reset
Setze hier alle Einstellungen, Scores und Kalibrierung auf den Auslieferzustand zurück.
About & Firmware Update
Im About-Screen werden gerätespezifische Informationen angezeigt, wie z.B. die aktuelle Firmware-Version.
Firmware Update (OTA)
Falls eine neuere Firmware-Version (.bin) verfügbar ist, kann sie folgendermassen Over-The-Air auf den I²C Doctor geflasht werden:
- Im Hauptmenü ABOUT wählen
- Im ABOUT-Screen unten rechts UPDATE FW wählen
- QR-Code scannen, um das Smartphone mit dem I²C Doctor zu verbinden — oder manuell den WLAN Access Point «I²C Doctor» (kein Passwort) auswählen
- Next klicken und den neuen QR-Code scannen — oder im Browser http://192.168.4.1 öffnen
- Die i2c_doctor_fw_vXXX.bin-Datei hochladen und auf Flash Firmware klicken

Links & Downloads
- 🔗 Quick Start Guide
- 📄 Firmware V1.0.0 (.BIN)
- 📄 Schema V10 (.PDF)
- 📦 2D PCB Layout V10 (.DXF)
- 📦 3D PCB Modell V10 (.ZIP)
- 📦 3D Gehäuse V11 (.ZIP)
- 📄 I²C Master Test-Script: Live Monitor (.INO)
- 📄 I²C Master Test-Script: Sensor Simulator Read (.INO)
- 📄 I²C Master Test-Script: Sensor Simulator Write (.INO)
- 🔗 ESP32 Flash Download Tool User Guide
- 📄 Bootloader (.BIN)
- 📄 Partition Table (.BIN)
- 🎵 I2C Doctor Soundtrack - Metal Variant - made by St3tter with Suno (.MP3)
- 🎵 I2C Doctor Soundtrack - Metal Variant - made by St3tter with Suno (.MP3)
- 📄 (DoC) EU Declaration of Conformity (.PDF)