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
main.cpp@7:72e29cb05e2b, 2015-12-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |