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)
main.cpp
- Committer:
- raminou
- Date:
- 2018-10-15
- Revision:
- 5:d805b1c2dc1e
- Parent:
- 1:6b6f96cbd12c
- Child:
- 6:865aa63f2106
File content as of revision 5:d805b1c2dc1e:
#include "mbed.h" #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); 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[20] = {}; 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() { } 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()) { air_temperature = capt_thermo_air_humidity.getTemperature() / 10.0; air_humidity = capt_thermo_air_humidity.getHumidity() / 10.0; } // Pression 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("\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 sprintf(message, "AT$SF=%04x%02x\r\n", (int)(air_temperature*10), (int)(air_humidity)); #ifdef DEBUG pc.printf("%s", message); #endif #ifdef SEND_SIGFOX sigfox.printf("%s", message); #endif // DEEPSLEEP /* WakeUp::set_ms(10000); WakeUp::attach(&mycallback); deepsleep(); */ wait(5); } }