ACKme WiFi module + Nucleo MEMS module example. Connect and publish sensor data to M2X.

Dependencies:   M2XStreamClient WiConnect Nucleo_Sensor_Shield jsonlite mbed

Fork of m2x-MEMS_ACKme_Wifi_demo by David Kwak

Revision:
2:e277cdbabbb2
Parent:
1:276e4607719f
Child:
4:92883efd3686
--- a/main.cpp	Thu Dec 11 21:27:59 2014 +0000
+++ b/main.cpp	Tue Dec 16 18:56:57 2014 +0000
@@ -84,9 +84,9 @@
     
     WiconnectResult result;
     
-    if(WICONNECT_FAILED(result, wiconnect.init(true)))
+    if (WICONNECT_FAILED(result, wiconnect.init(true)))
     {
-        if(result == WICONNECT_FIRMWARE_OUTDATED)
+        if (result == WICONNECT_FIRMWARE_OUTDATED)
         {
             pc.printf("** The WiFi firmware is not supported. Run the ota example to update the firmware:\r\n");
             pc.printf("https://developer.mbed.org/teams/ACKme/code/wiconnect-ota_example\r\n\r\n");
@@ -100,10 +100,12 @@
         return -1;
     }
     
-    /* Manually connected to the specified network (to ensure SDK backward compatibility. */
+    wait(5);
+    
+    /* Manually connected to the specified network (to ensure SDK backward compatibility). */
     pc.printf("Setting network SSID: %s\r\n", NETWORK_SSID);
     
-    if(WICONNECT_FAILED(result, wiconnect.setSetting("wlan.ssid", NETWORK_SSID)))
+    if (WICONNECT_FAILED(result, wiconnect.setSetting("wlan.ssid", NETWORK_SSID)))
     {
         pc.printf("Failed to set wlan.ssid setting\r\n");
         return -1;
@@ -111,7 +113,7 @@
     
     pc.printf("Setting network password\r\n");
     
-    if(WICONNECT_FAILED(result, wiconnect.setSetting("wlan.passkey", NETWORK_PASSWORD)))
+    if (WICONNECT_FAILED(result, wiconnect.setSetting("wlan.passkey", NETWORK_PASSWORD)))
     {
         pc.printf("Failed to set wlan.passkey setting\r\n");
         return -1;
@@ -119,12 +121,48 @@
 
     pc.printf("Saving settings to Non-volatile Memory\r\n");
     
-    if(WICONNECT_FAILED(result, wiconnect.saveSettings()))
+    if (WICONNECT_FAILED(result, wiconnect.saveSettings()))
     {
         pc.printf("Failed save settings\r\n");
         return -1;
     }
     
+    NetworkStatus status;
+    
+    result = wiconnect.getNetworkStatus(&status);
+    
+    switch (status)
+    {
+        case NETWORK_STATUS_DOWN:
+        {
+            pc.printf("NETWORK_STATUS_DOWN\r\n");
+            
+            return -1;
+            
+            break;
+        }
+        case NETWORK_STATUS_WIFI_ONLY:
+        {
+            pc.printf("NETWORK_STATUS_WIFI_ONLY\r\n");
+            break;
+        }
+        case NETWORK_STATUS_UP:
+        {
+            pc.printf("NETWORK_STATUS_UP\r\n");
+            break;
+        }
+        case NETWORK_STATUS_JOINING:
+        {
+            pc.printf("NETWORK_STATUS_JOINING\r\n");
+            break;
+        }
+        default:
+        {
+            pc.printf("UNKNOWN\r\n");
+            break;
+        }
+    }
+        
     pc.printf("IP Address: %s\r\n", wiconnect.getIpAddress());
     pc.printf("Network joined!\r\n");
     
@@ -141,10 +179,16 @@
     
     pc.printf("updateLocation response code: %d\r\n", m2x_response);
     
+    if (m2x_response == -1) 
+    {
+        printf("Location data update error\n");
+    }
+
     /* Main loop */
     while(1)
     {
-        volatile float TEMPERATURE_Value;
+        volatile float TEMPERATURE_Value_C;
+        volatile float TEMPERATURE_Value_F;
         volatile float HUMIDITY_Value;
         volatile float PRESSURE_Value;
         volatile AxesRaw_TypeDef MAG_Value;
@@ -152,30 +196,33 @@
         volatile AxesRaw_TypeDef GYR_Value;
         
         /* Update sensors.  */
-        mems_expansion_board->hts221.GetTemperature((float *)&TEMPERATURE_Value);
+        mems_expansion_board->hts221.GetTemperature((float *)&TEMPERATURE_Value_C);
         mems_expansion_board->hts221.GetHumidity((float *)&HUMIDITY_Value);
         mems_expansion_board->lps25h.GetPressure((float *)&PRESSURE_Value);
         mems_expansion_board->lis3mdl.GetAxes((AxesRaw_TypeDef *)&MAG_Value);
         mems_expansion_board->lsm6ds0.Acc_GetAxes((AxesRaw_TypeDef *)&ACC_Value);
         mems_expansion_board->lsm6ds0.Gyro_GetAxes((AxesRaw_TypeDef *)&GYR_Value);     
         
+        /* Convert temperature to degrees Farhenheit. */
+        TEMPERATURE_Value_F = (1.8f * TEMPERATURE_Value_C) + 32.0f;
+        
         /* Output sensor data. */
-        pc.printf("TEMP: %f HUMIDITY: %f PRESSURE: %f\t\r\n", TEMPERATURE_Value, HUMIDITY_Value, PRESSURE_Value);
-        pc.printf("X_MAG: %d, Y_MAG: %d, Z_MAG: %d\t\r\n", MAG_Value.AXIS_X, MAG_Value.AXIS_Y, MAG_Value.AXIS_Z);
-        pc.printf("X_ACC: %d, Y_ACC: %d, Z_ACC: %d\t\r\n", ACC_Value.AXIS_X, ACC_Value.AXIS_Y, ACC_Value.AXIS_Z);
-        pc.printf("X_GYR: %d, Y_GYR: %d, Z_GYR: %d\t\r\n\n", GYR_Value.AXIS_X, GYR_Value.AXIS_Y, GYR_Value.AXIS_Z);
-        
-        /* Convert temperature to degrees Farhenheit. */
-        float temperature_f = (1.8f * TEMPERATURE_Value) + 32.0f;
+        pc.printf("Temperature:\t\t %f C / %f F\r\n", TEMPERATURE_Value_C, TEMPERATURE_Value_F);
+        pc.printf("Humidity:\t\t %f%%\r\n", HUMIDITY_Value);
+        pc.printf("Pressure:\t\t %f hPa\r\n", PRESSURE_Value); 
+        pc.printf("Magnetometer (mGauss):\t X: %d, Y: %d, Z: %d\r\n", MAG_Value.AXIS_X, MAG_Value.AXIS_Y, MAG_Value.AXIS_Z);
+        pc.printf("Accelerometer (mg):\t X: %d, Y: %d, Z: %d\r\n", ACC_Value.AXIS_X, ACC_Value.AXIS_Y, ACC_Value.AXIS_Z);
+        pc.printf("Gyroscope (mdps):\t X: %d, Y: %d, Z: %d\r\n", GYR_Value.AXIS_X, GYR_Value.AXIS_Y, GYR_Value.AXIS_Z);
+        pc.printf("\r\n");
         
         /* Post temperature to the m2x stream. */
-        m2x_response = m2xClient.updateStreamValue(feed, tempStream, temperature_f);
+        m2x_response = m2xClient.updateStreamValue(feed, tempStream, TEMPERATURE_Value_F);
         
         pc.printf("Temperature updateStreamValue response code: %d\r\n", m2x_response);
         
         if (m2x_response == -1) 
         {
-            pc.printf("Temperature data transmit post error\n");
+            pc.printf("Temperature data update error\n");
         }
         
         /* Post humidity to the m2x stream. */
@@ -185,7 +232,7 @@
         
         if (m2x_response == -1) 
         {
-            pc.printf("Humidity data transmit post error\n");
+            pc.printf("Humidity data update error\n");
         }
         
         /* Post acceleration (x-axis) to the m2x stream. */
@@ -195,7 +242,7 @@
         
         if (m2x_response == -1) 
         {
-            pc.printf("Acceleration data transmit post error\n");
+            pc.printf("Acceleration data update error\n");
         }
         
         pc.printf("\n");