Creating an IoT platform for smart agriculture. Collecting data and sending them to thingspeak for analysis
Dependencies: DHT11 LPS22HB LSM6DSL VL53L0X
main.cpp
- Committer:
- kaoriw
- Date:
- 2018-06-08
- Revision:
- 1:469ea8167b80
- Parent:
- 0:07ff689741d2
File content as of revision 1:469ea8167b80:
#include "mbed.h" #include "Sensors.h" #include "ThingSpeak.h" #include "CANbus.h" int main() { //ISM43362Interface wifi(MBED_CONF_APP_WIFI_SPI_MOSI, MBED_CONF_APP_WIFI_SPI_MISO, MBED_CONF_APP_WIFI_SPI_SCLK, MBED_CONF_APP_WIFI_SPI_NSS, MBED_CONF_APP_WIFI_RESET, MBED_CONF_APP_WIFI_DATAREADY, MBED_CONF_APP_WIFI_WAKEUP, false); /******* Connecting to Wi-Fi and ThingSpeak *******/ int count = 0; count = scan_demo(&wifi); if (count == 0) { printf("No WIFI APNs found - can't continue further.\n"); return -1; } printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID); int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); if (ret != 0) { printf("\nConnection error\n"); return -1; } printf("Success\n\n"); /******* Using sensors and publishing to ThingSpeak *******/ enable_sensors(); char urlBuffer[100]; char ThingSpeak_key[20]; char valBuf[20]; CANMessage msg; struct VMS_Msg1 packed_data; Timer t; int i; int speed = 0; int angle = 0; int speed_3D[3] = {0,0,0}; int pos_3D[3] = {0,0,0}; while(1) { for(i=1; i<6; i++) { t.start(); //start timer get_values(); sprintf(ThingSpeak_key, "MBED_CONF_APP_THINGSPEAK_KEY_SENSORS_%d", i); memset(ThingSpeak_key, 0, sizeof(ThingSpeak_key)); sprintf(urlBuffer, "GET http://api.thingspeak.com/update?key=%s", ThingSpeak_key); //Temperature sprintf(valBuf, "&field1=%f", temp); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); //Humidity sprintf(valBuf, "&field2=%f", hum); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); //Light sprintf(valBuf, "&field3=%d", light); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); //Pressure if(press_status != VALUE_ERROR) { sprintf(valBuf, "&field4=%f", press); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); } //Motion parameters while(t.read() < 3) { get_motion_data(0.05, &speed, speed_3D, pos_3D, &angle); wait(0.05); } sprintf(valBuf, "&field5=%d", speed); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); sprintf(valBuf, "&field6=%d", pos_3D[0]); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); sprintf(valBuf, "&field7=%d", pos_3D[1]); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); sprintf(valBuf, "&field8=%d", angle); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); send_values(urlBuffer); memset(urlBuffer, 0, sizeof(urlBuffer)); //Same with CAN data if(can.read(msg)) { packed_data = data_pack(msg.data); data_parse(packed_data); sprintf(ThingSpeak_key, "MBED_CONF_APP_THINGSPEAK_KEY_CAN_%d", i); sprintf(urlBuffer, "GET http://api.thingspeak.com/update?key=%s", ThingSpeak_key); memset(ThingSpeak_key, 0, sizeof(ThingSpeak_key)); sprintf(valBuf, "&field1=%d", battery_current); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); sprintf(valBuf, "&field2=%d", battery_voltage); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); sprintf(valBuf, "&field3=%d", Bat_SOC); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); sprintf(valBuf, "&field4=%d", speed); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); sprintf(valBuf, "&field5=%d", motorTemperature); strcat(urlBuffer, valBuf); memset(valBuf, 0, sizeof(valBuf)); send_values(urlBuffer); memset(urlBuffer, 0, sizeof(urlBuffer)); } else { printf("Error reading CAN message. \r\n"); } while(t.read() < 3){} //Wait until 3s passes t.stop(); t.reset(); } } return 0; }