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)
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);
     }
 }