Forum: Mikrocontroller und Digitale Elektronik Entscheidungshilfe für uC bei Gartenbewässerungsprojekt


von Torsten (Gast)


Lesenswert?

Für Gartenbewässerungsprojekt inkl. kleiner Wetterstation bin ich gerade 
hinsichtlich uC etwas indifferent und wollte mal eure Meinung hören.
Folgendes sind die Eckpunkte:

- Schalten von sechs Kanälen zur Gartenbewässerung via Relais (mache ich 
schon seit Jahren mit nem Raspi)
- Messen von 2 x DHT22
- Messen von 1 x BME280 (I2C)
- Einbindung von 1"-OLED-Display via I2C
- Einbindung von Drehencoder
- Ggf. Port-Expander mit MCP23017 (I2C)
- Konnektivität über WLAN oder Ethernet
- Kommunikation via MQTT
- Stromversorgung via Netzteil
- Verwendung von Arduino-Devboards
- Realisierung als Arduino-Projekt

Datenaustausch erfolgt mit einem Raspi (auf dem openHAB läuft) via MQTT. 
Die Positionen 2+3 habe ich seit ein paar Wochen testweise mit einem 
ESP8266 gemacht (WLAN-Anbindung) - keine Probleme. Also speziell im 
Winter ist es so, dass der uC nur alle fünf Minuten aufwacht, die 
Sensoren ausliest, per MQTT pusht und wieder schlafen geht. Da ich im 
Sommer aber nicht fünf Minuten warten möchte, bis mal Wasser kommt, habe 
ich in openHAB einen virtuellen Schalter definiert. Anhand des Zustandes 
entscheidet der uC, ob er sich wieder schlafen legen darf oder wach 
bleiben muss.

Nun ist es so, dass am Installationsort Ethernet vorhanden wäre. Bei 
Sonoff S20-Steckdosen (steckt ein ESP drin) mache ich gerade die 
Erfahrung, dass die Verbindung doch öfter mal abreißt. Das bringt mich 
ein Stück weit zur Überlegung, ob ich dieses Projekt einfach mit 
Ethernet anbinde - zumal die Infrastruktur ja auch bereits da ist. Meine 
Frage ist nun, welchen Microcontroller ich dafür verwende. Daheim 
rumliegen habe ich die folgenden Arduino-Entwicklerboards: Nano v3 
(Atmel 328P), NodeMCU ESP8266, NodeMCU ESP32s.

ESP8266:
+ Bringt WLAN mit, funktioniert im Testbetrieb auch bereits
+ Lässt sich via OTA flashen
+ Eth-Anbindung könnte ich mit W5500 (SPI) machen, habe ich eh noch 
daheim
+ schnell (vermutlich für das Projekt aber egal)
- Hat deutlich zu wenig Ports, daher Port-Expander notwendig
i Braucht im Betrieb durchschnittlich etwa 70 mA, im DeepSleep 1,4 mA

ESP32s:
+ Bringt WLAN mit
+ Lässt sich via OTA flashen
+ Hat Eth-Support integriert, Anbindung via MII oder RMII
+ Sehr schnell (vermutlich für das Projekt aber egal)
- Eth-Anbindung via LAN8270 (RMII) belegt neun Pins
? GPIO0 wird nicht rausgeführt, man benötigt jedoch 50 MHz Clock. Man 
kann wohl auch eine interne Clock nehmen, aber mir ist unklar, wie gut 
das funktioniert
- Hat zu wenig Ports, daher Port-Expander notwendig
- Ich habe noch keine Erfahrung damit, wie viel Strom der LAN8270 
benötigt - beim W5500 habe ich da bereits Erfahrungen
i Noch keine Strommessungen durchgeführt

Nano V3:
+ Port-Expander nicht notwendig, da ausreichende Anzahl GPIOs vorhanden
+ Von einem anderen Projekt habe ich bereits Erfahrung mit der 
Eth-Anbindung (W5500)
- Eth-Anbindung braucht etwas mehr Strom (85 mA @ 5V inkl. uC bei fest 
konf. 10 MBps) als WLAN beim ESP
? Mir unklar, ob der Speicher für die gesamte Umsetung reicht
i Braucht im Betrieb durchschnittlich etwa 85 mA, im Schlafmodus (mit 
per Transistor abgeschaltetem Eth-Board) 7 mA

Also grundsätzlich stelle ich fest, dass es schon ein bisschen Arbeit 
ist, Ethernet an den ESPs zum Laufen zu bringen. Ich bin mir nicht so 
ganz sicher, ob ich mich da in etwas verrenne und vielleicht einfach 
WLAN nehmen sollte. Beim Nano fände ich es etwas schade, dass ich keine 
OTA-Updates machen könnte. Es wäre aber kein Show-Stopper, die Stelle 
ist einfach zugänglich - lediglich ne Komfortfrage.

Über Anmerkungen, Einschätzungen etc pp würde ich mich freuen.

von A. F. (artur-f) Benutzerseite


Lesenswert?

