Sensorwerte in eine CSV- Datei auf einer SD-Karte schreiben

eine weitere Bastelseite ....

Sensorwerte in eine CSV- Datei auf einer SD-Karte schreiben

13. Oktober 2022 Arduino Open Weather Egg Wemo 0

Als Beispiel werden hier Sensorwerte von einem MPB180 Sensor in eine CSV- Datei geschrieben. Der I2C Bus wurde dabei auf die Pins 4 und 0 gelegt, da  das LoLin32 Lite ansonsten nicht den SPI Bus parallel benutzen kann. Sofern die Datei towilab.csv noch nicht existiert, wird sie automatisch angelegt.

In der Loop Funktion wird der Sensor ausgelesen und die entsprechenden Werte in die CSV Datei geschrieben. Dabei wird die Datei immer geöffnet und anschließend geschlossen. Durch die Pause wird verhindert das die SD Karte zu schnell vollgeschrieben wird.

/*  owe sensor als csv auf sd-karte schreiben 10.2022
  pinbelegung für wemos lolin 32 lite
  sclk    18
  miso    19
  mosi    23
  cs      5
  i2c_sda 0
  i2c_scl 4
*/

#include <SPI.h>                                //einbinden SPI bibliothek
#include <SD.h>                                 //einbinden SD-karten bibliothek
#include "Wire.h"                               //einbinden I2C bibliothek                   
#include <Adafruit_BMP085.h>

#define i2c_sda 0                               //hier den sda port definieren
#define i2c_scl 4                               //hier den scl port definieren

Adafruit_BMP085 bmp;                            //objekt erstellen
File csv_datei;                                 //objkt csv_datei erzeugen

void setup() {
  Serial.begin(115200);                         //serielle Schnittstelle erzeugen
  while (!Serial) {;}                           //auf die serielle schnittstelle warten
  Wire.begin(i2c_sda, i2c_scl);                 //i2c Schnittstelle starten

  if (!bmp.begin()) {
    Serial.println("konnnte den sensor nicht finden");
    while (1) {}
  }
  Serial.println("sensor ok");

  if (!SD.begin()) {
    Serial.println("keine sd karte gefunden");
    while (1);
  }
  Serial.println("sd karte ok");
}

void loop() {
  float temp = bmp.readTemperature();               //lesen der temperatur
  float druck = bmp.readPressure();              //lesen des druckes

  Serial.print("Temperatur = ");
  Serial.print(temp);
  Serial.println(" *C");  
  Serial.print("Druck = ");
  Serial.print(druck);
  Serial.println(" Pa");
  Serial.println();  

  csv_datei = SD.open("/towilab.csv", FILE_APPEND); //datei oeffnen und werte anhaengen
  if (csv_datei) {                                  //ist die datei offen
    csv_datei.print(temp);                          //schreiben der sensorwerte
    csv_datei.print(",");                           
    csv_datei.println(druck);                     
    csv_datei.close();                              //datei schließen
    Serial.println("werte geschrieben");
  } 
  else {
    Serial.println("konnte die datei nicht finden");
  }
  delay(5000); 
}