Projektplanung - Kommunikation zwischen 2 Arduinos & Datenlogger

Hallo zusammen. Ich bin derzeit in einer kleinen Projektplanung, möchte aber bevor ich anfange irgendwelche weiteren Sachen zu bestellen von euch hören, ob dies so überhaupt Sinn macht, oder ob man das eleganter, einfacher und unempfindlicher für Störungen gestalten kann.

Aktuell ist folgendes geplant:

Ich habe ein Arduino Uno, welches Messwerte über Analoge Eingänge empfängt und diese verarbeitet. Die verarbeiteten Werte sollen Live auf einen Webserver übertragen werden. Dies habe ich alles schon über ein Ethernetboard versucht und das funktioniert auch ohne Probleme. Zusätzlich soll ein 2. Arduino Uno als Client arbeiten und diese Messwerte drahtlos empfangen und auf einem Display ausgeben. Dabei wäre es wichtig, dass der Client Batteriebetrieben (oder Akku) arbeiten soll & möglichst frei beweglich bleiben muss.

Jetzt habe ich mehrere Sachen die mich ein bisschen Nachdenken lassen:

  • Das Auswertearduino könnte anstatt per LAN auch per WLAN arbeiten, wäre zwar teurer, aber deutlich flexibler. Dabei ist die Stromversorgung immer per Kabel zu machen, also ist der Energieverbrauch "egal".
  • Die Verbindung zwischen den Arduinos könnte ich per Funkmodul (habe ich bereits hier) machen, oder eben falls ich den Server auf WLAN umrüste, darüber laufen lassen, oder würde sich das in die Quere kommen mit Verbindung zu einem Webserver und einem anderen Arduino? Wie siehts mim Stromverbrauch aus, ist ein Funkmodul "sparsamer" als ein WLAN Modul? Die Sendung soll so alle 5 Sekunden zum Client erfolgen.
  • Was passiert, wenn der Webserver nicht reagiert oder das Internet einfach nicht verfügbar ist. Sollte ich sicherheitshalber alles auch auf einer SD-Karte mitloggen und irgendwie prüfen ob die Daten auf dem Server sind und ggf. nachsenden? Oder wie realisiert man dies, damit die Daten wirklich vollständig online sind?

Hier eine kleine Skizze dazu, sagt einfach was ihr davon haltet oder was besser wäre oder wie ihr dies umsetzen würdet. Falls jemand bestimmte Module empfehlen kann, würde ich mich über Links auch freuen.

PS: Wie bekommen Hersteller von 10€ Weckern eigentlich so große Displays hin? Da ist ja auch andere Technik drin und die wollen auch was verdienen, wo in China kommt man an sowas dran um mal Preise/Vergleiche einzuholen?

Wie bekommen Hersteller von 10€ Weckern eigentlich so große Displays hin

Das ist Teil der generellen Frage. Nur darurch, dass sie Stiftleisten und Stecker weglassen, können sie doch nicht so viel einsparen ? ;) Erstaunlicherweise verwenden sie Standard-Batterien (die oft sogar noch im Preis enthalten sind), sonst wäre das Geschäftsmodell klar: Batterieentladegeräte gibts vom Batteriehersteller geschenkt. Wenn sie Dokumentation der Einzel-Komponenten für Hacker veröffentlichen würden, könnten sie den Umsatz für Bastlerbedarf an Displays , DCF-Modulen, Funk-Temperatursensor-Modulen etc. noch mitnehmen, aber das lohnt wohl den Aufwand nicht.

Zu deinem eigentlichen Projekt: ( Generell: ein Client ist der aktive Part, ein Server wartet und reagiert auf Anforderungen ) Wenn der Client tatsächlich ein Client wäre, müsste die Funkverbindung bidirektional sein. So wie du es gezeichnet hast, ist es eher ein Radio-Empfänger. Dein "ArduinoServer" ist ein Radio-Sender, dem egal ist ob jemand was empfängt, sowie ein EthernetClient, der dem WebServer was schickt.

Wenn der Webserver und dein Router nicht erheblich stabiler laufen als dein "Arduino Server", und die Daten es wert sind, wäre ein SD-Speicher durchaus eine Überlegung wert. Aber umgekehrt: Ein 24*365 Messwert-Erfassungs-Arduino der "nie" direkt angefasst wird und schon gar nicht portabel sein muss, sollte eigentlich auch am LAN-Kabel hängen. Das vermindert die Ausfallwahrscheinlichkeit um eine Komplexitäts-Stufe und macht die SD Karte weniger wichtig.

Was für Daten willst du übrigens alle 2 Sekunden speichern ? Das ist in der Regel ein Kompromiss, der alle Nachteile vereint ;) Langsam für schnelle Daten, aber normalerweise viel zu viel Müll. Optimalerweise erkennt und filtert die Erfassungsseite schon den Unterschied zwischen Rauschen und echten Änderungen, und sendet Änderungen "sofort" (bei Bedarf mit Zeitstempel in Millisekunden-Auflösung) , sendet aber ohne Änderungen nur äusserst selten. Ob der webserver alles archiviert oder nur den aktuellen Zustand für andere clients zur Verfügung stellt und für das Archiv nochmal komprimiert, ist dann die nächste Frage. Der RadioSender könnte eher häufiger senden, damit der Empfänger bei Bedarf kurz aufwachen kann, schnell den aktuellen Zustand mitkriegt und anzeigt, und sich gleich wieder schlafen legen kann.

