Simple test application for the STMicroelectronics X-NUCLEO-IDW01M1 Wi-Fi expansion board.

Dependencies:   NetworkSocketAPI X_NUCLEO_IDW01M1v2 mbed

Fork of HelloWorld_IDW01M1v2 by ST Expansion SW Team

Introduction

HelloWorld_IDW01M1 is an example application which uses the X_NUCLEO_IDW01M1v2 mbed library.

The software can be used for testing the X-NUCLEO-IDW01M1 expansion board on mbed platforms. Current supported platforms are NUCLEO-F401RE and NUCLEO-L476RG.

Example Application

The SpwfSAInterface class needs to be instantiated with the UART RX and TX pins used. Depending on the platform used, the pin numbers may vary.

E.g. For FRDM K64F board it is: D9 and D7.

For Nucleo it is D8 and D2.

SpwfSAInterface spwf(D8, D2, false);


First of all, the example application tries to connect to the SSID/AP which is provided in the program code. In order to connect to your desired SSID/AP please change the SSID/AP settings/text to the one which is used in the user's environment. Please also remember that the SSID needs to be connected to the internet.

 char * ssid = "STM"; //Please change to local SSID/AP name
 char * seckey = "STMdemoPWD"; //Please change password


After connection the program prints its own IP address and MAC address on the serial terminal over UART. Please launch a terminal application (e.g.: TeraTerm, PuTTY on Windows, Minicom on Linux) and set the UART port to 9600 bps, 8 bit, No Parity, 1 stop bit. Thereafter the program retreives the IP address of the "st.com" webpage and outputs it to the serial terminal.

After outputting the IP address of st.com, the program tries to connect to the address "http://4.ifcfg.me" and socket 23. After connecting to the socket the program receives the IP Address from the server and outputs the IP Address it receives which denotes the public IP Address of the platform + X-Nucleo-IDW01M1 (node).

Further the program closes the socket, disconnects from the SSID and exits. This is just a simple "Hello World" style program for the X-NUCLEO-IDW01M1 Wi-Fi Expansion Board.

Committer:
mridup
Date:
Fri Aug 19 09:08:10 2016 +0000
Revision:
1:daf71fa3674c
Parent:
0:dee849b0e6e6
Child:
2:3a87dbea07a7
generic pin names(PA_9->D8) and FRDM pin mappings (4 wire basic).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mridup 0:dee849b0e6e6 1 /* SpwfInterface NetworkSocketAPI Example Program
mridup 0:dee849b0e6e6 2 * Copyright (c) 2015 ARM Limited
mridup 0:dee849b0e6e6 3 *
mridup 0:dee849b0e6e6 4 * Licensed under the Apache License, Version 2.0 (the "License");
mridup 0:dee849b0e6e6 5 * you may not use this file except in compliance with the License.
mridup 0:dee849b0e6e6 6 * You may obtain a copy of the License at
mridup 0:dee849b0e6e6 7 *
mridup 0:dee849b0e6e6 8 * http://www.apache.org/licenses/LICENSE-2.0
mridup 0:dee849b0e6e6 9 *
mridup 0:dee849b0e6e6 10 * Unless required by applicable law or agreed to in writing, software
mridup 0:dee849b0e6e6 11 * distributed under the License is distributed on an "AS IS" BASIS,
mridup 0:dee849b0e6e6 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mridup 0:dee849b0e6e6 13 * See the License for the specific language governing permissions and
mridup 0:dee849b0e6e6 14 * limitations under the License.
mridup 0:dee849b0e6e6 15 */
mridup 0:dee849b0e6e6 16
mridup 0:dee849b0e6e6 17 #include "mbed.h"
mridup 0:dee849b0e6e6 18 #include "SpwfInterface.h"
mridup 0:dee849b0e6e6 19 #include "TCPSocket.h"
mridup 0:dee849b0e6e6 20
mridup 0:dee849b0e6e6 21 //------------------------------------
mridup 0:dee849b0e6e6 22 // Hyperterminal configuration
mridup 0:dee849b0e6e6 23 // 9600 bauds, 8-bit data, no parity
mridup 0:dee849b0e6e6 24 //------------------------------------
mridup 0:dee849b0e6e6 25
mridup 1:daf71fa3674c 26 Serial pc(USBTX, USBRX); //SERIAL_TX, SERIAL_RX
mridup 0:dee849b0e6e6 27 DigitalOut myled(LED1);
mridup 1:daf71fa3674c 28
mridup 1:daf71fa3674c 29 /*************************************
mridup 1:daf71fa3674c 30 //FRDM-K64: D9->UART1_TX, D7->UART1_RX
mridup 1:daf71fa3674c 31 Pin connections:
mridup 1:daf71fa3674c 32 FRDM IDW01M1
mridup 1:daf71fa3674c 33 ------ ---------
mridup 1:daf71fa3674c 34 +3v3 <--> +3v3
mridup 1:daf71fa3674c 35 GND <--> GND
mridup 1:daf71fa3674c 36 D9 <--> D8
mridup 1:daf71fa3674c 37 D7 <--> D2
mridup 1:daf71fa3674c 38
mridup 1:daf71fa3674c 39 SpwfSAInterface spwf(D9, D7, false);
mridup 1:daf71fa3674c 40 *************************************/
mridup 1:daf71fa3674c 41
mridup 1:daf71fa3674c 42 //NUCLEO: D8->UART1_TX (PA_9), D2->UART1_RX (PA_10)
mridup 1:daf71fa3674c 43 SpwfSAInterface spwf(D8, D2, false);
mridup 0:dee849b0e6e6 44
mridup 0:dee849b0e6e6 45 int main() {
mridup 0:dee849b0e6e6 46 int err;
mridup 0:dee849b0e6e6 47 char * ssid = "STM";
mridup 0:dee849b0e6e6 48 char * seckey = "STMdemoPWD";
mridup 0:dee849b0e6e6 49
mridup 0:dee849b0e6e6 50 pc.printf("\r\nX-NUCLEO-IDW01M1 mbed Application\r\n");
mridup 0:dee849b0e6e6 51 pc.printf("\r\nconnecting to AP\r\n");
mridup 0:dee849b0e6e6 52
mridup 0:dee849b0e6e6 53 if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) {
mridup 0:dee849b0e6e6 54 pc.printf("\r\nnow connected\r\n");
mridup 0:dee849b0e6e6 55 } else {
mridup 0:dee849b0e6e6 56 pc.printf("\r\nerror connecting to AP.\r\n");
mridup 0:dee849b0e6e6 57 return -1;
mridup 0:dee849b0e6e6 58 }
mridup 0:dee849b0e6e6 59
mridup 0:dee849b0e6e6 60 const char *ip = spwf.get_ip_address();
mridup 0:dee849b0e6e6 61 const char *mac = spwf.get_mac_address();
mridup 0:dee849b0e6e6 62
mridup 0:dee849b0e6e6 63 pc.printf("\r\nIP Address is: %s\r\n", (ip) ? ip : "No IP");
mridup 0:dee849b0e6e6 64 pc.printf("\r\nMAC Address is: %s\r\n", (mac) ? mac : "No MAC");
mridup 0:dee849b0e6e6 65
mridup 0:dee849b0e6e6 66 SocketAddress addr(&spwf, "st.com");
mridup 0:dee849b0e6e6 67 pc.printf("\r\nst.com resolved to: %s\r\n", addr.get_ip_address());
mridup 0:dee849b0e6e6 68
mridup 0:dee849b0e6e6 69 pc.printf("\r\nconnecting to http://time-d.nist.gov\r\n");
mridup 0:dee849b0e6e6 70
mridup 0:dee849b0e6e6 71 TCPSocket socket(&spwf);
mridup 0:dee849b0e6e6 72 //err = socket.connect("192.168.1.6", 32000);
mridup 0:dee849b0e6e6 73 err = socket.connect("4.ifcfg.me", 23);//"4.ifcfg.me", 23;//"time-d.nist.gov", 37
mridup 0:dee849b0e6e6 74 if(err!=0)
mridup 0:dee849b0e6e6 75 {
mridup 0:dee849b0e6e6 76 pc.printf("\r\nCould not connect to Socket, err = %d!!\r\n", err);
mridup 0:dee849b0e6e6 77 return -1;
mridup 0:dee849b0e6e6 78 } else pc.printf("\r\nconnected to host server\r\n");
mridup 0:dee849b0e6e6 79
mridup 0:dee849b0e6e6 80 //char * str = "test";
mridup 0:dee849b0e6e6 81 //socket.send(str, strlen(str));
mridup 0:dee849b0e6e6 82
mridup 0:dee849b0e6e6 83 #if 1
mridup 0:dee849b0e6e6 84 char buffer[64];
mridup 0:dee849b0e6e6 85 int count = 0;
mridup 0:dee849b0e6e6 86 pc.printf("\r\nReceiving Data\r\n");
mridup 0:dee849b0e6e6 87 count = socket.recv(buffer, sizeof buffer);
mridup 0:dee849b0e6e6 88
mridup 0:dee849b0e6e6 89 if(count > 0)
mridup 0:dee849b0e6e6 90 {
mridup 0:dee849b0e6e6 91 printf("public IP address is: %s\r\n", &buffer[15]);
mridup 0:dee849b0e6e6 92 //pc.printf("\r\nReceived: %ld bytes, 0x%02x 0x%02x 0x%02x 0x%02x\r\n", \
mridup 0:dee849b0e6e6 93 // count, buffer[0], buffer[1], buffer[2], buffer[3]);
mridup 0:dee849b0e6e6 94 }
mridup 0:dee849b0e6e6 95 else pc.printf("\r\nData not received\r\n");
mridup 0:dee849b0e6e6 96
mridup 0:dee849b0e6e6 97 //pc.printf("\r\nClosing Socket\r\n");
mridup 0:dee849b0e6e6 98 // socket.close();
mridup 0:dee849b0e6e6 99
mridup 0:dee849b0e6e6 100 //pc.printf("\r\ndisconnecting....\r\n");
mridup 0:dee849b0e6e6 101 //spwf.disconnect();
mridup 0:dee849b0e6e6 102 //pc.printf("\r\nTest complete.\r\n");
mridup 0:dee849b0e6e6 103 #endif
mridup 0:dee849b0e6e6 104
mridup 0:dee849b0e6e6 105 while(1) {
mridup 0:dee849b0e6e6 106 wait(1);
mridup 0:dee849b0e6e6 107 myled = !myled;
mridup 0:dee849b0e6e6 108 }
mridup 0:dee849b0e6e6 109 }