Echtzeit Daten mit LibreOffice

Hinweis: Kauflinks verweisen auf Ebay- oder Amazon-Angebote, die mir eine kleine Provision bezahlen, um meinen Kanal/Website zu unterstützen.

Man kann auch mit dem kleinen Terminalprogramm und dem Plotter direkt in Arduino die Daten der seriellen COM Schnittstelle auslesen und visualisieren. Möchte man die Daten jedoch dauerhaft speichern, braucht es eine Tabellenkalkulation wie Excel.

DHT11

In diesem Experiment lese ich die Echtzeitdaten des Sensors DHT11 aus, der zugleich Temperatur und Luftfeuchtigkeit anzeigt

Libre Office

Ich verwende hier LibreOffice Calc. Zusätzlich brauche ich jedoch auch noch das Terminalprogramm "CoolTerm", das in der Lage ist, die empfangenen Daten in eine Textdatei zu schreiben. Diese Textdatei wird dann für LibreOffice Calc zur Datenquelle.

Ein Problem bei der grafischen Darstellung als Diagramm war der von Arduino ausgegebene Dezimalpunkt. Diesen musste ich in Arduino in ein Komma umwandeln. Dann erst wurden die Daten in eine grafische Darstellung übernommen.

Produkte

Video Anleitung

"Arduino Sensor Daten mit Tabellenkalkulation auslesen"

youtube-video

Arduino Sketch

#include <dhtnew.h>
DHTNEW mySensor(7);
float ausgHum;      //Variablen deklarieren für Umwandlung Punkt zu Komma
float ausgTemp;
String ausgHum2;
String ausgTemp2;
void setup()
{
  Serial.begin(9600);  
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print("\t");
  Serial.println("Temperatur: ");
}
void loop()
{
mySensor.read();
  for (int i = 0; i < 20; i++)
  {
    if (millis() - mySensor.lastRead() > 1000)
    {
      mySensor.read();
    }
    //Ausgabe an COM inkl. Umwandlung von Punkt zu Komma   
    ausgHum = (mySensor.getHumidity());    
    ausgHum2 = String (ausgHum); 
    ausgHum2.replace(".",",");         // Punkt durch Komma ersetzen
    Serial.print (ausgHum2);
    Serial.print("\t");
    ausgTemp = (mySensor.getTemperature());    
    ausgTemp2 = String (ausgTemp); 
    ausgTemp2.replace(".",",");         // Punkt durch Komma ersetzen
    Serial.print (ausgTemp2);
    Serial.print("\n");
    delay(5000);                        //Intervall in Millisekunden
  }
}
void test()
{
  // READ DATA
  uint32_t start = micros();
  int chk = mySensor.read();
  uint32_t stop = micros();
  switch (chk)
  {
    case DHTLIB_OK:
      Serial.print("OK,\t");
      break;
    case DHTLIB_ERROR_CHECKSUM:
      Serial.print("Checksum error,\t");
      break;
    case DHTLIB_ERROR_TIMEOUT:
      Serial.print("Time out error,\t");
      break;
    default:
      Serial.print("Unknown error,\t");
      break;
  }
  // DISPLAY DATA
  Serial.print(mySensor.getHumidity(), 1);
  Serial.print(",\t");
  Serial.print(mySensor.getTemperature(), 1);
  Serial.print(",\t");
  uint32_t duration = stop - start;
  Serial.print(duration);
  Serial.print(",\t");
  Serial.println(mySensor.getType());
  delay(500);
}
// END OF FILE

© by Richy Schley, 2021 - 2024. All Rights Reserved. Built with Typemill.