Daten loggen mit dem Arduino. Vorschläge erbeten

Hallo!

Es sollen Betriebsdaten (24/7) erfasst werden und zur weiteren Auswertung gespeichert werden.

Das Erfassen der Zustände und das jeweilige absetzen der Txt-Nachricht ist soweit kein Problem (im Monitor)

Das Problem besteht im Moment darin, jeder Nachricht einen Datums/Zeitstempel mit zu geben.

So in der Art soll das in der TXT-Datei aussehen

2010-02-23 10:50:31 Pumpe1 an
2010-02-23 10:55:45 Pumpe1 aus
2010-02-23 10:56:15 Sensor 1 23.15 C

Diese Daten würde dann hinterher am PC ausgewertet.

Ich habe versucht auf der PC-Seite mit Freebasic die Daten der Ardunio am Comport mitzuschreiben und die Nachrichten dort mit Datum und Zeit zu ergänzen - allerdings kommt es dort zu Problemen da Teile der Nachrichten des Ardunio "zerrissen" werden, wenn die einlaufenden Nachrichten zeitgleich gefiltert und weiterverarbeitet werden sollen - ein wohl häufig auftretendes Problem vermutlich infolge des fehlenden Handshake-Protokolls.

Hat hier jemand vielleicht eine erprobte Lösung bzw. einen weiterführenden Link.

Eine Alternative wäre es, wenn der Arduino Datum und Uhrzeit mitliefern würde. Welche Hardware (Shield) würde man hier für einen Arduino benötigen?

Vielleicht gibt es ja auch Möglichkeiten die Daten durch den Aduino sammeln zu lassen, allerdings müsste dann die Möglickeit bestehen, diese auszulesen ohne die Erfassung zu unterbrechen (Also Wechseln von Speicherkarten ist kritisch)

Hoffe auf Input.

Gruß
Dirk

Ich persönlich find das hier ziemlich cool... :slight_smile:

Kommt drauf an wie versiert Du bist. Wenn Du fragen musst ist vermutlich das RTC Modul welches Joghurt empfiehlt das richtige.

Wenn Du schon mehr Erfahrung hast kannst Du auch einen 32kHz Quarz an Timer 2 hängen. Den Stromverbrauch kann man laut Datenblatt auf <1uA drücken. Die Hardware ist dann deutlich einfacher und billiger. Es kann allerdings einiges dabei schief gehen --> vieleicht nicht gerade als Anfängerprojekt ausprobieren.

Wenn Du Dich erfahren genug fühlst --> bei Atmel Datenblatt und Application Notes runterladen und los :slight_smile:

Gruß, Udo

Ich würde die Datenerfassung online machen, d.h Arduino sendet via Ethernet-Board die Daten an ein Skript auf dem Webserver. Das Skript speichert die Daten, inklusive einem Zeitstempel in einer Datenbank oder einem Textfile.

Per FTP oder als Download können die erfassten Daten anschliessend auf dem lokalen Rechner ausgewertet werden.

Der Vorteil dieser Lösung ist, dass man über Web die erfassten Daten aufrufen und überwachen kann. PHP oder eine andere Skriptsprache fürs Web (ASP, ASP.NET, Perl) bieten mehr Möglichkeiten um die Daten weiterzuverarbeiten oder zu visualisieren.

Auf der Arduino-Seite sind nur die Sensoren für die Datenerfassung und ein Ethernet-Modul notwendig.

Hallo

Ich logge Daten von meinem Gartenbeet (Feuchte, Sonneneinstrahlung, etc.).
Allerdings misst der Arduino nur die Sensordaten und versendet diese dann mit einem Post-Request mit einem WiShield übers Internet in die mySQL Datenbank auf meinem Webserver.
Der Arduino kennt die passende Uhrzeit also nicht, erst das Skript auf dem Webserver fügt diese dem Datensatz hinzu.

Vorteil:
Der Arduino selber muss keine Messwerte speichern und ich kann jederzeit von überall auf diese Daten zugreifen. :wink:

Nachteil:
Man muss WLAN oder LAN in der näheren Umgebung haben.

Gruss

Das Sammeln und Visualisieren der Sensordaten kann du online via Pachube machen. Ein sehr ausgereiftes Tool

http://www.pachube.com

Hallo zusammen,

erstmal vielen Dank an alle für den Input.