Hallo und vielen Dank für deine Antwort schonmal.

Also zu den "10€ Weckern", weißt du scheinbar auch nichts sonderliches was da so verbaut ist und wo man soetwas beziehen oder besichtigen kann. Hab hier grade nochmal geschaut, mein TCM-Wecker hat eine Diagonale von 6" und wäre größenmäßig echt genial für mein Projekt. Ansonsten halt "billig" gehalten, aber immerhin mit Funkmodul zum Uhrenabgleich und Temperatursensor. Gekostet hat alles 12€ inklusive einer Batterie die schon > 2 Jahre hält :grin:

So nun zum Projekt:

Okay, dann sprechen wir hier wohl nicht von einem Server, nennen wir es im weiteren Verlauf Messstation.

Eine Lanverbindung halte ich auch für deutlich sicherer, als irgend eine WLAN Geschichte. Gehen wir aber nun davon aus, dass der jemand am Netzwerk arbeitet, das Internet ausfällt, der Router neugestartet wird, ein Kabel mal entfernt werden muss, oder oder oder. Passiert in 95% aller Haushalte warscheinlich reichlich selten, bei mir Beispielsweise aber ziemlich häufig, weil ich immer wieder an irgendwas rumbastel. Mir wärs lieb, wenn die Messwerte weiter aufgenommen werden, die SD-Karten Lösung kostet vermutlich auch nicht die Welt.

Die Daten die ich speicher sind Messdaten von Stromsensoren. Diese Stromsensoren messen über einen bestimmten Zeitraum den Strom, verrechnen diesen mit verschiedenen Faktoren und bilden einen Mittelwert über eine bestimmte Zeit (hier 2s). Insgesamt entstehen so alle 2s mehrere Werte die an eine Datenbank übermittelt werden sollen, damit ein Script daraus ein Echtzeitdiagramm erstellen kann und der Nutzer sich dieses per PC/Handy ansehen kann. Weil ich daraus gerne später Wochen-/Monat-/Jahresverbrauch errechnen möchte ist es mir wichtig, dass alle Werte übermittelt sind, auch wenn das Internet mal kurzzeitig streikt.

Das Display muss nicht unbedingt alle 2s aktualisieren um den Akku zu schonen, da reicht auch jeder 2. oder 3. Zyklus aus. Wenn das kaum Änderungen macht, halt auch jeder.

Beispiel der Übertragung wären aktuell folgende Werte: S1 - S2 - S3 - V - TIME : Das wären also 4 Werte + aktuelle Zeit. Könnten später noch 1-2 mehr werden, aber das ändert ja nichts an der Sache ;)

PS: Sollte ich das einmal alles am laufen haben, möchte ich versuchen das ganze mit Einzelkomponenten zu realisieren, also ohne fertige Arduinoboards sondern mit einzelnen µC's etc, falls das für euch irgend eine Rolle spielt.

Mir wärs lieb, wenn die Messwerte weiter aufgenommen werden, die SD-Karten Lösung kostet vermutlich auch nicht die Welt.

SD Module kosten fast nichts, und sind daher in der Regel beim Ethernet Shield schon mit dabei. Die SD Library braucht aber RAM, da muss man im Auge behalten, ob dein Uno an seine Grenzen kommt.

Diese Stromsensoren messen über einen bestimmten Zeitraum den Strom, verrechnen diesen mit verschiedenen Faktoren und bilden einen Mittelwert über eine bestimmte Zeit (hier 2s). Insgesamt entstehen so alle 2s mehrere Werte die an eine Datenbank übermittelt werden sollen, damit ein Script daraus ein Echtzeitdiagramm erstellen kann und der Nutzer sich dieses per PC/Handy ansehen kann. Weil ich daraus gerne später Wochen-/Monat-/Jahresverbrauch errechnen möchte ist es mir wichtig, dass alle Werte übermittelt sind, auch wenn das Internet mal kurzzeitig streikt.

OK, wenn du sagst 2 sec ist für mich der optimale Zeitraum für einen Kurzzeit-Mittelwert, dann spricht die Einfachheit für einen 2 sec Übertragungszyklus. Die zum Webserver/auf die SD Karte übertragene Datenmenge solltest du mal grob abschätzen... Klar willst du jedes Schalten eines Verbrauchers wiedererkennen können. Aber wenn nach dem Schalten der Strom dann wieder lange konstant bleibt, macht ein Senden nur bei Änderung Sinn.

Das Display muss nicht alle 2 sec. aktualisieren, richtig. Aber wenn es was portables, batteriebetriebenes ist, sollte es nach dem Aufwachen nicht lange warten müssen, bis eine Übertragung kommt. Bei Batteriebetrieb macht ein standalone µC mit sleep-Logik am ehesten Sinn.

Okay, dann hätte ich eigentlich alles vorliegen bis auf ein passendes Display, das kann ich aber ja immernoch einbauen, wenn die Verbindung ansonsten funktioniert.

Die Datenmenge wollte ich sowieso einmal ausrechnen bzw simulieren, nicht dass ich mich da vollkommen Irre, immerhin soll das ja dauerhaft laufen.

Mit der Sleep-Logik werde ich mich sicherlich nochmal melden wenn es soweit ist, dann begebe ich mich erstmal an die grundlegenden Sachen ;)

Vielen Dank.