Plant Monitoring Project

Dependencies:   mbed SHT21_ncleee WakeUp SSD1306 DHT Adafruit_TCS34725 DS1820

Committer:
jufray
Date:
Mon Oct 07 10:03:30 2019 +0000
Revision:
0:e030be8f0310
Child:
1:3fc11a745984
hi;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jufray 0:e030be8f0310 1 #include "mbed.h"
jufray 0:e030be8f0310 2
jufray 0:e030be8f0310 3
jufray 0:e030be8f0310 4 Serial pc(SERIAL_TX, SERIAL_RX);
jufray 0:e030be8f0310 5 Serial nucleo(D1,D0);
jufray 0:e030be8f0310 6 //Ticker cadence;
jufray 0:e030be8f0310 7
jufray 0:e030be8f0310 8 #include "DS1820.h"
jufray 0:e030be8f0310 9 DS1820 DS(D3); // capteur temperature sol
jufray 0:e030be8f0310 10
jufray 0:e030be8f0310 11
jufray 0:e030be8f0310 12 AnalogIn capteur_humidite_sol(A0); // capteur humidité sol
jufray 0:e030be8f0310 13
jufray 0:e030be8f0310 14
jufray 0:e030be8f0310 15 #include "SHT21_ncleee.h"
jufray 0:e030be8f0310 16 I2C i2c(D4, D5); // capteur humidité & temp de l'air
jufray 0:e030be8f0310 17 SHT21 sht(&i2c);
jufray 0:e030be8f0310 18
jufray 0:e030be8f0310 19 #include "Adafruit_TCS34725.h" // capteur RGB
jufray 0:e030be8f0310 20 Adafruit_TCS34725 RGBsens = Adafruit_TCS34725(&i2c, TCS34725_INTEGRATIONTIME_2_4MS, TCS34725_GAIN_16X);
jufray 0:e030be8f0310 21
jufray 0:e030be8f0310 22 AnalogIn ain(A1); // capteur lumière
jufray 0:e030be8f0310 23
jufray 0:e030be8f0310 24 float temp_sol(void);
jufray 0:e030be8f0310 25 int fct_humidite_sol(void);
jufray 0:e030be8f0310 26 void fct_RGB(unsigned char *pr, unsigned char *pg, unsigned char *pb);
jufray 0:e030be8f0310 27 float fct_lumiere(void);
jufray 0:e030be8f0310 28 void sendDataSigfox(float tempSol, unsigned char *humSol, float tempAir, unsigned char *humAir, unsigned short *lux, unsigned char *R, unsigned char *G, unsigned char *B);
jufray 0:e030be8f0310 29
jufray 0:e030be8f0310 30 int main() {
jufray 0:e030be8f0310 31
jufray 0:e030be8f0310 32 float t;
jufray 0:e030be8f0310 33 unsigned char humidite_sol;
jufray 0:e030be8f0310 34 float temp_air;
jufray 0:e030be8f0310 35 unsigned char hum_air;
jufray 0:e030be8f0310 36 unsigned char pr, pg, pb;
jufray 0:e030be8f0310 37 unsigned short lum;
jufray 0:e030be8f0310 38
jufray 0:e030be8f0310 39 //cadence.attach(&sendDataSigfox, );
jufray 0:e030be8f0310 40
jufray 0:e030be8f0310 41 while(1) {
jufray 0:e030be8f0310 42
jufray 0:e030be8f0310 43 t = temp_sol();
jufray 0:e030be8f0310 44 pc.printf("T sol = %.2f\n\r", t);
jufray 0:e030be8f0310 45
jufray 0:e030be8f0310 46 humidite_sol = fct_humidite_sol();
jufray 0:e030be8f0310 47 pc.printf("H sol = %d\n\r", humidite_sol);
jufray 0:e030be8f0310 48
jufray 0:e030be8f0310 49 temp_air = sht.readTemp();
jufray 0:e030be8f0310 50 pc.printf("temp_air = %.2f\n\r", temp_air);
jufray 0:e030be8f0310 51 hum_air = sht.readHumidity();
jufray 0:e030be8f0310 52 pc.printf("hum_air = %d\n\r", hum_air);
jufray 0:e030be8f0310 53
jufray 0:e030be8f0310 54 fct_RGB(&pr, &pg, &pb);
jufray 0:e030be8f0310 55 pc.printf("red=%d green=%d blue=%d\n\r", pr, pg, pb);
jufray 0:e030be8f0310 56
jufray 0:e030be8f0310 57 lum = fct_lumiere();
jufray 0:e030be8f0310 58 pc.printf("lumiere = %d\n\r", lum);
jufray 0:e030be8f0310 59
jufray 0:e030be8f0310 60
jufray 0:e030be8f0310 61 sendDataSigfox(t, &humidite_sol, temp_air, &hum_air, &lum, &pr, &pg, &pb);
jufray 0:e030be8f0310 62
jufray 0:e030be8f0310 63 pc.printf("\n\r");
jufray 0:e030be8f0310 64 wait(30);
jufray 0:e030be8f0310 65 }
jufray 0:e030be8f0310 66 }
jufray 0:e030be8f0310 67
jufray 0:e030be8f0310 68
jufray 0:e030be8f0310 69 float temp_sol()
jufray 0:e030be8f0310 70 {
jufray 0:e030be8f0310 71 DS.convertTemperature(true, DS1820::all_devices);
jufray 0:e030be8f0310 72 if (DS.unassignedProbe(D3)){
jufray 0:e030be8f0310 73 pc.printf( "D3 not assigned\n\r");
jufray 0:e030be8f0310 74 }
jufray 0:e030be8f0310 75 return DS.temperature();
jufray 0:e030be8f0310 76 }
jufray 0:e030be8f0310 77
jufray 0:e030be8f0310 78 int fct_humidite_sol(void)
jufray 0:e030be8f0310 79 {
jufray 0:e030be8f0310 80 float val_min = 0.377;
jufray 0:e030be8f0310 81 float val_max = 0.772;
jufray 0:e030be8f0310 82 float mesure, mesure_etalonnee;
jufray 0:e030be8f0310 83 mesure = capteur_humidite_sol.read();
jufray 0:e030be8f0310 84 mesure_etalonnee = (1-((mesure - val_min)/(val_max - val_min)))*100;
jufray 0:e030be8f0310 85 return (int) mesure_etalonnee;
jufray 0:e030be8f0310 86 }
jufray 0:e030be8f0310 87
jufray 0:e030be8f0310 88 void fct_RGB(unsigned char *pr, unsigned char *pg, unsigned char *pb)
jufray 0:e030be8f0310 89 {
jufray 0:e030be8f0310 90 int somme;
jufray 0:e030be8f0310 91 uint16_t clear, red, green, blue;
jufray 0:e030be8f0310 92 if (!RGBsens.begin())
jufray 0:e030be8f0310 93 {
jufray 0:e030be8f0310 94 pc.printf("No TCS34725 found ... check your connections");
jufray 0:e030be8f0310 95 while (1); // halt!
jufray 0:e030be8f0310 96 }
jufray 0:e030be8f0310 97 RGBsens.getRawData(&red, &green, &blue, &clear);
jufray 0:e030be8f0310 98 somme = red + green + blue;
jufray 0:e030be8f0310 99 *pr = red*100/somme;
jufray 0:e030be8f0310 100 *pg = green*100/somme;
jufray 0:e030be8f0310 101 *pb = blue*100/somme;
jufray 0:e030be8f0310 102 }
jufray 0:e030be8f0310 103
jufray 0:e030be8f0310 104 float fct_lumiere()
jufray 0:e030be8f0310 105 {
jufray 0:e030be8f0310 106 float convertedValue;
jufray 0:e030be8f0310 107 float valueIn;
jufray 0:e030be8f0310 108 float rawRange = 0xFFFF; // 3.3v
jufray 0:e030be8f0310 109 float logRange = 5.0; // 3.3v = 10^5 lux
jufray 0:e030be8f0310 110 valueIn = ain.read_u16();
jufray 0:e030be8f0310 111 float logLux = valueIn * logRange / rawRange;
jufray 0:e030be8f0310 112 convertedValue = pow(10, logLux);
jufray 0:e030be8f0310 113 return convertedValue;
jufray 0:e030be8f0310 114 }
jufray 0:e030be8f0310 115
jufray 0:e030be8f0310 116
jufray 0:e030be8f0310 117 void sendDataSigfox(float tempSol, unsigned char *humSol, float tempAir, unsigned char *humAir, unsigned short *lux, unsigned char *R, unsigned char *G, unsigned char *B){
jufray 0:e030be8f0310 118 short tempSol_short, tempAir_short;
jufray 0:e030be8f0310 119 tempSol *= 10;
jufray 0:e030be8f0310 120 tempAir *= 10;
jufray 0:e030be8f0310 121 tempSol_short = (short) tempSol;
jufray 0:e030be8f0310 122 tempAir_short = (short) tempAir;
jufray 0:e030be8f0310 123
jufray 0:e030be8f0310 124 nucleo.printf("AT$SF=%04x%02x%04x%02x%04x%02x%02x%02x\r\n",tempSol_short, *humSol, tempAir_short, *humAir, *lux, *R, *G, *B);
jufray 0:e030be8f0310 125 }
jufray 0:e030be8f0310 126
jufray 0:e030be8f0310 127