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.

Committer:
mbed_official
Date:
Fri Aug 31 12:15:03 2018 +0100
Revision:
77:b74ac6641a3e
Parent:
71:a0fbcc153b55
Child:
82:122bb3ae6de5
Remove external drivers

.
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 77:b74ac6641a3e 30 #### Adding connectivity driver
mbed_official 77:b74ac6641a3e 31
mbed_official 77:b74ac6641a3e 32 If the target does not have internal WiFi driver, or Mbed OS does not supply one, you need to add driver to your application and configure it to provide default WiFi interface.
mbed_official 77:b74ac6641a3e 33
mbed_official 77:b74ac6641a3e 34 ```
mbed_official 77:b74ac6641a3e 35 mbed add <driver>
mbed_official 77:b74ac6641a3e 36 ```
mbed_official 77:b74ac6641a3e 37
mbed_official 77:b74ac6641a3e 38 For example adding ISM43362 driver `mbed add wifi-ism43362` or ESP8266 `mbed add esp8266-driver`
mbed_official 77:b74ac6641a3e 39
mbed_official 77:b74ac6641a3e 40 Then pin names need to be configured as instructed in the drivers README file.
mbed_official 77:b74ac6641a3e 41
mbed_official 32:bca3f5f442b3 42 #### Connecting the ESP8266 ####
mbed_official 49:d44cac40bf15 43
mbed_official 27:b3c6dba3b6e9 44 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 45
mbed_official 49:d44cac40bf15 46 **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 47
mbed_official 44:63be19b7a3db 48 #### Connecting the X-NUCLEO-IDW0XX1 ####
mbed_official 49:d44cac40bf15 49
mbed_official 49:d44cac40bf15 50 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 51
mbed_official 44:63be19b7a3db 52 ## Getting started ##
mbed_official 0:857719181846 53
mbed_official 49:d44cac40bf15 54 1. Import the example.
mbed_official 0:857719181846 55
mbed_official 32:bca3f5f442b3 56 ```
mbed_official 32:bca3f5f442b3 57 mbed import mbed-os-example-wifi
mbed_official 32:bca3f5f442b3 58 cd mbed-os-example-wifi
mbed_official 32:bca3f5f442b3 59 ```
mbed_official 71:a0fbcc153b55 60
mbed_official 71:a0fbcc153b55 61 1. Configure the Wi-Fi shield to use.
mbed_official 0:857719181846 62
mbed_official 49:d44cac40bf15 63 Edit ```mbed_app.json``` to include the correct Wi-Fi shield, SSID and password:
mbed_official 0:857719181846 64
mbed_official 32:bca3f5f442b3 65 ```
mbed_official 33:12f0df4d51d7 66 "config": {
mbed_official 32:bca3f5f442b3 67 "wifi-shield": {
mbed_official 63:99e063d738ee 68 "help": "Options are internal, WIFI_ESP8266, WIFI_ISM43362, WIFI_IDW0XX1",
mbed_official 44:63be19b7a3db 69 "value": "WIFI_ESP8266"
mbed_official 32:bca3f5f442b3 70 },
mbed_official 32:bca3f5f442b3 71 "wifi-ssid": {
mbed_official 32:bca3f5f442b3 72 "help": "WiFi SSID",
mbed_official 32:bca3f5f442b3 73 "value": "\"SSID\""
mbed_official 32:bca3f5f442b3 74 },
mbed_official 32:bca3f5f442b3 75 "wifi-password": {
mbed_official 32:bca3f5f442b3 76 "help": "WiFi Password",
mbed_official 32:bca3f5f442b3 77 "value": "\"Password\""
mbed_official 32:bca3f5f442b3 78 }
mbed_official 32:bca3f5f442b3 79 },
mbed_official 32:bca3f5f442b3 80 ```
mbed_official 0:857719181846 81
mbed_official 49:d44cac40bf15 82 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 83
mbed_official 63:99e063d738ee 84 For WIFI_ISM43362, ignore the value of `wifi-shield` as it is already overrides per supported targets.
mbed_official 63:99e063d738ee 85
mbed_official 49:d44cac40bf15 86 For built-in Wi-Fi, ignore the value of `wifi-shield`.
mbed_official 33:12f0df4d51d7 87
mbed_official 71:a0fbcc153b55 88 1. Compile and generate binary.
mbed_official 71:a0fbcc153b55 89 For example, for `GCC`:
mbed_official 71:a0fbcc153b55 90 ```
mbed_official 71:a0fbcc153b55 91 mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2
mbed_official 71:a0fbcc153b55 92 ```
mbed_official 32:bca3f5f442b3 93
mbed_official 71:a0fbcc153b55 94 1. Open a serial console session with the target platform using the following parameters:
mbed_official 36:aa0b6789bbd2 95 * **Baud rate:** 9600
mbed_official 36:aa0b6789bbd2 96 * **Data bits:** 8
mbed_official 36:aa0b6789bbd2 97 * **Stop bits:** 1
mbed_official 36:aa0b6789bbd2 98 * **Parity:** None
mbed_official 71:a0fbcc153b55 99
mbed_official 71:a0fbcc153b55 100 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 101
mbed_official 71:a0fbcc153b55 102 1. The serial console should display a similar output to below, indicating a successful Wi-Fi connection:
mbed_official 71:a0fbcc153b55 103 ```
mbed_official 71:a0fbcc153b55 104 WiFi example
mbed_official 71:a0fbcc153b55 105
mbed_official 71:a0fbcc153b55 106 Scan:
mbed_official 71:a0fbcc153b55 107 Network: Dave Hot Spot secured: Unknown BSSID: 00:01:02:03:04:05 RSSI: -58 Ch: 1
mbed_official 71:a0fbcc153b55 108 1 network available.
mbed_official 36:aa0b6789bbd2 109
mbed_official 71:a0fbcc153b55 110 Connecting...
mbed_official 71:a0fbcc153b55 111 Success
mbed_official 36:aa0b6789bbd2 112
mbed_official 71:a0fbcc153b55 113 MAC: 00:01:02:03:04:05
mbed_official 71:a0fbcc153b55 114 IP: 192.168.0.5
mbed_official 71:a0fbcc153b55 115 Netmask: 255.255.255.0
mbed_official 71:a0fbcc153b55 116 Gateway: 192.168.0.1
mbed_official 71:a0fbcc153b55 117 RSSI: -27
mbed_official 36:aa0b6789bbd2 118
mbed_official 71:a0fbcc153b55 119 Sending HTTP request to www.arm.com...
mbed_official 71:a0fbcc153b55 120 sent 38 [GET / HTTP/1.1]
mbed_official 71:a0fbcc153b55 121 recv 64 [HTTP/1.1 301 Moved Permanently]
mbed_official 36:aa0b6789bbd2 122
mbed_official 71:a0fbcc153b55 123 Done
mbed_official 71:a0fbcc153b55 124 ```
mbed_official 0:857719181846 125
mbed_official 49:d44cac40bf15 126 ## Troubleshooting
mbed_official 0:857719181846 127
mbed_official 49:d44cac40bf15 128 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.