Inventarverwaltung mit ESP8266, MQTT und Sensorik, die Hardware
Ein Barcodescanner für die Küche klingt erst mal nach Overkill.
Ist es auch. Aber ein kontrollierter, durchdachter Overkill – und genau das macht ihn interessant.
Die Idee hinter dem Projekt ist simpel:
Lebensmittel scannen, Bestände automatisch verwalten und daraus später Einkaufslisten generieren, ohne jedes Mal Zettel, Apps oder das eigene Gedächtnis zu bemühen.
In diesem ersten Teil geht es noch nicht um Software-Logik oder smarte Einkaufsalgorithmen, sondern um das Fundament: die Hardware. Denn bevor irgendwas automatisch einkauft, muss erst mal zuverlässig gescannt werden – und zwar so, dass es auch im Küchenalltag funktioniert.

Die Komponenten
Das Herzstück: das Barcode-Scanner-Modul
Ohne Scanner keine Abfragen. Klingt banal, ist aber einer der entscheidenden Punkte dieses Projekts.
Zum Einsatz kommt ein DollaTek UART Serial Embedded 2D Barcode Scanner v3.0* – ein kompaktes, industriell angehauchtes Scan-Modul, das nicht selbstständig scannt, sondern explizit über einen Taster aktiviert werden muss.
Das ist ein wichtiger Punkt, denn dieses Modul arbeitet nicht wie ein dauerhaft aktiver Kassenscanner. Stattdessen verhält es sich eher wie eine Kamera mit Auslöser:
- kein permanentes Scannen
- keine Dauerbelastung
- keine zufälligen Fehlscans
Erst wenn der Trigger aktiv ist, wird der Scan-Vorgang gestartet und der erkannte Code als reine Textzeile über UART ausgegeben.
Aus Sicht des Controllers ist das angenehm simpel: Zeichen rein, Zeilenumbruch, fertig. Kein USB-HID, keine Tastatur-Emulation, keine Treiber, kein Betriebssystem.
Genau dieser Trigger-Zwang ist der Grund, warum später im Aufbau nicht einfach ein mechanischer Taster, sondern ein Time-of-Flight (ToF) Modul verwendet wird – dazu kommen wir weiter unten beim Thema Abstandssensor.
Das Gehirn: ESP8266 D1 Mini
Ein Scanner allein ist nur ein sehr motiviertes Eingabegerät. Die eigentliche Intelligenz sitzt im ESP8266 D1 Mini*.
Warum der ESP8266?
- WLAN direkt an Bord
- klein, günstig, erprobt
- riesiges Ökosystem
- MQTT? Kein Problem.
Der D1 Mini übernimmt mehrere Aufgaben gleichzeitig:
- Auslesen des Barcode-Scanners per UART
- Steuerung von Display und LEDs
- Kommunikation mit dem MQTT-Broker
- Web-UI für Konfiguration (WLAN, MQTT, Rolle)
Kurz gesagt: Ein Mikrocontroller, der genau weiß, was er kann – und was nicht. Und genau deshalb hier perfekt passt.
Abstand statt Chaos: VL53L0X Time-of-Flight Sensor
Küchen sind chaotisch. Hände, Verpackungen, Tiere, Menschen.
Ein Scanner, der dauerhaft feuert, wäre… nervig.
Die Lösung: ein VL53L0X ToF-Sensor (bezahlter Link).
Der Sensor misst den Abstand vor dem Scanner und steuert damit eine Trigger-/Hold-Logik:
- Objekt nah dran → Scanner aktiv
- Objekt weg → Scanner aus
- Timeout → automatische Entspannung
Das verhindert Doppelscans, Dauerfeuer und ungewollte Erfassungen. Außerdem fühlt es sich erstaunlich „richtig“ an: Hand hin, scannen, Hand weg, fertig.
Technik, die unsichtbar ist, ist die beste Technik.
Visuelles Feedback: WS2812B LED-Ring
Ein Scanner ohne Feedback ist wie ein Toaster ohne Klick. Zwar macht das Scanner-Modul bereits „piep“, aber wir wollen es nerdig haben.
Deshalb sitzt vorne ein WS2812B RGB LED-Ring mit 12 LEDs (bezahlter Link).
Der Ring zeigt:
- Grün oder Rot im Idle-Zustand (IN / OUT Modus)
- ein Lauflicht, solange der ToF-Trigger aktiv ist
- einen kurzen Flash, wenn ein Scan erfolgreich war
Keine Textwüste, keine Icons, kein UI-Overkill. Nur Farben und Bewegung – das Gehirn versteht den Rest von selbst… Und es sieht cool aus.
Klartextanzeige: 1,3 Zoll OLED (SH1106)
Manchmal braucht man doch Text. Zum Beispiel für:
- aktuellen Modus
- Statusmeldungen
- MQTT-gesteuerte Hinweise
- Und für den Software-Teil, der noch kommt
Hier kommt ein 1,3 Zoll OLED Display mit SH1106 Controller (bezahlter Link) zum Einsatz.
Der Text wird automatisch zentriert. Dazu gibt es eine kleine Ring-Grafik, die visuell zum LED-Ring passt. Spielerei? Ja. Aber eine schöne.
Trigger-Ansteuerung: Taster-Bypass (Kontakt nach GND)
Das Scanner-Modul löst den Scan normalerweise über einen Taster aus. Da der Scan in diesem Projekt jedoch per Annäherung gestartet werden soll, wird dieser Tastendruck nicht manuell, sondern per Code simuliert.
Im konkreten Fall ist dieser Taster elektrisch sehr simpel aufgebaut:
- ein Kontakt liegt fest auf GND
- der zweite Kontakt wird beim Drücken des Tasters auf GND gezogen
- dieser Moment reicht aus, um den Scanvorgang zu starten
Genau diesen Mechanismus machen wir uns zunutze – ohne den Taster mechanisch zu betätigen.
Prinzip: ESP8266 simuliert einen Tastendruck nach GND
Der ESP8266 soll den Scan gezielt auslösen können, darf aber nicht direkt mit der Scanner-Elektronik verbunden werden:
- der ESP8266 arbeitet mit 3,3 V Logik
- interne Pullups und Schutzbeschaltungen des Moduls sind unbekannt
Deshalb simuliert der ESP8266 den Tastendruck indirekt über einen Transistor.
Aufbau: Transistor zieht den Tasterkontakt auf GND
Der originale Taster bleibt vollständig erhalten und funktionsfähig. Parallel dazu wird folgende Schaltung ergänzt:
- ein GPIO des ESP8266 steuert die Basis eines NPN-Transistors (z. B. 2N2222, BC547)
- der Emitter des Transistors liegt auf GND
- der Kollektor ist mit dem Tasterkontakt verbunden, der normalerweise beim Tastendruck auf GND gezogen wird
Wird der GPIO aktiv, schaltet der Transistor durch und zieht diesen Kontakt zuverlässig auf GND – elektrisch identisch zu einem gedrückten Taster.
Verkabelung (konkret)
- ESP8266 GPIO → Basis des Transistors über Basiswiderstand (ca. 1 kΩ–4,7 kΩ)
- Emitter → GND (gemeinsame Masse von ESP und Scanner)
- Kollektor → Tasterkontakt, der beim Originaltaster auf GND gezogen wird
Mehr ist nicht nötig.
Wichtig:
- ESP8266 und Scanner müssen dieselbe Masse teilen
- es wird nur dieser eine Kontakt geschaltet, keine Versorgung, kein Signalpin
- der mechanische Taster funktioniert weiterhin parallel
Schaltplan

