Merge branch 'master' of mjesec.ffzg.hr:/git/Arduino
[Arduino] / rpi_promini / rpi_promini.ino
index 1567fee..c89b2cf 100644 (file)
@@ -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 ) {