Plant Monitoring Project

Dependencies:   mbed SHT21_ncleee WakeUp SSD1306 DHT Adafruit_TCS34725 DS1820

Committer:
Germaint
Date:
Wed Dec 11 17:26:05 2019 +0000
Revision:
30:0a25c02e25d9
Parent:
27:05fb631b1f6e
Child:
31:45f4bfde0b9a
Nouvel ecran et nouveaux pins

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Germaint 23:424b3149003b 1 #include "main.hh"
Germaint 18:d30cd2967da4 2
Germaint 30:0a25c02e25d9 3
Germaint 23:424b3149003b 4 int main(){
Germaint 23:424b3149003b 5 #ifdef OLED
ludollaoo 20:79f4ef29eafd 6 bouton.rise(interruption_bouton);
Germaint 23:424b3149003b 7 initOLED();
Germaint 23:424b3149003b 8 #endif
Germaint 1:3fc11a745984 9
jufray 0:e030be8f0310 10 while(1) {
Germaint 16:13364798fce6 11 readData();
Germaint 23:424b3149003b 12 wait(DUREE_OFF);
jufray 0:e030be8f0310 13 }
jufray 0:e030be8f0310 14 }
jufray 0:e030be8f0310 15
Germaint 27:05fb631b1f6e 16 #ifdef FLOOR_TEMPERATURE
jufray 0:e030be8f0310 17 float temp_sol()
jufray 0:e030be8f0310 18 {
jufray 0:e030be8f0310 19 DS.convertTemperature(true, DS1820::all_devices);
ludollaoo 22:51aed3b3b452 20 if (DS.unassignedProbe(D2)){
Germaint 23:424b3149003b 21 #ifdef DEBUG
Germaint 23:424b3149003b 22 pc.printf( "D3 not assigned\n\r");
Germaint 23:424b3149003b 23 #endif
jufray 0:e030be8f0310 24 }
Germaint 25:77322fbe298e 25 #ifdef DEBUG
Germaint 25:77322fbe298e 26 pc.printf("temp sol: %.1f\n\r", DS.temperature());
Germaint 25:77322fbe298e 27 #endif
jufray 0:e030be8f0310 28 return DS.temperature();
jufray 0:e030be8f0310 29 }
Germaint 27:05fb631b1f6e 30 #endif
Germaint 23:424b3149003b 31
Germaint 27:05fb631b1f6e 32 #ifdef FLOOR_HUMIDITY
Germaint 1:3fc11a745984 33 int fct_humidity_sol(void)
jufray 0:e030be8f0310 34 {
jufray 0:e030be8f0310 35 float val_min = 0.377;
jufray 0:e030be8f0310 36 float val_max = 0.772;
jufray 0:e030be8f0310 37 float mesure, mesure_etalonnee;
Germaint 1:3fc11a745984 38 mesure = capteur_humidity_sol.read();
jufray 0:e030be8f0310 39 mesure_etalonnee = (1-((mesure - val_min)/(val_max - val_min)))*100;
Germaint 23:424b3149003b 40 #ifdef DEBUG
Germaint 23:424b3149003b 41 pc.printf("hum sol: %d\n\r", (int) mesure_etalonnee);
Germaint 23:424b3149003b 42 #endif
jufray 0:e030be8f0310 43 return (int) mesure_etalonnee;
jufray 0:e030be8f0310 44 }
Germaint 27:05fb631b1f6e 45 #endif
jufray 0:e030be8f0310 46
Germaint 27:05fb631b1f6e 47 #ifdef RGB
Germaint 18:d30cd2967da4 48 void fct_RGB(void)
jufray 0:e030be8f0310 49 {
jufray 0:e030be8f0310 50 int somme;
jufray 0:e030be8f0310 51 uint16_t clear, red, green, blue;
jufray 0:e030be8f0310 52 if (!RGBsens.begin())
jufray 0:e030be8f0310 53 {
Germaint 23:424b3149003b 54 #ifdef DEBUG
Germaint 23:424b3149003b 55 pc.printf("No TCS34725 found ... check your connections");
Germaint 23:424b3149003b 56 #endif
Germaint 15:c73d0d180cc4 57 //while (1); // halt!
jufray 0:e030be8f0310 58 }
jufray 0:e030be8f0310 59 RGBsens.getRawData(&red, &green, &blue, &clear);
jufray 0:e030be8f0310 60 somme = red + green + blue;
Germaint 18:d30cd2967da4 61 pr = red*100/somme;
Germaint 18:d30cd2967da4 62 pg = green*100/somme;
Germaint 18:d30cd2967da4 63 pb = blue*100/somme;
Germaint 18:d30cd2967da4 64 lum = clear;
Germaint 23:424b3149003b 65 #ifdef DEBUG
Germaint 23:424b3149003b 66 pc.printf("luminosite : %d \n\r", lum);
Germaint 23:424b3149003b 67 pc.printf("rouge:%d vert:%d bleu:%d \n\r", pr, pg, pb);
Germaint 23:424b3149003b 68 #endif
jufray 0:e030be8f0310 69 }
Germaint 27:05fb631b1f6e 70 #endif
jufray 0:e030be8f0310 71
Germaint 27:05fb631b1f6e 72 #ifdef SIGFOX
Germaint 16:13364798fce6 73 void sendDataSigfox(void){
Germaint 23:424b3149003b 74 #ifdef DEBUG
Germaint 23:424b3149003b 75 pc.printf("Sending Data to Sigfox \n\r");
Germaint 23:424b3149003b 76 #endif
Germaint 16:13364798fce6 77 short tempSol_short, tempAir_short;
Germaint 16:13364798fce6 78 tempSol_short = (short)(temperature_sol*10);
Germaint 16:13364798fce6 79 tempAir_short = (short)(temperature_air*10);
jufray 0:e030be8f0310 80
Germaint 23:424b3149003b 81 wisol.printf("AT$SF=%04x%02x%04x%02x%04x%02x%02x%02x\r\n",tempSol_short, humidity_sol, tempAir_short, humidity_air, lum, pr, pg, pb);
Germaint 16:13364798fce6 82 }
Germaint 27:05fb631b1f6e 83 #endif
Germaint 27:05fb631b1f6e 84
Germaint 27:05fb631b1f6e 85 #ifdef OLED
Germaint 2:0bfe25431e8e 86 void oledData(void){
Germaint 23:424b3149003b 87 #ifdef DEBUG
Germaint 23:424b3149003b 88 pc.printf("Displaying Data\r\n");
Germaint 23:424b3149003b 89 #endif
Germaint 30:0a25c02e25d9 90
Germaint 18:d30cd2967da4 91 if(!oled_on){
Germaint 18:d30cd2967da4 92 oled.wake();
Germaint 30:0a25c02e25d9 93 oled.clear();
Germaint 18:d30cd2967da4 94 oled_on = 1;
Germaint 18:d30cd2967da4 95 }
Germaint 30:0a25c02e25d9 96 oled.clear();
Germaint 2:0bfe25431e8e 97 oled.printf("AIR T : %.1f", temperature_air);
Germaint 30:0a25c02e25d9 98 oled.printf("\n\r");
Germaint 2:0bfe25431e8e 99 oled.printf("AIR H : %d", humidity_air);
Germaint 30:0a25c02e25d9 100 oled.printf("\n\r\n\r");
Germaint 2:0bfe25431e8e 101 oled.printf("FLOOR T : %.1f", temperature_sol);
Germaint 30:0a25c02e25d9 102 oled.printf("\n\r");
Germaint 2:0bfe25431e8e 103 oled.printf("FLOOR H : %d", humidity_sol);
Germaint 30:0a25c02e25d9 104 oled.printf("\n\r\n\r");
Germaint 2:0bfe25431e8e 105 oled.printf("Light : %d", lum);
Germaint 30:0a25c02e25d9 106 oled.printf("\n\r");
Germaint 2:0bfe25431e8e 107 oled.printf("R %d G %d B %d", pr, pg, pb);
Germaint 30:0a25c02e25d9 108 oled.update();
Germaint 2:0bfe25431e8e 109 }
Germaint 27:05fb631b1f6e 110 #endif
jufray 0:e030be8f0310 111
Germaint 16:13364798fce6 112 void readData(void){
Germaint 23:424b3149003b 113 #ifdef DEBUG
Germaint 23:424b3149003b 114 pc.printf("Reading Data\n\r");
Germaint 23:424b3149003b 115 #endif
Germaint 23:424b3149003b 116 #ifdef FLOOR_TEMPERATURE
Germaint 16:13364798fce6 117 temperature_sol = temp_sol();
Germaint 23:424b3149003b 118 #endif
Germaint 23:424b3149003b 119 #ifdef FLOOR_HUMIDITY
Germaint 16:13364798fce6 120 humidity_sol = fct_humidity_sol();
Germaint 23:424b3149003b 121 #endif
Germaint 23:424b3149003b 122 #ifdef AIR_PARAMETERS
Germaint 23:424b3149003b 123 temperature_air = sht.readTemp();
ludollaoo 20:79f4ef29eafd 124 humidity_air = sht.readHumidity();
Germaint 23:424b3149003b 125 #endif
Germaint 23:424b3149003b 126 #ifdef DEBUG
Germaint 23:424b3149003b 127 printf("hum air: %d\n\r", humidity_air);
Germaint 23:424b3149003b 128 printf("temp air: %.1f\n\r", temperature_air);
Germaint 23:424b3149003b 129 #endif
Germaint 23:424b3149003b 130 #ifdef RGB
Germaint 18:d30cd2967da4 131 fct_RGB();
Germaint 23:424b3149003b 132 #endif
Germaint 23:424b3149003b 133 #ifdef SIGFOX
Germaint 16:13364798fce6 134 sendDataSigfox();
Germaint 23:424b3149003b 135 #endif
Germaint 23:424b3149003b 136 #ifdef OLED
Germaint 18:d30cd2967da4 137 if(oled_on)
Germaint 18:d30cd2967da4 138 oledData();
Germaint 23:424b3149003b 139 #endif
Germaint 16:13364798fce6 140 }
jufray 0:e030be8f0310 141
Germaint 18:d30cd2967da4 142 void interruption_bouton(){
Germaint 18:d30cd2967da4 143 bouton.disable_irq();
Germaint 23:424b3149003b 144 #ifdef DEBUG
Germaint 23:424b3149003b 145 pc.printf("Button interrupt\r\n");
Germaint 23:424b3149003b 146 #endif
Germaint 27:05fb631b1f6e 147 #ifdef OLED
Germaint 18:d30cd2967da4 148 if(!oled_on){
Germaint 18:d30cd2967da4 149 oledData();
Germaint 18:d30cd2967da4 150 timeScreen.attach(&turnOffScreen,DUREE_ECRAN_ON);
Germaint 18:d30cd2967da4 151 }
Germaint 27:05fb631b1f6e 152 #endif
Germaint 18:d30cd2967da4 153 bouton.enable_irq();
Germaint 18:d30cd2967da4 154 }
Germaint 16:13364798fce6 155
Germaint 27:05fb631b1f6e 156 #ifdef OLED
Germaint 18:d30cd2967da4 157 void turnOffScreen(void){
Germaint 23:424b3149003b 158 #ifdef DEBUG
Germaint 23:424b3149003b 159 pc.printf("Turning off screen \n\r");
Germaint 23:424b3149003b 160 #endif
Germaint 18:d30cd2967da4 161 timeScreen.detach();
Germaint 18:d30cd2967da4 162 oled_on = 0;
Germaint 18:d30cd2967da4 163 oled.sleep();
Germaint 23:424b3149003b 164 }
Germaint 27:05fb631b1f6e 165 #endif
Germaint 23:424b3149003b 166
Germaint 27:05fb631b1f6e 167 #ifdef OLED
Germaint 23:424b3149003b 168 void initOLED(void){
Germaint 30:0a25c02e25d9 169 oled.on();
Germaint 30:0a25c02e25d9 170 oled.initialise();
Germaint 30:0a25c02e25d9 171 oled.clear();
Germaint 30:0a25c02e25d9 172 oled.set_contrast(255);
Germaint 30:0a25c02e25d9 173 oled.set_font(bold_font, 8);
Germaint 30:0a25c02e25d9 174 oled.printf("================");
Germaint 30:0a25c02e25d9 175 oled.printf("\n\r");
Germaint 30:0a25c02e25d9 176 oled.printf(" 2PA2S");
Germaint 30:0a25c02e25d9 177 oled.printf("\n\r\n\r");
Germaint 30:0a25c02e25d9 178 oled.printf("FRAYSSE GERMAIN");
Germaint 30:0a25c02e25d9 179 oled.printf("\n\r\n\r");
Germaint 30:0a25c02e25d9 180 oled.printf(" DUPLESSIS");
Germaint 30:0a25c02e25d9 181 oled.printf("\n\r");
Germaint 30:0a25c02e25d9 182 oled.printf("================");
Germaint 30:0a25c02e25d9 183 oled.update();
Germaint 30:0a25c02e25d9 184 wait(10);
Germaint 30:0a25c02e25d9 185 oled.clear();
Germaint 30:0a25c02e25d9 186 oled.update();
Germaint 23:424b3149003b 187 oled.sleep();
Germaint 27:05fb631b1f6e 188 }
Germaint 27:05fb631b1f6e 189 #endif