Sigfox project

Dependencies:   mbed TCS34725 WakeUp DHT TSL2561_I2C DS1820

Revision:
3:a5b1e083ffd2
Parent:
2:e153d5219f93
Child:
4:0b63b5897827
--- a/main.cpp	Tue Oct 15 09:50:21 2019 +0000
+++ b/main.cpp	Mon Nov 18 15:49:02 2019 +0000
@@ -1,56 +1,135 @@
 #include "mbed.h"
 #include "DS1820.h"
 #include "DHT.h"
-#include "TCS3472_I2C.h"
+#include "TSL2561_I2C.h"
+#include "Adafruit_TCS34725.h"
+#define commonAnode true
 
-//DigitalOut led(LED3);
+
+Serial wisol(D1, D0); // tx, rx
 Serial pc(USBTX, USBRX);
-DHT dht(A1, 22);
-TCS3472_I2C rgb_sensor( PB_4, PA_7 );
-AnalogIn   ain(A0); // humidity sol
-DS1820 temp_sol(A2);
+
+//tempAir et humAir
+DHT dht(D12, 22);
+
+
+//RGB
+I2C i2c(PB_7, PB_6);
+Adafruit_TCS34725 tcs = Adafruit_TCS34725(&i2c, TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
+
+//tempSol
+DS1820 temp_sol(A7);
+
+
+//luminosite
+TSL2561_I2C lum (PB_7, PB_6);
+
+
+//humSol
+AnalogIn   ain(A3);
 
 int main(){
     
+    //DHT22
     int data;
-    rgb_sensor.enablePowerAndRGBC();
-    rgb_sensor.setIntegrationTime(100);
-    int rgb_readings[4];
-    int hum_sol;
+    float tempAir, humAir;
     
-    
-    //erreur temp_sol
+    //temp_sol
     if(temp_sol.unassignedProbe(A2))
     {
         pc.printf("error temperature_sol");
     }
     
+    
+    //humiditeSol
+    int hum_sol;
+    
+    //luminosite
+    float lux;
+    if(!lum.enablePower())
+    {
+        pc.printf("error luminosite");
+    }
+    
+
+    
+    /////////////////////////////////////////
+    ////////////////////RGB//////////////////
+    /////////////////////////////////////////
+    
+    char gammatable[256];
+    if(!tcs.begin())
+    {
+        pc.printf("No TCS34725 found ... check your connections");
+    }
+    for (int i=0; i<256; i++)
+    {
+        float x = i;
+        x /= 255;
+        x = pow((double)x, 2.5);
+        x *= 255;
+        if (commonAnode)
+        {
+            gammatable[i] = 255 - x;
+        }
+        else
+        {
+            gammatable[i] = x;      
+        }
+    }
+    
+    
+    
+    
     while(1){
         //Capteur air
-        //data = dht.readData();
-        
-        
-        //Capteur RGB
-        
-        /*rgb_sensor.getAllColors(rgb_readings);
-        //led = !led;
-        if(data == ERROR_NONE){
-            pc.printf("La temperature de la salle est: %.2f et Humidite est: %.2f\n", dht.ReadTemperature(CELCIUS), dht.ReadHumidity());
-        }
-        else{
-            //pc.printf("Erreur numero: %d\n", data);
-        } 
-        pc.printf( "red: %d, green: %d, blue: %d, clear: %d\n", rgb_readings[0], rgb_readings[1], rgb_readings[2], rgb_readings[3] );
-        wait_ms(5000);*/
+        data = dht.readData();
+        humAir = dht.ReadHumidity();
+        tempAir = dht.ReadTemperature(CELCIUS);
+        pc.printf("tempAir = %1.f, humAir = %1.f\n", tempAir, humAir);
+        int valeur = 3;
+        wisol.printf("AT$SF=%02X%02X\r\n", (int)tempAir, (int)humAir);
         
         //capteur humidite sol
         hum_sol = (int)(((0.78 - ain.read())*100)/0.38);
-         pc.printf ("l'humidite du sol est %d%\n", hum_sol); // humidity sol
+        pc.printf ("humSol =  %d%\n", hum_sol);
          
         //Capteur temperature sol
         temp_sol.convertTemperature(true, DS1820::all_devices);
-        pc.printf("temperature : %.1f\n", temp_sol.temperature());
-        wait(3);
+        pc.printf("tempSol : %.1f\n", temp_sol.temperature());
+        
+        
+        //luminosite
+        lux = lum.getLux();
+        pc.printf("lux = %d\n", (int)lux);
+        
+        
+        ///////////////
+        //Capteur RGB//
+        ///////////////
+        
+        uint16_t clear, red, green, blue;
+        tcs.setInterrupt(false);      // turn on LED
+        tcs.getRawData(&red, &green, &blue, &clear);
+        tcs.setInterrupt(true);  // turn off LED
+        //pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n", clear, red, green, blue);
+        
+        //obtenir valeur en hexa
+        uint32_t sum = clear;
+        float r, g, b;
+        r = red; r /= sum;
+        g = green; g /= sum;
+        b = blue; b /= sum;
+        r *= 256; g *= 256; b *= 256;
+        pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n\n", clear, (int)r, (int)g, (int)b);
+        
+        wisol.printf("AT$SF=%06X%02X%02X%02X%04X%02X%04X%02X\r\n", (int)lux, (int)r, (int)g, (int)b, (int)(10*temp_sol.temperature()), (int)(hum_sol*10), (int)(tempAir*10), (int)(humAir*10));
+        //lux : 3 octets
+        //r, g, b : 1 octet
+        //tempSol, tempAir : 2 octets
+        //humSol, humAir : 1 octet
+        
+        wait(1000);
         
     }
 }
\ No newline at end of file