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:
Fri Apr 08 12:07:17 2016 +0000
Revision:
0:cbf8bc43bc9e
Child:
1:041e9f05738c
changes for optimization in Keil compiler

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 0:cbf8bc43bc9e 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 0:cbf8bc43bc9e 11
mridup 0:cbf8bc43bc9e 12 DigitalOut myled(LED1);
mridup 0:cbf8bc43bc9e 13
mridup 0:cbf8bc43bc9e 14 SpwfSAInterface *spwf;
mridup 0:cbf8bc43bc9e 15 TCPSocket *tcp_;
mridup 0:cbf8bc43bc9e 16
mridup 0:cbf8bc43bc9e 17 int main() {
mridup 0:cbf8bc43bc9e 18 int32_t err;
mridup 0:cbf8bc43bc9e 19 char * ssid = "STM";
mridup 0:cbf8bc43bc9e 20 char * seckey = "STMdemoPWD";
mridup 0:cbf8bc43bc9e 21 char * hostname = "192.168.1.5";
mridup 0:cbf8bc43bc9e 22 char * data = "Hello World!\r\n";
mridup 0:cbf8bc43bc9e 23 uint32_t len = strlen(data);
mridup 0:cbf8bc43bc9e 24
mridup 0:cbf8bc43bc9e 25 pc.printf("\r\nX-NUCLEO-IDW01M1 mbed Application\r\n");
mridup 0:cbf8bc43bc9e 26
mridup 0:cbf8bc43bc9e 27 spwf = createSPWFInstance();
mridup 0:cbf8bc43bc9e 28 tcp_ = new TCPSocket(spwf);
mridup 0:cbf8bc43bc9e 29
mridup 0:cbf8bc43bc9e 30 err = spwf->init();
mridup 0:cbf8bc43bc9e 31 if(err!=0)
mridup 0:cbf8bc43bc9e 32 {
mridup 0:cbf8bc43bc9e 33 pc.printf("\r\n[APP] error initializing.\r\n");
mridup 0:cbf8bc43bc9e 34 return -1;
mridup 0:cbf8bc43bc9e 35 }
mridup 0:cbf8bc43bc9e 36
mridup 0:cbf8bc43bc9e 37 pc.printf("\r\n[APP] connecting to AP\r\n");
mridup 0:cbf8bc43bc9e 38
mridup 0:cbf8bc43bc9e 39 err = spwf->connect(ssid, seckey, NS_SECURITY_WPA);
mridup 0:cbf8bc43bc9e 40 if(err!=0)
mridup 0:cbf8bc43bc9e 41 {
mridup 0:cbf8bc43bc9e 42 pc.printf("\r\n[APP] error connecting to AP.\r\n");
mridup 0:cbf8bc43bc9e 43 return -1;
mridup 0:cbf8bc43bc9e 44 }
mridup 0:cbf8bc43bc9e 45
mridup 0:cbf8bc43bc9e 46 pc.printf("\r\n[APP] now connected\r\n");
mridup 0:cbf8bc43bc9e 47
mridup 0:cbf8bc43bc9e 48 const char *ip = spwf->getIPAddress();
mridup 0:cbf8bc43bc9e 49 const char *mac = spwf->getMACAddress();
mridup 0:cbf8bc43bc9e 50
mridup 0:cbf8bc43bc9e 51 pc.printf("\r\n[APP] IP Address is: %s\r\n", (ip) ? ip : "No IP");
mridup 0:cbf8bc43bc9e 52 pc.printf("\r\n[APP] MAC Address is: %s\r\n", (mac) ? mac : "No MAC");
mridup 0:cbf8bc43bc9e 53
mridup 0:cbf8bc43bc9e 54 pc.printf("\r\n[APP] opening socket\r\n");
mridup 0:cbf8bc43bc9e 55
mridup 0:cbf8bc43bc9e 56 err = tcp_->open((const char *)hostname, 32000);
mridup 0:cbf8bc43bc9e 57 //err = tcp_->open("time-d.nist.gov", 37);
mridup 0:cbf8bc43bc9e 58
mridup 0:cbf8bc43bc9e 59 if(err==0)
mridup 0:cbf8bc43bc9e 60 {
mridup 0:cbf8bc43bc9e 61 pc.printf("\r\n[APP] socket open OK\r\n");
mridup 0:cbf8bc43bc9e 62 pc.printf("\r\n[APP] hostname resolved to: %s\r\n", tcp_->getIPAddress());
mridup 0:cbf8bc43bc9e 63
mridup 0:cbf8bc43bc9e 64 err = tcp_->send(data, len);
mridup 0:cbf8bc43bc9e 65
mridup 0:cbf8bc43bc9e 66 if(err == 0)
mridup 0:cbf8bc43bc9e 67 pc.printf("\r\n[APP] socket send OK\r\n");
mridup 0:cbf8bc43bc9e 68 else
mridup 0:cbf8bc43bc9e 69 pc.printf("\r\n[APP] socket send error\r\n");
mridup 0:cbf8bc43bc9e 70
mridup 0:cbf8bc43bc9e 71 char received[4];
mridup 0:cbf8bc43bc9e 72 int32_t size = 0;
mridup 0:cbf8bc43bc9e 73 pc.printf("\r\n[APP] waiting for data recv\r\n");
mridup 0:cbf8bc43bc9e 74 size = tcp_->recv(received, sizeof(received));
mridup 0:cbf8bc43bc9e 75 if(size==-1)
mridup 0:cbf8bc43bc9e 76 pc.printf("\r\n[APP] Receive error.");
mridup 0:cbf8bc43bc9e 77 else
mridup 0:cbf8bc43bc9e 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 0:cbf8bc43bc9e 79 }
mridup 0:cbf8bc43bc9e 80 else
mridup 0:cbf8bc43bc9e 81 pc.printf("\r\n[APP] socket open Error\r\n");
mridup 0:cbf8bc43bc9e 82
mridup 0:cbf8bc43bc9e 83 while(1) {
mridup 0:cbf8bc43bc9e 84 wait(1);
mridup 0:cbf8bc43bc9e 85 //pc.printf("This program runs since %d seconds.\n", i++);
mridup 0:cbf8bc43bc9e 86 myled = !myled;
mridup 0:cbf8bc43bc9e 87 }
mridup 0:cbf8bc43bc9e 88 }
mridup 0:cbf8bc43bc9e 89