Ich würde ESP32 nehmen, wozu brauchst du ETH wenn du WLAN hast? Wie es 
aussieht, möchtest du die Bewässerung auf Basis von lokalen Sensoren 
realisieren und nicht über einen Wetterdienst. Wenn da WLAN 
zwischendurch streikt ist es doch Wurst (ist ja kein Schrittmacher).

Wenn du auf Kabel stehst und es komliziert haben willst, kann ich dir 
eine Platine mit STM32F407 + PHY, 2 Relais, 12 N-FET Ausgängen, 12 12V 
DC sicheren Eingängen und RS485 verkaufen :/

von Torsten (Gast)


Lesenswert?

Nein, die Sensoren haben für die eigentliche Bewässerung keine 
Bewandtnis. Wann bewässert wird, entscheide ich entweder manuell oder 
zur Not per CronJob (Wasser kommt aus nem Brunnen, wenn ich da mal zu 
viel bewässere, fällt das nicht ins Gewicht).
Zum Thema Ausfallsicherheit: Nun, wenn ich die Pumpe einschalte, dann 
muss ich tatsächlich sicherstellen können, dass ich sie auch wieder 
abschalte. Aber sei es drum: Ich übergebe via MQTT auch immer eine 
Ausschaltzeit (als Backup quasi). D.h. wenn diese abgelaufen ist, dann 
wird der jeweilige Kanal so oder so wieder abgeschaltet - egal ob die 
Verbindung weg ist oder nicht.

Der Grund für Ethernet ist einfach, dass mich die Konnektivitätsprobleme 
bei den Sonoff-Steckdosen (läuft Tasmota drauf) gerade etwas nervt. Wenn 
ich mit vergleichsweise einfachen Mitteln Ethernet einbinden kann, dann 
würde ich das wohl tun.

Mit WLAN wäre auch für mich der ESP32 die Präferenz, da er einfach mehr 
GPIOs hat als der ESP8266 und ich diese hier auch brauche.

von MaWin (Gast)


Lesenswert?

Torsten schrieb:
> Für Gartenbewässerungsprojekt inkl. kleiner Wetterstation bin ich gerade
> hinsichtlich uC etwas indifferent und wollte mal eure Meinung hören

Vielleicht hilft
Beitrag "Projekt fertiggestellt: Temperatur- und Feuchtigkeitssensor mit ESP8266/BME280 und MQTT-Publishing"
Vielleicht wechselst du deinen Namen aber auch nur schneller als die 
Projekte.

von Harry L. (mysth)


Lesenswert?

Torsten schrieb:
> Der Grund für Ethernet ist einfach, dass mich die Konnektivitätsprobleme
> bei den Sonoff-Steckdosen (läuft Tasmota drauf) gerade etwas nervt.

Daran sind aber weder die SonOff-Steckdosen noch Tasmota schuld.

Da ist wohl dein WLAN-AP eifach Murks oder die Verbindung zu schlecht.
Letzteres kannst du durch aufstellen eines weiteren AP lösen, und dafür 
tuts auch ein billig-Router von TP-Link (z.B TP-Link WR841N für <20€)

Hier laufen ca. ein Dutzend SonOff-Geräe mit Tasmota 24/7 ganz ohne 
Netz-Ausfälle.

von Torsten (Gast)


Lesenswert?

Keine Angst, ich habe meinen Namen nicht geändert :-) Vielleicht sollte 
ich mich auch einfach hier mal anmelden.
Ich denke ich werde jetzt einfach mal mit dem ESP32 starten und es auf 
WLAN-Basis entwickeln. Wenn ich dann noch Bock habe, binde ich Ethernet 
ein.

@Harry:
Ich habe ja auch nicht behauptet, dass die Steckdosen die Übertäter 
sind. Es ist halt nur Fakt, dass ich diese Probleme grundsätzlich nicht 
habe, wenn ich Ethernet benutze :-) Eingesetzt wird eine FB7490 und 
mittels Handy/Laptop habe ich hier eigentlich keine Probleme. Aber es 
gibt, obwohl es sich um ein freistehendes (Fertig-)Haus handelt, halt 
doch inzwischen echt viele WLANs in der Ecke. Vielleicht ist auch das 
ein Problem. Auffällig ist allerdings, dass oft nur die MQTT-Verbindung 
wegfliegt. Den Raspi, auf dem mosquitto läuft, habe ich extra schon per 
Ethernet angebunden, aber das hat dieses Problem auf jeden Fall nicht 
behoben.

von Reiner O. (elux)


Lesenswert?

Torsten schrieb:
> Eingesetzt wird eine FB7490 und
> mittels Handy/Laptop habe ich hier eigentlich keine Probleme. Aber es
> gibt, obwohl es sich um ein freistehendes (Fertig-)Haus handelt, halt
> doch inzwischen echt viele WLANs in der Ecke. Vielleicht ist auch das
> ein Problem.

