The WeeFee

Dependencies:   MbedJSONValue esp32-driver WebSocketClient JSON

Committer:
Tina Quach
Date:
Tue Dec 18 11:56:26 2018 -0500
Revision:
4:1b8288ef7cbc
Parent:
0:f6b0c22b2a78
parse server messages

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DVLevine 0:f6b0c22b2a78 1 # mbed-os-example-wifi #
DVLevine 0:f6b0c22b2a78 2
DVLevine 0:f6b0c22b2a78 3 Wi-Fi example for Mbed OS
DVLevine 0:f6b0c22b2a78 4
DVLevine 0:f6b0c22b2a78 5 ## Getting started with the Wi-Fi API ##
DVLevine 0:f6b0c22b2a78 6
DVLevine 0:f6b0c22b2a78 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.
DVLevine 0:f6b0c22b2a78 8
DVLevine 0:f6b0c22b2a78 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.
DVLevine 0:f6b0c22b2a78 10
DVLevine 0:f6b0c22b2a78 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.
DVLevine 0:f6b0c22b2a78 12
DVLevine 0:f6b0c22b2a78 13 ### Supported hardware ###
DVLevine 0:f6b0c22b2a78 14
DVLevine 0:f6b0c22b2a78 15 * All Mbed OS boards with build-in Wi-Fi module:
DVLevine 0:f6b0c22b2a78 16 * [u-blox ODIN-W2](https://os.mbed.com/platforms/ublox-EVK-ODIN-W2/)
DVLevine 0:f6b0c22b2a78 17 * [Realtek RTL8195AM](https://os.mbed.com/platforms/REALTEK-RTL8195AM/)
DVLevine 0:f6b0c22b2a78 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).
DVLevine 0:f6b0c22b2a78 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).
DVLevine 0:f6b0c22b2a78 20 * [Advantech WISE-150](https://os.mbed.com/modules/advantech-wise-1530/)
DVLevine 0:f6b0c22b2a78 21 * USI WM-BN-BM-22
DVLevine 0:f6b0c22b2a78 22 * MxChip EMW3166
DVLevine 0:f6b0c22b2a78 23 * [GR-LYCHEE](https://os.mbed.com/platforms/Renesas-GR-LYCHEE/) with ESP32 module using pins P5_3, P3_14, P7_1 and P0_1.
DVLevine 0:f6b0c22b2a78 24 * Boards with external WiFi shields.
DVLevine 0:f6b0c22b2a78 25 * [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)_.
DVLevine 0:f6b0c22b2a78 26 * [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)_.
DVLevine 0:f6b0c22b2a78 27 * [NUCLEO-F429ZI](https://os.mbed.com/platforms/ST-Nucleo-F429ZI/) with ESP8266-01 module using pins D1 and D0.
DVLevine 0:f6b0c22b2a78 28 * [NUCLEO-L476RG](https://os.mbed.com/platforms/ST-Nucleo-L476RG/) with ESP8266-01 module using pins D8 and D2.
DVLevine 0:f6b0c22b2a78 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.
DVLevine 0:f6b0c22b2a78 30
DVLevine 0:f6b0c22b2a78 31 #### Adding connectivity driver
DVLevine 0:f6b0c22b2a78 32
DVLevine 0:f6b0c22b2a78 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.
DVLevine 0:f6b0c22b2a78 34
DVLevine 0:f6b0c22b2a78 35 ```
DVLevine 0:f6b0c22b2a78 36 mbed add <driver>
DVLevine 0:f6b0c22b2a78 37 ```
DVLevine 0:f6b0c22b2a78 38
DVLevine 0:f6b0c22b2a78 39 For example adding ISM43362 driver `mbed add wifi-ism43362` or ESP8266 `mbed add esp8266-driver` or X-Nucleo-IDW01M1 driver `mbed add wifi-x-nucleo-idw01m1`
DVLevine 0:f6b0c22b2a78 40
DVLevine 0:f6b0c22b2a78 41 Then pin names need to be configured as instructed in the drivers README file.
DVLevine 0:f6b0c22b2a78 42
DVLevine 0:f6b0c22b2a78 43 #### Connecting the ESP8266 ####
DVLevine 0:f6b0c22b2a78 44
DVLevine 0:f6b0c22b2a78 45 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.
DVLevine 0:f6b0c22b2a78 46
DVLevine 0:f6b0c22b2a78 47 **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.
DVLevine 0:f6b0c22b2a78 48
DVLevine 0:f6b0c22b2a78 49 #### Connecting the X-NUCLEO-IDW0XX1 ####
DVLevine 0:f6b0c22b2a78 50
DVLevine 0:f6b0c22b2a78 51 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.
DVLevine 0:f6b0c22b2a78 52
DVLevine 0:f6b0c22b2a78 53 ## Getting started ##
DVLevine 0:f6b0c22b2a78 54
DVLevine 0:f6b0c22b2a78 55 1. Import the example.
DVLevine 0:f6b0c22b2a78 56
DVLevine 0:f6b0c22b2a78 57 ```
DVLevine 0:f6b0c22b2a78 58 mbed import mbed-os-example-wifi
DVLevine 0:f6b0c22b2a78 59 cd mbed-os-example-wifi
DVLevine 0:f6b0c22b2a78 60 ```
DVLevine 0:f6b0c22b2a78 61
DVLevine 0:f6b0c22b2a78 62 1. Configure the Wi-Fi shield and settings.
DVLevine 0:f6b0c22b2a78 63 Edit ```mbed_app.json``` to include the correct Wi-Fi shield, SSID and password:
DVLevine 0:f6b0c22b2a78 64
DVLevine 0:f6b0c22b2a78 65 ```json
DVLevine 0:f6b0c22b2a78 66 {
DVLevine 0:f6b0c22b2a78 67 "config": {
DVLevine 0:f6b0c22b2a78 68 "wifi-ssid": {
DVLevine 0:f6b0c22b2a78 69 "help": "WiFi SSID",
DVLevine 0:f6b0c22b2a78 70 "value": "\"SSID\""
DVLevine 0:f6b0c22b2a78 71 },
DVLevine 0:f6b0c22b2a78 72 "wifi-password": {
DVLevine 0:f6b0c22b2a78 73 "help": "WiFi Password",
DVLevine 0:f6b0c22b2a78 74 "value": "\"PASSWORD\""
DVLevine 0:f6b0c22b2a78 75 }
DVLevine 0:f6b0c22b2a78 76 },
DVLevine 0:f6b0c22b2a78 77 "target_overrides": {
DVLevine 0:f6b0c22b2a78 78 "*": {
DVLevine 0:f6b0c22b2a78 79 "platform.stdio-convert-newlines": true,
DVLevine 0:f6b0c22b2a78 80 "esp8266.provide-default" : false
DVLevine 0:f6b0c22b2a78 81 }
DVLevine 0:f6b0c22b2a78 82 }
DVLevine 0:f6b0c22b2a78 83 }
DVLevine 0:f6b0c22b2a78 84 ```
DVLevine 0:f6b0c22b2a78 85
DVLevine 0:f6b0c22b2a78 86 For build-in WiFi, you do not need to set any `provide-default` values. Those are required
DVLevine 0:f6b0c22b2a78 87 if you use external WiFi shield.
DVLevine 0:f6b0c22b2a78 88
DVLevine 0:f6b0c22b2a78 89 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```).
DVLevine 0:f6b0c22b2a78 90
DVLevine 0:f6b0c22b2a78 91
DVLevine 0:f6b0c22b2a78 92 1. Compile and generate binary.
DVLevine 0:f6b0c22b2a78 93 For example, for `GCC`:
DVLevine 0:f6b0c22b2a78 94 ```
DVLevine 0:f6b0c22b2a78 95 mbed compile -t GCC_ARM -m UBLOX_EVK_ODIN_W2
DVLevine 0:f6b0c22b2a78 96 ```
DVLevine 0:f6b0c22b2a78 97
DVLevine 0:f6b0c22b2a78 98 1. Open a serial console session with the target platform using the following parameters:
DVLevine 0:f6b0c22b2a78 99 * **Baud rate:** 9600
DVLevine 0:f6b0c22b2a78 100 * **Data bits:** 8
DVLevine 0:f6b0c22b2a78 101 * **Stop bits:** 1
DVLevine 0:f6b0c22b2a78 102 * **Parity:** None
DVLevine 0:f6b0c22b2a78 103
DVLevine 0:f6b0c22b2a78 104 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.
DVLevine 0:f6b0c22b2a78 105
DVLevine 0:f6b0c22b2a78 106 1. The serial console should display a similar output to below, indicating a successful Wi-Fi connection:
DVLevine 0:f6b0c22b2a78 107 ```
DVLevine 0:f6b0c22b2a78 108 WiFi example
DVLevine 0:f6b0c22b2a78 109
DVLevine 0:f6b0c22b2a78 110 Scan:
DVLevine 0:f6b0c22b2a78 111 Network: Dave Hot Spot secured: Unknown BSSID: 00:01:02:03:04:05 RSSI: -58 Ch: 1
DVLevine 0:f6b0c22b2a78 112 1 network available.
DVLevine 0:f6b0c22b2a78 113
DVLevine 0:f6b0c22b2a78 114 Connecting...
DVLevine 0:f6b0c22b2a78 115 Success
DVLevine 0:f6b0c22b2a78 116
DVLevine 0:f6b0c22b2a78 117 MAC: 00:01:02:03:04:05
DVLevine 0:f6b0c22b2a78 118 IP: 192.168.0.5
DVLevine 0:f6b0c22b2a78 119 Netmask: 255.255.255.0
DVLevine 0:f6b0c22b2a78 120 Gateway: 192.168.0.1
DVLevine 0:f6b0c22b2a78 121 RSSI: -27
DVLevine 0:f6b0c22b2a78 122
DVLevine 0:f6b0c22b2a78 123 Sending HTTP request to www.arm.com...
DVLevine 0:f6b0c22b2a78 124 sent 38 [GET / HTTP/1.1]
DVLevine 0:f6b0c22b2a78 125 recv 64 [HTTP/1.1 301 Moved Permanently]
DVLevine 0:f6b0c22b2a78 126
DVLevine 0:f6b0c22b2a78 127 Done
DVLevine 0:f6b0c22b2a78 128 ```
DVLevine 0:f6b0c22b2a78 129
DVLevine 0:f6b0c22b2a78 130 ## Troubleshooting
DVLevine 0:f6b0c22b2a78 131
DVLevine 0:f6b0c22b2a78 132 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.