a sensor hub for monitoring home environment
Dependencies: HTS221 LIS3MDL LPS22HB LSM303AGR LSM6DSL VL53L0X picojson
Fork of HelloWorld_ST_Sensors by
Diff: main.h
- Revision:
- 11:1e0b9a529ee0
- Child:
- 12:058b012dbebe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.h Tue Dec 12 03:01:51 2017 +0000 @@ -0,0 +1,98 @@ +/* Home Environemnt Monitoring and Logging with STM32 IOT DISCOVERY Board */ +/* */ +/* Jaafar Benabdallah - 2017 */ + + +/* Libraries */ +#include "mbed.h" +#include "HTS221Sensor.h" +#include "LPS22HBSensor.h" +#include "LSM6DSLSensor.h" +#include "lis3mdl_class.h" +#include "VL53L0X.h" +#include "wifi.h" + +/* Syncing Params */ +#define SENSE_PERIOD_S 5.0 +#define UPLOAD_PERIOD_S 30.0 +#define CHECK_PROXIMITY_PERIOD_S 1.0 + +#define INFLUX_SERVER_URL "rpi1.nrjy.com" +#define INFLUX_SERVER_PORT 8086 + +#define WIFI_WRITE_TIMEOUT 5000 +#define WIFI_READ_TIMEOUT 5000 +#define CONNECTION_TRIAL_MAX 5 + +/* Nextion display macros */ +#define WIFI_ICON_ON nextion.printf("vis wifi,1\xff\xff\xff") +#define WIFI_ICON_OFF nextion.printf("vis wifi,0\xff\xff\xff") +#define UPLOAD_ICON_ON nextion.printf("vis upload,1\xff\xff\xff") +#define UPLOAD_ICON_OFF nextion.printf("vis upload,0\xff\xff\xff") + + +/* Interface definition */ +static DevI2C devI2c(PB_11,PB_10); +Serial pc(USBTX, USBRX, 115200); +Serial nextion(PA_0, PA_1, 115200); //i.e. D1, D0 : Serial 4 +DigitalOut led3(LED3);// WiFi module status +DigitalOut ledhttp(LED2);// Http activity + + + +/* Operation flags */ +volatile bool sense_enabled = false; +volatile bool take_measurements = false; +volatile bool send_measurements = false; +volatile bool check_proximity = false; +bool WiFi_on = false; + + +/* Timers */ +Ticker getMeasurementsTicker; +Ticker sendMeasurementsTicker; +Ticker checkProximityTicker; +// Ticker WiFi_led_ticker; + + +/* Environmental sensors */ +static LPS22HBSensor press_temp(&devI2c); +static HTS221Sensor hum_temp(&devI2c); +/* Motion sensors */ +static LSM6DSLSensor acc_gyro(&devI2c,LSM6DSL_ACC_GYRO_I2C_ADDRESS_LOW,PD_11); // low address +static LIS3MDL magnetometer(&devI2c); +/* Range sensor */ +static DigitalOut shutdown_pin(PC_6); +static VL53L0X range(&devI2c, &shutdown_pin, PC_7); + + +/* Environment variables */ +float tempC_val = 0; +float tempF_val = 0; +float RH_val = 0; +float Patm_val = 0; +float tempC_val2 = 0; +int32_t distance = 0; + + +/* Comm vars */ +char *InfluxServerUrl = INFLUX_SERVER_URL; +char *influx_query = "/write?db=HENV2&precision=s&rp=HENV2_1y"; +uint16_t InfluxServerPort = INFLUX_SERVER_PORT; +static uint8_t http_request[1024]; +static uint8_t http_resp[512]; +uint16_t reqLen; +uint16_t respLen; +uint32_t request_sent = 0; +uint32_t request_acked = 0; + + +/* Functions Prototypes */ +bool connectToServer(char *serverUrl, uint16_t serverPort, uint8_t socket_id); +bool connectWiFi(void); +bool checkWiFi(void); +void time_to_sense_cb(void); +void time_to_send_cb(void); +void time_to_check_distance_cb(void); +void sync_time(void); +// void toggle_led3_cb();