Regeln günstig und mit wenig Aufwand mit ESP32 und Micropython

Anforderungen
- Billig – ein kompletter Aufbau mit Display etc. für unter 50€
- Einfach zu programmieren – du brauchst nur eine Hand voll Python Kommandos kennen um professionelle Regelungen zu realisieren
- Remote übers Netz programmierbar – die RegulatorCard verbindet sich über WLAN und bietet dir eine Webseite auf der du einfach dein Programm ändern kannst. Hast du am Standort der Regelung kein WLAN – so arbeitet die Karte als WLAN-AccessPoint
- Schnittstellen für Visualisierungs/Einstellungsprogramme
- Bei Bedarf erweiterbar über I2C (z.B. mehr Relais)
- Einfach für Anfänger aber auch individuell nutzbar für embedded Profis die ihr komplett eigenes Programm schreiben wollen
Features
- 4 x PT-100 Analoge Temperatursensoren
- 3 x 18C20 Digitale Temperatursensoren
- 3 x Flusssensor
- 3 x PWM-Ausgang mit variabler Spannung
- 8 x Relais
- 1 x DotMatrix-Display via I2C
Hardware

Legende: V : Voltage/Versorgung; G : Ground; S: Signal; AP : AccessPoint; STA : Station; 5 : 5 Volt; VIn : Spannung für PWM

Relais im Betrieb / PWM für geregelte Pumpen (LED-Helligkeit als Demo)
Gehäuse

Das Gehäuse besteht aus 3 3D-Druck Teilen und kann so mit jedem normalen 3D-Drucker gedruckt werden. STL-Dateien findest du weiter unten

Das Gehäuse hat die Abmessungen 145x130x90 mm (LxBxH)
Die Befestigung ist für die Hutschiene vorgesehen
Display

Das Display zeigt den aktuellen Modus RUN / STOP / HANG
Du bekommst die Information ob AP AccessPoint oder STA Wlan Station (Client) Modus aktiv ist und die IP-Adresse über die du dich verbinden kannst
Der #-Balken zeigt die Ausführungen deines Programms (Nicht unbedingt nützlich – aber die Zeile war noch frei 🙂 )
Schaltplan
einfach und übersichtlich

Software
Das hier ist die Webseite mit der du deine Regelungen realisieren kannst. Es gibt links einen Bereich, in dem du die aktuellen Eingangs- und Ausgangswerte siehst. Rechts kannst du drauf los programmieren. Die Konstanten für dein Programm packst du am besten oben in die Settings (zeig später warum). Die Anmeldedaten sind initial admin/12345


Um das Programm zu ändern musst du:
- Laufende Regelung erstmal mit dem Stop-Knopf stoppen.
- Code ändern und ausführen (mit Execute Code) bis alles passt
- Unter dem Programm ist eine grüne Box die dir anzeigt wie lange dein Programm gebraucht hat und auch deine print()-Ausgaben.
- Ist der Rahmen grün ist alles Okay
- Speichere mit Save Code deinen code in den controller
- Jetzt kannst dann die Regelung mit dem Start-Knopf starten
- Schaltest du aus und wieder an, so startet die RegulatorCard sofort wieder dein letztes Programm auszuführen
Schau dir den kurzen Beispielcode mal an:
# So Easy :-)
if SolarPumpMode == "AUTO" and t1 > SolarPumpOnValue:
pwm1 = 20 + min(80, (t1 - SolarPumpOnValue) * 3)
else:
pwm1 = 0
if flow1 > 100 and t5 > RegulatorValveOn:
relais1 = 1
else:
relais1 = 0
# Remember things over iterations
counter1 = get_var("counter1")
counter1 += 1
if counter1 > 5:
relais5 = 1
counter1 = 0
else:
relais5 = 0
set_var("counter1", counter1)
print("Dein erstes Programm läuft !!!")
Eigentlich ist in diesem Minimalbeispiel schon alles was du an Python brauchst um los zu programmieren
Ich hoffe du hast jetzt schon Lust bekommen damit zu Arbeiten 🙂
Aber einwas hab ich noch:
Schnittstellen
Ich hab vorher schon von Schnittstellen gesprochen.
Über den Endpoint http://<IP-Adresse>/data bekommst du die aktuellen Sensor und Aktorenwerte als einfaches JSON
{
"t1": "18",
"t2": "-9999",
"t3": "-9999"
"t4": "18",
"t5": "-9999",
"t6": "-9999",
"t7": "-9999",
"relais1": 0,
"relais2": 0,
"relais3": 1,
"relais4": 0,
"relais5": 0,
"relais6": 0,
"relais7": 1,
"relais8": 0,
"flow1": 0,
"flow2": 0,
"flow3": 0,
"pwm1": 0,
"pwm2": 0,
"pwm3": 0,
"mode": "STOP",
"error": ""
}
Über den Endpoint http://<IP-Adresse>/get-settings bekommst du die aktuellen Konstanten diesmal gleich als Python-Code
SolarPumpMode = "AUS"
SolarPumpOnValue = 7.0
RegulatorValveOn = 42.0
Über den Endpoint http://<IP-Adresse>/save-settings kannst du diese in selber Form setzen (schau dir einfach den Code auf der Webseite dazu an)
Damit kannst du dir solche Visualisierungen bauen:
Visualisierung

