Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Tutorial zur Arduino SD-Karte und Datenprotokollierung

In diesem Arduino-Tutorial lernen wir, wie man ein SD-Kartenmodul mit dem Arduino-Board verwendet. Auch in Kombination mit dem DS3231-Echtzeituhrmodul werden wir ein Datenaufzeichnungsbeispiel erstellen, bei dem wir die Daten eines Temperatursensors auf der SD-Karte speichern und in Excel importieren, um daraus ein Diagramm zu erstellen. Sie können sich das folgende Video ansehen oder das schriftliche Tutorial unten lesen.

Wie es funktioniert

Werfen wir zunächst einen Blick auf das SD-Kartenmodul. Es funktioniert mit Standard-MicroSD-Karten, deren Betriebsspannung 3,3 V beträgt. Daher verfügt das Modul über einen Spannungsregler und einen Pegelumsetzer, sodass wir es mit den 5-V-Pins des Arduino-Boards verwenden können.

Das SD-Kartenmodul hat sechs Pins, zwei für die Stromversorgung des Moduls, die VCC- und die GND-Pins und vier weitere Pins für die SPI-Kommunikation. So müssen wir es mit dem Arduino Board verbinden.

Beachten Sie, dass jedes Arduino-Board unterschiedliche SPI-Pins hat, die entsprechend verbunden werden sollten.

Die für dieses Arduino-Tutorial benötigten Komponenten erhalten Sie über die folgenden Links:

  • Micro-SD-Kartenmodul………………..
  • Arduino-Board ……………………………
  • Steckbrett und Schaltdrähte ……… 

Arduino SD-Kartenmodulcode

Als nächstes müssen wir den Arduino programmieren. Hier ist ein einfacher Code:

/* * Arduino SD Card Tutorial Example * * by Dejan Nedelkovski, www.HowToMechatronics.com */ #include <SD.h> #include <SPI.h> File myFile; int pinCS = 53; // Pin 10 on Arduino Uno void setup() { Serial.begin(9600); pinMode(pinCS, OUTPUT); // SD Card Initialization if (SD.begin()) { Serial.println("SD card is ready to use."); } else { Serial.println("SD card initialization failed"); return; } // Create/Open file myFile = SD.open("test.txt", FILE_WRITE); // if the file opened okay, write to it: if (myFile) { Serial.println("Writing to file..."); // Write to file myFile.println("Testing text 1, 2 ,3..."); myFile.close(); // close the file Serial.println("Done."); } // if the file didn't open, print an error: else { Serial.println("error opening test.txt"); } // Reading the file myFile = SD.open("test.txt"); if (myFile) { Serial.println("Read:"); // Reading the whole file while (myFile.available()) { Serial.write(myFile.read()); } myFile.close(); } else { Serial.println("error opening test.txt"); } } void loop() { // empty } Codesprache:Arduino (arduino)

Codebeschreibung:  Also müssen wir zuerst die Standard-SD- und SPI-Bibliotheken einbinden, ein „File“-Objekt erstellen und den ChipSelect-Pin des SPI-Busses definieren, in meinem Fall den Pin 53 für das Arduino Mega Board. Für dieses Beispiel möchten wir, dass unser Code nur einmal ausgeführt wird, also wird der gesamte Code in den Abschnitt „setup“ platziert, während der Abschnitt „loop“ leer bleibt.

Also müssen wir zuerst die serielle Kommunikation starten und den ChipSelect-Pin als Ausgang definieren. Wir müssen dies tun, da der ChipSelect-Pin „Low“ sein muss, damit die SPI-Kommunikation zwischen dem Modul und dem Arduino funktioniert.

Als nächstes initialisieren wir mit der Funktion SD.begin() die SD-Karte und wenn die Initialisierung erfolgreich ist, wird die „if“-Anweisung wahr und der String „SD-Karte ist einsatzbereit“. wird auf dem seriellen Monitor ausgegeben, andernfalls wird die Zeichenfolge „SD-Karten-Initialisierung fehlgeschlagen“ ausgegeben und auch das Programm wird beendet.

Als Nächstes erstellen wir mit der Funktion SD.open() eine neue Datei mit dem Namen „test.txt“, einschließlich des Arguments FILE_WRITE, was bedeutet, dass wir die Datei sowohl lesen als auch schreiben können. Wenn die Datei bereits existiert, wird die Funktion SD.open() sie einfach öffnen.

Wenn also die Datei erfolgreich erstellt wurde, drucken wir zuerst den String „Writing to file“ auf dem seriellen Monitor und dann mit der Funktion myFile.println() den Text „Testing text 1, 2 ,3…“ in die Datei. Danach müssen wir die Funktion close() verwenden, um sicherzustellen, dass die zuvor in die Datei geschriebenen Daten physisch auf der SD-Karte gespeichert werden.

