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:
- 2018-01-29
- Revision:
- 14:0c8967e20f93
- Parent:
- 13:f8e84b12665c
File content as of revision 14:0c8967e20f93:
/* 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" #include "picojson.h" /* Syncing Params */ #define SENSE_PERIOD_S 5.0 #define UPLOAD_PERIOD_S 30.0 #define CHECK_PROXIMITY_PERIOD_S 1.0 // Influx TSDB http api #define INFLUX_SERVER_URL "rpi1.nrjy.com" #define INFLUX_SERVER_PORT 8086 #define INFLUX_WRITE_EP "/write?db=HENV2&precision=s&rp=HENV2_1y" // time server http api to get current unix time #define TIME_SERVER_URL "www.convert-unix-time.com" #define TIME_SERVER_PORT 80 #define TIME_SERVER_EP "/api?timestamp=now&timezone=New_York" #define WIFI_WRITE_TIMEOUT 3000 #define WIFI_READ_TIMEOUT 3000 #define CONNECTION_TRIAL_MAX 3 /* Nextion display macros */ #define RESET_NEXTION nextion.printf("rest\xff\xff\xff") #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") #define NO_WAKEUP_ON_SERIALIN nextion.printf("usup=0\xff\xff\xff") #define WAKEUP_ON_TOUCH nextion.printf("thup=1\xff\xff\xff") #define SLEEP_ON_NOTOUCH_30S nextion.printf("thsp=30\xff\xff\xff") #define WAKE_UP_DISPLAY nextion.printf("sleep=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 rtc_synced = 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 */ uint32_t distance_val = 0; float tempC_val = 0; float tempF_val = 0; float RH_val = 0; float Patm_val = 0; float tempC_val2 = 0; /* Comm vars */ 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); bool sync_rtc(void); bool getCurrentTime(uint8_t socket_id, uint32_t *timeStamp); // void toggle_led3_cb();