Seit einigen Jahren gibt es diverse Smart-Home-Geräte am Markt, die sich leider allzu oft als Sicherheitslücke, Datenschleuder oder — nach der Pleite der Firmen — teure Briefbeschwerer herausstellen. Grund genug, die Sache selbst in die Hand zu nehmen!
Dank der Sprache MicroPython ist die Programmierung von Mikrocontrollern so einfach wie nie zuvor. In diesem Workshop werden wir erste Schritte mit MicroPython auf dem verbreiteten ESP32-Chip wagen und kleine nützliche Projekte zur Automatisierung der eigenen vier Wände realisieren (z. B. einen Wassersensor, ein Thermometer und ein Display).
- Präsentation zum Workshop
- ESP32-Modellübersicht
- Datenblatt ESP32 Mini
- Pinout
- in Software: GPIO-Nummern
- LED: GPIO 8
- BOOT-Button: GPIO 9
- Firmware
- Dokumentation MicroPython
- Dokumentation Python
- Thonny-IDE
- esptool
- Hardware
- Tutorials
Bevor MicroPython genutzt werden kann, muss es auf dem Chip installiert werden. Dieser Vorgang wird als "Flashen" bezeichnet und kann entweder mit dem esptool oder mit Thonny gemacht werden. Dafür wird eine zum Chip passende Firmwaredatei für MicroPython benötigt.
- per esptool
esptool --chip esp32c3 --port /dev/ttyACM0 erase_flash
esptool --chip esp32c3 --port /dev/ttyACM0 --baud 460800 write_flash -z 0x0 ESP32_GENERIC_C3-xxx.bin
- per Thonny:
- unter Werkzeuge > Optionen > Interpreter
- Auswahl Interpreter: "MicroPython (ESP32)"
- "MicroPython installieren oder aktualisieren"
- öffne Werkzeuge > Optionen > Interpreter
- Auswahl Interpreter: "MicroPython (ESP32)"
- Auswahl Port
- "OK"
- in der "Kommondozeile":
help()- Hier sollte eine lange Hilfe kommen, die mit "Welcome to MicroPython on the ESP32!" beginnt.
Interaktiv:
import machine
pin8 = machine.Pin(8, machine.Pin.OUT)
pin8.value(0)
pin8.value(1)per Skript auf Gerät:
- "Speichern" > Micropython device > "main.py"
- Code:
from machine import Pin
from time import sleep
led = Pin(8, Pin.OUT)
while True:
led.value(not led.value())
sleep(1)- Start per RST-Button (oder Strg+D)
- zum Beenden: 🛑 (Strg+F2)
Siehe Ordner code für kommentierte Codeschnipsel für bestimmte Sensoren.