Ja, und die FB. Ich habe festgestellt, daß das WLAN der FB sich in 
einigen Fällen recht zickig verhält. Seit ich der FB das WLAN 
weggenommen und über APs von TP-Link mit OpenWRT verbinde sind 
Verbindungsabbrüche schon sehr selten geworden.


> Auffällig ist allerdings, dass oft nur die MQTT-Verbindung
> wegfliegt.

Ja, das ist so ein Henne-Ei Problem. Wenn die Verbindung abreißt, 
verbindet sich der ESP neu. Sobald die Verbindung phys. steht, wird der 
MQTT Client gestartet, da ist die Verbindung aber noch nicht bereit 
(DHCP usw.), so das der MQTT ins Timeout läuft.
Das wird bei den Beispielen im Arduino oft falsch gemacht.

Es ist aber schon interessant zu sehen, daß immer mehr Leute diese auch 
von mir bevorzugte Kombination aus Ethernet und MQTT zwecks Steuerung 
benutzen.

Ich hatte mit der Kombination aus Atmel und LAN immer ein bißchen Pech, 
so daß ich letztlich als Alternative auf den kleinsten OrangePi mit H2+ 
Prozessor und 256MB RAM ausgewichen bin, die Kombi läuft bei mir sehr 
zuverlässig.
Es ist schon ganz schön "mit Kanonen auf Spatzen geschossen", für ein 
paar Relais ein Linux hochzufahren, aber bei weit unter 10€ HW-Kosten 
für die Recheneinheit bei besagter Zuverlässigkeit ist mir das egal.

Mir ist es auch egal, was verschiedene Leute hier behaupten: alles, was 
mir wichtig erscheint, läuft bei mir per Draht (Ethernet oder Subbus), 
der unwichtige WAF-Kram (Ambiente-Beleuchtig etc.) wird auch per WLAN 
erledigt, dank ESPs (H801 und Konsorten ;-) )...


Just my 2 Cents

Gruß
Elux

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Torsten schrieb:
> ? GPIO0 wird nicht rausgeführt, man benötigt jedoch 50 MHz Clock.

Das ist wohl lösbar:

https://sautter.com/blog/ethernet-on-esp32-using-lan8720/

von Torsten (Gast)


Lesenswert?

Danke erstmal für die Kommentare.

@Reiner:
Auf einem Atmel328P (Arduino nano) habe ich Ethernet wie gesagt ans 
Laufen bekommen. Ich habe mir so ein kleines Board mit W5500-Chip geholt 
- kriegt man aus China zB via Ebay für knapp über drei Euro. Aber es war 
nicht ganz trivial sag ich mal. Erstmal hat sich für mich die Frage 
gestellt, wie genau das zu verbinden ist. Nachdem ich das wusste, 
stellte ich fast, dass Eth samt uC satte 130 mA frisst. Habe dann das 
Datenblatt gewälzt und gesehen, dass man per Register auch auf 10 MBps 
stellen kann und der Stromverbrauch dann geringer sei. Dafür musste ich 
die Ethernet2-Lib aber erstmal erweitern. Auf 10 MBps ging es dann 
runter auf 85 mA. Da ich im besagten Projekt nur ein Aussenlicht steuern 
möchte, welches an der Hauswand ist und lediglich dekorative Zwecke hat, 
war mein Wunsch, dass der uC aus Energieeffizienzgründen fünf Minuten 
schläft, dann aufwacht und schaut, ob was zu tun ist. Aber selbst wenn 
man PHY abschaltet (geht über das gleiche Register wie 10 MBps) frisst 
die Schaltung immer noch 45 mA. Ich habe es jetzt final so gelöst, dass 
ich das Eth-Board via GPIO über einen Transistor abschalte und der 328P 
selbst schläft. Dann lande ich im Sleep bei 7 mA, damit kann ich gut 
leben. Ethernet habe ich hier übrigens verwendet, weil die Steuerung in 
der HV im Keller hockt. Im Keller gibts halt kein WLAN und in einem 
Metallschrank schon gar nicht :-)
Also was ich sagen will ist: Ich stelle auf jeden Fall fest, dass 
Ethernet-Anbindungen (auch wenn ich Ethernet mag) mit uC ganz und gar 
kein Mainstream sind. Ich befasse mich erst seit November mit uC, 
insofern tue ich mich da mitunter mal etwas schwer, da ich noch nicht 
genügend Wissen habe, damit das alles selbsterklärend ist. Aber es wird 
besser :-)

@Rufus:
Ja, den Link habe ich zwischenzeitlich auch entdeckt. Ich bin gerade 
dabei, das Ganze erstmal auf WLAN-Basis zu entwickeln, Vieles läuft auch 
schon. Das Eth-Board habe ich in China bestellt, wird eh noch ein paar 
Wochen dauern, bis es da ist. Wenn es dann da ist, werde ich mal Tests 
damit machen und mir dann überlegen, ob ich es für das Projekt wirklich 
Sinn macht. Auf jeden Fall werde ich dann einen Port-Expander verwenden 
müssen, weil die GPIOs sonst nicht mehr reichen. Aber das ist ja kein 
Problem.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.