Asugelesene Arduino Werte an Raspberry senden

Hallo liebe Community,
ich arbeite zur zeit an einem Projekt bei dem der Arduino verschiedene Sensoren ausließt (Luftfeuchtigkeit, Temperatur, Luftdruck).
Ich würde gerne die ausgelesenen Werte (welche zurzeit über den seriellen Monitor ausgegeben werden) an einen Raspberry schicken damit dieser die Werte in einer Datenbank wie bspw. NodeRed ausgibt.
Da ich relativ unerfahren bin und mich nur grob mit der programmierung auskenne bräuchte ich daher hilfe:

Wie lasse ich Werte die zur Zeit in der Arduino-Software ausgegeben werden auf dem Raspberry in einer Art Wertetabelle die bspw. über NodeRed läuft anzeigen?

Im Anhang, den Code den ich zur Zeit verwende:

#include <OneWire.h>

//DHT11
#include "DHT.h"
#define DHTPIN 11          
#define DHTTYPE DHT11     
DHT dht(DHTPIN, DHTTYPE);



//BMP280
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp;



//DS18B20
#include <OneWire.h> 
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2 
 
OneWire oneWire(ONE_WIRE_BUS); 

DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  //DHT11
  dht.begin();

  //BMP280
  if (!bmp.begin(0x76)) {
  Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
  while (1);

  //DS18B20
  sensors.begin();
}
}

void loop() {

  //DHT11
  
  delay(2000);                     
  float h = dht.readHumidity();    
  float t = dht.readTemperature(); 
  if (isnan(h) || isnan(t)) {
    Serial.println("Fehler beim auslesen des Sensors DHT11!");
    return;
  }
  Serial.print("Luftfeuchtigkeit: ");
  Serial.println(h);
  Serial.print("Temperatur: ");
  Serial.print(t);
  Serial.println("°C");


  //BMP280
  Serial.print(F("Pressure = "));
  Serial.print(bmp.readPressure());
  Serial.println(" Pa");



  //DS18B20
   sensors.requestTemperatures(); // 
   Serial.print("Wasser Temperatur: "); 
   Serial.print(sensors.getTempCByIndex(0));
  Serial.println();
  Serial.println();

  
  delay(2000);
}

Danke schon mal im Voraus
LG

ArduinoProjekt.ino (1.38 KB)

Setze Deinen Code bitte direkt ins Forum. Benutze dazu Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Edit: Dann brauchst Du auf dem Raspi nur noch den passenden Seriellen Eingang einzulesen und auszuwerten. Ich glaube der Raspi arbeitet mit 3,3V. Wenn ja müssen da noch Pegelwandler rein.

Andere Wege wären über I2C oder (W)LAN.

Da sollte aber erst mal die Programmierung auf der Raspi-Seite geklärt sein. Für den gibt es auch ein Forum.

Tommy56:
Edit: Dann brauchst Du auf dem Raspi nur noch den passenden Seriellen Eingang einzulesen und auszuwerten. Ich glaube der Raspi arbeitet mit 3,3V. Wenn ja müssen da noch Pegelwandler rein.

vielen dank für deine Antwort, aber werde nicht richtig schlau draus, wie lasse ich den Raspi den passenden Eingang einzulesen bzw auszuwerten?

und was muss ich an meinem Arduino Code noch verändern, da die Werte aktuell ja über den seriellen Monitor ausgegeben werden?

LG

Wenn du die Daten aktuell auf dem seriellen Monitor anzeigen kannst, werden diese doch über USB an den Monitor gechickt.
Dann sollte es doch funktionieren, wenn du dein USB-Kabel an den Raspi steckst und dort die Daten einliest.
Wie das dan funktioniert, erfährst du sicher im Raspi-Forum.

boernsendon:
vielen dank für deine Antwort, aber werde nicht richtig schlau draus, wie lasse ich den Raspi den passenden Eingang einzulesen bzw auszuwerten?

Das solltest Du in einem Raspi-Forum fragen.

Beim Arduino wäre es evtl. besser, alle Werte (Ohne Text) in eine Zeile getrennt mit ; und abgeschlossen mit Zeilenvorschub zu schreiben. Das liest sich auf der Empfangsseite besser ein.
Aber zur Not kannst Du das auf dem Arduino auch so lassen.

Gruß Tommy

Float Zahlen gibt der Arduino im “englischen” Format mit Dezimalpunkt aus. Dazu passt ein ‘,’ als Trenner zwischen mehreren Zahlen in einer Zeile. Das Format nennt sich dann auch CSV (comma-separated-values), und ist auf der Linux-Seite (raspi) bei entsprechender locale - Einstellung auch leicht so einlesbar.

Deutsch wird gern ein Dezimal-Komma verwendet und ein ‘;’ um mehrere Zahlen zu trennen.
Das Dezimal-Komma ist dem Arduino allerdings mühsam beizubringen.
Einfacher ist die Anpassung auf der Linux-Seite, denke ich.

Oder noch einfacher nur ganze Zahlen übertragen. DHT11 ist ja nicht soo genau, da lohnt es kaum, mit Zehntel-Celsius rumzufummeln, nur um halbe Grad zu unterscheiden.

Einer der wenigen Vorteile von Fahrenheit: Kein Mensch kommt auf die Idee, Gleitkommazahlen zu verwenden.