Zusammenspiel der Komponenten (Code-Auszug)
Der Scanner sendet den Code seriell, der ESP prüft ihn und veröffentlicht ihn per MQTT:
String payload = "{";
payload += "\"ean\":\"" + code + "\",";
payload += "\"qty\":1,";
payload += "\"action\":\"" + String(actionToText()) + "\",";
payload += "\"source\":\"" + String(modeToSource()) + "\",";
payload += "\"uptime_ms\":" + String(millis());
payload += "}";
mqtt.publish(currentTopic(), payload.c_str(), false);
Das Ergebnis landet sauber strukturiert im MQTT-Broker und kann dort weiterverarbeitet werden – Inventar, Statistiken, Einkaufslisten, was auch immer.
Hardware unvermeidliche Kleinzeug
Natürlich besteht ein Barcodescanner für die Küche nicht nur aus den glamourösen Hauptkomponenten.
- ESP8266 D1 Mini (bezahlter Link)
- VL53L0X ToF-Sensor (bezahlter Link)
- WS2812B RGB LED-Ring mit 12 LEDs (bezahlter Link)
- 1,3 Zoll OLED Display mit SH1106 Controller (bezahlter Link)
Am Ende braucht es auch:
- Widerstände (bezahlter Link)
- Transistoren (bezahlter Link)
- Stiftleisten & Dupont-Kabel (bezahlter Link)
- Lochrasterplatine (bezahlter Link)
Das ist der Teil, der nie in Warenkörben glänzt – aber ohne den nichts funktioniert.
Code & Ausblick
Der komplette Code ist Open Source und auf GitHub verfügbar:
👉 GitHub: KitchenScanner – Barcodescanner für die Küche
In den nächsten Schritten geht es dann um:
- Bestandslogik
- automatische Einkaufslisten
- Integration ins Smart Home
- und die Frage, wie viel Automatisierung eine Küche eigentlich verträgt
Spoiler: mehr, als man denkt.
GrayTheZebra ist Entwickler und Betreiber von prokrastinerd.de mit Fokus auf Smart Home ohne Cloud, ESP32 und MQTT-basierte Systeme. Alle Projekte basieren auf praktischer Umsetzung und eigener Hardwareentwicklung.
Autorprofil und Hintergrund:
Über GrayTheZebra

