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.

--- a/main.cpp	Fri Jan 13 15:31:35 2017 +0000
+++ b/main.cpp	Mon Jan 16 13:26:50 2017 +0000
@@ -18,27 +18,6 @@
 #include "SpwfInterface.h"
 #include "TCPSocket.h"
-// CA certificate in PEM format
-char  CA_cert []="-----BEGIN CERTIFICATE-----\r\n"
-"-----END CERTIFICATE-----\r\n";
@@ -126,40 +105,6 @@
     pc.printf("\r\nClosing Socket\r\n");
     pc.printf("\r\nUnsecure Socket Test complete.\r\n");
-// Start Secure Socket connection test (one way server autentication only)   
-    time_t ctTime;
-    ctTime = time(NULL);             
-    printf ("Start Secure Socket connection with one way server autentication test\n\r");                
-    printf("Initial System Time is: %s\r\n", ctime(&ctTime));   
-    printf("Need to adjust time? if yes enter time in seconds elapsed since Epoch (cmd: date +'%%s'), otherwise enter 0 ");                
-    int t=0;
-    scanf("%d",&t);
-    printf ("entered time is: %d \n\r", t);
-    if (t != 0) { time_t txTm = t; set_time(txTm); }  // set Nucleo system time
-    ctTime = time(NULL);    
-    printf ("The current system time is: %s", ctime (&ctTime));  // set WiFi module systm time
-    if (!spwf.set_time(ctTime)) printf ("ERROR set_time\n\r");       
-    if (!spwf.clean_TLS_certificate(ALL)) printf ("ERROR clean_TLS_certificate\n\r");
-    if (!spwf.set_TLS_certificate(CA_cert, sizeof(CA_cert), FLASH_CA_ROOT_CERT)) printf ("ERROR set_TLS_certificate\n\r");
-    if (!spwf.set_TLS_SRV_domain("*",FLASH_DOMAIN)) printf ("ERROR set_TLS_CA_domain\n\r");
-// NOTE:  the Wifi API set_secure_mode() and set_unsecure_mode() refers to the whole interface so the socket must be created / opened after 
-// having set the desidered mode (deft unsecure).
-//#define SEC_MODE1 // two possible ways to secure connect a socket are shown 
-    spwf.gethostbyname(&addr,"");  // ask DNS to resolve URL/IP 
-    addr.set_port(443);     
-    spwf.set_secure_mode();           
-    spwf.set_unsecure_mode();    
-    printf ("Connecting to IP: %s ...\n\r", addr.get_ip_address());
-#ifdef SEC_MODE1    
-    err = socket.connect(addr);
-    err = socket.connect("", 443);
-    if (err != 0 )printf ("ERROR secure socket connection failed: %d\n\r", err);
-    else printf ("--->>> Secure socket CONNECTED to: %s\n\r", addr.get_ip_address());
-    socket.close();      
     printf ("Socket closed\n\r");
     printf ("WIFI disconnected, exiting ...\n\r");