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
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)
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).

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
- Du 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:
Visualisierung
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": "NC",
"t2": "NC",
"t3": "NC"
"t4": "18",
"t5": "NC",
"t6": "NC",
"t7": "NC",
"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": ""
}
Damit kannst du dir solche Visualisierungen bauen:

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
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 |
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

