Wir bauen eine Wetterstation auf Basis eines ESP8266 Mikrocontrollers und eines BME280 Sensors.
Für unser Projekt müssen wir MicroPython auf dem Mikrocontroller installieren.
Die passende Version laden wir von der Seite micropython.org/download/ESP8266_GENERIC herunter. Auf der Kommandozeile geht dies mit dem Befehl
wget https://micropython.org/resources/firmware/ESP8266_GENERIC-20231005-v1.21.0.bin
Anschließend müssen wir diese Datei auf den Mikrocontroller flashen. Dies geht mit den Befehlen
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 write_flash --flash_size=detect 0 ESP8266_GENERIC-20231005-v1.21.0.bin
Um die Werte des BME280 Sensors auszulesen, müssen wir den Sensor
- mit Spannung versorgen (
$3.3 V$ und Masse), - ihn per I2C-Bus mit dem ESP8266 verbinden.
Die nötige Spannung von GPIO5
(SCL) und GPIO4
(SDA). Um die Verwirrung größer zu machen, tragen diese ESP-Pins auf dem D1-Mini die Bezeichnungen D1
bzw. D2
.
Die nötige Verschaltung ist daher wie folgt:
Unser Programm client.py
soll
- sich nach dem Start mit dem WLAN verbinden (das benötigen wir später, um unsere Daten in die "Cloud" zu schreiben),
- den Sensor initialisieren, und dann
- regelmäßig alle 30 Sekunden die Sensordaten lesen und ausgeben.
Früher (zu Zeiten, als PCs noch so aussahen) hat man Programme über Programmablaufpläne nach DIN 66001 dokumentiert.
Aufgabe: Erstellt zu dem oben skizzierten Ablauf einen Programmablaufplan.
Wir wollen die Daten nun "von außen" – also ohne USB-Verbindung zum ESP8266 Board – auslesen. Die Idee ist folgende:
- Wir verbinden den ESP8266 mit dem Internet. Dazu verwenden wir die WLAN-Schnittstelle des ESP8266 und verwenden uns mit einem Access-Point.
- Wenn wir eine Verbindung zum Internet haben, senden wir die Daten über das MQTT Protokoll an einen MQTT Broker.
Für erste Tests verwenden wir dabei den öffentlichen Broker
broker.hivemq.com
.
Dafür benötigen wir zwei Dateien:
- Die Datei
umqttsimple.py
implementiert das MQTT-Protokoll, - Die Datei
client.py
verbindet sich mit dem Broker und sendet testweise jede Sekunde eine Nachricht an den Broker.
Zum Anzeigen der Nachrichten verwenden wir zunächst den MQTT Browser Client.