WiFi example for mbed OS, fork from https://github.com/ARMmbed/mbed-os-example-wifi

This is an example of a Wi-Fi application using the Wi-Fi and network socket APIs that Mbed OS provides.

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.

For more information about Wi-Fi APIs, please visit the Mbed OS Wi-Fi documentation.

This example has been used on the following platforms

Committer:
group-Renesas-Electronics-Corp
Date:
Thu Feb 22 05:44:51 2018 +0000
Revision:
0:0593b97dec0b
Child:
5:01be82512f7a
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-Renesas-Electronics-Corp 0:0593b97dec0b 1 # mbed-os-example-wifi #
group-Renesas-Electronics-Corp 0:0593b97dec0b 2
group-Renesas-Electronics-Corp 0:0593b97dec0b 3 Wi-Fi example for Mbed OS
group-Renesas-Electronics-Corp 0:0593b97dec0b 4
group-Renesas-Electronics-Corp 0:0593b97dec0b 5 ## Getting started with the Wi-Fi API ##
group-Renesas-Electronics-Corp 0:0593b97dec0b 6
group-Renesas-Electronics-Corp 0:0593b97dec0b 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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 8
group-Renesas-Electronics-Corp 0:0593b97dec0b 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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 10
group-Renesas-Electronics-Corp 0:0593b97dec0b 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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 12
group-Renesas-Electronics-Corp 0:0593b97dec0b 13 ### Supported hardware ###
group-Renesas-Electronics-Corp 0:0593b97dec0b 14
group-Renesas-Electronics-Corp 0:0593b97dec0b 15 * [u-blox Odin board](https://os.mbed.com/platforms/ublox-EVK-ODIN-W2/) built-in Wi-Fi module.
group-Renesas-Electronics-Corp 0:0593b97dec0b 16 * [Realtek RTL8195AM](https://os.mbed.com/platforms/REALTEK-RTL8195AM/) built-in Wi-Fi module.
group-Renesas-Electronics-Corp 0:0593b97dec0b 17 * [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)_.
group-Renesas-Electronics-Corp 0:0593b97dec0b 18 * [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)_.
group-Renesas-Electronics-Corp 0:0593b97dec0b 19 * [NUCLEO-F429ZI](https://os.mbed.com/platforms/ST-Nucleo-F429ZI/) with ESP8266-01 module using pins D1 and D0.
group-Renesas-Electronics-Corp 0:0593b97dec0b 20 * [NUCLEO-L476RG](https://os.mbed.com/platforms/ST-Nucleo-L476RG/) with ESP8266-01 module using pins D8 and D2.
group-Renesas-Electronics-Corp 0:0593b97dec0b 21 * [GR-LYCHEE](https://os.mbed.com/platforms/Renesas-GR-LYCHEE/) with ESP32 module using pins P5_3, P3_14, P7_1 and P0_1.
group-Renesas-Electronics-Corp 0:0593b97dec0b 22 * 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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 23 *(The Mbed target board the Wi-Fi shield connects to shouldn't have any other network interface, for example Ethernet.)*
group-Renesas-Electronics-Corp 0:0593b97dec0b 24
group-Renesas-Electronics-Corp 0:0593b97dec0b 25 ESP8266 is a fallback option if the build is for unsupported platform.
group-Renesas-Electronics-Corp 0:0593b97dec0b 26
group-Renesas-Electronics-Corp 0:0593b97dec0b 27 #### Connecting the ESP8266 ####
group-Renesas-Electronics-Corp 0:0593b97dec0b 28
group-Renesas-Electronics-Corp 0:0593b97dec0b 29 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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 30
group-Renesas-Electronics-Corp 0:0593b97dec0b 31 **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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 32
group-Renesas-Electronics-Corp 0:0593b97dec0b 33 #### Connecting the X-NUCLEO-IDW0XX1 ####
group-Renesas-Electronics-Corp 0:0593b97dec0b 34
group-Renesas-Electronics-Corp 0:0593b97dec0b 35 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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 36
group-Renesas-Electronics-Corp 0:0593b97dec0b 37 ## Getting started ##
group-Renesas-Electronics-Corp 0:0593b97dec0b 38
group-Renesas-Electronics-Corp 0:0593b97dec0b 39 1. Import the example.
group-Renesas-Electronics-Corp 0:0593b97dec0b 40
group-Renesas-Electronics-Corp 0:0593b97dec0b 41 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 42 mbed import mbed-os-example-wifi
group-Renesas-Electronics-Corp 0:0593b97dec0b 43 cd mbed-os-example-wifi
group-Renesas-Electronics-Corp 0:0593b97dec0b 44 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 45
group-Renesas-Electronics-Corp 0:0593b97dec0b 46 2. Configure the Wi-Fi shield to use.
group-Renesas-Electronics-Corp 0:0593b97dec0b 47
group-Renesas-Electronics-Corp 0:0593b97dec0b 48 Edit ```mbed_app.json``` to include the correct Wi-Fi shield, SSID and password:
group-Renesas-Electronics-Corp 0:0593b97dec0b 49
group-Renesas-Electronics-Corp 0:0593b97dec0b 50 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 51 "config": {
group-Renesas-Electronics-Corp 0:0593b97dec0b 52 "wifi-shield": {
group-Renesas-Electronics-Corp 0:0593b97dec0b 53 "help": "Options are internal, WIFI_ESP8266, WIFI_IDW0XX1, WIFI_ESP32",
group-Renesas-Electronics-Corp 0:0593b97dec0b 54 "value": "internal"
group-Renesas-Electronics-Corp 0:0593b97dec0b 55 },
group-Renesas-Electronics-Corp 0:0593b97dec0b 56 "wifi-ssid": {
group-Renesas-Electronics-Corp 0:0593b97dec0b 57 "help": "WiFi SSID",
group-Renesas-Electronics-Corp 0:0593b97dec0b 58 "value": "\"SSID\""
group-Renesas-Electronics-Corp 0:0593b97dec0b 59 },
group-Renesas-Electronics-Corp 0:0593b97dec0b 60 "wifi-password": {
group-Renesas-Electronics-Corp 0:0593b97dec0b 61 "help": "WiFi Password",
group-Renesas-Electronics-Corp 0:0593b97dec0b 62 "value": "\"Password\""
group-Renesas-Electronics-Corp 0:0593b97dec0b 63 }
group-Renesas-Electronics-Corp 0:0593b97dec0b 64 },
group-Renesas-Electronics-Corp 0:0593b97dec0b 65 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 66
group-Renesas-Electronics-Corp 0:0593b97dec0b 67 Sample ```mbed_app.json``` files are provided for ESP8266 (```mbed_app_esp8266.json```), X-NUCLEO-IDW04A1 (```mbed_app_idw04a1.json```), X-NUCLEO-IDW01M1 (```mbed_app_idw01m1```) and ESP32 (```mbed_app_esp32.json```).
group-Renesas-Electronics-Corp 0:0593b97dec0b 68
group-Renesas-Electronics-Corp 0:0593b97dec0b 69 For built-in Wi-Fi, ignore the value of `wifi-shield`.
group-Renesas-Electronics-Corp 0:0593b97dec0b 70
group-Renesas-Electronics-Corp 0:0593b97dec0b 71 3. Compile and generate binary.
group-Renesas-Electronics-Corp 0:0593b97dec0b 72
group-Renesas-Electronics-Corp 0:0593b97dec0b 73 For example, for `GCC`:
group-Renesas-Electronics-Corp 0:0593b97dec0b 74
group-Renesas-Electronics-Corp 0:0593b97dec0b 75 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 76 mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2
group-Renesas-Electronics-Corp 0:0593b97dec0b 77 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 78
group-Renesas-Electronics-Corp 0:0593b97dec0b 79 4. Open a serial console session with the target platform using the following parameters:
group-Renesas-Electronics-Corp 0:0593b97dec0b 80
group-Renesas-Electronics-Corp 0:0593b97dec0b 81 * **Baud rate:** 9600
group-Renesas-Electronics-Corp 0:0593b97dec0b 82 * **Data bits:** 8
group-Renesas-Electronics-Corp 0:0593b97dec0b 83 * **Stop bits:** 1
group-Renesas-Electronics-Corp 0:0593b97dec0b 84 * **Parity:** None
group-Renesas-Electronics-Corp 0:0593b97dec0b 85
group-Renesas-Electronics-Corp 0:0593b97dec0b 86 5. 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.
group-Renesas-Electronics-Corp 0:0593b97dec0b 87
group-Renesas-Electronics-Corp 0:0593b97dec0b 88 6. The serial console should display a similar output to below, indicating a successful Wi-Fi connection:
group-Renesas-Electronics-Corp 0:0593b97dec0b 89
group-Renesas-Electronics-Corp 0:0593b97dec0b 90 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 91 WiFi example
group-Renesas-Electronics-Corp 0:0593b97dec0b 92
group-Renesas-Electronics-Corp 0:0593b97dec0b 93 Scan:
group-Renesas-Electronics-Corp 0:0593b97dec0b 94 Network: Dave Hot Spot secured: Unknown BSSID: 00:01:02:03:04:05 RSSI: -58 Ch: 1
group-Renesas-Electronics-Corp 0:0593b97dec0b 95 1 network available.
group-Renesas-Electronics-Corp 0:0593b97dec0b 96
group-Renesas-Electronics-Corp 0:0593b97dec0b 97 Connecting...
group-Renesas-Electronics-Corp 0:0593b97dec0b 98 Success
group-Renesas-Electronics-Corp 0:0593b97dec0b 99
group-Renesas-Electronics-Corp 0:0593b97dec0b 100 MAC: 00:01:02:03:04:05
group-Renesas-Electronics-Corp 0:0593b97dec0b 101 IP: 192.168.0.5
group-Renesas-Electronics-Corp 0:0593b97dec0b 102 Netmask: 255.255.255.0
group-Renesas-Electronics-Corp 0:0593b97dec0b 103 Gateway: 192.168.0.1
group-Renesas-Electronics-Corp 0:0593b97dec0b 104 RSSI: -27
group-Renesas-Electronics-Corp 0:0593b97dec0b 105
group-Renesas-Electronics-Corp 0:0593b97dec0b 106 Sending HTTP request to www.arm.com...
group-Renesas-Electronics-Corp 0:0593b97dec0b 107 sent 38 [GET / HTTP/1.1]
group-Renesas-Electronics-Corp 0:0593b97dec0b 108 recv 64 [HTTP/1.1 301 Moved Permanently]
group-Renesas-Electronics-Corp 0:0593b97dec0b 109
group-Renesas-Electronics-Corp 0:0593b97dec0b 110 Done
group-Renesas-Electronics-Corp 0:0593b97dec0b 111 ```
group-Renesas-Electronics-Corp 0:0593b97dec0b 112
group-Renesas-Electronics-Corp 0:0593b97dec0b 113 ## Troubleshooting
group-Renesas-Electronics-Corp 0:0593b97dec0b 114
group-Renesas-Electronics-Corp 0:0593b97dec0b 115 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.