Hallo,
ich habe mir eine kleine Wetterstation gebaut die auch für mich gut fuktioniert. Einmal die Anzeige am PC-BS und einmal auf einem kleinen 0,96" Display auf dem Board.
Nun würde ich gerne dieses Board auf den Balkon stellen und per Funk übertragen. Der Beispielsketch oder Demosketch fuktioniert ja auch. Aber bei der Umsetzung meiner 10 Zahlendaten zu übertragen komme ich einfach nicht auf einen grünen Zweig. Ich konnte auch weder hier noch über Google nichts für mich brauchbares finden. Erschwerend kommt noch hinzu dass ich so gut wie kein englisch kann.
Hat hier einer eventuell Lust mir zu helfen?
Ich füge mal meinen bisherigen Sketch ein.
// 0,96" Display
//===============
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//Uhrenmodul
//===========
#include "Wire.h"
#include "RTClib.h"
RTC_DS1307 RTC;
// Temperatur und Feuchte Sensor
//===============================
#include "DHT.h"
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302
DHT dht(DHTPIN, DHTTYPE);
// Luftdruck
//===========
#include <SFE_BMP180.h>
SFE_BMP180 pressure;
#define ALTITUDE 295.0 // 295.0 für Ludwigsburg
//1655 Altitude of SparkFun's HQ in Boulder, CO. in meters
double x,y;
int z;
// EB - 315MHz_RF_Transmitter
//============================
#include <VirtualWire.h>
float myWetter[9]; //Array Wetter
//----------------------------------------------------------------
void setup(void) {
vw_set_ptt_inverted(true); // VirtualeWire setup
vw_setup(2000); // Transmission speed in bits per second.
vw_set_tx_pin(5); // Setup transmit pin
Serial.begin(9600);
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
dht.begin();
if (pressure.begin())
Serial.println("BMP180 init success");
else
{
Serial.println("BMP180 init fail (disconnected?)\n\n");
while(1);
}
}
void draw(void)
{
//-----------Zeiterfassung------------
DateTime now = RTC.now();
//---------Ende Zeiterfassung----------
//----------Temperatur und Feuchtesensor------------
// Read Feuchte %
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);
//----------Ende Temp+Feuchte---------
{
//------Luftdrucksensor----------
char status;
double T,P,p0,a;
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
status = pressure.getTemperature(T);
if (status != 0)
{
y = T;
status = pressure.startPressure(3);
if (status != 0)
{
delay(status);
status = pressure.getPressure(P,T);
if (status != 0)
{
x = P;
}
else Serial.println("error retrieving pressure measurement\n");
}
else Serial.println("error starting pressure measurement\n");
}
else Serial.println("error retrieving temperature measurement\n");
}
else Serial.println("error starting temperature measurement\n");
} //----------Ende Luftdruck------------------
// ---------Ausgabe auf kleines 0,96" Display----------
// graphic commands to redraw the complete screen should be placed here
//u8g.setFont(u8g_font_6x13B);
//u8g.setFont(u8g_font_unifont);
u8g.setFont(u8g_font_7x13);
//u8g.setFont(u8g_font_ncenB08);
u8g.setPrintPos(0, 8);
u8g.print("Wetterstation ");
u8g.setPrintPos(0, 22);
u8g.print("Feucht (%): ");
u8g.print((float)h, 2);
u8g.setPrintPos(0, 36);
u8g.print("Temp (oC): ");
u8g.print((float)t, 2);
u8g.setPrintPos(0, 64);
u8g.print(now.day());
u8g.print('.');
u8g.print(now.month());
u8g.print('.');
u8g.print(now.year());
u8g.print(' ');
u8g.print(now.hour());
u8g.print(':');
u8g.print(now.minute());
u8g.print(':');
u8g.println(now.second());
u8g.setPrintPos(0, 50);
u8g.print("Luftd. ");
u8g.setPrintPos(47, 50);
u8g.print(x,2);
u8g.print(" ");
u8g.print(y);
// ---------mit EB - 315MHz_RF_Transmitter senden-----------
myWetter[0] = (float)h;
myWetter[1] = (float)t;
myWetter[2] = (now.day());
myWetter[3] = (now.month());
myWetter[4] = (now.year());
myWetter[5] = (now.hour());
myWetter[6] = (now.minute());
myWetter[7] = (now.second());
myWetter[8] = (x);
myWetter[9] = (y);
vw_send ((uint8_t *) Wetter1CharMsg, strlen(Wetter1CharMsg))
vw_wait_tx(); // Wait until the whole message is gone
delay(2000);
// ----------Ausgabe auf PC-Bildschirm----------
/*
Serial.println("Wetterstation");
Serial.print("Feuchte %: ");
Serial.println((float)h);
Serial.print("Temp (oC): ");
Serial.println((float)t);
Serial.print("Luftd. ");
Serial.print(x);
Serial.print(" ");
Serial.println(y);
Serial.print(now.day());
Serial.print('.');
Serial.print(now.month());
Serial.print('.');
Serial.print(now.year());
Serial.print(' ');
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(':');
Serial.println(now.second());
Serial.println();
delay(1); // 1000 wenn Pc-BS an
*/
}
void loop(void)
{
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(5); //500
}
Das kleine Display soll auch weiterhin auf dem Bord bleiben mit samt der Uhrenanzeige. Ein zweites soll dann auf dem Empfangsboard seinen Dienst tun.
der Lokgeist