ruche

Dependencies:   ATParser DHT22 SerialGPS Sigfox mbed

Fork of Nucleo_SerialGPS_to_PC by hime hime

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?

UserRevisionLine numberNew 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