Use the STM32F411 Nucleo Board, Nucleo Sensor Shield, WIZnet5500 Ethernet to upload temperature data to M2X

Dependencies:   M2XStreamClient Nucleo_Sensor_Shield WIZnet_Library jsonlite mbed

Fork of M2X_Nucleo411_ESP8266-wifi by AT&T Developer Summit Hackathon 2016

Committer:
sjallouli
Date:
Mon Dec 28 23:52:17 2015 +0000
Revision:
7:72e29cb05e2b
Parent:
6:694279899cf2
Child:
8:031089277ba0
Use the Nucleo Sensor Shield to get the temperature

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jb8414 0:ece599ab76bb 1 #include "mbed.h"
jb8414 0:ece599ab76bb 2 #include "M2XStreamClient.h"
sjallouli 7:72e29cb05e2b 3 #include "WIZnetInterface.h"
mbedAustin 3:694a1a67b156 4 #include "TCPSocketConnection.h"
sjallouli 7:72e29cb05e2b 5 #include "x_cube_mems.h"
jb8414 0:ece599ab76bb 6
jb8414 0:ece599ab76bb 7
mbedAustin 3:694a1a67b156 8 /*
sjallouli 7:72e29cb05e2b 9 * WIZnet 5500 Config for nucleo 411
mbedAustin 3:694a1a67b156 10 */
sjallouli 7:72e29cb05e2b 11 Serial pc(SERIAL_TX, SERIAL_RX);
sjallouli 7:72e29cb05e2b 12 SPI spi(D11, D12, D13); // mosi, miso, sclk
sjallouli 7:72e29cb05e2b 13
sjallouli 7:72e29cb05e2b 14 #define USE_DHCP 1
mbedAustin 6:694279899cf2 15
sjallouli 7:72e29cb05e2b 16 const char * IP_Addr = "192.168.2.72";
sjallouli 7:72e29cb05e2b 17 const char * IP_Subnet = "255.255.255.0";
sjallouli 7:72e29cb05e2b 18 const char * IP_Gateway = "192.168.2.2";
sjallouli 7:72e29cb05e2b 19 unsigned char MAC_Addr[6] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
mbedAustin 6:694279899cf2 20 //
mbedAustin 6:694279899cf2 21 // Fill these field in from you ATT M2X Account
mbedAustin 6:694279899cf2 22 //
sjallouli 7:72e29cb05e2b 23 char deviceId[] = "1e166d399d3996f3b9da939b6b78dab9"; // Device you want to push to
sjallouli 7:72e29cb05e2b 24 char streamName[] = "temperature"; // Stream you want to push to
sjallouli 7:72e29cb05e2b 25 char m2xKey[] = "cf5454902aad1b81f4bf55743fbc0ccc"; // Your M2X API Key or Master API Key
sjallouli 7:72e29cb05e2b 26
sjallouli 7:72e29cb05e2b 27
sjallouli 7:72e29cb05e2b 28 volatile float TEMPERATURE_Value_C;
sjallouli 7:72e29cb05e2b 29 volatile float TEMPERATURE_Value_F;
sjallouli 7:72e29cb05e2b 30
sjallouli 7:72e29cb05e2b 31 /*
sjallouli 7:72e29cb05e2b 32 to access the data go to:
sjallouli 7:72e29cb05e2b 33
sjallouli 7:72e29cb05e2b 34 https://m2x.att.com/catalog/1e166d399d3996f3b9da939b6b78dab9
sjallouli 7:72e29cb05e2b 35
sjallouli 7:72e29cb05e2b 36 */
mbedAustin 3:694a1a67b156 37
jb8414 0:ece599ab76bb 38 int main()
jb8414 0:ece599ab76bb 39 {
sjallouli 7:72e29cb05e2b 40 /* Create sensor board object */
sjallouli 7:72e29cb05e2b 41 static X_CUBE_MEMS *mems_expansion_board = X_CUBE_MEMS::Instance();
sjallouli 7:72e29cb05e2b 42
sjallouli 7:72e29cb05e2b 43 pc.baud(115200); // console terminal to 115200 baud
sjallouli 7:72e29cb05e2b 44
sjallouli 7:72e29cb05e2b 45 spi.frequency(1000000);
sjallouli 7:72e29cb05e2b 46 WIZnetInterface ethernet(&spi,D10, D3);
sjallouli 7:72e29cb05e2b 47
sjallouli 7:72e29cb05e2b 48 pc.printf("Ethernet Init\r\n");
sjallouli 7:72e29cb05e2b 49 #if USE_DHCP
sjallouli 7:72e29cb05e2b 50 int ret = ethernet.init(MAC_Addr);
sjallouli 7:72e29cb05e2b 51 #else
sjallouli 7:72e29cb05e2b 52 int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
sjallouli 7:72e29cb05e2b 53 #endif
mbedAustin 3:694a1a67b156 54
sjallouli 7:72e29cb05e2b 55 if (!ret)
sjallouli 7:72e29cb05e2b 56 {
sjallouli 7:72e29cb05e2b 57 pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress());
sjallouli 7:72e29cb05e2b 58 ret = ethernet.connect();
sjallouli 7:72e29cb05e2b 59
sjallouli 7:72e29cb05e2b 60 if (!ret)
sjallouli 7:72e29cb05e2b 61 {
sjallouli 7:72e29cb05e2b 62 pc.printf("IP: %s, MASK: %s, GW: %s\r\n",
sjallouli 7:72e29cb05e2b 63 ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway());
sjallouli 7:72e29cb05e2b 64 }
sjallouli 7:72e29cb05e2b 65 else
sjallouli 7:72e29cb05e2b 66 {
sjallouli 7:72e29cb05e2b 67 pc.printf("Error ethernet.connect() - ret = %d\r\n", ret);
sjallouli 7:72e29cb05e2b 68 exit(0);
sjallouli 7:72e29cb05e2b 69 }
sjallouli 7:72e29cb05e2b 70 }
sjallouli 7:72e29cb05e2b 71 else
sjallouli 7:72e29cb05e2b 72 {
sjallouli 7:72e29cb05e2b 73 pc.printf("Error ethernet.init() - ret = %d\r\n", ret);
sjallouli 7:72e29cb05e2b 74 exit(0);
sjallouli 7:72e29cb05e2b 75 }
jb8414 0:ece599ab76bb 76
jb8414 0:ece599ab76bb 77 // Initialize the M2X client
jb8414 0:ece599ab76bb 78 Client client;
mbedAustin 5:b3bcb048a5a5 79 M2XStreamClient m2xClient(&client, m2xKey,1,"52.22.150.98"); // api-m2x.att.com
mbedAustin 5:b3bcb048a5a5 80
mbedAustin 5:b3bcb048a5a5 81 volatile int randomNumber = 0;
jb8414 0:ece599ab76bb 82
sjallouli 7:72e29cb05e2b 83 while (true)
sjallouli 7:72e29cb05e2b 84 {
sjallouli 7:72e29cb05e2b 85 // send the temperature to M2X every 5 seconds
sjallouli 7:72e29cb05e2b 86 mems_expansion_board->hts221.GetTemperature((float *)&TEMPERATURE_Value_C);/* Read temperature */
sjallouli 7:72e29cb05e2b 87 ret = m2xClient.updateStreamValue(deviceId, streamName, TEMPERATURE_Value_C);/* Send to M2X */
sjallouli 7:72e29cb05e2b 88
sjallouli 7:72e29cb05e2b 89 pc.printf("Temperature:\t\t %f C\r\n", TEMPERATURE_Value_C);
mbedAustin 5:b3bcb048a5a5 90 printf("send() returned %d\r\n", ret);
mbedAustin 5:b3bcb048a5a5 91 wait(5.0);
jb8414 0:ece599ab76bb 92 }
jb8414 0:ece599ab76bb 93 }