Echtzeit Daten

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 oder LibreOffice Calc. In diesem Experiment gebe ich in Echtzeit Temperatur und Luftfeuchtigkeit mit dem DHT11 Sensor als Diagramm aus.

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 (ähnlich Excel). 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. Beide Programme sind kostenlos.

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.

Was man braucht

Video Anleitung

Arduino Sensor Daten mit Tabellenkalkulation in Echtzeit auslesen.

Arduino Sketch Code

#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