St-connect
Dependencies: HP206C mbed WakeUp QMC5883L DHT22 DS1820
- ST Conect Project Look how we did it : [Hackster](https://www.hackster.io/monginjulien/st-connect-dike-monitoring-534a32)
Diff: main.cpp
- Revision:
- 5:d805b1c2dc1e
- Parent:
- 1:6b6f96cbd12c
- Child:
- 6:865aa63f2106
diff -r a5b7b6de5bbb -r d805b1c2dc1e main.cpp --- a/main.cpp Tue Oct 02 20:33:37 2018 +0000 +++ b/main.cpp Mon Oct 15 07:36:13 2018 +0000 @@ -2,25 +2,40 @@ #include "WakeUp.h" #include "DHT22.h" #include "HP20x_dev.h" +#include "DS1820.h" +#include "QMC5883L.h" + +#define X_MSB 0x03 +#define X_LSB 0x04 +#define Z_MSB 0x05 +#define Z_LSB 0x06 +#define Y_MSB 0x07 +#define Y_LSB 0x08 +#define ADDR_MAGN_W 0x3C +#define ADDR_MAGN_R 0x3D + #define DEBUG 1 +// #define SEND_SIGFOX 1 #ifdef DEBUG Serial pc(USBTX, USBRX); #endif -// HP20x_dev capt_barometer(D4, D5); -// I2C capt_magnetometer(D4, D5); -// AnalogIn capt_ground_humidity(A0); // SEN0 +HP20x_dev capt_barometer(D4, D5); +QMC5883L capt_magnetometer(D4, D5); +DS1820 capt_ground_temperature(A1); +AnalogIn capt_ground_humidity(A0); // SEN0 DHT22 capt_thermo_air_humidity(D3); // DHT22 Serial sigfox(D1, D0); -char message[50] = {}; +char message[20] = {}; -long pressure = 1000; -float air_temperature = 20; -float air_humidity = 50; -int ground_temperature = 20; -int ground_humidity = 50; +long pressure = 10000; +float air_temperature = 20.0; +float air_humidity = 50.0; +float ground_temperature = 20.0; +float ground_humidity = 0.5; +int16_t magnetic_field[3] = {}; // x, y, z void mycallback() { @@ -29,17 +44,18 @@ int main() { sigfox.printf("\r\n"); + capt_magnetometer.init(); #ifdef DEBUG pc.printf("\r\n\r\n\r\nInit...\r\n"); #endif while(1) { - /* // Temperature Sol + capt_ground_temperature.convertTemperature(true, DS1820::all_devices); + ground_temperature = capt_ground_temperature.temperature(); // Humidite Sol ground_humidity = capt_ground_humidity.read(); - */ // Temperature et Humidite Air if(capt_thermo_air_humidity.sample()) @@ -49,18 +65,22 @@ } // Pression - /* - if(barometer.isAvailible()) - pressure = capt_barometer.ReadPressure() + if(capt_barometer.isAvailable()) + pressure = capt_barometer.ReadPressure(); // Magnetometre - */ + magnetic_field[0] = capt_magnetometer.getMagXvalue(); + magnetic_field[1] = capt_magnetometer.getMagYvalue(); + magnetic_field[2] = capt_magnetometer.getMagZvalue(); // Affichage pour debug #ifdef DEBUG - // pc.printf("Pressure: %d\r\n", pressure); - // pc.printf("Ground Temperature: %.1f\r|\t Ground Humidity: %f\r\n", ground_temperature, ground_humidity); + pc.printf("\r\n"); + pc.printf("Pressure: %f hPa\r\n", pressure/100.0); + pc.printf("Ground Temperature: %f\t|\t", ground_temperature); + pc.printf("Ground Humidity: %.1f\r\n", ground_humidity*100); pc.printf("Air Temperature: %.1f\t|\tAir Humidity: %.1f\r\n", air_temperature, air_humidity); + pc.printf("Magnetic field: x: %hd, y: %hd, z: %hd\r\n", magnetic_field[0], magnetic_field[1], magnetic_field[2]); #endif // Envoie sigfox @@ -69,14 +89,15 @@ pc.printf("%s", message); #endif - sigfox.printf("%s", message); - + #ifdef SEND_SIGFOX + sigfox.printf("%s", message); + #endif // DEEPSLEEP /* WakeUp::set_ms(10000); WakeUp::attach(&mycallback); deepsleep(); */ - wait(120); + wait(5); } }