Als nächstes werden wir sehen, wie wir aus der Datei lesen können. Also wieder die gleiche Funktion, SD.open(), aber dieses Mal, da die Datei „test.txt“ bereits erstellt wurde, wird die Funktion nur die Datei öffnen. Dann lesen wir mit der Funktion myFile.read() aus der Datei und drucken sie auf dem seriellen Monitor. Die read()-Funktion liest tatsächlich nur ein Zeichen auf einmal, daher müssen wir die „while“-Schleife und die Funktion myFile.available() verwenden, um alle Zeichen oder die gesamten zuvor geschriebenen Daten zu lesen. Am Ende müssen wir die Datei schließen.

Wenn nun nach dem Hochladen des Codes auf den Arduino alles in Ordnung ist, erscheint Folgendes auf dem seriellen Monitor.

Wie wir sehen können, wurde die SD-Karte erfolgreich initialisiert, das Schreiben darauf war ebenfalls erfolgreich und auch das Lesen der geschriebenen Daten oder der Zeichenfolge „Testing text 1, 2 ,3…“ wurde erfolgreich gelesen. Wenn wir die SD-Karte auf unserem Computer öffnen, können wir die erstellte „test.txt“-Datei und den darin geschriebenen Text sehen.

Arduino-SD-Karten-Datenprotokollierung

Lassen Sie uns nun ein weiteres interessanteres Beispiel für die Datenprotokollierung eines Temperatursensors machen. Zu diesem Zweck verwenden wir das DS3231-Echtzeituhrmodul, das auch über einen eingebauten Temperatursensor verfügt. Weitere Details zum Anschließen und Verwenden dieses Moduls finden Sie in meinem vorherigen Tutorial.

Nachdem wir also die beiden Module mit dem Arduino verbunden haben, werfen wir einen Blick auf den Code für dieses Beispiel.

/*
 *  Arduino Temperature Data Logging
 *  
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>
#include <DS3231.h>

File myFile;
DS3231  rtc(SDA, SCL);

int pinCS = 53; // Pin 10 on Arduino Uno

void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  rtc.begin();    
}
void loop() {
  Serial.print(rtc.getTimeStr());
  Serial.print(",");
  Serial.println(int(rtc.getTemp()));
 
  myFile = SD.open("test.txt", FILE_WRITE);
  if (myFile) {    
    myFile.print(rtc.getTimeStr());
    myFile.print(",");    
    myFile.println(int(rtc.getTemp()));
    myFile.close(); // close the file
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }
  delay(3000);
} Codesprache:Arduino (arduino) 

Codebeschreibung:  Zuerst müssen wir die für beide Module benötigten Bibliotheken einbinden, dann die beiden Objekte erstellen und im Setup-Abschnitt initialisieren.

Im Schleifenabschnitt mit der Funktion Serial.print() drucken wir die Zeit und die Temperaturwerte auf dem seriellen Monitor, mit einem „Komma“-Zeichen dazwischen und einer neuen Zeile nach dem Temperaturwert. Wir brauchen diese Form der Linien, damit wir sie einfach importieren und ein Diagramm in Excel erstellen können. Beachten Sie auch, dass die Temperaturwerte in Ganzzahlen umgewandelt werden.

Dieselben Werte werden also auch in die neu erstellte „test.txt“-Datei geschrieben und am Ende müssen wir nur noch eine Verzögerung hinzufügen, die das Intervall der Aufzeichnung der Temperaturdaten darstellt.

Nach dem Hochladen des Codes beginnt der Arduino alle 3 Sekunden mit dem Speichern der Temperaturwerte. Nach einer Weile können wir die SD-Karte auf unserem Computer öffnen, um die Ergebnisse zu sehen.

Um ein Diagramm in Excel zu erstellen, müssen wir diese Datei importieren und so werden wir das tun:

Im Datenmenü müssen wir auf die Schaltfläche „Get Data From Text“ klicken und die Textdatei auswählen. Hier wählen wir „Getrennt“ und klicken auf „Weiter“. Wählen Sie im zweiten Schritt das Komma als Trennzeichen und beenden Sie den Assistenten.

Dieser Prozess fügt also die Zeit- und Temperaturwerte in separate Spalten ein. Jetzt müssen wir nur noch beide Spalten auswählen und aus dem Einfügen-Menü „Liniendiagramm einfügen“ auswählen. Dadurch wird das Diagramm erstellt, in dem wir alle 3 Sekunden die Temperaturwerte sehen können.

Das ist alles für diese Anleitung. Sie können gerne Ihre Fragen im Kommentarbereich unten stellen.


Herstellungsprozess

  1. [Video] Maschinendatenprotokollierung (PLC) und Dashboarding erklärt
  2. Anleitung zum Arduino-RFID-Schloss
  3. So bauen Sie einen Arduino-Energiemonitor und einen Datenlogger
  4. LCD-Animation und -Spiele
  5. Temperatur- und Feuchtigkeitsdatenlogger
  6. Python3- und Arduino-Kommunikation
  7. FM-Radio mit Arduino und RDA8057M
  8. Anleitung zum Arduino-Fingerabdrucksensor
  9. Arduino-Tutorial:Mini-Klavier
  10. Arduino-Tutorial 01:Erste Schritte