a sensor hub for monitoring home environment
Dependencies: HTS221 LIS3MDL LPS22HB LSM303AGR LSM6DSL VL53L0X picojson
Fork of HelloWorld_ST_Sensors by
main.h
- Committer:
- jaafaryn
- Date:
- 2017-12-12
- Revision:
- 11:1e0b9a529ee0
- Child:
- 12:058b012dbebe
File content as of revision 11:1e0b9a529ee0:
/* 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();