Hiroaki Okoshi / Mbed OS http-webserver-example-mbed-os-5-odin-w2
Committer:
Hiroaki_Okoshi
Date:
Sat Oct 09 14:23:23 2021 +0000
Revision:
0:a21b8a29df03
Sample web server via WiFi program. for mbed os 5.15

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Hiroaki_Okoshi 0:a21b8a29df03 1 # mbed-os-example-wifi #
Hiroaki_Okoshi 0:a21b8a29df03 2
Hiroaki_Okoshi 0:a21b8a29df03 3 Wi-Fi example for Mbed OS
Hiroaki_Okoshi 0:a21b8a29df03 4
Hiroaki_Okoshi 0:a21b8a29df03 5 (Note: To see this example in a rendered form you can import into the Arm Mbed Online Compiler, please see [the documentation](https://os.mbed.com/docs/mbed-os/latest/apis/wi-fi.html#wi-fi-example).)
Hiroaki_Okoshi 0:a21b8a29df03 6
Hiroaki_Okoshi 0:a21b8a29df03 7 ## Getting started with the Wi-Fi API ##
Hiroaki_Okoshi 0:a21b8a29df03 8
Hiroaki_Okoshi 0:a21b8a29df03 9 This is an example of a Wi-Fi application using the Wi-Fi APIs that [Mbed OS](https://github.com/ARMmbed/mbed-os) provides.
Hiroaki_Okoshi 0:a21b8a29df03 10
Hiroaki_Okoshi 0:a21b8a29df03 11 The program brings up the Wi-Fi and the underlying network interface and uses it to scan available networks, connects to a network and prints interface and connection details.
Hiroaki_Okoshi 0:a21b8a29df03 12
Hiroaki_Okoshi 0:a21b8a29df03 13 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.
Hiroaki_Okoshi 0:a21b8a29df03 14
Hiroaki_Okoshi 0:a21b8a29df03 15 ### Supported hardware ###
Hiroaki_Okoshi 0:a21b8a29df03 16
Hiroaki_Okoshi 0:a21b8a29df03 17 * All Mbed OS boards with build-in Wi-Fi module:
Hiroaki_Okoshi 0:a21b8a29df03 18 * [u-blox ODIN-W2](https://os.mbed.com/platforms/ublox-EVK-ODIN-W2/)
Hiroaki_Okoshi 0:a21b8a29df03 19 * [Realtek RTL8195AM](https://os.mbed.com/platforms/REALTEK-RTL8195AM/)
Hiroaki_Okoshi 0:a21b8a29df03 20 * [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).
Hiroaki_Okoshi 0:a21b8a29df03 21 * [ST DISCO_F413ZH board](https://os.mbed.com/platforms/ST-Discovery-F413H/) with integrated [ISM43362 WiFi Inventek module](https://github.com/ARMmbed/wifi-ism43362).
Hiroaki_Okoshi 0:a21b8a29df03 22 * [Advantech WISE-150](https://os.mbed.com/modules/advantech-wise-1530/)
Hiroaki_Okoshi 0:a21b8a29df03 23 * USI WM-BN-BM-22
Hiroaki_Okoshi 0:a21b8a29df03 24 * MxChip EMW3166
Hiroaki_Okoshi 0:a21b8a29df03 25 * Boards with external WiFi shields.
Hiroaki_Okoshi 0:a21b8a29df03 26 * [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)_.
Hiroaki_Okoshi 0:a21b8a29df03 27 * [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)_.
Hiroaki_Okoshi 0:a21b8a29df03 28 * [NUCLEO-F429ZI](https://os.mbed.com/platforms/ST-Nucleo-F429ZI/) with ESP8266-01 module using pins D1 and D0.
Hiroaki_Okoshi 0:a21b8a29df03 29 * 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.
Hiroaki_Okoshi 0:a21b8a29df03 30
Hiroaki_Okoshi 0:a21b8a29df03 31 #### Adding connectivity driver
Hiroaki_Okoshi 0:a21b8a29df03 32
Hiroaki_Okoshi 0:a21b8a29df03 33 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.
Hiroaki_Okoshi 0:a21b8a29df03 34
Hiroaki_Okoshi 0:a21b8a29df03 35 ```
Hiroaki_Okoshi 0:a21b8a29df03 36 mbed add <driver>
Hiroaki_Okoshi 0:a21b8a29df03 37 ```
Hiroaki_Okoshi 0:a21b8a29df03 38
Hiroaki_Okoshi 0:a21b8a29df03 39 For example adding ISM43362 driver `mbed add wifi-ism43362` or X-Nucleo-IDW01M1 driver `mbed add wifi-x-nucleo-idw01m1`
Hiroaki_Okoshi 0:a21b8a29df03 40 The ESP8266 driver is already suplied by Mbed OS.
Hiroaki_Okoshi 0:a21b8a29df03 41
Hiroaki_Okoshi 0:a21b8a29df03 42 Then pin names need to be configured as instructed in the drivers README file.
Hiroaki_Okoshi 0:a21b8a29df03 43
Hiroaki_Okoshi 0:a21b8a29df03 44 ## Getting started ##
Hiroaki_Okoshi 0:a21b8a29df03 45
Hiroaki_Okoshi 0:a21b8a29df03 46 1. Import the example.
Hiroaki_Okoshi 0:a21b8a29df03 47
Hiroaki_Okoshi 0:a21b8a29df03 48 ```
Hiroaki_Okoshi 0:a21b8a29df03 49 mbed import mbed-os-example-wifi
Hiroaki_Okoshi 0:a21b8a29df03 50 cd mbed-os-example-wifi
Hiroaki_Okoshi 0:a21b8a29df03 51 ```
Hiroaki_Okoshi 0:a21b8a29df03 52
Hiroaki_Okoshi 0:a21b8a29df03 53 1. Configure the Wi-Fi shield and settings.
Hiroaki_Okoshi 0:a21b8a29df03 54 Edit ```mbed_app.json``` to include the correct Wi-Fi shield, SSID and password:
Hiroaki_Okoshi 0:a21b8a29df03 55
Hiroaki_Okoshi 0:a21b8a29df03 56 ```json
Hiroaki_Okoshi 0:a21b8a29df03 57 {
Hiroaki_Okoshi 0:a21b8a29df03 58 "config": {
Hiroaki_Okoshi 0:a21b8a29df03 59 "wifi-ssid": {
Hiroaki_Okoshi 0:a21b8a29df03 60 "help": "WiFi SSID",
Hiroaki_Okoshi 0:a21b8a29df03 61 "value": "\"SSID\""
Hiroaki_Okoshi 0:a21b8a29df03 62 },
Hiroaki_Okoshi 0:a21b8a29df03 63 "wifi-password": {
Hiroaki_Okoshi 0:a21b8a29df03 64 "help": "WiFi Password",
Hiroaki_Okoshi 0:a21b8a29df03 65 "value": "\"PASSWORD\""
Hiroaki_Okoshi 0:a21b8a29df03 66 }
Hiroaki_Okoshi 0:a21b8a29df03 67 },
Hiroaki_Okoshi 0:a21b8a29df03 68 "target_overrides": {
Hiroaki_Okoshi 0:a21b8a29df03 69 "*": {
Hiroaki_Okoshi 0:a21b8a29df03 70 "platform.stdio-convert-newlines": true,
Hiroaki_Okoshi 0:a21b8a29df03 71 "esp8266.provide-default" : false
Hiroaki_Okoshi 0:a21b8a29df03 72 }
Hiroaki_Okoshi 0:a21b8a29df03 73 }
Hiroaki_Okoshi 0:a21b8a29df03 74 }
Hiroaki_Okoshi 0:a21b8a29df03 75 ```
Hiroaki_Okoshi 0:a21b8a29df03 76
Hiroaki_Okoshi 0:a21b8a29df03 77 For build-in WiFi, you do not need to set any `provide-default` values. Those are required
Hiroaki_Okoshi 0:a21b8a29df03 78 if you use external WiFi shield.
Hiroaki_Okoshi 0:a21b8a29df03 79
Hiroaki_Okoshi 0:a21b8a29df03 80 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```).
Hiroaki_Okoshi 0:a21b8a29df03 81
Hiroaki_Okoshi 0:a21b8a29df03 82
Hiroaki_Okoshi 0:a21b8a29df03 83 1. Compile and generate binary.
Hiroaki_Okoshi 0:a21b8a29df03 84 For example, for `GCC`:
Hiroaki_Okoshi 0:a21b8a29df03 85 ```
Hiroaki_Okoshi 0:a21b8a29df03 86 mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2
Hiroaki_Okoshi 0:a21b8a29df03 87 ```
Hiroaki_Okoshi 0:a21b8a29df03 88
Hiroaki_Okoshi 0:a21b8a29df03 89 1. Open a serial console session with the target platform using the following parameters:
Hiroaki_Okoshi 0:a21b8a29df03 90 * **Baud rate:** 9600
Hiroaki_Okoshi 0:a21b8a29df03 91 * **Data bits:** 8
Hiroaki_Okoshi 0:a21b8a29df03 92 * **Stop bits:** 1
Hiroaki_Okoshi 0:a21b8a29df03 93 * **Parity:** None
Hiroaki_Okoshi 0:a21b8a29df03 94
Hiroaki_Okoshi 0:a21b8a29df03 95 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.
Hiroaki_Okoshi 0:a21b8a29df03 96
Hiroaki_Okoshi 0:a21b8a29df03 97 1. The serial console should display a similar output to below, indicating a successful Wi-Fi connection:
Hiroaki_Okoshi 0:a21b8a29df03 98 ```
Hiroaki_Okoshi 0:a21b8a29df03 99 WiFi example
Hiroaki_Okoshi 0:a21b8a29df03 100
Hiroaki_Okoshi 0:a21b8a29df03 101 Scan:
Hiroaki_Okoshi 0:a21b8a29df03 102 Network: Dave Hot Spot secured: Unknown BSSID: 00:01:02:03:04:05 RSSI: -58 Ch: 1
Hiroaki_Okoshi 0:a21b8a29df03 103 1 network available.
Hiroaki_Okoshi 0:a21b8a29df03 104
Hiroaki_Okoshi 0:a21b8a29df03 105 Connecting...
Hiroaki_Okoshi 0:a21b8a29df03 106 Success
Hiroaki_Okoshi 0:a21b8a29df03 107
Hiroaki_Okoshi 0:a21b8a29df03 108 MAC: 00:01:02:03:04:05
Hiroaki_Okoshi 0:a21b8a29df03 109 IP: 192.168.0.5
Hiroaki_Okoshi 0:a21b8a29df03 110 Netmask: 255.255.255.0
Hiroaki_Okoshi 0:a21b8a29df03 111 Gateway: 192.168.0.1
Hiroaki_Okoshi 0:a21b8a29df03 112 RSSI: -27
Hiroaki_Okoshi 0:a21b8a29df03 113
Hiroaki_Okoshi 0:a21b8a29df03 114 Done
Hiroaki_Okoshi 0:a21b8a29df03 115 ```
Hiroaki_Okoshi 0:a21b8a29df03 116
Hiroaki_Okoshi 0:a21b8a29df03 117 ## Troubleshooting
Hiroaki_Okoshi 0:a21b8a29df03 118
Hiroaki_Okoshi 0:a21b8a29df03 119 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.
Hiroaki_Okoshi 0:a21b8a29df03 120
Hiroaki_Okoshi 0:a21b8a29df03 121 ### License and contributions
Hiroaki_Okoshi 0:a21b8a29df03 122
Hiroaki_Okoshi 0:a21b8a29df03 123 The software is provided under Apache-2.0 license. Contributions to this project are accepted under the same license. Please see contributing.md for more info.
Hiroaki_Okoshi 0:a21b8a29df03 124
Hiroaki_Okoshi 0:a21b8a29df03 125 This project contains code from other projects. The original license text is included in those source files. They must comply with our license guide.