Ruche connectée 2 correction de poids

Dependencies:   mbed Message HX711 DHT22 GPS

Committer:
Sidibe
Date:
Mon Feb 04 12:03:34 2019 +0000
Revision:
5:6621dbb8f8d0
Parent:
4:3fd67792aaf3
ruche;

Who changed what in which revision?

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