a sensor hub for monitoring home environment

Dependencies:   HTS221 LIS3MDL LPS22HB LSM303AGR LSM6DSL VL53L0X picojson

Fork of HelloWorld_ST_Sensors by ST

Committer:
jaafaryn
Date:
Tue Dec 12 03:01:51 2017 +0000
Revision:
11:1e0b9a529ee0
Child:
12:058b012dbebe
- using standalone st sensors drivers instead of BSP drivers; - added interface to display on Nextion LCD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jaafaryn 11:1e0b9a529ee0 1 /* Home Environemnt Monitoring and Logging with STM32 IOT DISCOVERY Board */
jaafaryn 11:1e0b9a529ee0 2 /* */
jaafaryn 11:1e0b9a529ee0 3 /* Jaafar Benabdallah - 2017 */
jaafaryn 11:1e0b9a529ee0 4
jaafaryn 11:1e0b9a529ee0 5
jaafaryn 11:1e0b9a529ee0 6 /* Libraries */
jaafaryn 11:1e0b9a529ee0 7 #include "mbed.h"
jaafaryn 11:1e0b9a529ee0 8 #include "HTS221Sensor.h"
jaafaryn 11:1e0b9a529ee0 9 #include "LPS22HBSensor.h"
jaafaryn 11:1e0b9a529ee0 10 #include "LSM6DSLSensor.h"
jaafaryn 11:1e0b9a529ee0 11 #include "lis3mdl_class.h"
jaafaryn 11:1e0b9a529ee0 12 #include "VL53L0X.h"
jaafaryn 11:1e0b9a529ee0 13 #include "wifi.h"
jaafaryn 11:1e0b9a529ee0 14
jaafaryn 11:1e0b9a529ee0 15 /* Syncing Params */
jaafaryn 11:1e0b9a529ee0 16 #define SENSE_PERIOD_S 5.0
jaafaryn 11:1e0b9a529ee0 17 #define UPLOAD_PERIOD_S 30.0
jaafaryn 11:1e0b9a529ee0 18 #define CHECK_PROXIMITY_PERIOD_S 1.0
jaafaryn 11:1e0b9a529ee0 19
jaafaryn 11:1e0b9a529ee0 20 #define INFLUX_SERVER_URL "rpi1.nrjy.com"
jaafaryn 11:1e0b9a529ee0 21 #define INFLUX_SERVER_PORT 8086
jaafaryn 11:1e0b9a529ee0 22
jaafaryn 11:1e0b9a529ee0 23 #define WIFI_WRITE_TIMEOUT 5000
jaafaryn 11:1e0b9a529ee0 24 #define WIFI_READ_TIMEOUT 5000
jaafaryn 11:1e0b9a529ee0 25 #define CONNECTION_TRIAL_MAX 5
jaafaryn 11:1e0b9a529ee0 26
jaafaryn 11:1e0b9a529ee0 27 /* Nextion display macros */
jaafaryn 11:1e0b9a529ee0 28 #define WIFI_ICON_ON nextion.printf("vis wifi,1\xff\xff\xff")
jaafaryn 11:1e0b9a529ee0 29 #define WIFI_ICON_OFF nextion.printf("vis wifi,0\xff\xff\xff")
jaafaryn 11:1e0b9a529ee0 30 #define UPLOAD_ICON_ON nextion.printf("vis upload,1\xff\xff\xff")
jaafaryn 11:1e0b9a529ee0 31 #define UPLOAD_ICON_OFF nextion.printf("vis upload,0\xff\xff\xff")
jaafaryn 11:1e0b9a529ee0 32
jaafaryn 11:1e0b9a529ee0 33
jaafaryn 11:1e0b9a529ee0 34 /* Interface definition */
jaafaryn 11:1e0b9a529ee0 35 static DevI2C devI2c(PB_11,PB_10);
jaafaryn 11:1e0b9a529ee0 36 Serial pc(USBTX, USBRX, 115200);
jaafaryn 11:1e0b9a529ee0 37 Serial nextion(PA_0, PA_1, 115200); //i.e. D1, D0 : Serial 4
jaafaryn 11:1e0b9a529ee0 38 DigitalOut led3(LED3);// WiFi module status
jaafaryn 11:1e0b9a529ee0 39 DigitalOut ledhttp(LED2);// Http activity
jaafaryn 11:1e0b9a529ee0 40
jaafaryn 11:1e0b9a529ee0 41
jaafaryn 11:1e0b9a529ee0 42
jaafaryn 11:1e0b9a529ee0 43 /* Operation flags */
jaafaryn 11:1e0b9a529ee0 44 volatile bool sense_enabled = false;
jaafaryn 11:1e0b9a529ee0 45 volatile bool take_measurements = false;
jaafaryn 11:1e0b9a529ee0 46 volatile bool send_measurements = false;
jaafaryn 11:1e0b9a529ee0 47 volatile bool check_proximity = false;
jaafaryn 11:1e0b9a529ee0 48 bool WiFi_on = false;
jaafaryn 11:1e0b9a529ee0 49
jaafaryn 11:1e0b9a529ee0 50
jaafaryn 11:1e0b9a529ee0 51 /* Timers */
jaafaryn 11:1e0b9a529ee0 52 Ticker getMeasurementsTicker;
jaafaryn 11:1e0b9a529ee0 53 Ticker sendMeasurementsTicker;
jaafaryn 11:1e0b9a529ee0 54 Ticker checkProximityTicker;
jaafaryn 11:1e0b9a529ee0 55 // Ticker WiFi_led_ticker;
jaafaryn 11:1e0b9a529ee0 56
jaafaryn 11:1e0b9a529ee0 57
jaafaryn 11:1e0b9a529ee0 58 /* Environmental sensors */
jaafaryn 11:1e0b9a529ee0 59 static LPS22HBSensor press_temp(&devI2c);
jaafaryn 11:1e0b9a529ee0 60 static HTS221Sensor hum_temp(&devI2c);
jaafaryn 11:1e0b9a529ee0 61 /* Motion sensors */
jaafaryn 11:1e0b9a529ee0 62 static LSM6DSLSensor acc_gyro(&devI2c,LSM6DSL_ACC_GYRO_I2C_ADDRESS_LOW,PD_11); // low address
jaafaryn 11:1e0b9a529ee0 63 static LIS3MDL magnetometer(&devI2c);
jaafaryn 11:1e0b9a529ee0 64 /* Range sensor */
jaafaryn 11:1e0b9a529ee0 65 static DigitalOut shutdown_pin(PC_6);
jaafaryn 11:1e0b9a529ee0 66 static VL53L0X range(&devI2c, &shutdown_pin, PC_7);
jaafaryn 11:1e0b9a529ee0 67
jaafaryn 11:1e0b9a529ee0 68
jaafaryn 11:1e0b9a529ee0 69 /* Environment variables */
jaafaryn 11:1e0b9a529ee0 70 float tempC_val = 0;
jaafaryn 11:1e0b9a529ee0 71 float tempF_val = 0;
jaafaryn 11:1e0b9a529ee0 72 float RH_val = 0;
jaafaryn 11:1e0b9a529ee0 73 float Patm_val = 0;
jaafaryn 11:1e0b9a529ee0 74 float tempC_val2 = 0;
jaafaryn 11:1e0b9a529ee0 75 int32_t distance = 0;
jaafaryn 11:1e0b9a529ee0 76
jaafaryn 11:1e0b9a529ee0 77
jaafaryn 11:1e0b9a529ee0 78 /* Comm vars */
jaafaryn 11:1e0b9a529ee0 79 char *InfluxServerUrl = INFLUX_SERVER_URL;
jaafaryn 11:1e0b9a529ee0 80 char *influx_query = "/write?db=HENV2&precision=s&rp=HENV2_1y";
jaafaryn 11:1e0b9a529ee0 81 uint16_t InfluxServerPort = INFLUX_SERVER_PORT;
jaafaryn 11:1e0b9a529ee0 82 static uint8_t http_request[1024];
jaafaryn 11:1e0b9a529ee0 83 static uint8_t http_resp[512];
jaafaryn 11:1e0b9a529ee0 84 uint16_t reqLen;
jaafaryn 11:1e0b9a529ee0 85 uint16_t respLen;
jaafaryn 11:1e0b9a529ee0 86 uint32_t request_sent = 0;
jaafaryn 11:1e0b9a529ee0 87 uint32_t request_acked = 0;
jaafaryn 11:1e0b9a529ee0 88
jaafaryn 11:1e0b9a529ee0 89
jaafaryn 11:1e0b9a529ee0 90 /* Functions Prototypes */
jaafaryn 11:1e0b9a529ee0 91 bool connectToServer(char *serverUrl, uint16_t serverPort, uint8_t socket_id);
jaafaryn 11:1e0b9a529ee0 92 bool connectWiFi(void);
jaafaryn 11:1e0b9a529ee0 93 bool checkWiFi(void);
jaafaryn 11:1e0b9a529ee0 94 void time_to_sense_cb(void);
jaafaryn 11:1e0b9a529ee0 95 void time_to_send_cb(void);
jaafaryn 11:1e0b9a529ee0 96 void time_to_check_distance_cb(void);
jaafaryn 11:1e0b9a529ee0 97 void sync_time(void);
jaafaryn 11:1e0b9a529ee0 98 // void toggle_led3_cb();