A quick example of a simple WiFi application using the WiFi and network-socket APIs that is provided as a part of mbed-os.

The program brings up the WiFi and the underlying network interface, and uses it to scans available networks, connects to a network, prints interface and connection details and performs simple HTTP operation.

Supported hardware:

Not that the mbed target board the WiFi shield gets connected to shouldn't have any other network interface e.g. Ethernet.

ESP8266 is a fallback option and will be used if the build is for unsupported platform.

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Fri Sep 08 10:15:04 2017 +0100
Parent:
31:7b64fdf0b13b
Child:
33:12f0df4d51d7
Commit message:
Add compiler check for Morpho form factor

.
Commit copied from https://github.com/ARMmbed/mbed-os-example-wifi

Changed in this revision

README.md Show annotated file Show diff for this revision Revisions of this file
esp8266-mbedignore Show annotated file Show diff for this revision Revisions of this file
idw01m1-mbedignore Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed_app.json Show annotated file Show diff for this revision Revisions of this file
wifi-x-nucleo-idw01m1.lib Show annotated file Show diff for this revision Revisions of this file
--- a/README.md	Thu Aug 31 15:45:04 2017 +0100
+++ b/README.md	Fri Sep 08 10:15:04 2017 +0100
@@ -12,50 +12,62 @@
 
 * [UBLOX Odin board](https://developer.mbed.org/platforms/ublox-EVK-ODIN-W2/) built-in WiFi module
 * [REALTEK_RTL8195AM](https://developer.mbed.org/platforms/REALTEK-RTL8195AM/) built-in WiFi module
+* [NUCLEO_F401RE](https://developer.mbed.org/platforms/ST-Nucleo-F401RE/) with [X-NUCLEO-IDW01M1](https://developer.mbed.org/components/X-NUCLEO-IDW01M1/) WiFi expansion board using pins D8 D2
 * [NUCLEO_F429ZI](https://developer.mbed.org/platforms/ST-Nucleo-F429ZI/) with ESP8266-01 module using pins D1 D0
 * [NUCLEO_L476RG](https://developer.mbed.org/platforms/ST-Nucleo-L476RG/) with ESP8266-01 module using pins D8 D2
-* Other mbed target with ESP2866 module (Board it's connected to shouldn't have other network interface eg. Ethernet)
+* Other mbed targets with ESP8266 module or [X-NUCLEO-IDW01M1](https://developer.mbed.org/components/X-NUCLEO-IDW01M1/) expansion board
+  *(the mbed target board the WiFi shield gets connected to shouldn't have any other network interface e.g. Ethernet)*
 
-ESP2866 is a fallback option and will be used if the build is for unsupported platform.
+ESP8266 is a fallback option and will be used if the build is for unsupported platform.
 
-#### Connecting the ESP2866 ####
-
+#### Connecting the ESP8266 ####
 To connect the ESP8266 module to your development board, look at the [ESP8266 Cookbook page](https://developer.mbed.org/users/4180_1/notebook/using-the-esp8266-with-the-mbed-lpc1768/). In general, this means hooking up the ESP8266 TX pin to `D0` and the ESP8266 RX pin to `D1` on your development board.
 
-**Note on NUCLEO boards:** On the NUCLEO boards, pins `D0` and `D1` are used for serial communication with the computer. Use pins `D8` (to ESP8266 TX) and `D2` (to ESP8266 RX) instead.
+**Note:** on NUCLEO development boards, pins `D0` and `D1` are used for serial communication with the computer. Use pins `D8` (to ESP8266 TX) and `D2` (to ESP8266 RX) instead.
+
+#### Connecting the X-NUCLEO-IDW01M1 ####
+To connect the [X-NUCLEO-IDW01M1](https://developer.mbed.org/components/X-NUCLEO-IDW01M1/) expansion board to your NUCLEO development board, just plug the expansion board on top of the NUCLEO board using the Morpho connector.
 
 ##  Getting started
 
 1. Import the example
 
-  ```
-  mbed import mbed-os-example-wifi
-  cd mbed-os-example-wifi
-  ```
-2. Configure the WiFi credentials
+   ```
+   mbed import mbed-os-example-wifi
+   cd mbed-os-example-wifi
+   ```
+2. Configure the WiFi shield to use
 
-  Edit ```mbed_app.json``` to include correct SSID and Password:
+   Edit ```mbed_app.json``` to include correct WiFi shield, SSID and Password:
 
-  ```
-      "config": {
-          "wifi-ssid": {
-              "help": "WiFi SSID",
-              "value": "\"SSID\""
-          },
-          "wifi-password": {
-              "help": "WiFi Password",
-              "value": "\"Password\""
-          }
-      },
-  ```
+   ```
+       "config": { 
+ 	  "wifi-shield": {
+               "help": "Options are WIFI_ESP8266, WIFI_IDW01M1",
+               "value": "WIFI_IDW01M1"
+        	  },
+           "wifi-ssid": {
+               "help": "WiFi SSID",
+               "value": "\"SSID\""
+           },
+           "wifi-password": {
+               "help": "WiFi Password",
+               "value": "\"Password\""
+           }
+       },
+   ```
 
-3. Compile and generate binary
-
-  For example, for `GCC`:
+3. Copy the respective _ignore_ file to `.mbedignore`
+   * Copy `esp8266-mbedignore` when using ESP8266 module.
+   * Copy `idw01m1-mbedignore` when using [X-NUCLEO-IDW01M1](https://developer.mbed.org/components/X-NUCLEO-IDW01M1/) expansion board.
+  
+4. Compile and generate binary
 
-  ```
-  mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2
-  ```
+   For example, for `GCC`:
+
+   ```
+   mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2
+   ```
 
 ## Documentation ##
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/esp8266-mbedignore	Fri Sep 08 10:15:04 2017 +0100
@@ -0,0 +1,1 @@
+wifi-x-nucleo-idw01m1/*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idw01m1-mbedignore	Fri Sep 08 10:15:04 2017 +0100
@@ -0,0 +1,1 @@
+esp8266-driver/*
--- a/main.cpp	Thu Aug 31 15:45:04 2017 +0100
+++ b/main.cpp	Fri Sep 08 10:15:04 2017 +0100
@@ -17,6 +17,9 @@
 #include "mbed.h"
 #include "TCPSocket.h"
 
+#define WIFI_ESP8266    1
+#define WIFI_IDW01M1    2
+
 #if TARGET_UBLOX_EVK_ODIN_W2
 #include "OdinWiFiInterface.h"
 OdinWiFiInterface wifi;
@@ -26,14 +29,25 @@
 RTWInterface wifi;
 
 #else
+#if MBED_CONF_APP_WIFI_SHIELD == WIFI_ESP8266
+#if !TARGET_FF_MORPHO
+#error [NOT_SUPPORTED] Only Morpho form factor devices are supported for this shield at this time
+#endif // !TARGET_FF_MORPHO
+#else
 #if !TARGET_FF_ARDUINO
-#error [NOT_SUPPORTED] Only Arduino form factor devices are supported at this time
-#endif
+#error [NOT_SUPPORTED] Only Arduino form factor devices are supported for this shield at this time
+#endif // !TARGET_FF_ARDUINO
+#endif // MBED_CONF_APP_WIFI_SHIELD != WIFI_ESP8266
 
+#if MBED_CONF_APP_WIFI_SHIELD == WIFI_ESP8266
 #include "ESP8266Interface.h"
 ESP8266Interface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
+#elif MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW01M1
+#include "SpwfSAInterface.h"
+SpwfSAInterface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
+#endif // MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW01M1
 
-#endif
+#endif // TARGET_UBLOX_EVK_ODIN_W2
 
 const char *sec2str(nsapi_security_t sec)
 {
--- a/mbed_app.json	Thu Aug 31 15:45:04 2017 +0100
+++ b/mbed_app.json	Fri Sep 08 10:15:04 2017 +0100
@@ -1,5 +1,9 @@
 {
     "config": {
+	"wifi-shield": {
+            "help": "Options are WIFI_ESP8266, WIFI_IDW01M1",
+            "value": "WIFI_IDW01M1"
+	},
         "wifi-ssid": {
             "help": "WiFi SSID",
             "value": "\"SSID\""
@@ -24,6 +28,10 @@
         "NUCLEO_L476RG": {
             "wifi-tx": "D8",
             "wifi-rx": "D2"
+        },
+        "NUCLEO_F401RE": {
+            "wifi-tx": "D8",
+            "wifi-rx": "D2"
         }
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wifi-x-nucleo-idw01m1.lib	Fri Sep 08 10:15:04 2017 +0100
@@ -0,0 +1,1 @@
+https://github.com/ARMmbed/wifi-x-nucleo-idw01m1/#6ec4ac4a662fae9cca087dc3b57395da950a1ba5
\ No newline at end of file