St-connect

Dependencies:   HP206C mbed WakeUp QMC5883L DHT22 DS1820

  1. ST Conect Project Look how we did it : [Hackster](https://www.hackster.io/monginjulien/st-connect-dike-monitoring-534a32)
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?

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