Dies ist eine Anleitung zum Bau eines Temperatur-/Druck-Sensors mit dem ESP8266-Microcontroller.
1 Microcontroller NodeMCU, ESP8266
1 Temperatur- & Drucksensor BMP280
1 OLED-Display (128 x 64 Pixel) SSD1306 (white + IIC)
1 Batterie-Gehäuse mit MicroUSB-Stecker oder MicroUSB-Ladegerät
12 Verbindungskabel (6 male-male, 6 female-male)
Totale Kosten: 10-15 $
Bei der Verkabelung muss darauf geachtet werden, dass gleich markierte Pins miteinander verbunden werden:
- VCC/3V3 --> VCC/3V3
- GND --> GND
- SCL --> SCL
- SDA --> SDA
Zudem gehören folgende Pins zu den jeweiligen Bezeichnungen:
- Pin 2 [D2] = SDA
- Pin 3 [D2] = SCL
- CSB = VCC/3V3
- SD0 = GND
- Lade die nötigen Dateien an deinem Computer herunter. Entweder von github oder von diesem Link. Die heruntergeladene Zip-Datei muss nun entpackt/extrahiert werden. Nun sollte ein extrahierter Ordner "Sensor" auf dem Computer vorhanden sein.
- Verbinde deinen Computer mit dem WLAN des ESP8266. Der WLAN-Name lautet "Sensor_xx", wobei
xx
der grünen Zahl auf dem ESP8266-Microcontroller entspricht. Das Passwort ist:iotsensxx
. Hier istxx
ebenfalls die grüne Nummer auf dem Chip. - Öffne die Datei
webrepl.html
aus dem OrdnerWebREPL
(WebREPL
befindet sich im OrdnerSensor
). - Falls du dich nicht mit dem WLAN des ESP8266 verbinden kannst, überprüfe die Verkabelung oder betätige den on/off-Schalter am Batteriengehäuse. Beim Einschalten sollte die blaue LED auf dem Microcontroller kurz aufleuchten.
- Bist du mit dem WLAN des ESP8266 verbunden, klicke im geöffneten Browser (WebREPL.html) auf den Button
Connect
. Nun wirst du aufgefordert ein Passwort einzugeben. Dieses lautet:iot1
. - Sende nun die Dateien
ssd1306.py
undbme280.py
an den Microcontroller. Dazu klickst du auf den ButtonDurchsuchen
und wählst zuerst die Dateissd1306.py
aus. Nun auf den ButtonSend to device
klicken. Wiederhole den Vorgang für die Dateibme280.py
. - Nun kannst du den ESP8266-Chip mit MicroPython programmieren.
Im Browser kannst du im schwarzen Feld (mit den >>>
) Befehle eingeben, die dann vom Microcontroller ausgeführt werden.
Klicke ins schwarze Feld und gebe die folgenden Befehle ein. Hast du eine Befehlszeile eingegeben, musst du zum Ausführen des Befehls die Enter-Taste drücken.
1+1
12**34
3/4
>>> import machine
>>> pin = machine.Pin(2, machine.Pin.OUT)
>>> pin.on()
>>> pin.off()
>>> import machine
>>> import ssd1306
>>> i2c = machine.I2C(scl = machine.Pin(4), sda = machine.Pin(5))
>>> oled = ssd1306.SSD1306_I2C(128, 64, i2c)
>>> oled.fill(0)
>>> oled.text('Hallo', 0, 0)
>>> oled.show()
>>> import machine
>>> import ssd1306
>>> import bme280
>>> i2c = machine.I2C(scl = machine.Pin(4), sda = machine.Pin(5))
>>> oled = ssd1306.SSD1306_I2C(128, 64, i2c)
>>> bme = bme280.BME280(i2c = i2c)
>>> bme.values
>>> oled.fill(0)
>>> oled.text(bme.values[0], 0, 0)
>>> oled.show()
(Eckige Klammern können aus einem Dokument/Google-Suche kopiert (mit CTRL-C
) und mit Drücken von CTRL-A
gefolgt von CTRL-V
im WebREPL eingefügt werden.)
- Öffne auf dem Computer die Datei
main.py
aus dem OrdnerSensor
mit dem Texteditor oder Notepad++ (Rechtsklick auf die Datei --> "Öffnen mit..."). - Im Texteditor/Notepad++ kannst du nun die
main.py
-Datei bearbeiten. Beispielsweise kannst du überallFelix
mit deinem Namen ersetzen (oder auch den TitelESP8266 Temperatur-/Drucksensor
ändern). - Speichere das geänderte
main.py
ab ("Datei speichern"). - Wechsle wieder in den Browser zum WebREPL und verbinde dich mit dem Sensor. Klicke dazu auf
Connect
und gib das Passwortiot1
ein. (Vergewissere dich, dass dein Computer mit dem WLAN des ESP8266 verbunden ist.) - Sende die Datei
main.py
an den ESP8266 (mit dem ButtonDurchsuchen
-->main.py
auswählen --> ButtonSend to device
). - Die Datei
main.py
wird beim Neustart des ESP8266 ausgeführt. Zum Neustarten klickst du auf den kleinen KnopfRST
auf dem Microcontroller oder betätige den on/off-Schalter am Batteriengehäuse. - Der IoT-Sensor ist fertig! Mit dem Smartphone kannst du dich jetzt mit dem WLAN des ESP8266 verbinden und im Browser unter der Adresse
192.168.4.1
die aktuellen Temperatur- und Druckwerte ablesen.