Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MbedJSONValue mbed mtsas
Fork of UUU_MultiTech_Dragonfly_Sprint_SF by
Revision 8:e78dcfad254b, committed 2016-04-15
- Comitter:
- BlueShadow
- Date:
- Fri Apr 15 21:31:39 2016 +0000
- Parent:
- 7:dd550a829ece
- Child:
- 9:6475e1b83491
- Commit message:
- works from brandon, I changed the variable ALS to float vs an int timer.;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Dec 11 16:00:08 2015 +0000
+++ b/main.cpp Fri Apr 15 21:31:39 2016 +0000
@@ -1,29 +1,25 @@
/*************************************************************************
- * Dragonfly Example program for 2015 AT&T Government Solutions Hackathon
+ * Dragonfly Example program for 2016 Sprint Exosite Training
*
* The following hardware is required to successfully run this program:
* - MultiTech UDK2 (4" square white PCB with Arduino headers, antenna
* connector, micro USB ports, and 40-pin connector for Dragonfly)
* - MultiTech Dragonfly (1"x2" green PCB with Telit radio)
- * - Seeed Studio Base Shield
- * - Grove moisture sensor (to connect to Base Shield)
- * - Grove button (to connect to Base Shield)
- * - MEMs Inertial and Environmental Nucleo Expansion board (LSM6DS0
+ * - Rohm Electronics Sensor Board
+
+ * - Expansion board (LSM6DS0
* 3-axis accelerometer + 3-axis gyroscope, LIS3MDL 3-axis
* magnetometer, HTS221 humidity and temperature sensor and LPS25HB
* 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 board
* - prints all sensor data to debug port on a periodic basis
- * - optionally send a SMS containing sensor data when the Grove Button
- * is pushed
- * - you need to set the "phone_number" field
- * - 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"
- * field based on your M2X account for this to work
+ * - optionally send data to Exosite
+ * - All data is sent to a specific location determined by the student login.
+ * - Exosite cloud platform (user must create own account and configure a device
+ * - you need to set the "VENDOR" and "MODEL"
+
* - you need to set the "do_cloud_post" flag to true for this to
* work
*
@@ -32,11 +28,6 @@
* - Seat the Dragonfly on the UDK2 board
* - Connect an antenna to the connector on the Dragonfly labled "M"
* - Stack the Base Shield on the UDK2 Arduino headers
- * - Connect the Grove button to the D8 socket on the Base Shield
- * - Connect the Grove moisture sensor to the A0 socket on the Base
- * Shield
- * - Make sure the reference voltage selector switch (next to the A0
- * socket) is switched to 5V so you get accurate analog readings
* - Stack the MEMs board on top of the Base Shield
* - Plug in the power cable
* - Plug a micro USB cable into the port below and slightly to the
@@ -59,12 +50,17 @@
*/
-
#include "mbed.h"
#include "mtsas.h"
-#include "MbedJSONValue.h"
-#include "HTTPJson.h"
#include <string>
+#include <sstream>
+
+#define EXOSITE_CIK "1e05228e50762cc29cf414bc518259a3ab5dc247"
+
+char EXOSITE_HEADER[] = "X-Exosite-CIK: " EXOSITE_CIK "\r\nAccept: application/x-www-form-urlencoded; charset=utf-8\r\n";
+const char EXOSITE_URL[] = "https://m2.exosite.com:443/onep:v1/stack/alias";
+
+DigitalOut Led1Out(LED1);
// Debug serial port
static Serial debug(USBTX, USBRX);
@@ -78,27 +74,12 @@
// APN associated with SIM card
// this APN should work for the AT&T SIM that came with your Dragonfly
//static const std::string apn = "";
-static const std::string apn = "";
-
-// Phone number to send SMS messages to
-// just change the x digits - the 1 needs to stay!
-static const std::string phone_number = "1xxxxxxxxxx";
-
-// 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 = "";
+static const std::string apn = "b2b.tmobile.com";
// 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;
@@ -109,18 +90,12 @@
int32_t gyro_mdps[3];
// 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;
-
/****************************************************************************************************
****************************************************************************************************/
@@ -134,8 +109,6 @@
#define COLOR //BH1745
#define KX022 //KX022, Accel Only
#define Pressure //BM1383
-//#define SMS //allow SMS messaging
-//#define Web //allow M2X communication
//Define Pins for I2C Interface
@@ -281,6 +254,17 @@
void ReadKMX62_Mag ();
void ReadPressure ();
void ReadKX022();
+char* httpResToStr(HTTPResult res);
+
+namespace patch
+{
+ template < typename T > std::string to_string( const T& n )
+ {
+ std::ostringstream stm ;
+ stm << n ;
+ return stm.str() ;
+ }
+}
/****************************************************************************************************
// main
@@ -289,198 +273,60 @@
{
mts::MTSLog::setLogLevel(mts::MTSLog::TRACE_LEVEL);
debug.baud(debug_baud);
- logInfo("starting...");
-
-
- /****************************************************************************************************
- Initialize I2C Devices ************
- ****************************************************************************************************/
-
-#ifdef RPR0521
- i2c.write(RPR0521_addr_w, &RPR0521_ModeControl[0], 2, false);
- i2c.write(RPR0521_addr_w, &RPR0521_ALSPSControl[0], 2, false);
- i2c.write(RPR0521_addr_w, &RPR0521_Persist[0], 2, false);
-#endif
-
-#ifdef KMX62
- i2c.write(KMX62_addr_w, &KMX62_CNTL2[0], 2, false);
-#endif
-
-#ifdef COLOR
- i2c.write(BH1745_addr_w, &BH1745_persistence[0], 2, false);
- i2c.write(BH1745_addr_w, &BH1745_mode1[0], 2, false);
- i2c.write(BH1745_addr_w, &BH1745_mode2[0], 2, false);
- i2c.write(BH1745_addr_w, &BH1745_mode3[0], 2, false);
-#endif
-
-#ifdef KX022
- i2c.write(KX022_addr_w, &KX022_Accel_CNTL1[0], 2, false);
- i2c.write(KX022_addr_w, &KX022_Accel_ODCNTL[0], 2, false);
- i2c.write(KX022_addr_w, &KX022_Accel_CNTL3[0], 2, false);
- i2c.write(KX022_addr_w, &KX022_Accel_TILT_TIMER[0], 2, false);
- i2c.write(KX022_addr_w, &KX022_Accel_CNTL2[0], 2, false);
-#endif
-
-#ifdef Pressure
- i2c.write(Press_addr_w, &PWR_DOWN[0], 2, false);
- i2c.write(Press_addr_w, &SLEEP[0], 2, false);
- i2c.write(Press_addr_w, &Mode_Control[0], 2, false);
-#endif
-//End I2C Initialization Section **********************************************************
-
// Initialization Radio Section **********************************************************
-
- radio_ok = init_mtsas();
- if (! radio_ok)
- logError("MTSAS init failed");
- else
- logInfo("MTSAS is ok");
-
-//End Radio Initialization Section **********************************************************
-
-// button.fall(&button_irq);
+ logInfo("initializing cellular radio");
+ if (!init_mtsas()) {
+ while (true) {
+ logError("failed to initialize cellular radio");
+ wait(1);
+ }
+ }
+
+ logInfo("Configuring http...\r\n");
+ HTTPClient http;
+ HTTPResult result;
+ http.setHeader(EXOSITE_HEADER);
+
+ char http_rx_buf[1024];
+ // IHTTPDataIn object - will contain data received from server.
+ HTTPText http_rx(http_rx_buf, sizeof(http_rx_buf));
+
+ // IHTTPDataOut object - contains data to be posted to server.
+ HTTPMap http_tx;
+
+
+//****************************************************************************************************
+// Initialize I2C Devices ************
+//****************************************************************************************************/
- Timer thpm_timer;
- thpm_timer.start(); // Timer data is set in the Variable seciton see misc variables Timer motion_timer;
- Timer print_timer;
- print_timer.start();
- Timer motion_timer;
- motion_timer.start();
-
-#ifdef SMS
- Timer sms_timer;
- sms_timer.start();
-#endif
-#ifdef Web
- Timer post_timer;
- post_timer.start();
-#endif
+//****************************************************************************************************/
+//End I2C Initialization Section **********************************************************
+//****************************************************************************************************/
- while (true) {
- if (thpm_timer.read_ms() > thpm_interval_ms) {
-#ifdef AnalogTemp
- ReadAnalogTemp ();
-#endif
-
-#ifdef AnalogUV
- ReadAnalogUV ();
-#endif
-
-#ifdef HallSensor
- ReadHallSensor ();
-#endif
-
-#ifdef COLOR
- ReadCOLOR ();
-#endif
-
-#ifdef RPR0521 //als digital
- ReadRPR0521_ALS ();
-#endif
-
-#ifdef Pressure
- ReadPressure();
-#endif
- thpm_timer.reset();
- }
-
- if (motion_timer.read_ms() > motion_interval_ms) {
-#ifdef KMX62
- ReadKMX62_Accel ();
- ReadKMX62_Mag ();
-#endif
-
-#ifdef KX022
- ReadKX022 ();
-#endif
- motion_timer.reset();
- }
+ Timer post_timer;
+ post_timer.start();
+ logInfo("Setup complete.");
+ logInfo("Waiting for %d ms to trigger connect...", post_interval_ms);
- if (print_timer.read_ms() > print_interval_ms) {
- logDebug("%s", wall_of_dash);
- logDebug("SENSOR DATA");
- logDebug("temperature: %0.2f C", BM1383[0]);
- logDebug("analog uv: %.1f mW/cm2", ML8511_output);
- logDebug("ambient Light %0.3f", RPR0521_ALS[0]);
- logDebug("proximity count %0.3f", RPR0521_ALS[1]);
- logDebug("hall effect: South %d\t North %d", Hall_Return[0],Hall_Return[1]);
- logDebug("pressure: %0.2f hPa", BM1383[1]);
- logDebug("magnetometer:\r\n\tx: %0.3f\ty: %0.3f\tz: %0.3f\tuT", MEMS_Mag[0], MEMS_Mag[1], MEMS_Mag[2]);
- logDebug("accelerometer:\r\n\tx: %0.3f\ty: %0.3f\tz: %0.3f\tg", MEMS_Accel[0], MEMS_Accel[1], MEMS_Accel[2]);
- logDebug("color:\r\n\tred: %ld\tgrn: %ld\tblu: %ld\t", BH1745[0], BH1745[1], BH1745[2]);
- logDebug("%s", wall_of_dash);
- print_timer.reset();
- }
-
-
-
-#ifdef SMS
- 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];
+ while (true) {
+ if (post_timer.read_ms() > post_interval_ms && do_cloud_post) {
+ logInfo("bringing up the link");
+ if (radio->connect()) {
+ float sensor_data = RPR0521_ALS_OUT;
+ logDebug("posting sensor data");
+ logDebug("%f",sensor_data);
- 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");
- }
- }
-#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);
+ http_tx.put("ALS", patch::to_string(sensor_data).c_str());
+
+ // Make HTTP POST request
+ result = http.post(EXOSITE_URL, http_tx, &http_rx);
+ if (result != HTTP_OK) {
+ logError("HTTP POST failed [%d][%s]", result, httpResToStr(result));
+ } else {
+ logInfo("HTTP POST succeeded [%d]\r\n%s", http.getHTTPResponseCode(), http_rx_buf);
+ }
radio->disconnect();
} else {
@@ -488,12 +334,12 @@
}
post_timer.reset();
+ logInfo("Waiting for %d ms to trigger connect...", post_interval_ms);
}
-#endif
- wait_ms(10);
}
}
+
// init functions
bool init_mtsas()
{
@@ -515,248 +361,34 @@
return true;
}
-
-// Sensor data acquisition functions
-/************************************************************************************************/
-#ifdef AnalogTemp
-void ReadAnalogTemp ()
-{
- BDE0600_Temp_value = BDE0600_Temp.read_u16();
-
- BDE0600_output = (float)BDE0600_Temp_value * (float)0.000050354; //(value * (3.3V/65535))
- BDE0600_output = (BDE0600_output-(float)1.753)/((float)-0.01068) + (float)30;
-
-// printf("BDE0600 Analog Temp Sensor Data:\r\n");
-// printf(" Temp = %.2f C\r\n", BDE0600_output);
-}
-#endif
-
-#ifdef AnalogUV
-void ReadAnalogUV ()
-{
- ML8511_UV_value = ML8511_UV.read_u16();
- ML8511_output = (float)ML8511_UV_value * (float)0.000050354; //(value * (3.3V/65535)) //Note to self: when playing with this, a negative value is seen... Honestly, I think this has to do with my ADC converstion...
- ML8511_output = (ML8511_output-(float)2.2)/((float)0.129) + 10; // Added +5 to the offset so when inside (aka, no UV, readings show 0)... this is the wrong approach... and the readings don't make sense... Fix this.
-
-// printf("ML8511 Analog UV Sensor Data:\r\n");
-// printf(" UV = %.1f mW/cm2\r\n", ML8511_output);
-
-}
-#endif
-
-
-#ifdef HallSensor
-void ReadHallSensor ()
-{
-
- Hall_Return[0] = Hall_GPIO0;
- Hall_Return[1] = Hall_GPIO1;
-
-// printf("BU52011 Hall Switch Sensor Data:\r\n");
-// printf(" South Detect = %d\r\n", Hall_Return[0]);
-// printf(" North Detect = %d\r\n", Hall_Return[1]);
-
-
-}
-#endif
-
-#ifdef COLOR
-void ReadCOLOR ()
-{
-
- //Read color data from the IC
- i2c.write(BH1745_addr_w, &BH1745_Addr_color_ReadData, 1, RepStart);
- i2c.read(BH1745_addr_r, &BH1745_Content_ReadData[0], 6, NoRepStart);
-
- //separate all data read into colors
- BH1745[0] = (BH1745_Content_ReadData[1]<<8) | (BH1745_Content_ReadData[0]);
- BH1745[1] = (BH1745_Content_ReadData[3]<<8) | (BH1745_Content_ReadData[2]);
- BH1745[2] = (BH1745_Content_ReadData[5]<<8) | (BH1745_Content_ReadData[4]);
-
- //Output Data into UART
-// 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]);
-
-}
-#endif
-
-#ifdef RPR0521 //als digital
-void ReadRPR0521_ALS ()
-{
- i2c.write(RPR0521_addr_w, &RPR0521_Addr_ReadData, 1, RepStart);
- i2c.read(RPR0521_addr_r, &RPR0521_Content_ReadData[0], 6, NoRepStart);
-
- RPR0521_ALS[1] = (RPR0521_Content_ReadData[1]<<8) | (RPR0521_Content_ReadData[0]);
- RPR0521_ALS_D0_RAWOUT = (RPR0521_Content_ReadData[3]<<8) | (RPR0521_Content_ReadData[2]);
- RPR0521_ALS_D1_RAWOUT = (RPR0521_Content_ReadData[5]<<8) | (RPR0521_Content_ReadData[4]);
- RPR0521_ALS_DataRatio = (float)RPR0521_ALS_D1_RAWOUT / (float)RPR0521_ALS_D0_RAWOUT;
-
- if(RPR0521_ALS_DataRatio < (float)0.595) {
- RPR0521_ALS[0] = ((float)1.682*(float)RPR0521_ALS_D0_RAWOUT - (float)1.877*(float)RPR0521_ALS_D1_RAWOUT);
- } else if(RPR0521_ALS_DataRatio < (float)1.015) {
- RPR0521_ALS[0] = ((float)0.644*(float)RPR0521_ALS_D0_RAWOUT - (float)0.132*(float)RPR0521_ALS_D1_RAWOUT);
- } else if(RPR0521_ALS_DataRatio < (float)1.352) {
- RPR0521_ALS[0] = ((float)0.756*(float)RPR0521_ALS_D0_RAWOUT - (float)0.243*(float)RPR0521_ALS_D1_RAWOUT);
- } else if(RPR0521_ALS_DataRatio < (float)3.053) {
- RPR0521_ALS[0] = ((float)0.766*(float)RPR0521_ALS_D0_RAWOUT - (float)0.25*(float)RPR0521_ALS_D1_RAWOUT);
- } else {
- RPR0521_ALS[0] = 0;
+char* httpResToStr(HTTPResult result) {
+ switch(result) {
+ case HTTP_PROCESSING:
+ return "HTTP_PROCESSING";
+ case HTTP_PARSE:
+ return "HTTP_PARSE";
+ case HTTP_DNS:
+ return "HTTP_DNS";
+ case HTTP_PRTCL:
+ return "HTTP_PRTCL";
+ case HTTP_NOTFOUND:
+ return "HTTP_NOTFOUND";
+ case HTTP_REFUSED:
+ return "HTTP_REFUSED";
+ case HTTP_ERROR:
+ return "HTTP_ERROR";
+ case HTTP_TIMEOUT:
+ return "HTTP_TIMEOUT";
+ case HTTP_CONN:
+ return "HTTP_CONN";
+ case HTTP_CLOSED:
+ return "HTTP_CLOSED";
+ case HTTP_REDIRECT:
+ return "HTTP_REDIRECT";
+ case HTTP_OK:
+ return "HTTP_OK";
+ default:
+ return "HTTP Result unknown";
}
-// printf("RPR-0521 ALS/PROX Sensor Data:\r\n");
-// printf(" ALS = %0.2f lx\r\n", RPR0521_ALS[0]);
-// printf(" PROX= %0.2f ADC Counts\r\n", RPR0521_ALS[1]); //defined as a float but is an unsigned.
-
-}
-#endif
-
-#ifdef KMX62
-void ReadKMX62_Accel ()
-{
- //Read Accel Portion from the IC
- i2c.write(KMX62_addr_w, &KMX62_Addr_Accel_ReadData, 1, RepStart);
- i2c.read(KMX62_addr_r, &KMX62_Content_Accel_ReadData[0], 6, NoRepStart);
-
- //Note: The highbyte and low byte return a 14bit value, dropping the two LSB in the Low byte.
- // However, because we need the signed value, we will adjust the value when converting to "g"
- MEMS_Accel_Xout = (KMX62_Content_Accel_ReadData[1]<<8) | (KMX62_Content_Accel_ReadData[0]);
- MEMS_Accel_Yout = (KMX62_Content_Accel_ReadData[3]<<8) | (KMX62_Content_Accel_ReadData[2]);
- MEMS_Accel_Zout = (KMX62_Content_Accel_ReadData[5]<<8) | (KMX62_Content_Accel_ReadData[4]);
-
- //Note: Conversion to G is as follows:
- // Axis_ValueInG = MEMS_Accel_axis / 1024
- // However, since we did not remove the LSB previously, we need to divide by 4 again
- // Thus, we will divide the output by 4096 (1024*4) to convert and cancel out the LSB
- MEMS_Accel[0] = ((float)MEMS_Accel_Xout/4096/2);
- MEMS_Accel[1] = ((float)MEMS_Accel_Yout/4096/2);
- MEMS_Accel[2] = ((float)MEMS_Accel_Zout/4096/2);
-
- // Return Data to UART
-// 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]);
-
}
-void ReadKMX62_Mag ()
-{
-
- //Read Mag portion from the IC
- i2c.write(KMX62_addr_w, &KMX62_Addr_Mag_ReadData, 1, RepStart);
- i2c.read(KMX62_addr_r, &KMX62_Content_Mag_ReadData[0], 6, NoRepStart);
-
- //Note: The highbyte and low byte return a 14bit value, dropping the two LSB in the Low byte.
- // However, because we need the signed value, we will adjust the value when converting to "g"
- MEMS_Mag_Xout = (KMX62_Content_Mag_ReadData[1]<<8) | (KMX62_Content_Mag_ReadData[0]);
- MEMS_Mag_Yout = (KMX62_Content_Mag_ReadData[3]<<8) | (KMX62_Content_Mag_ReadData[2]);
- MEMS_Mag_Zout = (KMX62_Content_Mag_ReadData[5]<<8) | (KMX62_Content_Mag_ReadData[4]);
-
- //Note: Conversion to G is as follows:
- // Axis_ValueInG = MEMS_Accel_axis / 1024
- // However, since we did not remove the LSB previously, we need to divide by 4 again
- // Thus, we will divide the output by 4095 (1024*4) to convert and cancel out the LSB
- MEMS_Mag[0] = (float)MEMS_Mag_Xout/4096*(float)0.146;
- MEMS_Mag[1] = (float)MEMS_Mag_Yout/4096*(float)0.146;
- MEMS_Mag[2] = (float)MEMS_Mag_Zout/4096*(float)0.146;
-
- // Return Data to UART
-// 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]);
-
-}
-#endif
-
-#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);
-
- //Format Data
- KX022_Accel_X_RawOUT = (KX022_Content_ReadData[1]<<8) | (KX022_Content_ReadData[0]);
- KX022_Accel_Y_RawOUT = (KX022_Content_ReadData[3]<<8) | (KX022_Content_ReadData[2]);
- KX022_Accel_Z_RawOUT = (KX022_Content_ReadData[5]<<8) | (KX022_Content_ReadData[4]);
-
- //Scale Data
- KX022_Accel[0] = (float)KX022_Accel_X_RawOUT / 16384;
- KX022_Accel[1] = (float)KX022_Accel_Y_RawOUT / 16384;
- KX022_Accel[2] = (float)KX022_Accel_Z_RawOUT / 16384;
-
- //Return Data through UART
-// 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]);
-
-}
-#endif
-
-
-#ifdef Pressure
-void ReadPressure ()
-{
-
- i2c.write(Press_addr_w, &Press_Addr_ReadData, 1, RepStart);
- i2c.read(Press_addr_r, &Press_Content_ReadData[0], 6, NoRepStart);
-
- BM1383_Temp_Out = (Press_Content_ReadData[0]<<8) | (Press_Content_ReadData[1]);
- BM1383[0] = (float)BM1383_Temp_Out/32;
-
- BM1383_Var = (Press_Content_ReadData[2]<<3) | (Press_Content_ReadData[3] >> 5);
- BM1383_Deci = ((Press_Content_ReadData[3] & 0x1f) << 6 | ((Press_Content_ReadData[4] >> 2)));
- BM1383_Deci = (float)BM1383_Deci* (float)0.00048828125; //0.00048828125 = 2^-11
- BM1383[1] = (BM1383_Var + BM1383_Deci); //question pending here...
-
-// 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]);
-
-}
-#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]);
-
- **********************************************************************************/
-
-
-
-
-
-
-
--- a/mbed.bld Fri Dec 11 16:00:08 2015 +0000 +++ b/mbed.bld Fri Apr 15 21:31:39 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/165afa46840b \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/082adc85693f \ No newline at end of file
