Connect through Wifi to IBM MQTT cloud https://quickstart.internetofthings.ibmcloud.com

Dependencies:   MQTT NetworkSocketAPI X_NUCLEO_IDW01M1v2 X_NUCLEO_IKS01A1 mbed NDefLib X_NUCLEO_NFC01A1

Fork of IDW01M1_Cloud_IBM by ST Expansion SW Team

To start the demo the following expansion boards are required

X_NUCLEO_IDW01M1v2, X_NUCLEO_IKS01A1, X_NUCLEO_NFC01A1

After having mounted the board stack on the Nucleo board the below steps should be followed:

  • Program in the application source code you local WiFi SSID and password and flash the binary. Make sure the Wifi network has visible SSID.
  • Reset the Nucleo board and after few seconds the Nucleo green led will be on (it means the Nucleo is connected to the local Wifi and to the IBM cloud server)
  • Read the NFC tag with an Android device and the browser will be automatically opened and directed to the specific brocker IBM demo page where the environmental values are displayed in form of a x-y graph. The values are updated every few seconds. On the Hyperterminal is possible to see the values sent to the IBM cloud server and the board mac address to be entered on the IBM quickstart web page if a manual connection is needed (eg. to connect from a PC browser).
Committer:
mridup
Date:
Thu Apr 14 06:35:46 2016 +0000
Revision:
4:1ed7f173eec5
Parent:
3:dfb8c6c8c31b
Child:
5:e913a401b174
main for socket conn to time-d.nist.gov

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mridup 0:cbf8bc43bc9e 1 #include "mbed.h"
mridup 0:cbf8bc43bc9e 2 #include "SPWFInterface.h"
mridup 4:1ed7f173eec5 3 #include "TCPSocket.h"
mridup 0:cbf8bc43bc9e 4
mridup 0:cbf8bc43bc9e 5 //------------------------------------
mridup 0:cbf8bc43bc9e 6 // Hyperterminal configuration
mridup 0:cbf8bc43bc9e 7 // 9600 bauds, 8-bit data, no parity
mridup 0:cbf8bc43bc9e 8 //------------------------------------
mridup 0:cbf8bc43bc9e 9
mridup 0:cbf8bc43bc9e 10 Serial pc(SERIAL_TX, SERIAL_RX);
mridup 4:1ed7f173eec5 11
mridup 3:dfb8c6c8c31b 12 DigitalOut myled(LED1);
mridup 4:1ed7f173eec5 13
mridup 0:cbf8bc43bc9e 14 SpwfSAInterface *spwf;
mridup 4:1ed7f173eec5 15 TCPSocket *tcp_;
mridup 4:1ed7f173eec5 16
mridup 4:1ed7f173eec5 17 int main() {
mridup 4:1ed7f173eec5 18 int32_t err;
mridup 0:cbf8bc43bc9e 19 char * ssid = "STM";
mridup 0:cbf8bc43bc9e 20 char * seckey = "STMdemoPWD";
mridup 4:1ed7f173eec5 21 char * hostname = "192.168.1.5";
mridup 4:1ed7f173eec5 22 char * data = "Hello World!\r\n";
mridup 4:1ed7f173eec5 23 uint32_t len = strlen(data);
mridup 4:1ed7f173eec5 24
mridup 4:1ed7f173eec5 25 pc.printf("\r\nX-NUCLEO-IDW01M1 mbed Application\r\n");
mridup 4:1ed7f173eec5 26
mridup 0:cbf8bc43bc9e 27 spwf = createSPWFInstance();
mridup 4:1ed7f173eec5 28 tcp_ = new TCPSocket(spwf);
mridup 4:1ed7f173eec5 29
mridup 0:cbf8bc43bc9e 30 err = spwf->init();
mridup 0:cbf8bc43bc9e 31 if(err!=0)
mridup 0:cbf8bc43bc9e 32 {
mridup 4:1ed7f173eec5 33 pc.printf("\r\n[APP] error initializing.\r\n");
mridup 0:cbf8bc43bc9e 34 return -1;
mridup 0:cbf8bc43bc9e 35 }
mridup 4:1ed7f173eec5 36
mridup 4:1ed7f173eec5 37 pc.printf("\r\n[APP] connecting to AP\r\n");
mridup 0:cbf8bc43bc9e 38
mridup 2:ba0531d896f0 39 err = spwf->connect(ssid, seckey, NS_SECURITY_WPA);
mridup 4:1ed7f173eec5 40 if(err!=0)
mridup 4:1ed7f173eec5 41 {
mridup 4:1ed7f173eec5 42 pc.printf("\r\n[APP] error connecting to AP.\r\n");
mridup 4:1ed7f173eec5 43 return -1;
mridup 0:cbf8bc43bc9e 44 }
mridup 4:1ed7f173eec5 45
mridup 4:1ed7f173eec5 46 pc.printf("\r\n[APP] now connected\r\n");
mridup 4:1ed7f173eec5 47
mridup 4:1ed7f173eec5 48 const char *ip = spwf->getIPAddress();
mridup 4:1ed7f173eec5 49 const char *mac = spwf->getMACAddress();
mridup 4:1ed7f173eec5 50
mridup 4:1ed7f173eec5 51 pc.printf("\r\n[APP] IP Address is: %s\r\n", (ip) ? ip : "No IP");
mridup 4:1ed7f173eec5 52 pc.printf("\r\n[APP] MAC Address is: %s\r\n", (mac) ? mac : "No MAC");
mridup 4:1ed7f173eec5 53
mridup 4:1ed7f173eec5 54 pc.printf("\r\n[APP] opening socket\r\n");
mridup 4:1ed7f173eec5 55
mridup 4:1ed7f173eec5 56 //err = tcp_->open((const char *)hostname, 32000);
mridup 4:1ed7f173eec5 57 err = tcp_->open("time-d.nist.gov", 37);
mridup 4:1ed7f173eec5 58
mridup 4:1ed7f173eec5 59 if(err==0)
mridup 4:1ed7f173eec5 60 {
mridup 4:1ed7f173eec5 61 pc.printf("\r\n[APP] socket open OK\r\n");
mridup 4:1ed7f173eec5 62 pc.printf("\r\n[APP] hostname resolved to: %s\r\n", tcp_->getIPAddress());
mridup 4:1ed7f173eec5 63
mridup 4:1ed7f173eec5 64 err = tcp_->send(data, len);
mridup 4:1ed7f173eec5 65
mridup 4:1ed7f173eec5 66 if(err == 0)
mridup 4:1ed7f173eec5 67 pc.printf("\r\n[APP] socket send OK\r\n");
mridup 4:1ed7f173eec5 68 else
mridup 4:1ed7f173eec5 69 pc.printf("\r\n[APP] socket send error\r\n");
mridup 4:1ed7f173eec5 70
mridup 4:1ed7f173eec5 71 char received[4];
mridup 4:1ed7f173eec5 72 int32_t size = 0;
mridup 4:1ed7f173eec5 73 pc.printf("\r\n[APP] waiting for data recv\r\n");
mridup 4:1ed7f173eec5 74 size = tcp_->recv(received, sizeof(received));
mridup 4:1ed7f173eec5 75 if(size==0)
mridup 4:1ed7f173eec5 76 pc.printf("\r\n[APP] Receive error.");
mridup 4:1ed7f173eec5 77 else
mridup 4:1ed7f173eec5 78 pc.printf("\r\n[APP] Received: %ld bytes, 0x%02x 0x%02x 0x%02x 0x%02x\r\n", size, received[0], received[1], received[2], received[3]);
mridup 4:1ed7f173eec5 79 }
mridup 4:1ed7f173eec5 80 else
mridup 4:1ed7f173eec5 81 pc.printf("\r\n[APP] socket open Error\r\n");
mridup 4:1ed7f173eec5 82
mridup 4:1ed7f173eec5 83 while(1) {
mridup 4:1ed7f173eec5 84 wait(1);
mridup 4:1ed7f173eec5 85 myled = !myled;
mridup 3:dfb8c6c8c31b 86 }
mridup 4:1ed7f173eec5 87 }