Kaori Watanabe / Mbed OS Project

Dependencies:   DHT11 LPS22HB LSM6DSL VL53L0X

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "Sensors.h"
00003 #include "ThingSpeak.h"
00004 #include "CANbus.h"
00005 
00006 int main()
00007 {
00008   //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);
00009 
00010   /******* Connecting to Wi-Fi and ThingSpeak *******/
00011   int count = 0;
00012   count = scan_demo(&wifi);
00013   if (count == 0) {
00014       printf("No WIFI APNs found - can't continue further.\n");
00015       return -1;
00016   }
00017 
00018   printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
00019   int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
00020   if (ret != 0) {
00021       printf("\nConnection error\n");
00022       return -1;
00023   }
00024   printf("Success\n\n");
00025 
00026   /******* Using sensors and publishing to ThingSpeak *******/
00027   enable_sensors();
00028   char urlBuffer[100];
00029   char ThingSpeak_key[20];
00030   char valBuf[20];
00031 
00032   CANMessage msg;
00033   struct VMS_Msg1 packed_data;
00034   Timer t;
00035 
00036   int i;
00037   int speed = 0;
00038   int angle = 0;
00039   int speed_3D[3] = {0,0,0};
00040   int pos_3D[3] = {0,0,0};
00041 
00042   while(1)
00043   {
00044     for(i=1; i<6; i++)
00045     {
00046       t.start(); //start timer
00047       get_values();
00048       sprintf(ThingSpeak_key, "MBED_CONF_APP_THINGSPEAK_KEY_SENSORS_%d", i);
00049       memset(ThingSpeak_key, 0, sizeof(ThingSpeak_key));
00050 
00051       sprintf(urlBuffer, "GET http://api.thingspeak.com/update?key=%s", ThingSpeak_key);
00052 
00053       //Temperature
00054       sprintf(valBuf, "&field1=%f", temp);
00055       strcat(urlBuffer, valBuf);
00056       memset(valBuf, 0, sizeof(valBuf));
00057 
00058       //Humidity
00059       sprintf(valBuf, "&field2=%f", hum);
00060       strcat(urlBuffer, valBuf);
00061       memset(valBuf, 0, sizeof(valBuf));
00062 
00063       //Light
00064       sprintf(valBuf, "&field3=%d", light);
00065       strcat(urlBuffer, valBuf);
00066       memset(valBuf, 0, sizeof(valBuf));
00067 
00068       //Pressure
00069       if(press_status != VALUE_ERROR)
00070       {
00071           sprintf(valBuf, "&field4=%f", press);
00072           strcat(urlBuffer, valBuf);
00073           memset(valBuf, 0, sizeof(valBuf));
00074       }
00075 
00076       //Motion parameters
00077      
00078 
00079       while(t.read() < 3)
00080       {
00081         get_motion_data(0.05, &speed, speed_3D, pos_3D, &angle);
00082         wait(0.05);
00083       }
00084 
00085       sprintf(valBuf, "&field5=%d", speed);
00086       strcat(urlBuffer, valBuf);
00087       memset(valBuf, 0, sizeof(valBuf));
00088 
00089       sprintf(valBuf, "&field6=%d", pos_3D[0]);
00090       strcat(urlBuffer, valBuf);
00091       memset(valBuf, 0, sizeof(valBuf));
00092 
00093       sprintf(valBuf, "&field7=%d", pos_3D[1]);
00094       strcat(urlBuffer, valBuf);
00095       memset(valBuf, 0, sizeof(valBuf));
00096 
00097       sprintf(valBuf, "&field8=%d", angle);
00098       strcat(urlBuffer, valBuf);
00099       memset(valBuf, 0, sizeof(valBuf));
00100 
00101       send_values(urlBuffer);
00102       memset(urlBuffer, 0, sizeof(urlBuffer));
00103 
00104       //Same with CAN data
00105 
00106       if(can.read(msg))
00107       {
00108         packed_data = data_pack(msg.data);
00109         data_parse(packed_data);
00110         sprintf(ThingSpeak_key, "MBED_CONF_APP_THINGSPEAK_KEY_CAN_%d", i);
00111         sprintf(urlBuffer, "GET http://api.thingspeak.com/update?key=%s", ThingSpeak_key);
00112         memset(ThingSpeak_key, 0, sizeof(ThingSpeak_key));
00113 
00114         sprintf(valBuf, "&field1=%d", battery_current);
00115         strcat(urlBuffer, valBuf);
00116         memset(valBuf, 0, sizeof(valBuf));
00117 
00118         sprintf(valBuf, "&field2=%d", battery_voltage);
00119         strcat(urlBuffer, valBuf);
00120         memset(valBuf, 0, sizeof(valBuf));
00121 
00122         sprintf(valBuf, "&field3=%d", Bat_SOC);
00123         strcat(urlBuffer, valBuf);
00124         memset(valBuf, 0, sizeof(valBuf));
00125 
00126         sprintf(valBuf, "&field4=%d", speed);
00127         strcat(urlBuffer, valBuf);
00128         memset(valBuf, 0, sizeof(valBuf));
00129 
00130         sprintf(valBuf, "&field5=%d", motorTemperature);
00131         strcat(urlBuffer, valBuf);
00132         memset(valBuf, 0, sizeof(valBuf));
00133 
00134         send_values(urlBuffer);
00135         memset(urlBuffer, 0, sizeof(urlBuffer));
00136       }
00137       else
00138       {
00139         printf("Error reading CAN message. \r\n");
00140       }
00141 
00142       while(t.read() < 3){} //Wait until 3s passes
00143       t.stop();
00144       t.reset();
00145     }
00146 
00147   }
00148 
00149   return 0;
00150 }