Hallo liebe Arduino Gemeinde,
ich habe ein kleines Problem mit dem versenden von mehreren Wetterdaten.
Aufbau:
2x Arduino Uno
1x 433 Mhz Rf Sender
1x 433 Mhz Rf Empfänger
1x Temperatur-, Luftfeuchtigkeits-, Helligkeits-, Regensensor
Sender + Wetterstation
#include <VirtualWire.h>
#include "DHT.h"
char buffer [10];
//Wetterstation Temperatur und Luftfeuchtigkeit
#define DHTPIN 9
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Fotowiderstand
int helligkeit = A0;
int sensorWert = 0;
// Regensensor
int wertRegen = A1;
void setup ()
{
Serial.begin(9600); // Serieller Monitor
vw_setup(1000); // Transmitter Bits per sec
vw_set_tx_pin(3);
dht.begin(); // Temp-/Feuchtigkeitssensor starten
}
void loop ()
{
sensorWert = analogRead(helligkeit);
Serial.print("Helligkeitswert = ");
Serial.print(sensorWert);
delay (500);
//Regensensor
wertRegen=analogRead(A1);
Serial.print("Regen-Messwert:");
Serial.print(wertRegen);
delay(500);
// Temperatur-/Feuchtigkeitssensor
float h = dht.readHumidity(); //Luftfeuchte auslesen
float t = dht.readTemperature(); //Temperatur auslesen
Serial.print("Luftfeuchte: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatur: ");
Serial.print(t);
Serial.println(" C");
delay (1000);
// Transmitter!
Serial.println(t);
itoa (t,buffer,10);
sendString(buffer,true);
delay(100);
}
void sendString(String message, bool wait)
{
byte messageLength = 6;
char t[messageLength];
message.toCharArray(t, messageLength);
vw_send((uint8_t *)t, messageLength);
if (wait) vw_wait_tx();
Serial.println("sent: " + message);
}
Das ist der Sketch (er ist noch nicht ganz fertig).
Empfänger
#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN];
byte messageLength = VW_MAX_MESSAGE_LEN;
int ledPin = 13;
void setup()
{
Serial.begin(9600);
Serial.println("device is ready...");
pinMode(ledPin, OUTPUT);
vw_set_rx_pin(4);
vw_setup(1000); // bps
vw_rx_start();
}
void loop()
{
if (vw_get_message(message, &messageLength)) // non-blocking
{
//Serial.print("rec");
for (int i = 0; i < messageLength; i++)
{
Serial.write(message[i]);
}
Serial.println();
}
digitalWrite(ledPin, HIGH);
// stop the program for <t> milliseconds:
delay(200);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <t> milliseconds:
delay(message[3]*10);
}
Nun zu meinem Problem:
Ich wollte, dass die alle Daten (Temp, usw.) zum Empfängermonitor übermittelt und angezeigt werden. Dies funktioniert jedoch nicht wie erhofft. Hat jemand eine Idee was falsch ist?
Eine weitere (bessere) Idee war von mir, die Daten nicht (nur) auf dem Monitor anzeigen zu lassen, sondern auf einem externen Display (Crystal). Ist es mit einem Display einfacher? Wenn ja hat jemand eine Idee für einen Sketch? Fand hierzu keine Lösungsansätze.
Dickes Merci für die Antworten im Voraus!