Ruche connectée 2 correction de poids
Dependencies: mbed Message HX711 DHT22 GPS
main.cpp@3:33d642087cca, 2019-02-04 (annotated)
- Committer:
- Sidibe
- Date:
- Mon Feb 04 11:49:24 2019 +0000
- Revision:
- 3:33d642087cca
- Parent:
- 2:3248370d6bc4
- Child:
- 4:3fd67792aaf3
ruche
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sidibe | 0:126a8e290bd5 | 1 | #include "mbed.h" |
Sidibe | 0:126a8e290bd5 | 2 | #include "message_1.h" |
Sidibe | 0:126a8e290bd5 | 3 | #include "DHT22.h" |
Sidibe | 0:126a8e290bd5 | 4 | #include "HX711.h" |
Sidibe | 0:126a8e290bd5 | 5 | #include "DS1820.h" |
Sidibe | 0:126a8e290bd5 | 6 | |
Sidibe | 0:126a8e290bd5 | 7 | using namespace std; |
Sidibe | 0:126a8e290bd5 | 8 | |
Sidibe | 3:33d642087cca | 9 | // fonction de mesure de donnees |
Sidibe | 3:33d642087cca | 10 | void mesureTempExtHumidite(int &humidite, float &temperature); |
Sidibe | 0:126a8e290bd5 | 11 | void mesureTempInt(float &temperatureInt); |
Sidibe | 0:126a8e290bd5 | 12 | void mesureMasse(float &masse, long valeurTare); |
Sidibe | 0:126a8e290bd5 | 13 | void mesureGps(float &longit, float &lat); |
Sidibe | 3:33d642087cca | 14 | DigitalOut myled(D13); // debug led |
Sidibe | 3:33d642087cca | 15 | //Serial sc(SERIAL_TX, SERIAL_RX, 9600); // mode debug le decommenter pour afficher les mesures des capteurs dans le moniteur serie |
Sidibe | 0:126a8e290bd5 | 16 | |
Sidibe | 3:33d642087cca | 17 | DHT22 dht22(D3); // capteur de temperature et d'humidite |
Sidibe | 3:33d642087cca | 18 | HX711 Balance(D12,D11); // capteur de poids |
Sidibe | 3:33d642087cca | 19 | DS1820 probe = A6; // sonde |
Sidibe | 0:126a8e290bd5 | 20 | |
Sidibe | 0:126a8e290bd5 | 21 | int main() { |
Sidibe | 3:33d642087cca | 22 | |
Sidibe | 3:33d642087cca | 23 | float temperature_actuelle; |
Sidibe | 3:33d642087cca | 24 | float temperature_ref=20; |
Sidibe | 3:33d642087cca | 25 | float delta; |
Sidibe | 3:33d642087cca | 26 | float asser_err= -0.15; //coefficient de correction |
Sidibe | 0:126a8e290bd5 | 27 | |
Sidibe | 3:33d642087cca | 28 | float masse_reelle; |
Sidibe | 0:126a8e290bd5 | 29 | float longit = 12.3, lat = 18.6; |
Sidibe | 0:126a8e290bd5 | 30 | int humidite= 18; |
Sidibe | 0:126a8e290bd5 | 31 | float temperatureExt = 12; |
Sidibe | 0:126a8e290bd5 | 32 | float temperatureInt = 15; |
Sidibe | 3:33d642087cca | 33 | |
Sidibe | 2:3248370d6bc4 | 34 | |
Sidibe | 0:126a8e290bd5 | 35 | |
Sidibe | 0:126a8e290bd5 | 36 | long valeur; |
Sidibe | 0:126a8e290bd5 | 37 | long valeurTare ; |
Sidibe | 2:3248370d6bc4 | 38 | float masse=13.2; |
Sidibe | 2:3248370d6bc4 | 39 | |
Sidibe | 0:126a8e290bd5 | 40 | |
Sidibe | 0:126a8e290bd5 | 41 | valeurTare = Balance.getValue(); |
Sidibe | 3:33d642087cca | 42 | probe.search_ROM(); // mise en marche de la sonde |
Sidibe | 3:33d642087cca | 43 | |
Sidibe | 0:126a8e290bd5 | 44 | while(1) { |
Sidibe | 0:126a8e290bd5 | 45 | mesureTempExtHumidite(humidite, temperatureExt); |
Sidibe | 0:126a8e290bd5 | 46 | mesureMasse(masse, valeurTare); |
Sidibe | 0:126a8e290bd5 | 47 | mesureTempInt(temperatureInt); |
Sidibe | 0:126a8e290bd5 | 48 | //sc.printf("temperature externe: %.2f humidity: %d temperature interne: %.2f \n\r",temperatureExt, humidite, temperatureInt); |
Sidibe | 3:33d642087cca | 49 | //sc.printf("masse: %f\n\r", masse); // mode debug dans le moniteur serie... |
Sidibe | 2:3248370d6bc4 | 50 | |
Sidibe | 3:33d642087cca | 51 | //Correction de la masse |
Sidibe | 3:33d642087cca | 52 | temperature_actuelle=temperatureExt; |
Sidibe | 3:33d642087cca | 53 | delta=temperature_ref - temperature_actuelle; |
Sidibe | 3:33d642087cca | 54 | masse_reelle=masse+(delta*asser_err); |
Sidibe | 3:33d642087cca | 55 | |
Sidibe | 3:33d642087cca | 56 | |
Sidibe | 3:33d642087cca | 57 | Message_1 msg1(temperatureExt, temperatureInt, humidite, masse_reelle); // instanciation du corps du message avec les données à envoyer |
Sidibe | 0:126a8e290bd5 | 58 | msg1.send(); |
Sidibe | 0:126a8e290bd5 | 59 | |
Sidibe | 3:33d642087cca | 60 | wait(600); // envoie toutes les 10 min |
Sidibe | 0:126a8e290bd5 | 61 | } |
Sidibe | 0:126a8e290bd5 | 62 | } |
Sidibe | 0:126a8e290bd5 | 63 | |
Sidibe | 0:126a8e290bd5 | 64 | void mesureTempExtHumidite(int &humidite, float &temperatureExt){ |
Sidibe | 0:126a8e290bd5 | 65 | dht22.sample() ; |
Sidibe | 0:126a8e290bd5 | 66 | humidite=dht22.getHumidity()/10.0; |
Sidibe | 0:126a8e290bd5 | 67 | temperatureExt=dht22.getTemperature()/10.0; |
Sidibe | 0:126a8e290bd5 | 68 | }; |
Sidibe | 0:126a8e290bd5 | 69 | |
Sidibe | 2:3248370d6bc4 | 70 | |
Sidibe | 0:126a8e290bd5 | 71 | void mesureMasse(float &masse, long valeurTare){ |
Sidibe | 0:126a8e290bd5 | 72 | wait_ms(200); // Attente de 200 millisecondes |
Sidibe | 3:33d642087cca | 73 | float valeur = Balance.getValue(); // On récupère la valeur du module |
Sidibe | 3:33d642087cca | 74 | masse = ((double)valeur-(double)valeurTare)/11900; // coeff de calibrage des jauges |
Sidibe | 0:126a8e290bd5 | 75 | }; |
Sidibe | 0:126a8e290bd5 | 76 | |
Sidibe | 0:126a8e290bd5 | 77 | void mesureTempInt(float &temperatureInt){ |
Sidibe | 0:126a8e290bd5 | 78 | probe.convert_temperature(DS1820::all_devices); |
Sidibe | 0:126a8e290bd5 | 79 | temperatureInt = probe.temperature('c'); |
Sidibe | 0:126a8e290bd5 | 80 | }; |
Sidibe | 0:126a8e290bd5 | 81 | |
Sidibe | 3:33d642087cca | 82 | void mesureGps(float &longit, float &lat){ // le Gps n'a pas ete implemente par soucis de consommation energetique. |
Sidibe | 0:126a8e290bd5 | 83 | }; |
Sidibe | 0:126a8e290bd5 | 84 |