mDot processor with ROHM sensor board on UDK2.

Dependencies:   MbedJSONValue libmDot mbed-rtos mbed

Fork of VVV_MultiTech_Dragonfly_ATT_Dallas by Paul Jaeger

Files at this revision

API Documentation at this revision

Comitter:
BlueShadow
Date:
Sun Feb 28 23:17:46 2016 +0000
Parent:
8:720595aa7bfd
Commit message:
Cleaned up ROHM board for Training classes. Removed some extra remarks and unused variables.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
diff -r 720595aa7bfd -r 10082fc85d18 main.cpp
--- a/main.cpp	Fri Feb 26 02:42:23 2016 +0000
+++ b/main.cpp	Sun Feb 28 23:17:46 2016 +0000
@@ -1,5 +1,5 @@
 /*************************************************************************
- * Originally this was a 
+ * Originally this was a
  * Dragonfly Example program for 2015 AT&T Government Solutions Hackathon
  *
  * This is in process of being convertered to a mDot processor.  mDot has a
@@ -17,11 +17,11 @@
  *     pressure sensor)
  *
  * What this program does:
- *   - reads data from all sensors on MEMs board and moisture sensor on a
- *     periodic basis
+ *   - reads data from all sensors on MEMs board on a periodic basis
  *   - prints all sensor data to debug port on a periodic basis
  *   - optionally sends LoRa sensor data when the timer expires
- *        THis needs to be written yet.
+ *
+ *        This needs to be written yet.
  *   - optionally sends sensor data to AT&T M2X cloud platform (user must
  *     create own M2X account and configure a device)
  *       - you need to set the "m2x_api_key" field and the "m2x_device_id"
@@ -56,10 +56,8 @@
 */
 
 
-
 #include "mbed.h"
 #include "MbedJSONValue.h"
-// #include "HTTPJson.h"
 #include <string>
 
 //  added the following help files for a mDot not required for Dragonfly.
@@ -73,21 +71,6 @@
 // Debug serial port
 static Serial debug(USBTX, USBRX);
 
-// see https://m2x.att.com/developer/documentation/v2/overview for M2X API documentation
-// M2X device ID
-static const std::string m2x_device_id = "";
-
-// M2X primary API key
-static const std::string m2x_api_key = "";
-
-// set to true if you want to post to the cloud
-// you need to have you M2X account set up properly for this to work?
-bool do_cloud_post = false;
-//bool do_cloud_post = true;
-
-std::string url = "http://api-m2x.att.com/v2/devices/" + m2x_device_id + "/update";
-
-
 // variables for sensor data
 float temp_celsius;
 float humidity_percent;
@@ -99,12 +82,10 @@
 
 // misc variables
 static char wall_of_dash[] = "--------------------------------------------------";
-bool radio_ok = false;
 static int thpm_interval_ms = 5000;
 static int motion_interval_ms = 5000;
 static int print_interval_ms = 5000;
 static int sms_interval_ms = 60000;
-static int post_interval_ms = 30000;
 int debug_baud = 115200;
 
 
@@ -121,7 +102,8 @@
 #define COLOR       //BH1745
 #define KX022       //KX022, Accel Only
 #define Pressure    //BM1383
-//#define SMS         //allow SMS messaging
+
+#define SMS         //allow SMS messaging  now sending LORA!!!!
 //#define Web         //allow M2X communication
 
 
@@ -326,10 +308,10 @@
     mDot* dot;
     std::vector<uint8_t> data;
     std::string data_str = "hello! Jeff";
-    
+
     // get a mDot handle
     dot = mDot::getInstance();
-    
+
     // print library version information
     logInfo("version: %s", dot->getId().c_str());
 
@@ -338,12 +320,12 @@
     //*******************************************
     // reset to default config so we know what state we're in
     dot->resetConfig();
-    
+
     dot->setLogLevel(mts::MTSLog::TRACE_LEVEL);  //INFO_LEVEL
 
     // set up the mDot with our network information: frequency sub band, network name, and network password
     // these can all be saved in NVM so they don't need to be set every time - see mDot::saveConfig()
-    
+
     // frequency sub band is only applicable in the 915 (US) frequency band
     // if using a MultiTech Conduit gateway, use the same sub band as your Conduit (1-8) - the mDot will use the 8 channels in that sub band
     // if using a gateway that supports all 64 channels, use sub band 0 - the mDot will use all 64 channels
