ruche
Dependencies: ATParser DHT22 SerialGPS Sigfox mbed
Fork of Nucleo_SerialGPS_to_PC by
main.cpp@2:f760e8507750, 2018-02-02 (annotated)
- Committer:
- dahmani_belkacem
- Date:
- Fri Feb 02 10:00:12 2018 +0000
- Revision:
- 2:f760e8507750
- Parent:
- 1:297aba9a5830
Ruche connect?e
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
veyselka | 0:e0a6c18ea0fb | 1 | #include "mbed.h" |
dahmani_belkacem | 1:297aba9a5830 | 2 | #include "DHT22.h" |
dahmani_belkacem | 2:f760e8507750 | 3 | #include "string.h" |
dahmani_belkacem | 2:f760e8507750 | 4 | #include "DS1820.h" |
veyselka | 0:e0a6c18ea0fb | 5 | |
veyselka | 0:e0a6c18ea0fb | 6 | |
dahmani_belkacem | 2:f760e8507750 | 7 | Serial pc(USBTX,USBRX); // tx, rx |
dahmani_belkacem | 2:f760e8507750 | 8 | Serial sigfox(PA_9,PA_10); // tx, rx |
dahmani_belkacem | 2:f760e8507750 | 9 | DHT22 dht22(D3);//pin pour la lecture du dht22 grove |
dahmani_belkacem | 2:f760e8507750 | 10 | DHT22 dht22Bis(D6);//pin pour la lecture du dht22 |
dahmani_belkacem | 1:297aba9a5830 | 11 | AnalogIn IRSensor(A1);//Pin de lecture du capteur IR |
dahmani_belkacem | 2:f760e8507750 | 12 | DigitalOut led0(LED1); |
dahmani_belkacem | 2:f760e8507750 | 13 | DigitalOut led1(LED2); |
dahmani_belkacem | 2:f760e8507750 | 14 | double longi; |
dahmani_belkacem | 2:f760e8507750 | 15 | double lat; |
dahmani_belkacem | 2:f760e8507750 | 16 | const int MAX_PROBES = 1; |
dahmani_belkacem | 2:f760e8507750 | 17 | DS1820 probe[1] = {A4}; |
veyselka | 0:e0a6c18ea0fb | 18 | |
veyselka | 0:e0a6c18ea0fb | 19 | |
veyselka | 0:e0a6c18ea0fb | 20 | |
dahmani_belkacem | 1:297aba9a5830 | 21 | //Fonction lecture des donneé sigfox |
veyselka | 0:e0a6c18ea0fb | 22 | |
veyselka | 0:e0a6c18ea0fb | 23 | |
veyselka | 0:e0a6c18ea0fb | 24 | int main() { |
dahmani_belkacem | 2:f760e8507750 | 25 | |
dahmani_belkacem | 2:f760e8507750 | 26 | int humExt; // humidité intérieur dst22 |
dahmani_belkacem | 2:f760e8507750 | 27 | int tempExt; // température extérieur dst22 |
dahmani_belkacem | 2:f760e8507750 | 28 | int humInt; // humidité intérieur dst22 |
dahmani_belkacem | 2:f760e8507750 | 29 | int tempInt; // température intérieur dst22 |
dahmani_belkacem | 2:f760e8507750 | 30 | int i; |
dahmani_belkacem | 2:f760e8507750 | 31 | int devices_found=0; |
dahmani_belkacem | 2:f760e8507750 | 32 | int tempDs; //tempérarure de la sonde Ds18B20; |
dahmani_belkacem | 2:f760e8507750 | 33 | |
veyselka | 0:e0a6c18ea0fb | 34 | pc.baud(9600); |
dahmani_belkacem | 2:f760e8507750 | 35 | sigfox.baud(9600); |
veyselka | 0:e0a6c18ea0fb | 36 | |
veyselka | 0:e0a6c18ea0fb | 37 | pc.printf("TEST\r\n"); |
veyselka | 0:e0a6c18ea0fb | 38 | wait(0.5); |
dahmani_belkacem | 2:f760e8507750 | 39 | |
dahmani_belkacem | 2:f760e8507750 | 40 | //partie declarative DS18B20 |
dahmani_belkacem | 2:f760e8507750 | 41 | pc.printf("Started\r\n"); |
dahmani_belkacem | 2:f760e8507750 | 42 | pc.printf("search_ROM_setup\r\n"); |
dahmani_belkacem | 2:f760e8507750 | 43 | probe[0].search_ROM_setup(); |
dahmani_belkacem | 2:f760e8507750 | 44 | pc.printf("search_ROM\r\n"); |
dahmani_belkacem | 2:f760e8507750 | 45 | |
dahmani_belkacem | 2:f760e8507750 | 46 | while (probe[devices_found].search_ROM() and devices_found<MAX_PROBES-1) |
dahmani_belkacem | 2:f760e8507750 | 47 | devices_found++; |
dahmani_belkacem | 1:297aba9a5830 | 48 | |
dahmani_belkacem | 2:f760e8507750 | 49 | // If maximum number of probes are found, |
dahmani_belkacem | 2:f760e8507750 | 50 | // bump the counter to include the last array entry |
dahmani_belkacem | 2:f760e8507750 | 51 | if (probe[devices_found].ROM[0] != 0xFF) |
dahmani_belkacem | 2:f760e8507750 | 52 | devices_found++; |
dahmani_belkacem | 2:f760e8507750 | 53 | pc.printf("devices found:%d\r\n",devices_found); |
dahmani_belkacem | 2:f760e8507750 | 54 | |
dahmani_belkacem | 2:f760e8507750 | 55 | //Fin de la partie declarative DS18B20 |
dahmani_belkacem | 2:f760e8507750 | 56 | |
veyselka | 0:e0a6c18ea0fb | 57 | while(1) { |
dahmani_belkacem | 2:f760e8507750 | 58 | char donnee[] = "AT$SF="; |
dahmani_belkacem | 1:297aba9a5830 | 59 | wait(1); |
dahmani_belkacem | 1:297aba9a5830 | 60 | pc.printf("TEST4\r\n"); |
dahmani_belkacem | 2:f760e8507750 | 61 | |
dahmani_belkacem | 2:f760e8507750 | 62 | // lecture du DHT22 grove |
dahmani_belkacem | 2:f760e8507750 | 63 | |
dahmani_belkacem | 2:f760e8507750 | 64 | dht22.sample() ; |
dahmani_belkacem | 2:f760e8507750 | 65 | humExt=dht22.getHumidity()/10.0; |
dahmani_belkacem | 2:f760e8507750 | 66 | tempExt=dht22.getTemperature()/10.0; |
dahmani_belkacem | 2:f760e8507750 | 67 | pc.printf("temperature: %d humidity: %d\n\r",tempExt,humExt); |
dahmani_belkacem | 1:297aba9a5830 | 68 | |
dahmani_belkacem | 2:f760e8507750 | 69 | //lecture du DHT22 simple Intérieure |
dahmani_belkacem | 2:f760e8507750 | 70 | |
dahmani_belkacem | 2:f760e8507750 | 71 | dht22Bis.sample(); |
dahmani_belkacem | 2:f760e8507750 | 72 | humInt=dht22Bis.getHumidity()/10.0; |
dahmani_belkacem | 2:f760e8507750 | 73 | tempInt=dht22Bis.getTemperature()/10.0; |
dahmani_belkacem | 2:f760e8507750 | 74 | pc.printf("temperature1: %d humidity1: %d\n\r",tempInt,humInt); |
dahmani_belkacem | 1:297aba9a5830 | 75 | |
dahmani_belkacem | 1:297aba9a5830 | 76 | //mesure de la distance |
dahmani_belkacem | 2:f760e8507750 | 77 | |
dahmani_belkacem | 2:f760e8507750 | 78 | //3.1V at 4cm to 0.3V at 30cm. |
dahmani_belkacem | 1:297aba9a5830 | 79 | float a = IRSensor;// 1=4cm 0=30cm |
dahmani_belkacem | 2:f760e8507750 | 80 | //pc.printf("IR sensor reads %2.2f\n ", a); |
dahmani_belkacem | 2:f760e8507750 | 81 | float v=2.8*a; |
dahmani_belkacem | 2:f760e8507750 | 82 | // pc.printf("\r ANALOGIN %2.2f v \n ", v); |
dahmani_belkacem | 2:f760e8507750 | 83 | float l= 10*((12/v)-0.42); |
dahmani_belkacem | 1:297aba9a5830 | 84 | |
dahmani_belkacem | 2:f760e8507750 | 85 | pc.printf("\rDistance is %2.2f mm \n ", l); // print and convert to distance by taking x=0->1 and 26*x+4 |
dahmani_belkacem | 2:f760e8507750 | 86 | float x=193-l;//218 |
dahmani_belkacem | 2:f760e8507750 | 87 | float f= 4*(2.913*x);//2.5 |
dahmani_belkacem | 2:f760e8507750 | 88 | int m = (f/(9.8)); |
dahmani_belkacem | 2:f760e8507750 | 89 | pc.printf("\la masse de la ruche est égale à %d Kg \n ",m); |
dahmani_belkacem | 2:f760e8507750 | 90 | |
dahmani_belkacem | 2:f760e8507750 | 91 | //mesure de la température avec DS18B20 |
dahmani_belkacem | 2:f760e8507750 | 92 | |
dahmani_belkacem | 2:f760e8507750 | 93 | probe[0].convert_temperature(DS1820::all_devices); |
dahmani_belkacem | 2:f760e8507750 | 94 | for (i=0; i<devices_found; i++) { |
dahmani_belkacem | 2:f760e8507750 | 95 | tempDs = probe[i].temperature('c'); |
dahmani_belkacem | 2:f760e8507750 | 96 | pc.printf("Device[%d]: %d \r\n",i,tempDs); |
dahmani_belkacem | 2:f760e8507750 | 97 | } |
dahmani_belkacem | 2:f760e8507750 | 98 | |
dahmani_belkacem | 2:f760e8507750 | 99 | //fin de mesure de temperature avec DS18B20 |
dahmani_belkacem | 2:f760e8507750 | 100 | |
dahmani_belkacem | 2:f760e8507750 | 101 | |
dahmani_belkacem | 2:f760e8507750 | 102 | pc.printf("TEST5\r\n"); |
dahmani_belkacem | 2:f760e8507750 | 103 | |
dahmani_belkacem | 2:f760e8507750 | 104 | |
dahmani_belkacem | 2:f760e8507750 | 105 | |
dahmani_belkacem | 2:f760e8507750 | 106 | |
dahmani_belkacem | 2:f760e8507750 | 107 | if(humExt<=16){ |
dahmani_belkacem | 2:f760e8507750 | 108 | strcat(donnee,"0%x"); |
dahmani_belkacem | 2:f760e8507750 | 109 | }else {strcat(donnee,"%2x");} |
dahmani_belkacem | 2:f760e8507750 | 110 | pc.printf(donnee,humExt); |
dahmani_belkacem | 2:f760e8507750 | 111 | pc.printf("\n"); |
dahmani_belkacem | 2:f760e8507750 | 112 | |
dahmani_belkacem | 2:f760e8507750 | 113 | if(humInt<=16){ |
dahmani_belkacem | 2:f760e8507750 | 114 | strcat(donnee,"0%x"); |
dahmani_belkacem | 2:f760e8507750 | 115 | }else {strcat(donnee,"%2x");} |
dahmani_belkacem | 2:f760e8507750 | 116 | pc.printf(donnee,humExt,humInt); |
dahmani_belkacem | 2:f760e8507750 | 117 | pc.printf("\n"); |
dahmani_belkacem | 2:f760e8507750 | 118 | |
dahmani_belkacem | 2:f760e8507750 | 119 | if(tempDs<=16){ |
dahmani_belkacem | 2:f760e8507750 | 120 | strcat(donnee,"0%x"); |
dahmani_belkacem | 2:f760e8507750 | 121 | }else {strcat(donnee,"%2x");} |
dahmani_belkacem | 2:f760e8507750 | 122 | pc.printf(donnee,humExt,humInt,tempDs); |
dahmani_belkacem | 2:f760e8507750 | 123 | pc.printf("\n"); |
dahmani_belkacem | 2:f760e8507750 | 124 | |
dahmani_belkacem | 2:f760e8507750 | 125 | if(m<=16){ |
dahmani_belkacem | 2:f760e8507750 | 126 | strcat(donnee,"0%x"); |
dahmani_belkacem | 2:f760e8507750 | 127 | }else {strcat(donnee,"%2x");} |
dahmani_belkacem | 2:f760e8507750 | 128 | pc.printf(donnee,humExt,humInt,tempDs,m); |
dahmani_belkacem | 2:f760e8507750 | 129 | |
dahmani_belkacem | 2:f760e8507750 | 130 | pc.printf("\n"); |
dahmani_belkacem | 2:f760e8507750 | 131 | |
dahmani_belkacem | 2:f760e8507750 | 132 | if(tempExt<=16){ |
dahmani_belkacem | 2:f760e8507750 | 133 | strcat(donnee,"0%x"); |
dahmani_belkacem | 2:f760e8507750 | 134 | }else {strcat(donnee,"%2x");} |
dahmani_belkacem | 2:f760e8507750 | 135 | pc.printf(donnee,humExt,humInt,tempDs,m,tempExt); |
dahmani_belkacem | 2:f760e8507750 | 136 | pc.printf("\n"); |
dahmani_belkacem | 2:f760e8507750 | 137 | |
dahmani_belkacem | 2:f760e8507750 | 138 | if(tempInt<=16){ |
dahmani_belkacem | 2:f760e8507750 | 139 | strcat(donnee,"0%x "); |
dahmani_belkacem | 2:f760e8507750 | 140 | }else {strcat(donnee,"%2x ");} |
dahmani_belkacem | 2:f760e8507750 | 141 | pc.printf(donnee,humExt,humInt,tempDs,m,tempExt,tempInt); |
dahmani_belkacem | 2:f760e8507750 | 142 | pc.printf("\n"); |
dahmani_belkacem | 2:f760e8507750 | 143 | sigfox.printf(donnee,humExt,humInt,tempDs,m,tempExt,tempInt); |
dahmani_belkacem | 2:f760e8507750 | 144 | pc.printf("\n"); |
dahmani_belkacem | 2:f760e8507750 | 145 | pc.printf(donnee,humExt,humInt,tempDs,m,tempExt,tempInt); |
dahmani_belkacem | 2:f760e8507750 | 146 | |
dahmani_belkacem | 2:f760e8507750 | 147 | // pc.printf(donnee); |
dahmani_belkacem | 2:f760e8507750 | 148 | pc.printf("TEST6\r\n"); |
dahmani_belkacem | 2:f760e8507750 | 149 | led0 = 1; |
dahmani_belkacem | 2:f760e8507750 | 150 | led1 = 1; |
dahmani_belkacem | 2:f760e8507750 | 151 | wait (10); |
dahmani_belkacem | 2:f760e8507750 | 152 | //wait(0.1); // wait 100 ms |
dahmani_belkacem | 2:f760e8507750 | 153 | |
dahmani_belkacem | 2:f760e8507750 | 154 | // LEDs OFF |
dahmani_belkacem | 2:f760e8507750 | 155 | led0 = 0; |
dahmani_belkacem | 2:f760e8507750 | 156 | led1 = 0; |
dahmani_belkacem | 1:297aba9a5830 | 157 | |
dahmani_belkacem | 1:297aba9a5830 | 158 | |
dahmani_belkacem | 2:f760e8507750 | 159 | // wait(660); |
dahmani_belkacem | 2:f760e8507750 | 160 | |
dahmani_belkacem | 2:f760e8507750 | 161 | |
dahmani_belkacem | 1:297aba9a5830 | 162 | |
veyselka | 0:e0a6c18ea0fb | 163 | |
veyselka | 0:e0a6c18ea0fb | 164 | } |
dahmani_belkacem | 2:f760e8507750 | 165 | |
dahmani_belkacem | 1:297aba9a5830 | 166 | |
dahmani_belkacem | 1:297aba9a5830 | 167 | |
dahmani_belkacem | 1:297aba9a5830 | 168 | |
dahmani_belkacem | 1:297aba9a5830 | 169 | |
dahmani_belkacem | 2:f760e8507750 | 170 | |
dahmani_belkacem | 1:297aba9a5830 | 171 | |
dahmani_belkacem | 1:297aba9a5830 | 172 | |
veyselka | 0:e0a6c18ea0fb | 173 | } |
veyselka | 0:e0a6c18ea0fb | 174 | |
dahmani_belkacem | 1:297aba9a5830 | 175 | |
dahmani_belkacem | 1:297aba9a5830 | 176 | |
dahmani_belkacem | 1:297aba9a5830 | 177 |