Sigfox project
Dependencies: mbed TCS34725 WakeUp DHT TSL2561_I2C DS1820
main.cpp@3:a5b1e083ffd2, 2019-11-18 (annotated)
- Committer:
- ran_ghe
- Date:
- Mon Nov 18 15:49:02 2019 +0000
- Revision:
- 3:a5b1e083ffd2
- Parent:
- 2:e153d5219f93
- Child:
- 4:0b63b5897827
X 10 pour les temp et hum
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
youdllo5 | 0:cfed96a14467 | 1 | #include "mbed.h" |
ran_ghe | 1:07835f780c89 | 2 | #include "DS1820.h" |
youdllo5 | 0:cfed96a14467 | 3 | #include "DHT.h" |
ran_ghe | 3:a5b1e083ffd2 | 4 | #include "TSL2561_I2C.h" |
ran_ghe | 3:a5b1e083ffd2 | 5 | #include "Adafruit_TCS34725.h" |
ran_ghe | 3:a5b1e083ffd2 | 6 | #define commonAnode true |
youdllo5 | 0:cfed96a14467 | 7 | |
ran_ghe | 3:a5b1e083ffd2 | 8 | |
ran_ghe | 3:a5b1e083ffd2 | 9 | Serial wisol(D1, D0); // tx, rx |
youdllo5 | 0:cfed96a14467 | 10 | Serial pc(USBTX, USBRX); |
ran_ghe | 3:a5b1e083ffd2 | 11 | |
ran_ghe | 3:a5b1e083ffd2 | 12 | //tempAir et humAir |
ran_ghe | 3:a5b1e083ffd2 | 13 | DHT dht(D12, 22); |
ran_ghe | 3:a5b1e083ffd2 | 14 | |
ran_ghe | 3:a5b1e083ffd2 | 15 | |
ran_ghe | 3:a5b1e083ffd2 | 16 | //RGB |
ran_ghe | 3:a5b1e083ffd2 | 17 | I2C i2c(PB_7, PB_6); |
ran_ghe | 3:a5b1e083ffd2 | 18 | Adafruit_TCS34725 tcs = Adafruit_TCS34725(&i2c, TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); |
ran_ghe | 3:a5b1e083ffd2 | 19 | |
ran_ghe | 3:a5b1e083ffd2 | 20 | //tempSol |
ran_ghe | 3:a5b1e083ffd2 | 21 | DS1820 temp_sol(A7); |
ran_ghe | 3:a5b1e083ffd2 | 22 | |
ran_ghe | 3:a5b1e083ffd2 | 23 | |
ran_ghe | 3:a5b1e083ffd2 | 24 | //luminosite |
ran_ghe | 3:a5b1e083ffd2 | 25 | TSL2561_I2C lum (PB_7, PB_6); |
ran_ghe | 3:a5b1e083ffd2 | 26 | |
ran_ghe | 3:a5b1e083ffd2 | 27 | |
ran_ghe | 3:a5b1e083ffd2 | 28 | //humSol |
ran_ghe | 3:a5b1e083ffd2 | 29 | AnalogIn ain(A3); |
youdllo5 | 0:cfed96a14467 | 30 | |
youdllo5 | 0:cfed96a14467 | 31 | int main(){ |
youdllo5 | 0:cfed96a14467 | 32 | |
ran_ghe | 3:a5b1e083ffd2 | 33 | //DHT22 |
youdllo5 | 0:cfed96a14467 | 34 | int data; |
ran_ghe | 3:a5b1e083ffd2 | 35 | float tempAir, humAir; |
youdllo5 | 0:cfed96a14467 | 36 | |
ran_ghe | 3:a5b1e083ffd2 | 37 | //temp_sol |
ran_ghe | 1:07835f780c89 | 38 | if(temp_sol.unassignedProbe(A2)) |
ran_ghe | 1:07835f780c89 | 39 | { |
ran_ghe | 1:07835f780c89 | 40 | pc.printf("error temperature_sol"); |
ran_ghe | 1:07835f780c89 | 41 | } |
ran_ghe | 1:07835f780c89 | 42 | |
ran_ghe | 3:a5b1e083ffd2 | 43 | |
ran_ghe | 3:a5b1e083ffd2 | 44 | //humiditeSol |
ran_ghe | 3:a5b1e083ffd2 | 45 | int hum_sol; |
ran_ghe | 3:a5b1e083ffd2 | 46 | |
ran_ghe | 3:a5b1e083ffd2 | 47 | //luminosite |
ran_ghe | 3:a5b1e083ffd2 | 48 | float lux; |
ran_ghe | 3:a5b1e083ffd2 | 49 | if(!lum.enablePower()) |
ran_ghe | 3:a5b1e083ffd2 | 50 | { |
ran_ghe | 3:a5b1e083ffd2 | 51 | pc.printf("error luminosite"); |
ran_ghe | 3:a5b1e083ffd2 | 52 | } |
ran_ghe | 3:a5b1e083ffd2 | 53 | |
ran_ghe | 3:a5b1e083ffd2 | 54 | |
ran_ghe | 3:a5b1e083ffd2 | 55 | |
ran_ghe | 3:a5b1e083ffd2 | 56 | ///////////////////////////////////////// |
ran_ghe | 3:a5b1e083ffd2 | 57 | ////////////////////RGB////////////////// |
ran_ghe | 3:a5b1e083ffd2 | 58 | ///////////////////////////////////////// |
ran_ghe | 3:a5b1e083ffd2 | 59 | |
ran_ghe | 3:a5b1e083ffd2 | 60 | char gammatable[256]; |
ran_ghe | 3:a5b1e083ffd2 | 61 | if(!tcs.begin()) |
ran_ghe | 3:a5b1e083ffd2 | 62 | { |
ran_ghe | 3:a5b1e083ffd2 | 63 | pc.printf("No TCS34725 found ... check your connections"); |
ran_ghe | 3:a5b1e083ffd2 | 64 | } |
ran_ghe | 3:a5b1e083ffd2 | 65 | for (int i=0; i<256; i++) |
ran_ghe | 3:a5b1e083ffd2 | 66 | { |
ran_ghe | 3:a5b1e083ffd2 | 67 | float x = i; |
ran_ghe | 3:a5b1e083ffd2 | 68 | x /= 255; |
ran_ghe | 3:a5b1e083ffd2 | 69 | x = pow((double)x, 2.5); |
ran_ghe | 3:a5b1e083ffd2 | 70 | x *= 255; |
ran_ghe | 3:a5b1e083ffd2 | 71 | if (commonAnode) |
ran_ghe | 3:a5b1e083ffd2 | 72 | { |
ran_ghe | 3:a5b1e083ffd2 | 73 | gammatable[i] = 255 - x; |
ran_ghe | 3:a5b1e083ffd2 | 74 | } |
ran_ghe | 3:a5b1e083ffd2 | 75 | else |
ran_ghe | 3:a5b1e083ffd2 | 76 | { |
ran_ghe | 3:a5b1e083ffd2 | 77 | gammatable[i] = x; |
ran_ghe | 3:a5b1e083ffd2 | 78 | } |
ran_ghe | 3:a5b1e083ffd2 | 79 | } |
ran_ghe | 3:a5b1e083ffd2 | 80 | |
ran_ghe | 3:a5b1e083ffd2 | 81 | |
ran_ghe | 3:a5b1e083ffd2 | 82 | |
ran_ghe | 3:a5b1e083ffd2 | 83 | |
youdllo5 | 0:cfed96a14467 | 84 | while(1){ |
ran_ghe | 1:07835f780c89 | 85 | //Capteur air |
ran_ghe | 3:a5b1e083ffd2 | 86 | data = dht.readData(); |
ran_ghe | 3:a5b1e083ffd2 | 87 | humAir = dht.ReadHumidity(); |
ran_ghe | 3:a5b1e083ffd2 | 88 | tempAir = dht.ReadTemperature(CELCIUS); |
ran_ghe | 3:a5b1e083ffd2 | 89 | pc.printf("tempAir = %1.f, humAir = %1.f\n", tempAir, humAir); |
ran_ghe | 3:a5b1e083ffd2 | 90 | int valeur = 3; |
ran_ghe | 3:a5b1e083ffd2 | 91 | wisol.printf("AT$SF=%02X%02X\r\n", (int)tempAir, (int)humAir); |
ran_ghe | 1:07835f780c89 | 92 | |
Mohamed_Sadialiou | 2:e153d5219f93 | 93 | //capteur humidite sol |
Mohamed_Sadialiou | 2:e153d5219f93 | 94 | hum_sol = (int)(((0.78 - ain.read())*100)/0.38); |
ran_ghe | 3:a5b1e083ffd2 | 95 | pc.printf ("humSol = %d%\n", hum_sol); |
Mohamed_Sadialiou | 2:e153d5219f93 | 96 | |
ran_ghe | 1:07835f780c89 | 97 | //Capteur temperature sol |
ran_ghe | 1:07835f780c89 | 98 | temp_sol.convertTemperature(true, DS1820::all_devices); |
ran_ghe | 3:a5b1e083ffd2 | 99 | pc.printf("tempSol : %.1f\n", temp_sol.temperature()); |
ran_ghe | 3:a5b1e083ffd2 | 100 | |
ran_ghe | 3:a5b1e083ffd2 | 101 | |
ran_ghe | 3:a5b1e083ffd2 | 102 | //luminosite |
ran_ghe | 3:a5b1e083ffd2 | 103 | lux = lum.getLux(); |
ran_ghe | 3:a5b1e083ffd2 | 104 | pc.printf("lux = %d\n", (int)lux); |
ran_ghe | 3:a5b1e083ffd2 | 105 | |
ran_ghe | 3:a5b1e083ffd2 | 106 | |
ran_ghe | 3:a5b1e083ffd2 | 107 | /////////////// |
ran_ghe | 3:a5b1e083ffd2 | 108 | //Capteur RGB// |
ran_ghe | 3:a5b1e083ffd2 | 109 | /////////////// |
ran_ghe | 3:a5b1e083ffd2 | 110 | |
ran_ghe | 3:a5b1e083ffd2 | 111 | uint16_t clear, red, green, blue; |
ran_ghe | 3:a5b1e083ffd2 | 112 | tcs.setInterrupt(false); // turn on LED |
ran_ghe | 3:a5b1e083ffd2 | 113 | tcs.getRawData(&red, &green, &blue, &clear); |
ran_ghe | 3:a5b1e083ffd2 | 114 | tcs.setInterrupt(true); // turn off LED |
ran_ghe | 3:a5b1e083ffd2 | 115 | //pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n", clear, red, green, blue); |
ran_ghe | 3:a5b1e083ffd2 | 116 | |
ran_ghe | 3:a5b1e083ffd2 | 117 | //obtenir valeur en hexa |
ran_ghe | 3:a5b1e083ffd2 | 118 | uint32_t sum = clear; |
ran_ghe | 3:a5b1e083ffd2 | 119 | float r, g, b; |
ran_ghe | 3:a5b1e083ffd2 | 120 | r = red; r /= sum; |
ran_ghe | 3:a5b1e083ffd2 | 121 | g = green; g /= sum; |
ran_ghe | 3:a5b1e083ffd2 | 122 | b = blue; b /= sum; |
ran_ghe | 3:a5b1e083ffd2 | 123 | r *= 256; g *= 256; b *= 256; |
ran_ghe | 3:a5b1e083ffd2 | 124 | pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n\n", clear, (int)r, (int)g, (int)b); |
ran_ghe | 3:a5b1e083ffd2 | 125 | |
ran_ghe | 3:a5b1e083ffd2 | 126 | 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)); |
ran_ghe | 3:a5b1e083ffd2 | 127 | //lux : 3 octets |
ran_ghe | 3:a5b1e083ffd2 | 128 | //r, g, b : 1 octet |
ran_ghe | 3:a5b1e083ffd2 | 129 | //tempSol, tempAir : 2 octets |
ran_ghe | 3:a5b1e083ffd2 | 130 | //humSol, humAir : 1 octet |
ran_ghe | 3:a5b1e083ffd2 | 131 | |
ran_ghe | 3:a5b1e083ffd2 | 132 | wait(1000); |
youdllo5 | 0:cfed96a14467 | 133 | |
youdllo5 | 0:cfed96a14467 | 134 | } |
youdllo5 | 0:cfed96a14467 | 135 | } |