Die Vorschläge, das per Ethernet zu machen und Datum und Uhrzeit auf dem Webserver scheint interessant. Das entspricht dem ursprünglichen Lösungsansatz, nur dass ich dafür ja USB und FreeBasic einsetzen wollte. (was ja leider nicht so wirklich funktioniert)

Zur erforderlichen Hardware:

Gibt es verschiedene Ethernetshields und wenn ja welches würdet ihr empfehlen?

Der Vorschlag mit pachube ist dann wohl das "Sahnehäubchen" ich werde mir mal die Anleitungen dort durcharbeiten. Vielleicht ist da ja auch einfacher.

Gruß
Dirk

Gibt es verschiedene Ethernetshields und wenn ja welches würdet ihr empfehlen?

Genau, das Stichwort ist Ethernet Shield. Das Standardboard findest du hier:

Auch wenn wir hier im Arduino Forum sind, schau mal das hier an:

http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin

In ein 32er Board passt auch ein 644er rein. Und der wird sogar von der Arduino IDE unterstützt.

Gruß, Udo

Hab eben das hier gefunden:

Gobetwino kann das was der Arduino über den USB an den PC aussendet unter Win in einer Datei loggen und mit Datum und Uhrzeit versehen.

(das Programm kann darüberhinaus wohl noch so einiges mehr)

Zumindest wäre das schon mal eine Zwischenlösung :slight_smile:

Gruß
Dirk

Gobetwino ist auch eine Lösung, benötigt aber immer einen am Arduino angeschlossenen und eingeschalteten Rechner. Im Falle der Weblösung kann Arduino irgendwo im internen Netz angeschlossen sein und liefert seine Daten über Ethernet ins Internet an einen Webserver. Ein zusätzlicher Rechner wird dabei nicht benötigt.

Der Webserver kann natürlich auch im Intranet betrieben werden.

Das stimmt natürlich. Wobei man natürlich auch die zusätzlichen Kosten für Hardware und den ggf. notwendigen Lernaufwand (Webprogrammierung) nicht außer Acht lassen darf. Die Pachube Lösung ist schon was Feines und ich sehe Gobetwino auch nur als Interimslösung an.

Ich bevorzuge anstelle von Pachube eine "Eigenbau-Variante" damit ich nicht von einem Anbieter abhängig werde.

Ich habe schon erlebt dass ein Anbieter eines Dienstes ein Update vorgenommen hat und ich meine ganze Programmierung dann neu machen musste damit es kompatibel blieb.

