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.

Tue Jul 24 15:15:02 2018 +0100
Update application to support default interfaces from Mbed OS 5.9.x

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:857719181846 1 # mbed-os-example-wifi #
mbed_official 0:857719181846 2
mbed_official 49:d44cac40bf15 3 Wi-Fi example for Mbed OS
mbed_official 0:857719181846 4
mbed_official 49:d44cac40bf15 5 ## Getting started with the Wi-Fi API ##
mbed_official 0:857719181846 6
mbed_official 49:d44cac40bf15 7 This is an example of a Wi-Fi application using the Wi-Fi and network socket APIs that [Mbed OS](https://github.com/ARMmbed/mbed-os) provides.
mbed_official 0:857719181846 8
mbed_official 49:d44cac40bf15 9 The program brings up the Wi-Fi and the underlying network interface and uses it to scan available networks, connects to a network, prints interface and connection details and performs an HTTP operation.
mbed_official 49:d44cac40bf15 10
mbed_official 49:d44cac40bf15 11 For more information about Wi-Fi APIs, please visit the [Mbed OS Wi-Fi](https://os.mbed.com/docs/latest/reference/wi-fi.html) documentation.
mbed_official 0:857719181846 12
mbed_official 0:857719181846 13 ### Supported hardware ###
mbed_official 0:857719181846 14
mbed_official 71:a0fbcc153b55 15 * All Mbed OS boards with build-in Wi-Fi module:
mbed_official 71:a0fbcc153b55 16 * [u-blox ODIN-W2](https://os.mbed.com/platforms/ublox-EVK-ODIN-W2/)
mbed_official 71:a0fbcc153b55 17 * [Realtek RTL8195AM](https://os.mbed.com/platforms/REALTEK-RTL8195AM/)
mbed_official 71:a0fbcc153b55 18 * [ST DISCO IOT board](https://os.mbed.com/platforms/ST-Discovery-L475E-IOT01A/) with integrated [ISM43362 WiFi Inventek module](https://github.com/ARMmbed/wifi-ism43362).
mbed_official 71:a0fbcc153b55 19 * [ST DISCO_F413ZH board](https://os.mbed.com/platforms/ST-Discovery-F413H/) with integrated [ISM43362 WiFi Inventek module](https://github.com/ARMmbed/wifi-ism43362).
mbed_official 71:a0fbcc153b55 20 * [Advantech WISE-150](https://os.mbed.com/modules/advantech-wise-1530/)
mbed_official 71:a0fbcc153b55 21 * USI WM-BN-BM-22
mbed_official 71:a0fbcc153b55 22 * MxChip EMW3166
mbed_official 71:a0fbcc153b55 23 * Boards with external WiFi shields.
mbed_official 71:a0fbcc153b55 24 * [NUCLEO-F401RE](https://os.mbed.com/platforms/ST-Nucleo-F401RE/) with [X-NUCLEO-IDW04A1](http://www.st.com/content/st_com/en/products/ecosystems/stm32-open-development-environment/stm32-nucleo-expansion-boards/stm32-ode-connect-hw/x-nucleo-idw04a1.html) Wi-Fi expansion board using pins D8 and D2 _(of the Arduino connector)_.
mbed_official 71:a0fbcc153b55 25 * [NUCLEO-F401RE](https://os.mbed.com/platforms/ST-Nucleo-F401RE/) with [X-NUCLEO-IDW01M1](https://os.mbed.com/components/X-NUCLEO-IDW01M1/) Wi-Fi expansion board using pins PA_9 and PA_10 _(of the Morpho connector)_.
mbed_official 71:a0fbcc153b55 26 * [NUCLEO-F429ZI](https://os.mbed.com/platforms/ST-Nucleo-F429ZI/) with ESP8266-01 module using pins D1 and D0.
mbed_official 71:a0fbcc153b55 27 * [NUCLEO-L476RG](https://os.mbed.com/platforms/ST-Nucleo-L476RG/) with ESP8266-01 module using pins D8 and D2.
mbed_official 71:a0fbcc153b55 28 * Other Mbed targets with an ESP8266 module, [X-NUCLEO-IDW04A1](http://www.st.com/content/st_com/en/products/ecosystems/stm32-open-development-environment/stm32-nucleo-expansion-boards/stm32-ode-connect-hw/x-nucleo-idw04a1.html) or [X-NUCLEO-IDW01M1](https://os.mbed.com/components/X-NUCLEO-IDW01M1/) expansion board.
mbed_official 0:857719181846 29
mbed_official 32:bca3f5f442b3 30 #### Connecting the ESP8266 ####
mbed_official 49:d44cac40bf15 31
mbed_official 27:b3c6dba3b6e9 32 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.
mbed_official 6:9944c5308062 33
mbed_official 49:d44cac40bf15 34 **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.
mbed_official 32:bca3f5f442b3 35
mbed_official 44:63be19b7a3db 36 #### Connecting the X-NUCLEO-IDW0XX1 ####
mbed_official 49:d44cac40bf15 37
mbed_official 49:d44cac40bf15 38 To connect the [X-NUCLEO-IDW04A1](http://www.st.com/content/st_com/en/products/ecosystems/stm32-open-development-environment/stm32-nucleo-expansion-boards/stm32-ode-connect-hw/x-nucleo-idw04a1.html) or [X-NUCLEO-IDW01M1](https://developer.mbed.org/components/X-NUCLEO-IDW01M1/) expansion board to your NUCLEO development board, plug the expansion board on top of the NUCLEO board using the Arduino or Morpho connector.
mbed_official 6:9944c5308062 39
mbed_official 44:63be19b7a3db 40 ## Getting started ##
mbed_official 0:857719181846 41
mbed_official 49:d44cac40bf15 42 1. Import the example.
mbed_official 0:857719181846 43
mbed_official 32:bca3f5f442b3 44 ```
mbed_official 32:bca3f5f442b3 45 mbed import mbed-os-example-wifi
mbed_official 32:bca3f5f442b3 46 cd mbed-os-example-wifi
mbed_official 32:bca3f5f442b3 47 ```
mbed_official 71:a0fbcc153b55 48
mbed_official 71:a0fbcc153b55 49 1. Configure the Wi-Fi shield to use.
mbed_official 0:857719181846 50
mbed_official 49:d44cac40bf15 51 Edit ```mbed_app.json``` to include the correct Wi-Fi shield, SSID and password:
mbed_official 0:857719181846 52
mbed_official 32:bca3f5f442b3 53 ```
mbed_official 33:12f0df4d51d7 54 "config": {
mbed_official 32:bca3f5f442b3 55 "wifi-shield": {
mbed_official 63:99e063d738ee 56 "help": "Options are internal, WIFI_ESP8266, WIFI_ISM43362, WIFI_IDW0XX1",
mbed_official 44:63be19b7a3db 57 "value": "WIFI_ESP8266"
mbed_official 32:bca3f5f442b3 58 },
mbed_official 32:bca3f5f442b3 59 "wifi-ssid": {
mbed_official 32:bca3f5f442b3 60 "help": "WiFi SSID",
mbed_official 32:bca3f5f442b3 61 "value": "\"SSID\""
mbed_official 32:bca3f5f442b3 62 },
mbed_official 32:bca3f5f442b3 63 "wifi-password": {
mbed_official 32:bca3f5f442b3 64 "help": "WiFi Password",
mbed_official 32:bca3f5f442b3 65 "value": "\"Password\""
mbed_official 32:bca3f5f442b3 66 }
mbed_official 32:bca3f5f442b3 67 },
mbed_official 32:bca3f5f442b3 68 ```
mbed_official 0:857719181846 69
mbed_official 49:d44cac40bf15 70 Sample ```mbed_app.json``` files are provided for ESP8266 (```mbed_app_esp8266.json```), X-NUCLEO-IDW04A1 (```mbed_app_idw04a1.json```) and X-NUCLEO-IDW01M1 (```mbed_app_idw01m1```).
mbed_official 71:a0fbcc153b55 71
mbed_official 63:99e063d738ee 72 For WIFI_ISM43362, ignore the value of `wifi-shield` as it is already overrides per supported targets.
mbed_official 63:99e063d738ee 73
mbed_official 49:d44cac40bf15 74 For built-in Wi-Fi, ignore the value of `wifi-shield`.
mbed_official 33:12f0df4d51d7 75
mbed_official 71:a0fbcc153b55 76 1. Compile and generate binary.
mbed_official 71:a0fbcc153b55 77 For example, for `GCC`:
mbed_official 71:a0fbcc153b55 78 ```
mbed_official 71:a0fbcc153b55 79 mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2
mbed_official 71:a0fbcc153b55 80 ```
mbed_official 32:bca3f5f442b3 81
mbed_official 71:a0fbcc153b55 82 1. Open a serial console session with the target platform using the following parameters:
mbed_official 36:aa0b6789bbd2 83 * **Baud rate:** 9600
mbed_official 36:aa0b6789bbd2 84 * **Data bits:** 8
mbed_official 36:aa0b6789bbd2 85 * **Stop bits:** 1
mbed_official 36:aa0b6789bbd2 86 * **Parity:** None
mbed_official 71:a0fbcc153b55 87
mbed_official 71:a0fbcc153b55 88 1. Copy or drag the application `mbed-os-example-wifi.bin` in the folder `mbed-os-example-wifi/BUILD/<TARGET NAME>/<PLATFORM NAME>` onto the target board.
mbed_official 36:aa0b6789bbd2 89
mbed_official 71:a0fbcc153b55 90 1. The serial console should display a similar output to below, indicating a successful Wi-Fi connection:
mbed_official 71:a0fbcc153b55 91 ```
mbed_official 71:a0fbcc153b55 92 WiFi example
mbed_official 71:a0fbcc153b55 93
mbed_official 71:a0fbcc153b55 94 Scan:
mbed_official 71:a0fbcc153b55 95 Network: Dave Hot Spot secured: Unknown BSSID: 00:01:02:03:04:05 RSSI: -58 Ch: 1
mbed_official 71:a0fbcc153b55 96 1 network available.
mbed_official 36:aa0b6789bbd2 97
mbed_official 71:a0fbcc153b55 98 Connecting...
mbed_official 71:a0fbcc153b55 99 Success
mbed_official 36:aa0b6789bbd2 100
mbed_official 71:a0fbcc153b55 101 MAC: 00:01:02:03:04:05
mbed_official 71:a0fbcc153b55 102 IP:
mbed_official 71:a0fbcc153b55 103 Netmask:
mbed_official 71:a0fbcc153b55 104 Gateway:
mbed_official 71:a0fbcc153b55 105 RSSI: -27
mbed_official 36:aa0b6789bbd2 106
mbed_official 71:a0fbcc153b55 107 Sending HTTP request to www.arm.com...
mbed_official 71:a0fbcc153b55 108 sent 38 [GET / HTTP/1.1]
mbed_official 71:a0fbcc153b55 109 recv 64 [HTTP/1.1 301 Moved Permanently]
mbed_official 36:aa0b6789bbd2 110
mbed_official 71:a0fbcc153b55 111 Done
mbed_official 71:a0fbcc153b55 112 ```
mbed_official 0:857719181846 113
mbed_official 49:d44cac40bf15 114 ## Troubleshooting
mbed_official 0:857719181846 115
mbed_official 49:d44cac40bf15 116 If you have problems, you can review the [documentation](https://os.mbed.com/docs/latest/tutorials/debugging.html) for suggestions on what could be wrong and how to fix it.