Wer steuern will, benötigt IO’s in Form von Relaisausgängen oder Digitalpins.
Eine Variante will ich hier kurz vorstellen. Ich nutze diese selber gerne, da sie unkompliziert in der Anwendung und leicht zu programmieren sind.
Das in vielen Shops erhältliche „ESP Relais Board„
Es ist in verschiedenen Variationen erhältlich:
- 4-Relais Output mit 5 bzw. 7-30V DC und optionaler 230V AC-Versorgung
- 8-Relais Output mit 5 bzw. 7-30V DC-Versorgung
- 2-Relais Output mit 5-60V DC
- 1-Relais Output Single-Module für Breadboard Anwendung
(optional Huckepack auf einem ESP-Modul) - ESP8266 oder ESP32 SoC mit bis zu 16MB Flash (optimal: 4MB)
- Varianten mit SSR-Output
Preislich liegen die meisten Boards zwischen 5-25€
Durch den verwendeten SoC besitzen diese Boards die Fähigkeit per WiFi geschaltet zu werden. Die IO’s müssen also nicht direkt mit der Hausautomatisierung (Home Assistant, NodeRed, etc.) verbunden sein. Sie können aber optional über die serielle Schnittstelle angesprochen werden. Mit zusätzlicher Hardware sind RS-485 oder andere Bussysteme möglich.
Praktische Anwendung:
Ich beschreibe hier nun mein Vorgehen mit einem 4-ch Relaisboard mit 230V AC-Versorgung. Dies funktioniert aber analog mit anderen Boards. Als Programmer nutze ich einen Raspberry Pi.
Als Software auf dem Board nutze ich Tasmota.
Für die Programmierung ist die 230V Versorgung noch nicht nötig!
Im ersten Schritt sollten die Stiftleisten eingelötet werden. Benötigt werden die Pins für die ttl-Schnittstelle und für die Relay-I/O Kopplung. Die vier Jumper werden noch nicht aufgesteckt. (Verhindert klackern bei der Programmierung)
Das Board wird jetzt mit dem USB2ttl-Adapter verbunden. Dazu werden 4(5) Jumperkabel benötigt. Verbunden werden GND, 5V, RX & TX. Auf dem ESP-Board wird der IO-Pin „IO0“ auf GND gelegt und somit ein Reset-Signal auf den SoC gegeben, damit der SoC im Bootloader stoppt. RX & TX werden natürlich vertauscht aufgesteckt! RX vom Board geht auf TX vom USB-Adapter. TX entsprechend auf RX am Adapter.
Die Spannungsversorgung kommt während der Programmierung vom USB-Adapter. Daher, ist der Anschluss mit den vier Kabeln zum Adapter erledigt. Den Pin „IO0“ kann man entweder per Jumper mit GND verbinden, oder wie im Bild mit einem Jumperkabel. Durch das auf GND ziehen wird der Bootloader stoppen und auf den Flashvorgang warten.
Software installieren und Speicher flashen
(Die Anleitung funktioniert bei ESP-Boards mit integrierter USB-Schnittstelle ebenfalls. Hier ist der USB2ttl-Wandler bereits auf dem Board. Der „IO0“ wird oft intern vom Schnittstellen-Chip angesprochen, sodass man meist nur den Reset betätigen muss um die Programmierung zu starten.)
Für die Programmierung wird von mir das esptool.py verwendet. Um das Tool auf dem Raspberry Pi zu installieren muss in der aktuellen Version von RaspberryOS Bookworm das Virtual Environment genutzt werden.
Zur Installation der Software öffnet man das Terminal oder loggt sich über ssh in den RPi ein.
Um ein User-weites Virtual Environment anzulegen, gibt man folgendes ein:
$ python -m venv ~/.env
Danach wechselt man in das Download-Verzeichnis, lädt und entpackt die Tasmota-Binary.
$ cd ~/Downloads
$ wget http://ota.tasmota.com/tasmota/release/tasmota-DE.bin.gz
$ gunzip tasmota-DE.bin.gz
Im Folgendem wird das Environment aktiviert und das esptool.py mit „pip“ installiert.
$ source ~/.env/bin/activate
(.env)$ pip install esptool
Jetzt kann der USB-Adapter mit dem verkabelten Board an den Raspberry angesteckt werden.
Nun wird ermittelt wie der USB2ttl-Adapter in das System eingebunden wurde:
(.env)$ dmesg
[128.155660] usb 1-2.3: new full-speed USB device number 6 using xhci-hcd
[128.285538] usb 1-2.3: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
[128.285543] usb 1-2.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[128.285545] usb 1-2.3: Product: USB Serial
[128.339998] usbcore: registered new interface driver usbserial_generic
[128.340011] usbserial: USB Serial support registered for generic
[128.341290] usbcore: registered new interface driver ch341
[128.341310] usbserial: USB Serial support registered for ch341-uart
[128.341339] ch341 1-2.3:1.0: ch341-uart converter detected
[128.346012] usb 1-2.3: ch341-uart converter now attached to ttyUSB0 <---
Im Anschluss kann der Flash des ESP8266-SoC gelöscht und neu programmiert werden:
Der Befehl von „esptool.py“ wird der Port /dev/ttyUSB0 auf den tatsächlichen Port angepasst.
(.env)$ esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: e8:9f:6d:91:fa:d0
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 3.3s
Hard resetting via RTS pin...
Die Programmierung erfolgt mit diesem Befehl: (Zuvor muss in das Verzeichnis der Tasmota-Binary gewechselt werden.)
(.env)$ cd ~/Downloads
(.env)$ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 tasmota-DE.bin
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: e8:9f:6d:91:fa:d0
Stub is already running. No upload is necessary.
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00000000 to 0x000a2fff...
Flash params set to 0x0340
Compressed 666400 bytes to 476077...
Wrote 666400 bytes (476077 compressed) at 0x00000000 in 10.7 seconds (effective 497.3 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Nach erfolgreicher Programmierung wird das Environment wieder abgeschaltet:
(.env)$ deactivate
Das Environment kann später erneut genutzt werden, ohne neu installiert werden zu müssen. Einfach wieder mit „source ~/.env/bin/activate“ erneut aktivieren.
Nachdem die Programmierung erfolgreich war, kann der Jumper oder das Jumperkabel zum Pin „IO0“ abgezogen werden. Dadurch kann der SoC in das Betriebssystem booten. (Mit dem Jumper bleibt der SoC im Bootloader stehen.) Um das Board zu konfigurieren wird nur noch die Spannungsversorgung benötigt. Es macht allerdings nichts, wenn die RX/TX weiterhin verbunden bleiben.
Im letzten Schritt sollten die vier Jumper gesetzt werden, die die IO’s mit den Relais verbindet.
Wenn die Relais angesteuert werden, leuchtet auch die entsprechende LED auf.
Die Konfiguration wird im nächsten Beitrag erklärt.
Die Spannungsversorgung
Nachdem das Board programmiert und konfiguriert ist, kann es dann für das gewünschte Vorhaben eingesetzt werden. Dazu ist dann die optionale 230V~ Spannungsversorgung oder die beiden anderen DC-Varianten verfügbar.
Achtung!
Arbeiten an 230V~ sollten nur von erfahrenen oder ausgebildeten Personen vorgenommen werden!
Auf dem Board sind zwei Terminalblöcke für die Spannungsversorgung. Ein Block mit zwei Anschlüssen für die AC-Versorgung. Der Block mit den drei Anschlüssen dient der DC-Versorgung.
Beim Block mit den drei Terminals kann man Spannungen von 7-30V DC oder wahlweise 5V DC direkt angeschlossen werden. Wenn man ein 12V Netzteil nutzt, kann man diese an die 7-30V & GND Klemme anschließen und könnte jetzt sogar an der 5V-Klemme die Spannung für z.B. externe Sensoren/Schaltungen abgreifen. (GND würde man dann doppelt belegen.)
Das gezeigt Board ist also in der Lage vielfältig versorgt zu werden, was es sehr flexibel macht.
Was mach ich jetzt mit dem Board?
Mit dem Board lässt sich nun vieles anstellen. Einige Beispiele will ich hier kurz beschreiben.
Schaltbare Steckdosen: Es können mit dem Board Steckdosen geschaltet werden. Ich habe seit gut zwei Jahren einen Kasten mit 3 Steckdosen im Keller liegen, woran unsere eBike-LGs angeschlossen sind.
Automatisierungsaufgaben: schalten, messen, steuern, regeln…
Es lassen sich Pumpen steuern, Magnetventile schalten oder Regler auf/zu fahren. Unter Nutzung zusätzlicher IO-Pin’s lassen sich auch z.B. Temperaturen erfassen und auswerten. Es lassen sich zusätzlich Buzzer oder LED-Stripes ansteuern. Auch das Anschließen von Schaltern oder Tastern ist möglich.
Tasmota kann über mehrere Wege mit einem Haus-Automatisierungssystem kommunizieren. Damit lassen sich vielfältige Projekte realisieren.
Schreibe einen Kommentar