Sigfox project

Dependencies:   mbed TCS34725 WakeUp DHT TSL2561_I2C DS1820

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "DS1820.h"
00003 #include "DHT.h"
00004 #include "TSL2561_I2C.h"
00005 #include "Adafruit_TCS34725.h"
00006 #include "WakeUp.h"
00007 #define commonAnode true
00008 
00009 
00010 Serial wisol(D1, D0); // tx, rx
00011 
00012 //debug
00013 Serial pc(USBTX, USBRX);
00014 
00015 //tempAir et humAir
00016 DHT dht(D9, 22);
00017 
00018 
00019 //RGB + luminosite
00020 I2C i2c(PB_7, PB_6);
00021 Adafruit_TCS34725 tcs = Adafruit_TCS34725(&i2c, TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
00022 
00023 //tempSol 
00024 DS1820 temp_sol(A4);
00025 
00026 //humSol
00027 AnalogIn   ain(A3);
00028 
00029 int main(){
00030     
00031     //WakeUp::calibrate();   
00032     
00033         
00034     //DHT22
00035     int data;
00036     float tempAir, humAir;
00037     
00038     //humiditeSol
00039     int hum_sol;
00040     
00041     //luminosite
00042     float lux;
00043     
00044     //temp_sol
00045     if(temp_sol.unassignedProbe(A4))
00046     {
00047         pc.printf("error temperature_sol");
00048     }
00049     
00050     //capteur RGB/luminosite
00051     if(!tcs.begin())
00052     {
00053         pc.printf("No TCS34725 found ... check your connections");
00054     }
00055     
00056     while(1){
00057         //Capteur air
00058         data = dht.readData();
00059         humAir = dht.ReadHumidity();
00060         tempAir = dht.ReadTemperature(CELCIUS);
00061         pc.printf("tempAir = %1.f, humAir = %1.f\n", tempAir, humAir);
00062         
00063         
00064         //capteur humidite sol
00065         hum_sol = (int)(((0.78 - ain.read())*100)/0.38);
00066         pc.printf ("humSol =  %d%\n", hum_sol);
00067          
00068         //Capteur temperature sol
00069         temp_sol.convertTemperature(true, DS1820::all_devices);
00070         pc.printf("tempSol : %.1f\n", temp_sol.temperature());
00071         
00072         
00073         
00074         ///////////////
00075         //////RGB//////
00076         ///////////////
00077         
00078         uint16_t clear, red, green, blue;
00079         tcs.setInterrupt(false);      // turn on LED
00080         tcs.getRawData(&red, &green, &blue, &clear);
00081         tcs.setInterrupt(true);  // turn off LED
00082         //pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n", clear, red, green, blue);
00083         
00084         //get hexa value
00085         uint32_t sum = clear;
00086         float r, g, b;
00087         r = red; r /= sum;
00088         g = green; g /= sum;
00089         b = blue; b /= sum;
00090         r *= 256; g *= 256; b *= 256;
00091         pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n\n", clear, (int)r, (int)g, (int)b);
00092         
00093         
00094         
00095         
00096         //luminosite
00097         lux = (int)tcs.calculateLux(red,green,blue);
00098         pc.printf("lux = %d\n", (int)lux);
00099         
00100         
00101         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), (int)(10 * tempAir), (int)(humAir));
00102                 
00103         
00104         //lux : 3 octets
00105         //r, g, b : 1 octet
00106         //tempSol, tempAir : 2 octets
00107         //humSol, humAir : 1 octet
00108         
00109         wait(10);
00110         
00111         //Set wakeup time for 600 seconds = 10min
00112         WakeUp::set_ms(600000);
00113         deepsleep();
00114         wait(1);
00115         
00116     }
00117 }