Ruche connectée 2 correction de poids
Dependencies: mbed Message HX711 DHT22 GPS
main.cpp@5:6621dbb8f8d0, 2019-02-04 (annotated)
- Committer:
- Sidibe
- Date:
- Mon Feb 04 12:03:34 2019 +0000
- Revision:
- 5:6621dbb8f8d0
- Parent:
- 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 | 4:3fd67792aaf3 | 24 | float temperature_ref=24; |
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 | 5:6621dbb8f8d0 | 29 | float longit, lat; |
Sidibe | 5:6621dbb8f8d0 | 30 | int humidite; |
Sidibe | 5:6621dbb8f8d0 | 31 | float temperatureExt; |
Sidibe | 5:6621dbb8f8d0 | 32 | float temperatureInt; |
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 | 5:6621dbb8f8d0 | 38 | float masse; |
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 | 5:6621dbb8f8d0 | 54 | // masse: contient valeur de poids sans correction. |
Sidibe | 5:6621dbb8f8d0 | 55 | // masse_relle: contient valeur de poids après correction. |
Sidibe | 3:33d642087cca | 56 | masse_reelle=masse+(delta*asser_err); |
Sidibe | 5:6621dbb8f8d0 | 57 | |
Sidibe | 3:33d642087cca | 58 | |
Sidibe | 3:33d642087cca | 59 | Message_1 msg1(temperatureExt, temperatureInt, humidite, masse_reelle); // instanciation du corps du message avec les données à envoyer |
Sidibe | 0:126a8e290bd5 | 60 | msg1.send(); |
Sidibe | 0:126a8e290bd5 | 61 | |
Sidibe | 3:33d642087cca | 62 | wait(600); // envoie toutes les 10 min |
Sidibe | 0:126a8e290bd5 | 63 | } |
Sidibe | 0:126a8e290bd5 | 64 | } |
Sidibe | 0:126a8e290bd5 | 65 | |
Sidibe | 0:126a8e290bd5 | 66 | void mesureTempExtHumidite(int &humidite, float &temperatureExt){ |
Sidibe | 0:126a8e290bd5 | 67 | dht22.sample() ; |
Sidibe | 0:126a8e290bd5 | 68 | humidite=dht22.getHumidity()/10.0; |
Sidibe | 0:126a8e290bd5 | 69 | temperatureExt=dht22.getTemperature()/10.0; |
Sidibe | 0:126a8e290bd5 | 70 | }; |
Sidibe | 0:126a8e290bd5 | 71 | |
Sidibe | 2:3248370d6bc4 | 72 | |
Sidibe | 0:126a8e290bd5 | 73 | void mesureMasse(float &masse, long valeurTare){ |
Sidibe | 0:126a8e290bd5 | 74 | wait_ms(200); // Attente de 200 millisecondes |
Sidibe | 3:33d642087cca | 75 | float valeur = Balance.getValue(); // On récupère la valeur du module |
Sidibe | 3:33d642087cca | 76 | masse = ((double)valeur-(double)valeurTare)/11900; // coeff de calibrage des jauges |
Sidibe | 0:126a8e290bd5 | 77 | }; |
Sidibe | 0:126a8e290bd5 | 78 | |
Sidibe | 0:126a8e290bd5 | 79 | void mesureTempInt(float &temperatureInt){ |
Sidibe | 0:126a8e290bd5 | 80 | probe.convert_temperature(DS1820::all_devices); |
Sidibe | 0:126a8e290bd5 | 81 | temperatureInt = probe.temperature('c'); |
Sidibe | 0:126a8e290bd5 | 82 | }; |
Sidibe | 0:126a8e290bd5 | 83 | |
Sidibe | 3:33d642087cca | 84 | void mesureGps(float &longit, float &lat){ // le Gps n'a pas ete implemente par soucis de consommation energetique. |
Sidibe | 0:126a8e290bd5 | 85 | }; |
Sidibe | 0:126a8e290bd5 | 86 |