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


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 "" webpage and outputs it to the serial terminal.

After outputting the IP address of, the program tries to connect to the address "" 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.



File content as of revision 12:80d8e97e81f2:

/* SpwfInterface NetworkSocketAPI Example Program
 * Copyright (c) 2015 ARM Limited
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.

#include "mbed.h"
#include "SpwfInterface.h"
#include "TCPSocket.h"

// Hyperterminal configuration
// 9600 bauds, 8-bit data, no parity

Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);

//FRDM-K64: D9->UART1_TX, D7->UART1_RX
Pin connections:
    FRDM      IDW01M1
   ------    ---------
    +3v3 <--> +3v3
    GND  <--> GND
    D9   <--> D8
    D7   <--> D2

SpwfSAInterface spwf(D9, D7, false);
//LPCXpresso11U68: D9->UART1_TX, D7->UART1_RX
Pin connections:
    LPC      IDW01M1
   ------    ---------
    +3v3 <--> +3v3
    GND  <--> GND
    A1   <--> D8
    A2   <--> D2

SpwfSAInterface spwf(A1, A2, false);

//NUCLEO: D8->UART1_TX (PA_9), D2->UART1_RX (PA_10)
SpwfSAInterface spwf(D8, D2, false);

int main() {
    int err;    
    char * ssid = "STM";
    char * seckey = "STMDemo";  
    pc.printf("\r\nX-NUCLEO-IDW01M1 mbed Application\r\n");     
    pc.printf("\r\nconnecting to AP\r\n");
    if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) {      
        pc.printf("\r\nnow connected\r\n");
    } else {
        pc.printf("\r\nerror connecting to AP.\r\n");
        return -1;

    const char *ip = spwf.get_ip_address();
    const char *mac = spwf.get_mac_address();
    pc.printf("\r\nIP Address is: %s\r\n", (ip) ? ip : "No IP");
    pc.printf("\r\nMAC Address is: %s\r\n", (mac) ? mac : "No MAC");    
    SocketAddress addr(&spwf, "");   
    pc.printf("\r\ resolved to: %s\r\n", addr.get_ip_address());    

    pc.printf("\r\nconnecting to\r\n");
    TCPSocket socket(&spwf);
    err = socket.connect("", 23);
      pc.printf("\r\nCould not connect to Socket, err = %d!!\r\n", err); 
      return -1;
    } else pc.printf("\r\nconnected to host server\r\n"); 
    char buffer[100];
    int count = 0;
    pc.printf("\r\nReceiving Data\r\n"); 
    count = socket.recv(buffer, sizeof buffer);
    if(count > 0)
        buffer [count]='\0';
        printf("%s\r\n", buffer);  
    else pc.printf("\r\nData not received\r\n");

    pc.printf("\r\nClosing Socket\r\n");
    pc.printf("\r\nUnsecure Socket Test complete.\r\n");
    printf ("Socket closed\n\r");
    printf ("WIFI disconnected, exiting ...\n\r");

    while(1) { 
      myled = !myled;