X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=rpi_promini%2Frpi_promini.ino;h=a2ee8d1139c09abfe4ed49f0cb66c90f1a33d900;hb=HEAD;hp=1567feeda117ed69d7ca18c7e53299bb04a7779a;hpb=c7fd9242b6896533298b37c66721fc1057711b52;p=Arduino diff --git a/rpi_promini/rpi_promini.ino b/rpi_promini/rpi_promini.ino index 1567fee..c89b2cf 100644 --- a/rpi_promini/rpi_promini.ino +++ b/rpi_promini/rpi_promini.ino @@ -5,13 +5,13 @@ RPI pin Arduino RXD TXD TXD RXD - GPIO6 RST + BCM25 RST GND GND +5V RAW 2 433Mhz receive // 3 433Mhz outdoor temperature sensor receiver # DISABLED - 8 DHT22 + 8 DHT22 (VCC from arduino VCC) 10 433Mhz send 11 DS18B20 12 315Mhz send @@ -40,7 +40,7 @@ DallasTemperature sensors(&oneWire); int int_0 = 300; // ms int int_1 = 900; // ms int wait = 2000; // ms -int repeat = 20; // times (5 times seem a little low for sensors which are more than 10m away) +int repeat = 5; // times (5 times seem a little low for sensors which are more than 10m away) void send_315(char *code) { Serial.print("send 315Mhz "); @@ -78,8 +78,8 @@ DHT dht; #include "RunningAverage.h" -RunningAverage temp_avg(20); -RunningAverage hum_avg(20); +RunningAverage temp_avg(10); +RunningAverage hum_avg(10); // setup @@ -88,7 +88,7 @@ void help() { } void setup() { - Serial.begin(9600); + Serial.begin(115200); mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2 mySwitch.enableTransmit(10); // with sender wired in receiving doesn't work, pin #10 mySwitch.setRepeatTransmit(repeat); // or change to be different for 433 and 315 MHz @@ -107,17 +107,22 @@ void setup() { int serial_pos = 0; char serial_data[2]; // socket (0-9), state (0-1) char binary_data[32]; +unsigned int dht22_errors = 0; unsigned long time = millis(); void loop() { if ( millis() - time > 2000 ) { - float t = dht.getTemperature(); - if ( dht.getStatus() == 0 ) + float t = dht.getTemperature(); + float delta_t = abs(t - temp_avg.getAverage()); + if ( dht.getStatus() == 0 && delta_t < 5 ) temp_avg.addValue( t ); - float h = dht.getHumidity(); - if ( dht.getStatus() == 0 ) + else dht22_errors++; + float h = dht.getHumidity(); + float delta_h = abs(h - hum_avg.getAverage()); + if ( dht.getStatus() == 0 && delta_h < 10 ) hum_avg.addValue( h ); + else dht22_errors++; time = millis(); } @@ -169,7 +174,9 @@ void loop() { Serial.print("temperature="); Serial.print(temp_avg.getAverage()); Serial.print(" humidity="); - Serial.println(hum_avg.getAverage()); + Serial.print(hum_avg.getAverage()); + Serial.print(" errors="); + Serial.println(dht22_errors); } if ( input >= 0x30 && input <= 0x39 && serial_pos < 2 ) {