@@ -351,31 +333,31 @@
     if ((ret = dot->setFrequencySubBand(config_frequency_sub_band)) != mDot::MDOT_OK) {
         logError("failed to set frequency sub band %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
-    
+
     logInfo("setting network name");
     if ((ret = dot->setNetworkName(config_network_name)) != mDot::MDOT_OK) {
         logError("failed to set network name %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
-    
+
     logInfo("setting network password");
     if ((ret = dot->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) {
         logError("failed to set network password %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
-    
+
     // a higher spreading factor allows for longer range but lower throughput
     // in the 915 (US) frequency band, spreading factors 7 - 10 are available
     // in the 868 (EU) frequency band, spreading factors 7 - 12 are available
     logInfo("setting TX spreading factor");
-    if ((ret = dot->setTxDataRate(mDot::SF_10)) != mDot::MDOT_OK) {
+    if ((ret = dot->setTxDataRate(mDot::SF_7)) != mDot::MDOT_OK) {
         logError("failed to set TX datarate %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
-    
+
     // request receive confirmation of packets from the gateway
     logInfo("enabling ACKs");
     if ((ret = dot->setAck(1)) != mDot::MDOT_OK) {
         logError("failed to enable ACKs %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
-    
+
     // save this configuration to the mDot's NVM
     logInfo("saving config");
     if (! dot->saveConfig()) {
@@ -411,11 +393,6 @@
     sms_timer.start();
 #endif
 
-#ifdef Web
-    Timer post_timer;
-    post_timer.start();
-#endif
-    
     while (true) {
         if (thpm_timer.read_ms() > thpm_interval_ms) {
 #ifdef AnalogTemp
@@ -478,84 +455,18 @@
         if (sms_timer.read_ms() > sms_interval_ms) {
             sms_timer.reset();
             logInfo("SMS Send Routine");
-printf("  In sms routine \r\n");
-//            if (radio_ok) {
-//                MbedJSONValue sms_json;
-//                string sms_str;
-//
-//                sms_json["temp_C"] = BDE0600_output;
-//                sms_json["UV"] = ML8511_output;
-//                sms_json["Ambient Light"] = RPR0521_ALS[0];
-//                sms_json["Prox"]      = RPR0521_ALS[1];
-//                sms_json["pressure_hPa"] = BM1383[1];
-//                sms_json["mag_mgauss"]["x"] = MEMS_Mag[0];
-//                sms_json["mag_mgauss"]["y"] = MEMS_Mag[1];
-//                sms_json["mag_mgauss"]["z"] = MEMS_Mag[2];
-//                sms_json["acc_mg"]["x"] = MEMS_Accel[0];
-//                sms_json["acc_mg"]["y"] = MEMS_Accel[1];
-//                sms_json["acc_mg"]["z"] = MEMS_Accel[2];
-//                sms_json["Red"]   = BH1745[0];
-//                sms_json["Green"] = BH1745[1];
-//                sms_json["Blue"]  = BH1745[2];
-//
-//                sms_str = "SENSOR DATA:\n";
-//                sms_str += sms_json.serialize();
-//
-//                logDebug("sending SMS to %s:\r\n%s", phone_number.c_str(), sms_str.c_str());
-//                Code ret = radio->sendSMS(phone_number, sms_str);
-//                if (ret != MTS_SUCCESS)
-//                    logError("sending SMS failed");
-//            }
+            printf("  In sms routine \r\n");
+
         }
 #endif
 
-#ifdef Web
-        if (post_timer.read_ms() > post_interval_ms && do_cloud_post) {
-    printf("in web\n\r");
-//            if (radio->connect()) {
-//                logDebug("posting sensor data");
-//
-//                HTTPClient http;
-//                MbedJSONValue http_json_data;
-//                std::string http_json_str;
-//                std::string m2x_header = "X-M2X-KEY: " + m2x_api_key + "\r\n";
-//                int ret;
-//                char http_response_buf[256];
-//                HTTPText http_response(http_response_buf, sizeof(http_response_buf));
-//
-//                // temp_c, temp_f, humidity, pressure, and moisture are all stream IDs for my device in M2X
-//                // modify these to match your streams or give your streams the same name
-//                http_json_data["values"]["temp_c"] = BDE0600_output;
-//                http_json_data["values"]["UV"] = ML8511_output;
-//                http_json_data["values"]["Ambient Light"] = RPR0521_ALS[0];
-//                http_json_data["values"]["Prox"] = RPR0521_ALS[1];
-//                http_json_str = http_json_data.serialize();
-//
-//                // add extra header with M2X API key
-//                http.setHeader(m2x_header.c_str());
-//
-//                HTTPJson http_json((char*)  http_json_str.c_str());
-//                ret = http.post(url.c_str(), http_json, &http_response);
-//                if (ret != HTTP_OK)
-//                    logError("posting data to cloud failed: [%d][%s]", ret, http_response_buf);
-//                else
-//                    logDebug("post result [%d][%s]", http.getHTTPResponseCode(), http_response_buf);
-//
-//                radio->disconnect();
-//            } else {
-//                logError("establishing PPP link failed");
-//            }
-
-            post_timer.reset();
-        }
-#endif
 
         wait_ms(10);
     }
 }
 
 
-
+/************************************************************************************************/
 // Sensor data acquisition functions
 /************************************************************************************************/
 #ifdef AnalogTemp
@@ -596,7 +507,7 @@
 //    printf(" South Detect = %d\r\n", Hall_Return[0]);
 //    printf(" North Detect = %d\r\n", Hall_Return[1]);
 
-    
+
 }
 #endif
 
@@ -712,7 +623,7 @@
 #ifdef KX022
 void ReadKX022 ()
 {
-    
+
     //Read KX022 Portion from the IC
     i2c.write(KX022_addr_w, &KX022_Addr_Accel_ReadData, 1, RepStart);
     i2c.read(KX022_addr_r, &KX022_Content_ReadData[0], 6, NoRepStart);
@@ -758,38 +669,3 @@
 
 }
 #endif
-
-
-/************************************************************************************
-//  reference only to remember what the names and fuctions are without finding them above.
- ************************************************************************************
-    (" Temp = %.2f C\r\n", BDE0600_output);
-    printf(" UV = %.1f mW/cm2\r\n", ML8511_output);
-
-    printf("BH1745 COLOR Sensor Data:\r\n");
-    printf(" Red   = %d ADC Counts\r\n",BH1745[0]);
-    printf(" Green = %d ADC Counts\r\n",BH1745[1]);
-    printf(" Blue  = %d ADC Counts\r\n",BH1745[2]);
-
-    printf(" ALS = %0.2f lx\r\n", RPR0521_ALS[0]);
-    printf(" PROX= %u ADC Counts\r\n", RPR0521_ALS[1]);     //defined as a float but is an unsigned, bad coding on my part.
-
-    printf("KMX62 Accel+Mag Sensor Data:\r\n");
-    printf(" AccX= %0.2f g\r\n", MEMS_Accel[0]);
-    printf(" AccY= %0.2f g\r\n", MEMS_Accel[1]);
-    printf(" AccZ= %0.2f g\r\n", MEMS_Accel[2]);
-
-    printf(" MagX= %0.2f uT\r\n", MEMS_Mag[0]);
-    printf(" MagY= %0.2f uT\r\n", MEMS_Mag[1]);
-    printf(" MagZ= %0.2f uT\r\n", MEMS_Mag[2]);
-
-    printf("KX022 Accelerometer Sensor Data: \r\n");
-    printf(" AccX= %0.2f g\r\n", KX022_Accel[0]);
-    printf(" AccY= %0.2f g\r\n", KX022_Accel[1]);
-    printf(" AccZ= %0.2f g\r\n", KX022_Accel[2]);
-
-    printf("BM1383 Pressure Sensor Data:\r\n");
-    printf(" Temperature= %0.2f C\r\n", BM1383[0]);
-    printf(" Pressure   = %0.2f hPa\r\n", BM1383[1]);
-
- **********************************************************************************/
diff -r 720595aa7bfd -r 10082fc85d18 mbed-rtos.lib
--- a/mbed-rtos.lib	Fri Feb 26 02:42:23 2016 +0000
+++ b/mbed-rtos.lib	Sun Feb 28 23:17:46 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/#07314541bd12
+http://mbed.org/users/mbed_official/code/mbed-rtos/#b4c5542476ba