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@5:d805b1c2dc1e, 2018-10-15 (annotated)
- Committer:
- raminou
- Date:
- Mon Oct 15 07:36:13 2018 +0000
- Revision:
- 5:d805b1c2dc1e
- Parent:
- 1:6b6f96cbd12c
- Child:
- 6:865aa63f2106
every values are working, sending sigfox ok, need to make the all message
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
raminou | 0:1c266599e07b | 1 | #include "mbed.h" |
raminou | 0:1c266599e07b | 2 | #include "WakeUp.h" |
raminou | 0:1c266599e07b | 3 | #include "DHT22.h" |
raminou | 0:1c266599e07b | 4 | #include "HP20x_dev.h" |
raminou | 5:d805b1c2dc1e | 5 | #include "DS1820.h" |
raminou | 5:d805b1c2dc1e | 6 | #include "QMC5883L.h" |
raminou | 5:d805b1c2dc1e | 7 | |
raminou | 5:d805b1c2dc1e | 8 | #define X_MSB 0x03 |
raminou | 5:d805b1c2dc1e | 9 | #define X_LSB 0x04 |
raminou | 5:d805b1c2dc1e | 10 | #define Z_MSB 0x05 |
raminou | 5:d805b1c2dc1e | 11 | #define Z_LSB 0x06 |
raminou | 5:d805b1c2dc1e | 12 | #define Y_MSB 0x07 |
raminou | 5:d805b1c2dc1e | 13 | #define Y_LSB 0x08 |
raminou | 5:d805b1c2dc1e | 14 | #define ADDR_MAGN_W 0x3C |
raminou | 5:d805b1c2dc1e | 15 | #define ADDR_MAGN_R 0x3D |
raminou | 5:d805b1c2dc1e | 16 | |
raminou | 0:1c266599e07b | 17 | #define DEBUG 1 |
raminou | 5:d805b1c2dc1e | 18 | // #define SEND_SIGFOX 1 |
raminou | 0:1c266599e07b | 19 | |
raminou | 0:1c266599e07b | 20 | #ifdef DEBUG |
raminou | 0:1c266599e07b | 21 | Serial pc(USBTX, USBRX); |
raminou | 0:1c266599e07b | 22 | #endif |
raminou | 0:1c266599e07b | 23 | |
raminou | 5:d805b1c2dc1e | 24 | HP20x_dev capt_barometer(D4, D5); |
raminou | 5:d805b1c2dc1e | 25 | QMC5883L capt_magnetometer(D4, D5); |
raminou | 5:d805b1c2dc1e | 26 | DS1820 capt_ground_temperature(A1); |
raminou | 5:d805b1c2dc1e | 27 | AnalogIn capt_ground_humidity(A0); // SEN0 |
raminou | 0:1c266599e07b | 28 | DHT22 capt_thermo_air_humidity(D3); // DHT22 |
raminou | 0:1c266599e07b | 29 | Serial sigfox(D1, D0); |
raminou | 0:1c266599e07b | 30 | |
raminou | 5:d805b1c2dc1e | 31 | char message[20] = {}; |
raminou | 0:1c266599e07b | 32 | |
raminou | 5:d805b1c2dc1e | 33 | long pressure = 10000; |
raminou | 5:d805b1c2dc1e | 34 | float air_temperature = 20.0; |
raminou | 5:d805b1c2dc1e | 35 | float air_humidity = 50.0; |
raminou | 5:d805b1c2dc1e | 36 | float ground_temperature = 20.0; |
raminou | 5:d805b1c2dc1e | 37 | float ground_humidity = 0.5; |
raminou | 5:d805b1c2dc1e | 38 | int16_t magnetic_field[3] = {}; // x, y, z |
raminou | 0:1c266599e07b | 39 | |
raminou | 0:1c266599e07b | 40 | void mycallback() |
raminou | 0:1c266599e07b | 41 | { |
raminou | 0:1c266599e07b | 42 | } |
raminou | 0:1c266599e07b | 43 | |
raminou | 0:1c266599e07b | 44 | int main() |
raminou | 0:1c266599e07b | 45 | { |
raminou | 0:1c266599e07b | 46 | sigfox.printf("\r\n"); |
raminou | 5:d805b1c2dc1e | 47 | capt_magnetometer.init(); |
raminou | 0:1c266599e07b | 48 | #ifdef DEBUG |
raminou | 0:1c266599e07b | 49 | pc.printf("\r\n\r\n\r\nInit...\r\n"); |
raminou | 0:1c266599e07b | 50 | #endif |
raminou | 0:1c266599e07b | 51 | |
raminou | 0:1c266599e07b | 52 | while(1) { |
raminou | 0:1c266599e07b | 53 | // Temperature Sol |
raminou | 5:d805b1c2dc1e | 54 | capt_ground_temperature.convertTemperature(true, DS1820::all_devices); |
raminou | 5:d805b1c2dc1e | 55 | ground_temperature = capt_ground_temperature.temperature(); |
raminou | 0:1c266599e07b | 56 | |
raminou | 0:1c266599e07b | 57 | // Humidite Sol |
raminou | 0:1c266599e07b | 58 | ground_humidity = capt_ground_humidity.read(); |
raminou | 0:1c266599e07b | 59 | |
raminou | 0:1c266599e07b | 60 | // Temperature et Humidite Air |
raminou | 0:1c266599e07b | 61 | if(capt_thermo_air_humidity.sample()) |
raminou | 0:1c266599e07b | 62 | { |
raminou | 0:1c266599e07b | 63 | air_temperature = capt_thermo_air_humidity.getTemperature() / 10.0; |
raminou | 0:1c266599e07b | 64 | air_humidity = capt_thermo_air_humidity.getHumidity() / 10.0; |
raminou | 0:1c266599e07b | 65 | } |
raminou | 0:1c266599e07b | 66 | |
raminou | 0:1c266599e07b | 67 | // Pression |
raminou | 5:d805b1c2dc1e | 68 | if(capt_barometer.isAvailable()) |
raminou | 5:d805b1c2dc1e | 69 | pressure = capt_barometer.ReadPressure(); |
raminou | 0:1c266599e07b | 70 | |
raminou | 0:1c266599e07b | 71 | // Magnetometre |
raminou | 5:d805b1c2dc1e | 72 | magnetic_field[0] = capt_magnetometer.getMagXvalue(); |
raminou | 5:d805b1c2dc1e | 73 | magnetic_field[1] = capt_magnetometer.getMagYvalue(); |
raminou | 5:d805b1c2dc1e | 74 | magnetic_field[2] = capt_magnetometer.getMagZvalue(); |
raminou | 0:1c266599e07b | 75 | |
raminou | 0:1c266599e07b | 76 | // Affichage pour debug |
raminou | 0:1c266599e07b | 77 | #ifdef DEBUG |
raminou | 5:d805b1c2dc1e | 78 | pc.printf("\r\n"); |
raminou | 5:d805b1c2dc1e | 79 | pc.printf("Pressure: %f hPa\r\n", pressure/100.0); |
raminou | 5:d805b1c2dc1e | 80 | pc.printf("Ground Temperature: %f\t|\t", ground_temperature); |
raminou | 5:d805b1c2dc1e | 81 | pc.printf("Ground Humidity: %.1f\r\n", ground_humidity*100); |
raminou | 0:1c266599e07b | 82 | pc.printf("Air Temperature: %.1f\t|\tAir Humidity: %.1f\r\n", air_temperature, air_humidity); |
raminou | 5:d805b1c2dc1e | 83 | pc.printf("Magnetic field: x: %hd, y: %hd, z: %hd\r\n", magnetic_field[0], magnetic_field[1], magnetic_field[2]); |
raminou | 0:1c266599e07b | 84 | #endif |
raminou | 0:1c266599e07b | 85 | |
raminou | 0:1c266599e07b | 86 | // Envoie sigfox |
raminou | 1:6b6f96cbd12c | 87 | sprintf(message, "AT$SF=%04x%02x\r\n", (int)(air_temperature*10), (int)(air_humidity)); |
raminou | 0:1c266599e07b | 88 | #ifdef DEBUG |
raminou | 0:1c266599e07b | 89 | pc.printf("%s", message); |
raminou | 0:1c266599e07b | 90 | #endif |
raminou | 0:1c266599e07b | 91 | |
raminou | 5:d805b1c2dc1e | 92 | #ifdef SEND_SIGFOX |
raminou | 5:d805b1c2dc1e | 93 | sigfox.printf("%s", message); |
raminou | 5:d805b1c2dc1e | 94 | #endif |
raminou | 0:1c266599e07b | 95 | // DEEPSLEEP |
raminou | 0:1c266599e07b | 96 | /* |
raminou | 0:1c266599e07b | 97 | WakeUp::set_ms(10000); |
raminou | 0:1c266599e07b | 98 | WakeUp::attach(&mycallback); |
raminou | 0:1c266599e07b | 99 | deepsleep(); |
raminou | 0:1c266599e07b | 100 | */ |
raminou | 5:d805b1c2dc1e | 101 | wait(5); |
raminou | 0:1c266599e07b | 102 | } |
raminou | 0:1c266599e07b | 103 | } |