Demo app to read data from temperature sensor connected to STM-F411RE and send values to AT&T M2X Data Service via MTS shield.
Dependencies: M2XStreamClient SocketModem jsonlite mbed
Fork of STM32_MTS_Wifi_Connect_M2X by
Diff: main.cpp
- Revision:
- 12:676ba8e7bea2
- Parent:
- 11:a9117a40bde7
- Child:
- 13:d8957cc4c88e
diff -r a9117a40bde7 -r 676ba8e7bea2 main.cpp --- a/main.cpp Fri Jul 11 16:53:47 2014 +0000 +++ b/main.cpp Fri Jul 18 18:53:18 2014 +0000 @@ -1,6 +1,12 @@ #include "mbed.h" +#include "M2XStreamClient.h" #include "MTSSerial.h" #include "Wifi.h" +#include "include_me.h" +#include "math.h" + + + using namespace mts; /* This example shows how to do a basic connectivity test using @@ -8,11 +14,57 @@ * SSID and security key. You may need to chage the security type. */ +using namespace mts; + +const char key[] = "6f1f72905ab5bede6ff804d58c2e834d"; // Replace with your M2X user account master key +const char feed[] = "119e6e4c262087ea3c5129576a18ee52"; // Replace with your blueprint feed ID +const char stream[] = "temperature"; // Replace with your stream name +const int thresholdvalue = 10; + +char name[] = "<location name>"; // Name of current location of datasource +double latitude = 33.007872; +double longitude = -96.751614; // You can also read those values from a GPS +double elevation = 697.00; + +void on_data_point_found(const char* at, const char* value, int index, void* context) { + printf("Found a data point, index: %d\r\n", index); + printf("At: %s Value: %s\r\n", at, value); +} + +void on_location_found(const char* name, + double latitude, + double longitude, + double elevation, + const char* timestamp, + int index, + void* context) { + printf("Found a location, index: %d\r\n", index); + printf("Name: %s Latitude: %lf Longitude: %lf\r\n", name, latitude, longitude); + printf("Elevation: %lf Timestamp: %s\r\n", elevation, timestamp); +} + int main() { + char amb_temp[6]; + double temp; + int a; + int sensorValue; + int adc_scale = 4095; + int B = 3975; + float resistance; + float temperature; + float temperature_f; + float test; + float Rsensor; //Resistance of sensor in K + + DigitalOut myled(D7); + AnalogIn analogRead(A0); + AnalogIn analogLightSensorRead(A1); + + //Set the network parameters - std::string ssid = "your_wifi_ssid"; - std::string securityKey = "your_wifi_password"; + std::string ssid = "Belkin_STM"; + std::string securityKey = "stmicroatx"; Wifi::SecurityType securityType = Wifi::WPA2; //Wait for wifi module to boot up @@ -25,6 +77,8 @@ MTSSerial* serial = new MTSSerial(D8, D2, 256, 256); serial->baud(9600); + Transport::setTransport(Transport::WIFI); + //Setup Wifi class Wifi* wifi = Wifi::getInstance(); printf("Init: %s\n\r", wifi->init(serial) ? "SUCCESS" : "FAILURE"); @@ -39,9 +93,61 @@ printf("Connect: Success\r\n"); printf("Is Connected: %s\n\r", wifi->isConnected() ? "True" : "False"); - //Ping - while (true) { - printf("Ping Server: %s\n\r", wifi->ping("8.8.8.8") ? "Success" : "Failed"); - wait(3); + printf("Ping Server: %s\n\r", wifi->ping("8.8.8.8") ? "Success" : "Failed"); + wait(1); + + // Initialize the M2X client + Client client; + M2XStreamClient m2xClient(&client, key); + + while(1) + { + a = analogRead.read_u16(); + + + resistance = (float)(adc_scale-a)*10000/a; //get the resistance of the sensor; + temperature = 1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ; + temperature_f = (1.8 * temperature) + 32.0; + printf("Temp Sensor Analog Reading is 0x%X = %d ", a, a); + printf("Current Temperature: %f degC %f degF \n\r", temperature, temperature_f); + + sensorValue = analogLightSensorRead.read_u16(); + Rsensor=(float)(adc_scale-sensorValue)*10/sensorValue; + + if(Rsensor > thresholdvalue) + { + myled = 1; // LED is ON + } + else + { + myled = 0; // LED is OFF + } + + printf("Light Sensor Analog Reading is 0x%X = %d ", sensorValue, sensorValue); + printf("The sensor resistance is %f \n\n\r", Rsensor); + + sprintf(amb_temp, "%0.2f", temperature_f); //write dummy temp value in amb_temp + + int response = m2xClient.post(feed, stream, amb_temp); + printf("Post response code: %d\r\n", response); + if (response == -1) while (true) ; + + delay(60000); } + + + // Read temperature data and post to M2X stream + temp = 78.6; + while(1) + { + sprintf(amb_temp, "%0.2f", temp); //write dummy temp value in amb_temp + + int response = m2xClient.post(feed, stream, amb_temp); + printf("Post response code: %d\r\n", response); + if (response == -1) while (true) ; + + temp = temp + 0.1; /* increment the temp by 0.5 deg */ + // wait 60 secs and then loop + delay(60000); + } }