Für die Visualisierung (und Einstellungen) reicht ein günstiges Android Tablet das kommt oft günstiger als RPI plus Display, Kabel Netzteil etc. Ein einfaches Tablet bekommt man bei Amazon schon ab etwas über 40€.
Die Applikation ist diesmal Mit GoDot erstellt und lässt sicht leicht auf deine Wünsche anpassen
Wenn du Fragen hast schreib mich gerne an
Ich werd wieder versuchen diesen Artikel als Dokumentation schrittweise zu verbessern
Aber schon mal viel Spaß damit
Euer Stefan
Anhang
Software Architektur
einfach und robust

Einstellungen
Es gibt ein paar Einstellungen
- PIN für die Webseite
- WLAN SSID
- WLAN Passwort
Führe einfach diesen Code aus um se zu setzen:
(Vorher starten im AP-Modus ohne Jumper und verbinden mit dem WLAN RegulatorCard-XXX – IP-Adresse steht auf dem Display)
regulatorCardSettings("PIN","SSID","WIFI_PWD")
Den PIN brauchst du um auf die Webseite zu kommen. Initial sind die Anmeldedaten admin/12345 – danach admin/<deine PIN>

BOM
| ID | Name | Designator | Footprint | Quantity | Manufacturer Part | Price | Link |
| 1 | 0.1u | C1,C2,C3 | C0603 | 3 | |||
| 2 | HDR-M-2.54_1x10 | J1 | HDR-M-2.54_1X10 | 1 | 0.071 | ||
| 3 | HDR-M-2.54_1x4 | J2 | HDR-M-2.54_1X4 | 1 | 0.057 | ||
| 4 | HDR-M-2.54_1x2 | J3 | HDR-M-2.54_1X2 | 1 | 0.03 | ||
| 5 | 400 | R1 | R0603 | 1 | |||
| 6 | 4k7 | R2,R3,R10,R11,R12 | R0603 | 5 | |||
| 7 | 1k | R4,R7,R8 | R0603 | 3 | |||
| 8 | 330 | R5,R6,R9 | R0603 | 3 | |||
| 9 | ESP32-DEVKITC | U1 | BULETM-SMD_ESP32-DEVKITC | 1 | ESP32-DevKitC | https://www.amazon.de/dp/B074RGW2VQ | |
| 10 | MAX31865AAP+ | U2 | SSOP-20_L7.2-W5.3-P0.65-LS7.8-BL | 1 | MAX31865AAP+ | 8.95 | https://www.digikey.de/de/products/detail/analog-devices-inc-maxim-integrated/MAX31865AAP-T/5396623 |
| 11 | ADG804YRM-REEL | U3 | MSOP-10_L3.0-W3.0-P0.50-LS5.0-BL | 1 | ADG804YRM-REEL | 0.868 | https://www.digikey.de/de/products/detail/analog-devices-inc/ADG804YRMZ/997617 |
| 12 | PCF8574TS/3 | U4 | SSOP-20_L7.5-W5.2-P0.65-LS8.0-BL | 1 | PCF8574TS/3 | https://www.digikey.de/de/products/detail/texas-instruments/PCF8574PWR/484761 | |
| 13 | JL301-50009U01 | U5,U6,U7,U8 | CONN-TH_JL301-50009U01 | 4 | JL301-50009U01 | 0.317 | https://www.amazon.de/dp/B0CBWXQQD1 |
| 14 | PC817X C档 | U9,U10,U11 | DIP-4_L6.5-W4.6-P2.54-LS7.6-BL | 3 | PC817X C档 | https://www.digikey.de/de/products/detail/sharp-socle-technology/PC817X2NSZ9F/7942022 |
Sensoren / Zubehör
Downloads
Gerber
Hier kommt bald der Gerber-Daten-Link – damit kannst du dir Leiterplatten z.B. bel JLC-PCB bestellen
Software-Image
Hier kommt bald das Image mit der kompletten Software das du direkt mit esptool oder Thonny auf deinen Controller flashen kannst
und natürlich der
Code
https://bitbucket.org/bobbery/regulatorcard (ist im Moment noch nicht öffentlich weil ich noch auf die finale Leiterplatte warte)
Gehäuse
Hier kommen die STL-Daten für das Gehäuse
Danksagungen
Danke an Hans Markl für die erste Projektidee ( mal wieder 🙂 )

Danke an Hans Reif, meinem Elektronikervorbild, für viele tolle Gespräche mit Hopfengetränk und die Tipps beim Entwurf der Elektronik
Danke an meine Bürokollegen Michi, Leon und Jens mit eurer unkomplizierten Denkweise in Sachen Software und eure tollen Denkanstöße
Danke an Susanne dir kann ich immer schreiben was ich grad mach auch wenn ich grad Mist bau und du findest irgendwie Alles toll – ich bin so froh dass wir wieder Kontakt haben – hab dich sehr vermisst. Weiß blos immer ned was ich schreiben soll – hoffe dich störts ned dass es meistens Technik is

