Die Messwerte von Arduino sende ich über PHP in eine mySQL-Datenbank. Auf der Website werden die Messwerte dann als Diagramme mit PHP und JpGraph erzeugt. JpGraph (http://www.aditus.nu/jpgraph/index.php) kann man herunterladen und auf den Webserver kopieren. Dadurch kann man immer mit der gleichen Version arbeiten und es gibt keine Veränderung seitens Anbieter.

Diese Methode ist sehr einfach sofern man PHP kennt. Ansonsten dürfte der Lernaufwand relativ gross sein.

Nachfolgende Anmerkung soll keine Kritik an den bisherigen Vorschlägen sein die sicher alle ihre Vorteile haben und auch sicher toll aussehen - es soll nur die Sichtweise verdeutlichen, von jemandem der eigentlich nur Daten mit Datum und Uhrzeit loggen möchte.

Da sehe ich genau die Hauptprobleme. Zum einen die Abhängigkeit von Dritt-Anbietern, das sich daraus langsam entwickelnde Schiessen mit Kanonen auf Spatzen und der damit in Regel verbundene zusätzliche mitunter sogar massive Lernaufwand. Das einfache Loggen von Schaltzuständen und Temperaturen zieht das Erlernen von zusätzlichen Programmiersprachen und den Aufbau von Datenbankwebservern nach sich. :o

Ich wollte eigentlich die hier vorhanden 3 Konverter die im Moment drei Comports belegen, durch einen Arduino ersetzen, aber mir nicht gleich noch ein Rechenzentrum mitaufbauen :wink:

Was in meinen Augen hier und bei anderen Verbindungen zur Außenwelt (siehe Lampen schalten etc) definitiv noch fehlt sind einfache und funktionierende Lösungen. Simplfy your work - Have more fun :slight_smile: Also die Weiterführung des Arduino Gedankens

Beispiel sind die DS18S20 Sensoren - anschließen mit einem Widerstand, Beispielprogramm etwas für die eigenen Bedürfnisse anpassen und fertig -
Man bekommt die Temperatur angezeigt genau dass was man wollte.

  • keine aufwendigen Berechnungen und Kalibrierungen, keine Lötaktionen nach dem Motto wir bauen uns erstmal einen AD-Wandler - absolut genial!

  • will man dann allerdings die erfassten Daten für eine Weiterverarbeitung exportieren sorgt das dann plötzlich für unglaublichen Aufwand.

Muss das wirklich sein?

Gobetwino ist da ein Anfang auf dem Weg in die richtige Richtung.

Zum einen die Abhängigkeit von Dritt-Anbietern...

Diese Abhängigkeit hast du aber auch mit dem Programm Gobetwino. Der Drittanbieter ist eine Privatperson kann seine Entwicklung von heute auf morgen stoppen.

Wenn du kein fertiges Produkt kaufen willst, hast du aber immer die Problematik, dass du selber noch etwas dazusteuern muss, sei es ein kleines Programm zu erstellen oder eine Elektronik aufbauen.

Mit dem von mir erwähntem Ansatz kommst du ganz ohne eigene Basteleien aus:

  • Arduino-Board mit Ethernet Shield verbinden
  • Ethernet ans Internet anschliessen
  • Account bei Pachube
  • Programm (Sketch) runterladen
  • Sketch anpassen und fertig.

Also nichts von A/D-Wander bauen oder ähnlich, sondern wie am Beispiel des DS1802, Runterladen, Skript anpassen und fertig.

Merke:
Mit einer Arduino-Lösung bekommst du nie eine fertig gestrickte Lösung. Und das ist ja genau das Spannende daran. Andernfalls ist Arduino die falsche Lösung für dich. Bestimmt gibt es auch fertige Datenerfassungslösungen.

Nun liegt es an dir aus unseren Vorschlägen die für dich optimalste Lösung herauszunehmen.

Da stimme ich Dir voll zu, das auch Gobetwino eine Art von Abhängigkeit bedeutet - mir kam es dabei auch nur auf den Gedanken hinter dem Projekt an - eben etwas zu schaffen, was auf einfache Art die Verbindung zu anderer Soft- und Hardware ermöglicht.

Es geht auch nicht um fertige Lösungen - wie gesagt hier arbeiten die DS18S20 sowie Abfragen von Schalterzustängen schon einige Zeit unter FreeBasic zusammen - halt alle nebeneinander.

Die Daten werden hier allerdings zum Teil sofort in selbst geschriebenen Anwendungen weiterverabeitet (laufende Verbrauchermittlung) und zum Teil auch visualisiert (Gnuplot). Von daher kann ich dann schon abschätzen was da an Aufwand betrieben werden muss. Und vor den DS18S20 die im Moment über Digitemp per Pipe ihre Daten an FB weitergegeben, waren hier schon diverse selbstgebaute AD-Wandler mit PT 1000 im Einsatz. Mal mit mehr und mal mit weniger Erfolg.

Ich halte den Arduino für sehr gut - was mich wie gesagt verwundert sind die Hürden bei eigentlich selbstverständlichen Dingen - wie man im englischen Teil des Forums nachlesen kann scheinen auch andere da schnell an Grenzen gekommen zu sein.

Ich werde in jedem Fall Deinen Vorschlag ausprobieren, sobald ich das Ethernetboard hier habe, alleine schon im Hinblick möglicherweise einen PC einsparen zu können

Es geht auch nicht um fertige Lösungen - wie gesagt hier arbeiten die DS18S20 sowie Abfragen von Schalterzustängen schon einige Zeit unter FreeBasic zusammen - halt alle nebeneinander.

Die Problematik mit selbstgebauten Lösungen, die betreibst du ja bereits, hast du immer wenn du kein fertiges Produkt im Einsatz hast. Arduino kann dir vielleicht gewisse Dinge abnehmen. Ein A/D-Wandler für PT1000-Sensoren benötigst du nicht zwingend, Arduino kann direkt analoge Signale einlesen. Für diese Temperatursensoren ist allenfalls ein Signalwandler (Widerstandsänderung vom Sensor/lineare Ausgangsspannung) notwendig.

was mich wie gesagt verwundert sind die Hürden bei eigentlich selbstverständlichen Dingen

Was meinst du mit Hürden? Meist ist die grösste Hürde das fehlende Grundwissen über elektronische Schaltungen und zu geringe Programmierkenntnisse. :frowning: