Sigfox project
Dependencies: mbed TCS34725 WakeUp DHT TSL2561_I2C DS1820
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 }
Generated on Thu Jul 14 2022 21:26:47 by 1.7.2