Ruche connectée 2 correction de poids
Dependencies: mbed Message HX711 DHT22 GPS
Diff: main.cpp
- Revision:
- 3:33d642087cca
- Parent:
- 2:3248370d6bc4
- Child:
- 4:3fd67792aaf3
--- a/main.cpp Fri Feb 01 17:14:30 2019 +0000 +++ b/main.cpp Mon Feb 04 11:49:24 2019 +0000 @@ -1,56 +1,36 @@ #include "mbed.h" -#include <iostream> -#include <vector> -#include "sigfox.h" -#include "SoftSerial.h" #include "message_1.h" -#include "message_2.h" #include "DHT22.h" #include "HX711.h" #include "DS1820.h" using namespace std; -void mesureTempExtHumidite(int &humidite, float &temperature); +// fonction de mesure de donnees +void mesureTempExtHumidite(int &humidite, float &temperature); void mesureTempInt(float &temperatureInt); void mesureMasse(float &masse, long valeurTare); void mesureGps(float &longit, float &lat); -DigitalOut myled(D13); -//Serial sc(SERIAL_TX, SERIAL_RX, 9600); -//Serial device(PA_9, PA_10); -DHT22 dht22(D3); -HX711 Balance(D12,D11); -DS1820 probe = A6; +DigitalOut myled(D13); // debug led +//Serial sc(SERIAL_TX, SERIAL_RX, 9600); // mode debug le decommenter pour afficher les mesures des capteurs dans le moniteur serie -//SoftSerial device(D3, D4); -//Serial sc2(D5, D4); - -///////////Déclaration des Variables Correction de la masse - - float temperature_actuelle=12; - float temperature_prvious=0; - float delta =0; - float asser_err= -0.15; - float masse_reelle=0; -/////////////////// +DHT22 dht22(D3); // capteur de temperature et d'humidite +HX711 Balance(D12,D11); // capteur de poids +DS1820 probe = A6; // sonde int main() { - // device.baud(9600); - //sc.printf("---New start ---\n"); - // while (!device.writeable()) { } - //sc.printf("coucou 1 \n"); + + float temperature_actuelle; + float temperature_ref=20; + float delta; + float asser_err= -0.15; //coefficient de correction - /* device.printf("AT\r");; - char a = device.getc(); - char b = device.getc(); - sc.printf("%c%c \n", a, b); - sc.printf("%c", device.getc()); - */ + float masse_reelle; float longit = 12.3, lat = 18.6; int humidite= 18; float temperatureExt = 12; float temperatureInt = 15; - //coefficient asservissement + long valeur; @@ -59,56 +39,39 @@ valeurTare = Balance.getValue(); - probe.search_ROM(); - char temp; + probe.search_ROM(); // mise en marche de la sonde + while(1) { mesureTempExtHumidite(humidite, temperatureExt); mesureMasse(masse, valeurTare); mesureTempInt(temperatureInt); //sc.printf("temperature externe: %.2f humidity: %d temperature interne: %.2f \n\r",temperatureExt, humidite, temperatureInt); - //sc.printf("masse: %f\n\r", masse); - - //////Correction des la masse - - temperature_actuelle=temperatureExt; - + //sc.printf("masse: %f\n\r", masse); // mode debug dans le moniteur serie... - - delta=temperature_actuelle-temperature_prvious; - - masse_reelle=masse+(delta*asser_err); - - temperature_prvious=temperature_actuelle; - ////// - - //Message_1 msg1(1, temperatureExt, temperatureInt, humidite, masse);//envoyé données sigfox sans la correction de la masse - - Message_1 msg1(1, temperatureExt, temperatureInt, humidite, masse_reelle); + //Correction de la masse + temperature_actuelle=temperatureExt; + delta=temperature_ref - temperature_actuelle; + masse_reelle=masse+(delta*asser_err); + + + Message_1 msg1(temperatureExt, temperatureInt, humidite, masse_reelle); // instanciation du corps du message avec les données à envoyer msg1.send(); - myled = 1 ; - wait(15); - myled = 0 ; + wait(600); // envoie toutes les 10 min } } void mesureTempExtHumidite(int &humidite, float &temperatureExt){ - dht22.sample() ; humidite=dht22.getHumidity()/10.0; temperatureExt=dht22.getTemperature()/10.0; - - // humidite = 57; - // temperatureExt = 17; }; void mesureMasse(float &masse, long valeurTare){ - wait_ms(200); // Attente de 200 millisecondes - float valeur = Balance.getValue(); // On récupère la valeur du module - masse = ((double)valeur-(double)valeurTare)/-11900; - + float valeur = Balance.getValue(); // On récupère la valeur du module + masse = ((double)valeur-(double)valeurTare)/11900; // coeff de calibrage des jauges }; void mesureTempInt(float &temperatureInt){ @@ -116,12 +79,6 @@ temperatureInt = probe.temperature('c'); }; -void mesureGps(float &longit, float &lat){ +void mesureGps(float &longit, float &lat){ // le Gps n'a pas ete implemente par soucis de consommation energetique. }; -/*bool sendMessageToSigfox(Vector<Message*> msg){ - for(int i =0; i<msg.size(); i++){ - msg[i].send(); - wait_ms(100); - }; -};*/