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:
- UBLOX Odin board built-in WiFi module
- REALTEK_RTL8195AM built-in WiFi module
- NUCLEO_F401RE with X-NUCLEO-IDW01M1 WiFi expansion board using pins D8 D2
- NUCLEO_F429ZI with ESP8266-01 module using pins D1 D0
- NUCLEO_L476RG with ESP8266-01 module using pins D8 D2
- Other mbed targets with ESP8266 module or X-NUCLEO-IDW01M1 expansion board
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.
README.md@77:b74ac6641a3e, 2018-08-31 (annotated)
- 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?
User | Revision | Line number | New 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. |