Als Ingenieure / Entwickler verlassen wir uns immer auf die gesammelten Daten, um ein System zu entwerfen oder zu verbessern. Das Aufzeichnen und Analysieren von Daten ist in den meisten Branchen üblich. Hier erstellen wir ein Arduino Data Logger-Projekt, in dem wir lernen, wie wir Daten in einem bestimmten Zeitintervall protokollieren können. Wir werden eine Arduino-Karte verwenden, um einige Daten (hier Temperatur, Luftfeuchtigkeit, Datum und Uhrzeit) zu lesen und sie gleichzeitig auf einer SD-Karte und dem Computer zu speichern.
Die gespeicherten Daten können einfach in einer Excel-Tabelle für weitere Analysen geöffnet werden. Um Datum und Uhrzeit beizubehalten, verwenden wir das berühmte RTC-Modul DS3231 und um die Temperatur und Luftfeuchtigkeit zu ermitteln, verwenden wir den DHT11-Sensor. Am Ende des Projekts lernen Sie
- So protokollieren Sie Daten mit Datum, Uhrzeit und Sensorwerten auf der SD-Karte.
- So schreiben Sie Daten über serielle Kommunikation direkt in Excel Sheet auf dem PC.
Erforderliche Materialien:
- Steckbrett
- Arduino UNO (jedes Arduino Board)
- DHT11 Temperatursensor
- DS3231 RTC-Modul
- SD-Kartenmodul
- SD-Karte
- Kabel anschließen
- Computer Laptop
Schaltplan:
Das Schaltbild für dieses Arduino Temperature Logger-Projekt ist unten dargestellt.
Wie im Schaltplan gezeigt, sind die Verbindungen sehr einfach, da wir sie als Module verwendet haben, können wir sie direkt auf einem Steckbrett aufbauen. Die Verbindungen sind in der folgenden Tabelle weiter klassifiziert
Arduino Pin |
Modulstift |
Temperatursensor - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
aus |
Pin 7 |
RTC-Modul DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pin A5 |
SDA |
Pin A4 |
SD-Kartenmodul |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Pin 12 |
MOSI |
Pin 11 |
SCK |
Pin 13 |
CS |
Pin 4 |
Sie können den DHT11-Temperatursensor durch einen beliebigen Sensor ersetzen, von dem Sie die Werte protokollieren müssen. Sie können LM35 mit Arduino überprüfen, um die Temperatur abzulesen.
Das RTC-Modul DS3231 ist über die I2C-Kommunikation (SCL, SDA) mit Arduino verbunden, und das SD-Kartenmodul ist über die SPI-Kommunikation (MISO, MOSI, SCK, CS) verbunden. Die Pins 4 und 7 werden vom Arduino-Programm als CS-Pin und Ausgangspin definiert. Sie können sie bei Bedarf gegen einen anderen Pin austauschen. Wir haben zuvor eine SD-Karte mit Arduino im Music Player-Projekt verbunden.
Erklärung des Arduino-Programms:
Wir müssen das Arduino-Programm schreiben, das Folgendes kann.
- Lesen Sie Daten vom DTH11-Sensor (oder von anderen Daten, die Sie protokollieren möchten).
- Initialisieren Sie den I2C-Bus, um Daten vom RTC-Modul zu lesen.
- Initialisieren Sie den SPI-Bus, um das SD-Kartenmodul mit Arduino zu verbinden.
- Speichern Sie Datum, Uhrzeit, Temperatur und Luftfeuchtigkeit auf der SD-Karte.
- Speichern Sie Datum, Uhrzeit, Temperatur und Luftfeuchtigkeit in einer Excel-Tabelle, die auf einem Computer / Laptop ausgeführt wird.
Die obigen Schritte mögen kompliziert klingen, sind aber sehr einfach, da wir die Bibliotheken haben, um die harte Arbeit für uns zu erledigen. Sie müssen die folgenden zwei Bibliotheken herunterladen
- DHT11 Sensor Library von GitHub
- DS3231 RTC-Modulbibliothek von Rinky-Dink Electronics
Sobald Sie die Bibliothek heruntergeladen haben, fügen Sie sie Ihrer Arduino IDE hinzu, indem Sie folgendermaßen vorgehen
Skizze-> Bibliothek einschließen -> ZIP-Bibliothek hinzufügen
Um die Daten von Arduino lebendig in eine Excel-Tabelle auf dem Computer einzuspeisen, müssen wir auch die von Parallax Inc. bereitgestellte Software PLX-DAQ installieren. Folgen Sie dem Link, um die Datei herunterzuladen und sie basierend auf Ihrem Betriebssystem zu installieren. Dies sollte einen Ordner mit dem Namen PLS-DAQ auf Ihrem Desktop erstellt haben. Wir werden uns später in unserem Arbeitsbereich darum kümmern.
Nachdem Sie beide Bibliotheken hinzugefügt und die Software installiert haben, können Sie den vollständigen Code (unten im Tutorial angegeben) verwenden und auf Ihr Arduino hochladen. Ich habe mein Bestes getan, um den Code so einfach wie möglich zu halten, und die Erklärungen werden auch in Kommentaren gegeben. Weiter werde ich die wichtigen Segmente unten erklären.
1. Lesen von Daten aus DS3231:
DS3231 ist ein RTC-Modul (Real Time Clock). Es wird verwendet, um Datum und Uhrzeit für die meisten Elektronikprojekte zu verwalten. Dieses Modul verfügt über ein eigenes Knopfzellen-Netzteil, mit dem Datum und Uhrzeit auch dann beibehalten werden, wenn die Hauptstromversorgung unterbrochen wird oder die MCU einen Hard-Reset durchlaufen hat. Sobald wir also Datum und Uhrzeit in diesem Modul eingestellt haben, wird es immer verfolgt.
Die Verwendung dieses Moduls ist aufgrund der von Arduino bereitgestellten Bibliothek sehr einfach.
// Starten Sie den DS3231 über die Hardwareschnittstelle DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Initialisiere das rtc-Objekt rtc.begin (); // #### Die folgenden Zeilen können kommentiert werden, um Datum und Uhrzeit zum ersten Mal festzulegen. ### / * rtc.setDOW (FREITAG); // Setze Wochentag auf SONNTAG rtc.setTime (18, 46, 45); // Setze die Zeit auf 12:00:00 (24-Stunden-Format) rtc.setDate (6, 30, 2017); // Setze das Datum auf den 1. Januar 2014 * /}
Hinweis: Wenn Sie dieses Modul zum ersten Mal verwenden, müssen Sie Datum und Uhrzeit einstellen. Sie können dazu einfach die oben genannten Kommentare entfernen und Datum und Uhrzeit eingeben. Stellen Sie sicher, dass Sie sie zurückkommentieren und hochladen. Andernfalls werden Datum und Uhrzeit jedes Mal neu eingestellt, wenn Sie das Board ausführen. Sie können auch den RTC IC DS1307 verwenden, um die Zeit mit Arduino zu lesen.
2. Lesen von Daten aus DHT11:
DHT11 ist ein Temperatursensor. Es sendet die Werte für Temperatur und Luftfeuchtigkeit als 8-Bit-Daten seriell über den Ausgangspin des Moduls. Die Bibliothek liest diese Daten mithilfe der seriellen Softwarefunktion des Arduino.
#define DHT11_PIN 7 // Sensorausgangspin ist mit Pin 7 verbunden dht DHT; // Sensorobjekt mit dem Namen DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }}
Hier habe ich den Ausgangs-Pin mit Pin 7 verbunden. Als Beispiel können Sie einen beliebigen Pin auswählen, der Software Serial unterstützt. Aufruf von DHT.read (PIN-Nummer); liest den Wert von Temperatur und Luftfeuchtigkeit und speichert ihn im Parameter DHT.Temperature bzw. DHT.Humidity . Überprüfen Sie auch diese DHT11-basierte Arduino-Temperaturmessung.
3. Initialisieren des SC-Kartenmoduls:
void Initialize_SDcard () {// prüfe, ob die Karte vorhanden ist und initialisiert werden kann: if (! SD.begin (chipSelect)) {Serial.println ("Karte fehlgeschlagen oder nicht vorhanden"); // mach nichts mehr: return; } // öffne die Datei. Beachten Sie, dass jeweils nur eine Datei geöffnet sein kann. // Sie müssen diese also schließen, bevor Sie eine andere öffnen können. Datei dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // Wenn die Datei verfügbar ist, schreiben Sie in sie: if (dataFile) {dataFile.println ("Datum, Uhrzeit, Temperatur, Luftfeuchtigkeit"); // Schreibe die erste Zeile der Excel-Datei dataFile.close (); }}
Die Verwendung einer SD-Karte mit Arduino ist aufgrund der SD-Kartenbibliothek, die standardmäßig zur Arduino-IDE hinzugefügt wird, einfach. In der SD-Karten-Initialisierungsfunktion erstellen wir eine Textdatei mit dem Namen "LoggerCD.txt" und schreiben die erste Zeile unseres Inhalts. Hier trennen wir die Werte durch ein "," als Trennzeichen. Das heißt, wenn ein Komma gesetzt wird, bedeutet dies, dass wir zur nächsten Zelle in der Excel-Tabelle wechseln müssen.
4. Daten auf SD-Karte schreiben
void Write_SDcard () {// öffne die Datei. Beachten Sie, dass jeweils nur eine Datei geöffnet sein kann. // Sie müssen diese also schließen, bevor Sie eine andere öffnen können. Datei dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // Wenn die Datei verfügbar ist, schreiben Sie in sie: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Datum auf SD-Karte speichern dataFile.print (","); // Mit einem "," dataFile.print (rtc.getTimeStr ()) zur nächsten Spalte wechseln; // Datum auf SD-Karte speichern dataFile.print (","); // Mit einem "," dataFile.print (DHT.temperature) zur nächsten Spalte wechseln; // Datum auf SD-Karte speichern dataFile.print (","); // Mit einem "," dataFile.print (DHT.humidity) zur nächsten Spalte wechseln; // Datum auf SD-Karte speichern dataFile.print (","); // Mit einem "," dataFile.println () zur nächsten Spalte wechseln; // Ende der Zeile zur nächsten Zeile verschieben dataFile.close ();// Datei schließen} else Serial.println ("OOPS !! Schreiben der SD-Karte fehlgeschlagen"); }}
Wie bereits erwähnt, möchten wir Datum, Uhrzeit, Temperatur und Luftfeuchtigkeit auf unserer SD-Karte speichern. Mit Hilfe der DS3231-Bibliothek und der DHT11-Bibliothek kann unser Arduino alle diese vier Parameter lesen und in den folgenden Parametern speichern, wie in der folgenden Tabelle gezeigt
Datum |
rtc.getDateStr ()); |
Zeit |
rtc.getTimeStr ()); |
Temperatur |
DHT.Temperatur |
Feuchtigkeit |
DHT. Feuchtigkeit |
Jetzt können wir diese Parameter direkt verwenden, um sie über die Druckzeile auf der SD-Karte zu speichern
dataFile.print (Parameter);
Sie können feststellen, dass jeder Parameter durch ein Komma getrennt ist, damit er lesbar aussieht, und durch ein dataFile.println (). wird verwendet, um das Ende der Zeile anzuzeigen.
5. Daten in PLX-DAQ schreiben
PLX-DAQ ist eine Microsoft Excel Plug-in-Software, mit der wir Werte von Arduino direkt in eine Excel-Datei auf unserem Laptop oder PC schreiben können. Dies ist aus zwei Gründen mein persönlicher Favorit:
1.Sie können die Daten gleichzeitig schreiben und überwachen und können sie als Diagramme darstellen.
2. Sie benötigen kein RTC-Modul wie DS3231, um Datum und Uhrzeit zu erfassen. Sie können einfach das Datum und die Uhrzeit verwenden, die auf Ihrem Laptop / Computer ausgeführt werden, und diese direkt in Excel speichern.
Um diese Software mit Arduino zu verwenden, müssen wir die Daten seriell in einem bestimmten Muster senden, genau wie die Anzeige des Werts auf dem seriellen Monitor. Die wichtigsten Zeilen werden nachfolgend erläutert:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // löscht alle Daten aus früheren Projekten Serial.println ("LABEL, Datum, Uhrzeit, Temperatur, Luftfeuchtigkeit"); // schreibe immer LABEL, um es als erste Zeile anzuzeigen} void Write_PlxDaq () {Serial.print ("DATA"); // schreibe immer "DATA", um Folgendes als Data Serial.print (",") anzuzeigen; // Mit einem "," Serial.print ("DATE") zur nächsten Spalte wechseln; // Datum in Excel speichern Serial.print (","); // Mit einem "," Serial.print ("TIME") zur nächsten Spalte wechseln; // Datum in Excel speichern Serial.print (","); // Mit einem "," Serial.print (DHT.temperature) zur nächsten Spalte wechseln; // Datum in Excel speichern Serial.print (","); // Mit einem "," Serial.print (DHT.humidity) zur nächsten Spalte wechseln;// Datum in Excel speichern Serial.print (","); // Mit einem "," Serial.println () zur nächsten Spalte wechseln; // Ende der Zeile in die nächste Zeile verschieben}
Die Software kann Schlüsselwörter wie LABEL, DATA, TIME, DATE usw. erkennen. Wie in der Initialisierungsfunktion gezeigt, wird das Schlüsselwort „LABEL“ verwendet, um die erste Zeile der Excel-Tabelle zu schreiben. Später in der Schreibfunktion verwenden wir das Schlüsselwort "DATA", um anzugeben, dass die folgenden Informationen als DATA betrachtet werden sollten. Um anzuzeigen, dass wir zur nächsten Zeile wechseln müssen, müssen wir ein Komma (",") verwenden. Um das Ende der Zeile anzuzeigen, müssen wir eine Serial.println (); senden .
Wie bereits erwähnt, können wir das Datum und die Uhrzeit des Systems schreiben, indem wir die Schlüsselwörter "DATE" und "TIME" wie oben gezeigt senden.
Hinweis: Verwenden Sie bei Verwendung dieser PLX_DAQ-Software keinen seriellen Monitor.
Arbeitserklärung:
Die Arbeit mit dem Arduino Data Logger ist einfach. Sobald die Hardware und die Software bereit sind, ist es Zeit, das Programm in Ihr Arduino Board zu brennen. Sobald Ihr Programm hochgeladen wird, werden Ihre Temperatur- und Feuchtigkeitswerte auf Ihrer SD-Karte gespeichert. Sie müssen die folgenden Schritte ausführen, damit PLX-DAQ die Excel-Tabelle auf dem Computer anmelden kann.
Schritt 1: Öffnen Sie die Datei "Plx-Daq Spreadsheet", die während der Installation auf Ihrem Desktop erstellt wurde.
Schritt 2: Wenn ein Sicherheitsblock vorhanden ist, klicken Sie auf Optionen-> Inhalt aktivieren -> Fertig stellen -> OK , um den folgenden Bildschirm aufzurufen .
Schritt 3: Wählen Sie nun die Baudrate als „9600“ und den Port, an den Ihr Arduino angeschlossen ist, und klicken Sie auf Verbinden. Ihre Werte sollten wie in der Abbildung unten gezeigt protokolliert werden.
Sie können dieses Excel-Blatt offen lassen und die Werte überwachen, sobald sie protokolliert werden. In diesem Fall hätte unsere SD-Karte auch die gleichen Werte gespeichert. Um zu überprüfen, ob dies funktioniert, entfernen Sie einfach die SD-Karte und öffnen Sie sie auf Ihrem Computer. Sie sollten eine Textdatei mit dem Namen "LoggerCD.txt" darin finden. Beim Öffnen würde es ungefähr so aussehen.
Diese Datei enthält Daten, aber es ist schwierig, sie auf einem Notizblock zu analysieren. Daher können wir es in Excel als CSV-Datei (Comma Separated Values) öffnen, um es effektiver zu machen. In Excel zu öffnen
1.Öffnen Sie Excel. Klicken Sie auf Datei-> Öffnen und wählen Sie unten rechts "Alle Dateien" und dann die Datei "LoggerCD" von der SD-Karte. Dadurch wird ein Textimport-Assistent geöffnet.
2.Klicken Sie auf „Weiter“ und wählen Sie Komma als Trennzeichen. Klicken Sie erneut auf "Weiter". Dann Fertig stellen.
3. Jetzt werden Ihre Werte wie unten gezeigt in einer Excel-Datei geöffnet
Ich habe die Werte alle 5 Sekunden protokolliert. Sie können sie für jede gewünschte Zeit protokollieren, indem Sie die Verzögerungsfunktion im Programm ändern. Für ein detailliertes Verständnis der Arbeitsweise sehen Sie sich bitte das folgende Video an.
Ich hoffe, Ihnen hat das Projekt gefallen, wenn Sie Zweifel haben, schreiben Sie sie in den folgenden Kommentarbereich und ich werde Ihnen helfen.
Bonusverbesserung - Drahtlose Datenerfassung mit Arduino:
Sobald Sie bis zu diesem Punkt erfolgreich waren, können Sie mit wenigen Fortschritten und nur ein paar Codezeilen Daten drahtlos protokollieren.
Schließen Sie einfach ein Bluetooth-Gerät wie HC-05 an und schreiben Sie die Daten über Bluetooth anstelle von seriell über PLX-DAQ. Das heißt Serial.print (Parameter) ersetzen ; mit BluetoothName.print (Parameter); und verbinden Sie Ihren Laptop mit Ihrem Bluetooth-Modul und wählen Sie den COM-Anschluss aus, mit dem Ihr Laptop Bluetooth und Taadaaa verbunden ist. Sie haben in kürzester Zeit ein drahtloses Datenerfassungssystem.