From da471dfcd1ce0ad9768736906fd17c46158830cf Mon Sep 17 00:00:00 2001 From: "pedro.minatel" Date: Fri, 5 Feb 2021 17:49:28 +0000 Subject: [PATCH] Examples README's updated on peripherals, system and wifi Updated main examples README to add missing examples folders and Getting Started links Updated wifi/fastscan example README Updated wifi examples README Updated wifi main examples README Added instructions and removed obviousness from examples README Updates on example README in peripherals, system and wifi Updates on example README in peripherals and added wave form pictures on wave_gen example Updates and review on example README Revision on unit style convention Added the getting started link for each supported version Readme review and recommended enhancements Added the default note on the wave form option info Added the ESP32-C3 support information on the temperature sensor example README Added Getting Started information for ESP32-S2 and ESP32-C3 Issue fixed on the supported target on README Resolved merge conflict --- examples/README.md | 42 +++++--- .../peripherals/gpio/generic_gpio/README.md | 74 ++++++++++++-- .../peripherals/rmt/ir_protocols/README.md | 8 +- examples/peripherals/rmt/morse_code/README.md | 10 +- .../secure_element/atecc608_ecdsa/README.md | 56 +++++++---- examples/peripherals/temp_sensor/README.md | 35 +++++-- examples/peripherals/timer_group/README.md | 8 +- examples/peripherals/wave_gen/README.md | 89 +++++++++-------- .../peripherals/wave_gen/image/sawtooth.png | Bin 0 -> 47422 bytes examples/peripherals/wave_gen/image/sine.png | Bin 0 -> 50835 bytes .../peripherals/wave_gen/image/square.png | Bin 0 -> 45087 bytes .../peripherals/wave_gen/image/triangle.png | Bin 0 -> 49953 bytes examples/system/task_watchdog/README.md | 61 +++++++++++- examples/wifi/README.md | 56 +++-------- examples/wifi/fast_scan/README.md | 91 +++++++++++++++++- .../wifi/getting_started/softAP/README.md | 31 ++++-- .../wifi/getting_started/station/README.md | 31 ++++-- examples/wifi/roaming/README.md | 36 ++++++- examples/wifi/scan/README.md | 87 ++++++++++++++++- examples/wifi/wps/README.md | 79 +++++++++++++-- 20 files changed, 617 insertions(+), 177 deletions(-) create mode 100644 examples/peripherals/wave_gen/image/sawtooth.png create mode 100644 examples/peripherals/wave_gen/image/sine.png create mode 100644 examples/peripherals/wave_gen/image/square.png create mode 100644 examples/peripherals/wave_gen/image/triangle.png diff --git a/examples/README.md b/examples/README.md index 240e270384..08822991ad 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,31 +1,43 @@ # Examples -This directory contains a range of example ESP-IDF projects. These are intended to demonstrate parts of ESP-IDF functionality, and to provide code that you can copy and adapt into your own projects. +This directory contains a range of example ESP-IDF projects. These examples are intended to demonstrate parts of the ESP-IDF functionality, and to provide code that you can copy and adapt into your own projects. # Example Layout The examples are grouped into subdirectories by category. Each category directory contains one or more example projects: -* `bluetooth/bluedroid` contains Classic BT, BLE and coex examples using default Bluedroid host stack. -* `bluetooth/nimble` contains BLE examples using NimBLE host stack. -* `bluetooth/esp_ble_mesh` contains ESP BLE Mesh examples. -* `bluetooth/hci` contains HCI transport (VHCI and HCI UART) examples -* `ethernet` contains Ethernet examples. -* `get-started` contains some very simple examples with minimal functionality. -* `mesh` contains Wi-Fi Mesh examples. -* `peripherals` contains examples showing driver functionality for the various onboard ESP32 peripherals. -* `protocols` contains examples showing network protocol interactions. -* `storage` contains examples showing data storage methods using SPI flash or external storage like the SD/MMC interface. -* `system` contains examples which demonstrate some internal chip features, or debugging & development tools. -* `wifi` contains examples of advanced Wi-Fi features. (For network protocol examples, see `protocols` instead.) -* `build_system` contains examples of build system features +* `bluetooth/bluedroid` Classic BT, BLE and coex examples using default Bluedroid host stack. +* `bluetooth/nimble` BLE examples using NimBLE host stack. +* `bluetooth/esp_ble_mesh` ESP BLE Mesh examples. +* `bluetooth/hci` HCI transport (VHCI and HCI UART) examples. +* `build_system` Examples of build system features. +* `cxx` C++ language utilization examples and experimental components. +* `ethernet` Ethernet network examples. +* `get-started` Simple examples with minimal functionality. Good start point for beginners. +* `mesh` Wi-Fi Mesh examples. +* `peripherals` Examples showing driver functionality for the various onboard ESP32 peripherals. +* `protocols` Examples showing network protocol interactions. +* `provisioning` Wi-Fi provisioning examples. +* `security` Examples about security features. +* `storage` Examples showing data storage methods using SPI flash, external storage like the SD/MMC interface and flash partitioning. +* `system` Demonstrates some internal chip features, or debugging & development tools. +* `wifi` Advanced Wi-Fi features (For network protocol examples, see `protocols` instead.) + +In addition to these examples, `commmon_components` directory contains code shared by several examples. # Using Examples +Before building an example, be sure to follow the Getting Started guide to ensure you have the required development environment. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) + + Building an example is the same as building any other project: -* Follow the Getting Started instructions which include building the "Hello World" example. * Change into the directory of the new example you'd like to build. +* Run `idf.py set-target TARGET` to select the correct chip target to build before opening the project configuration menu. By default the target is `esp32` and the options are `esp32`, `esp32s2` and `esp32c3`. * Run `idf.py menuconfig` to open the project configuration menu. Most examples have a project-specific "Example Configuration" section here (for example, to set the WiFi SSID & password to use). * `idf.py build` to build the example. * Follow the printed instructions to flash, or run `idf.py -p PORT flash`. diff --git a/examples/peripherals/gpio/generic_gpio/README.md b/examples/peripherals/gpio/generic_gpio/README.md index acdc3886af..a30c07e1b8 100644 --- a/examples/peripherals/gpio/generic_gpio/README.md +++ b/examples/peripherals/gpio/generic_gpio/README.md @@ -1,15 +1,73 @@ # Example: GPIO -This test code shows how to configure gpio and how to use gpio interrupt. +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +This test code shows how to configure GPIO and how to use it with interruption. ## GPIO functions: - * GPIO18: output - * GPIO19: output - * GPIO4: input, pulled up, interrupt from rising edge and falling edge - * GPIO5: input, pulled up, interrupt from rising edge. +| GPIO | Direction | Configuration | +| -------- | --------- | ------------------------------------------------------ | +| GPIO18 | output | | +| GPIO19 | output | | +| GPIO4 | input | pulled up, interrupt from rising edge and falling edge | +| GPIO5 | input | pulled up, interrupt from rising edge | ## Test: - * Connect GPIO18 with GPIO4 - * Connect GPIO19 with GPIO5 - * Generate pulses on GPIO18/19, that triggers interrupt on GPIO4/5 + 1. Connect GPIO18 with GPIO4 + 2. Connect GPIO19 with GPIO5 + 3. Generate pulses on GPIO18/19, that triggers interrupt on GPIO4/5 + +## How to use example + +Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. + +### Hardware Required + +* A development board with ESP32/ESP32-S2/ESP32-C3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) +* A USB cable for Power supply and programming +* Some jumper wires to connect GPIOs. + +### Configure the project + +### Build and Flash + +Build the project and flash it to the board, then run the monitor tool to view the serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) + +## Example Output + +As you run the example, you will see the following log: + +``` +I (317) gpio: GPIO[18]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (327) gpio: GPIO[19]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (337) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:1 +I (347) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:1 +Minimum free heap size: 289892 bytes +cnt: 0 +cnt: 1 +cnt: 2 +cnt: 3 +cnt: 4 +cnt: 5 +cnt: 6 +cnt: 7 +cnt: 8 +cnt: 9 +cnt: 10 +... +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/rmt/ir_protocols/README.md b/examples/peripherals/rmt/ir_protocols/README.md index bcdfcd5c7c..2f964301c6 100644 --- a/examples/peripherals/rmt/ir_protocols/README.md +++ b/examples/peripherals/rmt/ir_protocols/README.md @@ -32,7 +32,7 @@ Example connection : Open the project configuration menu (`idf.py menuconfig`). -In the `Example Connection Configuration` menu: +In the `Example Configuration` menu: * Select the infrared protocol used in the example under `Infrared Protocol` option. * Set the GPIO number used for transmitting the IR signal under `RMT TX GPIO` option. @@ -44,7 +44,11 @@ Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. (To exit the serial monitor, type ``Ctrl-]``.) -See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html) for full steps to configure and use ESP-IDF to build projects. +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) ## Example Output diff --git a/examples/peripherals/rmt/morse_code/README.md b/examples/peripherals/rmt/morse_code/README.md index cafd406826..3f799e857e 100644 --- a/examples/peripherals/rmt/morse_code/README.md +++ b/examples/peripherals/rmt/morse_code/README.md @@ -31,7 +31,7 @@ GPIO18 +----/\/\/\----+------|>|-----+ GND Open the project configuration menu (`idf.py menuconfig`). -In the `Example Connection Configuration` menu: +In the `Example Configuration` menu: * Set the GPIO number used for transmitting the IR signal under `RMT TX GPIO` optin. @@ -41,7 +41,11 @@ Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. (To exit the serial monitor, type ``Ctrl-]``.) -See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html) for full steps to configure and use ESP-IDF to build projects. +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) ## Example Output @@ -59,4 +63,4 @@ I (2814) example: Transmission complete ## Troubleshooting -For any technical queries, please open an [issue] (https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/secure_element/atecc608_ecdsa/README.md b/examples/peripherals/secure_element/atecc608_ecdsa/README.md index 4df1b89647..de326e7607 100644 --- a/examples/peripherals/secure_element/atecc608_ecdsa/README.md +++ b/examples/peripherals/secure_element/atecc608_ecdsa/README.md @@ -1,34 +1,54 @@ | Supported Targets | ESP32 | | ----------------- | ----- | -# ESP32-WROOM-32SE ECDSA sign/verify example +# ECDSA sign/verify Example with ESP32-WROOM-32SE + ## Description -This example requires [ESP32-WROOM-32SE](https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32se_datasheet_en.pdf) which has Microchip's [ATECC608A](https://www.microchip.com/wwwproducts/en/ATECC608A) (Secure Element) integrated on the module. The example performs `ECDSA sign/verify` functions on sample data using hardware private key stored in ATECC608A chip.If you want to use bare `ATECC608A` chip (Secure Element) with `ESP32-WROOM-32` module by making external connections, please refer [this](https://github.com/espressif/esp-cryptoauthlib/blob/master/esp_cryptoauth_utility/README.md#using-atecc608a-with-esp32-wroom-32) for details. -See the README.md file in the upper level examples directory for more information about examples. -## Hardware + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +This example requires [ESP32-WROOM-32SE](https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32se_datasheet_en.pdf) which has Microchip's [ATECC608A](https://www.microchip.com/wwwproducts/en/ATECC608A) (Secure Element) integrated on the module. + +The example performs `ECDSA sign/verify` functions on sample data using hardware private key stored in ATECC608A chip. If you want to use bare `ATECC608A` chip (Secure Element) with `ESP32-WROOM-32` module by making external connections, please refer [this](https://github.com/espressif/esp-cryptoauthlib/blob/master/esp_cryptoauth_utility/README.md#using-atecc608a-with-esp32-wroom-32) for details. + +## How to use example + +Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. + +### Hardware Required + To get started you will need a `ESP32-WROOM-32SE` development board which integrates Microchip’s ATECC608A CryptoAuth chip in the module. -## Configuration +* A development board with ESP32-WROOM-32SE SoC or an custom board with the `ATECC608A` IC. +* A USB cable for Power supply and programming + +### Configure the project + ATECC608A chip on ESP32-WROOM-32SE should be configured to run the example, for details on configuration of ATECC608A chip, please refer [esp_cryptoauth_utility](https://github.com/espressif/esp-cryptoauthlib/blob/master/esp_cryptoauth_utility/README.md#esp_cryptoauth_utility) -1) Set type of `ATECC608A` chip in menuconfig. +Open the project configuration menu (`idf.py menuconfig`). -* `menuconfig->Component config->esp-cryptoauthlib->Choose Type of ATECC608A chip`. -for more details refer [Find ATECC608A chip type](https://github.com/espressif/esp-cryptoauthlib/blob/master/esp_cryptoauth_utility/README.md#find-type-of-atecc608a-chip-connected-to-esp32-wroom32-se). +In the `Component config -> esp-cryptoauthlib` menu: -2) Enable `Hardware ECDSA sign/verify` in menuconfig as by enabling following. (Enabled by default for this example) +* Use `Choose the type of ATECC608A chip` to set the Crypto IC type [1]. +* Use `Enable Hardware ECDSA keys for mbedTLS` Enable Hardware ECDSA. + * Set `Enable ATECC608A sign operations in mbedTLS` to use Hardware ECDSA sign. + * Set `Enable ATECC608A verify operations in mbedTLS` to use Hardware ECDSA verify. +* Set `I2C SDA pin used to communicate with the ATECC608A`. +* Set `I2C SCL pin used to communicate with the ATECC608A`. -* `menuconfig->Component config->esp-cryptoauthlib->Enable Hardware ECDSA keys for mbedTLS` -* `menuconfig->Component config->esp-cryptoauthlib->Enable ATECC608A sign operations in mbedTLS` -* `menuconfig->Component config->esp-cryptoauthlib->Enable ATECC608A verify operations in mbedTLS` +[1]: for more details refer [Find ATECC608A chip type](https://github.com/espressif/esp-cryptoauthlib/blob/master/esp_cryptoauth_utility/README.md#find-type-of-atecc608a-chip-connected-to-esp32-wroom32-se). -## Build and Flash +### Build and Flash -Run following command to build and flash the project. -``` -idf.py -p PORT flash monitor -``` +Build the project and flash it to the board, then run the monitor tool to view the serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. (To exit the serial monitor, type ``Ctrl-]``.) -See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html) for full steps to configure and use ESP-IDF to build projects. +See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html) for all the steps to configure and use the ESP-IDF to build projects. + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/temp_sensor/README.md b/examples/peripherals/temp_sensor/README.md index e0e328f632..611c2dc700 100644 --- a/examples/peripherals/temp_sensor/README.md +++ b/examples/peripherals/temp_sensor/README.md @@ -1,9 +1,9 @@ -| Supported Targets | ESP32-S2 | -| ----------------- | -------- | +| Supported Targets | ESP32-S2 | ESP32-C3 | +| ----------------- | -------- | -------- | -# ESP32-S2 Temperature Sensor Example +# Temperature Sensor Example -The ESP32-S2 has a built-in temperature sensor. The temperature sensor module contains an 8-bit Sigma-Delta ADC and a temperature offset DAC. +The ESP32-S2 and ESP32-C3 has a built-in temperature sensor. The temperature sensor module contains an 8-bit Sigma-Delta ADC and a temperature offset DAC. The conversion relationship is the first two columns of the table below. Among them, `offset = 0`(default) is the main measurement option, and other values are extended measurement options. @@ -15,7 +15,26 @@ The conversion relationship is the first two columns of the table below. Among t | 3 | 1 | -30 ~ 50 | < 2 | | 4 | 2 | -40 ~ 20 | < 3 | -* Log output : +## How to use example + +Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. + +### Hardware Required + +* A development board with ESP32-S2 or ESP32-C3 SoC (e.g., ESP32-S2-Saola-1, ESP32-S2-DevKitM-1, ESP32-C3-DevKitM-1, etc.) +* A USB cable for power supply and programming + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) for full steps to configure and use ESP-IDF to build projects. + +## Example Output ``` I (243) TempSensor: Initializing Temperature sensor @@ -27,4 +46,8 @@ I (2253) TempSensor: Temperature out celsius 26.848801°C I (3253) TempSensor: Temperature out celsius 26.848801°C I (4253) TempSensor: Temperature out celsius 27.287399°C I (5253) TempSensor: Temperature out celsius 27.287399°C -``` \ No newline at end of file +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/timer_group/README.md b/examples/peripherals/timer_group/README.md index d407c987ac..f6a8350dd6 100644 --- a/examples/peripherals/timer_group/README.md +++ b/examples/peripherals/timer_group/README.md @@ -15,7 +15,11 @@ Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. (To exit the serial monitor, type ``Ctrl-]``.) -See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html) for full steps to configure and use ESP-IDF to build projects. +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) ## Example Output @@ -57,4 +61,4 @@ Time : 0.00398480 s ## Troubleshooting -For any technical queries, please open an [issue] (https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/wave_gen/README.md b/examples/peripherals/wave_gen/README.md index cb6f0d46cf..9feefb4c48 100644 --- a/examples/peripherals/wave_gen/README.md +++ b/examples/peripherals/wave_gen/README.md @@ -1,13 +1,13 @@ | Supported Targets | ESP32 | | ----------------- | ----- | -# Wave generator Example +# Wave Generator Example -(See the README.md file in the upper level 'examples' directory for more information about examples.) +(See the README.md file in the upper level 'examples' directory for more information about examples) This example demonstrates how to implement a software controlled signal generator by utilizing the DAC and Timer Group drivers. All waveforms demonstrated in this example are generated by software. -Users can connect DAC output channel to their devices and use it as an simple analog signal output source. +Users can connect DAC output channel to their devices and use it as a simple analog signal output source. ## How to use this example @@ -15,82 +15,76 @@ Users can connect DAC output channel to their devices and use it as an simple an * A development board with ESP32 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) * A USB cable for power supply and programming -* A bunch of cables -* Target device +* Target device or oscilloscope (not required) -Make sure DAC output pin which is GPIO25 if channel 1 set, GPIO26 if channel 2 set, be connected to target device correctly. +Make sure the DAC output pin (which is the GPIO25 if channel 1 set, GPIO26 if channel 2 set) is connected to the target device correctly. ### Configure the project -Under example folder, right click and select 'open terminal here' -Execute following statements in terminal: +Open the project configuration menu (`idf.py menuconfig`). -``` -idf.py menuconfig -``` +In the `Example Configuration` menu: -In `Example Configuration`, set the following options: - -#### DAC channel Num - -ESP32 DAC contains two channels: - * **DAC_CHANNEL_1 (GPIO25), selected by default.** - * DAC_CHANNEL_2 (GPIO26) - -#### Wave form - -This example demonstrates one of the following waveforms: -* **Sine, selected by default.** -* Triangle -* Sawtooth -* Square +* Use `DAC Channel Num` to select the DAC number. +* Use `Waveform` to select the waveform type. + * Select `Sine` (*default*), `Triangle`, `Sawtooth` or `Square` wave type. +* Select `Wave frequency` from the available range. +* Set the `Enable output voltage log` if you want to print the log in the terminal. #### Wave frequency -About this option: +For this example, the range of frequency is from 1 kHz to 17 kHz. **3 kHz is selected by default.** -This signal generator has a range of frequency is 1kHz to 17kHz. **3kHz selected by default.** +If you modify the frequency, you will change the number of DAC output points. This will affect the smoothness of the curve as well. +Each output point value is calculated by the DAC resolution of 8-bits (0~255). All of these raw values are stored in an array. -Modify the frequency will change the number of DAC output points. That will affect the smoothness of curve as well. Those output points are used to calculate the raw value(0~255) of each output point. All of these raw value are stored in an array. - -Based on the given frequency, the number of DAC output points for each cycle can be caluculated by following formula: +Based on the given frequency, the number of DAC output points for each cycle can be calculated through the following formula: ```num_of_output_points = 1000000(us)/(7 us * frequency)``` -For example, with high frequency, 20kHz will results in generating only 10 output points, the curve will be sharp and zigzag. +For example, with high frequency, 20 kHz will generate only 10 output points; the curve will be edgy. -On the contrary, 500 Hz, low frequency relatively, will results in many DAC output points and the array cannot stores so many values that it will causes array overboundary. +On the other hand, 500 Hz, a relative low frequency, will result in many DAC output points and the array will not be able to store all of the generated data. -In short, there will be less output points per cycle in higher frequency, and more points in lower frequency. +Thus, there will be less output points per cycle in higher frequency, and more points in lower frequency. -After got the raw value, the real output voltage can be calculated through following formula (VDD is 3.3V): +After the raw value calculation, the real output voltage can be converted through the following formula (VDD is 3.3 V): ```points_voltage = (VDD * DAC_OUTPUT / 255)``` -The voltage is in range of 0~3300mV. +The voltage is within the range of 0~3300 mV. #### Enable output voltage log **Disabled selected by default.** -If enabled, expected voltage of each points will be shown in terminal. It's intuitive for debugging and testing. If output example is needed, read **Example Output** chapter below. +If enabled, the expected voltage of each point will be printed on the terminal. ### Build and Flash -After configure step is done, build project and flash it to the board: -``` -$ idf.py -p PORT flash monitor -``` +Build the project and flash it to the board, then run the monitor tool to view the serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. (To exit the serial monitor, type ``Ctrl-]``.) -See the `Getting Started Guide` for full steps to configure and use ESP-IDF to build projects. +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) ## Example Output -If oscilloscope is available, the target wave will show on oscilloscope after running this example. -Additionally, if more specific output voltage information is needed, run menuconfig and set "Enable print output voltage" to "Enabled". Then, more information will show as log in terminal. +If an oscilloscope is available, the target wave will be displayed in it after running this example. -For example, set wave frequency, waveform to 3kHz and sine respectively, and also enable print output voltage option. The output information will show in log in terminal as following: +#### Sine: +![Sine](image/sine.png) +#### Triangle: +![Triangle](image/triangle.png) +#### Sawtooth: +![Sawtooth](image/sawtooth.png) +#### Square: +![Square](image/square.png) + +The output log will be shown in the terminal as the following (if `Enable output voltage log` is enabled): ``` I (318) Wave generator: DAC output channel: 1 @@ -112,4 +106,7 @@ I (1338) Wave generator: Output voltage(mV): 3183 .... ``` -`Output voltage` in log means real voltage, in mV, which is output through GPIO by device. \ No newline at end of file + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/wave_gen/image/sawtooth.png b/examples/peripherals/wave_gen/image/sawtooth.png new file mode 100644 index 0000000000000000000000000000000000000000..20d6c38c324652984460859fb1d761261c181f82 GIT binary patch literal 47422 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A#K6FCDRtf=1_lP664!_l$I_CF{33=R zPj`PGsJI|VJUG9!C^?nEB{)ig?g?@8j?8=^6}Cx1-q8 z#WAFU@$FviIjYAe+TL++IFQhAkfE88jfstkjake@z#zil0lyRnhlGTV!H5AYVNM7xu*Q8yng#)C1oT3d1qEx#jdaZ{P5&7 z>F6HD*j}KACq#Ik$yMr@ZL!^wMXoi)qekY_w@e?OV4OqQ*Isyr>^Ix_o-*-uIcD-slWgC zOW)pWY=1s2y!_o`m+-Q=8c9_bJXmCMIih$LU)|`<_9%M({=ges?mra}{xWOhu@|=s zChufB=Jo0C+V>6f!vDV)o$>cUxcr&F49pWI-0wZHkFD4*^kIib$+hclhZ?TgCjFN4 zR8Qtv@G$&nf|Q@ZUjsf%mMjyq#C_GZuj|bk-xMhPS?hnk?3USEeuGallXI(g$|cWr z{dfC(zR>*j|4Kgp+HNlYZ&LKrq?%9jA5Q6BaC}2~{r-c`k8d|$!PU8f_pI&jnZmy} z{Cf2BZ2JEFKcDG)chv~|`E6}($HCC~^6Ayp;l)cuquGU=bSKoFxx1$E<{H-}9kUl4 zx#(wq=DWxA@@Bi|!?){ayzq?lO zceMv|utxfti{Ixw+{Sozj*5bp*}d0K{y*Gqp8xO5lAL|NUp;$$UfynkY1BuBplP@H z^AlbNT{#f6LVM2oBqc2uK|6yNe;#eUE!fLwTL0^}D(k8~O@kF1YZyAxS4Mw*Y?X4h zJAR)>eO}!z&bkSzb)MgoFI}}-8kMkiYVGbH-aJTZIujm-WhuOzOCdAm0VzhCo8@xqhYcPB7* ztxC0!V+}j}YpvGVhW%d)jTcUw@$LPF{QZAkoXXs+Wt?W%uUE`p?>=J z{>Rxwl(Q|5@zC#UE0;OaQcFM2mc239A6vq@6hC+sL6(`ZPNlK zt<&dt^hRpB0>iXl$KJYcx7a-Wry%Fj=B@6xI~Lx%^pR8AgTw!{oy?Dq7lY1xHz+*K zwrhdw5{J^1-uF`&WZh=7ZOXWOA@m}rbI#j|9sq( zwQK9XiJL6Eyj1tTGtaFFxeDEXS`HjKsj_PR5lJ1hKWlf{+g6<}lQ~w*D&A~u_~Eg9zT#SgWk1^Pt`uD@#`7en zwlnj;!UmD4``BC0n)~k+U*wxS(=y9mZEZGxu9Q{kjLnw1om|GprA&Vu{;ROziiWyW zQsAin9xDEFFxNz1l5yl>sOb=FSU^7f8z zt6K9fx8*OQR~Fpj4FC0q|4;nmr2qHj?as+2yqS^LZRKw*In&_7wXXD=r<)VHj(~hM zY1fX%77IhCDM>e2S?qZl4j!4I_*-zVx#N30s=KKCW)f0nvIo)r*v`$*T+|=a4oNY@>-!AlZUd~gt$nx$Y zg^zPDbwA4QaXJ^VxUPPOYr@OGeO%5+64gIgS z8)JUN@2e4ti28Q&+4K7BwaeNS5`W(|YmRhbcHNR0Q@Y9Neu2vp`3;)1_+i8DF{KEgO-3uRWxxQO`qx_R8S|4mRdam9%a$Z)DH)M5grfYS^i~SvbChy)Nsm>L`b?bT47KK^9^eWNZG{@D((7w6U;R2u4OgZD0 zZ91Q}9+>pm`B&(Co8%{3N!%e|VZ6f0L%r+bO5C_9;JHC+#8ktD$mziu^XW8fc!nvq9Bo{iS7% z61Pl}&Xw#Adez}k_-aW9~_(il&Q`QSMT3W;(0TT(I??%^^5w4 zO~rD4e${&q3r0Vg^6j_Wlw(=zzWlCc4ttURIE(-6I>CS8;J&rClV<-AySM4Ych+m{)Aijs?yZx%Vt(u8 z{eY$ClLNh9&c0K4dis6`^^ZN`JaNCS=UPUtkePTcxu<(g<$Ja7%zJzMb>h6{zK_`O z{5q5OX}dQ}A1)T1`EFs`yY|&y&ZI9|xl&dNFQzbvyu1`~`NLxFUHv}agG*YI*lqiQ z*Z(T@Dt4^Da8l7hvv2KryFb1LXXYF`kS2Lx$b3mhZjyu;Z`7ayjl4 z(fj>f1%oBrruQW}=WKKn{#Rhnp<}wj z(!(f}kDjdyJj*D>l}K7*tBV zc(`QBd+~ndwL(EUA%~lu6h^weFnpHyxjLrx{&$;au|Hqu9IKjY#(Twec3au2VAlz?2v`d zY8Q76c`|*un;^x|+0gd5`iZF) zOGf13ADV4$n{M=5TjW%n-u8V5*WvFeOl8{=_j=7{d$q*(@han1mf3rSCJL?0=6mMV zz;{{hewwOA(lkD2hQEDhVnJRDRqILX>ME_J=xU`yAN9v@} zduyGle5I?0mF4e7-CC*5>Go=s%M{7FR}D4J)itC;n&s! zPD)2);ye6%g;u&TG7A%oS$opv2Dy4ev|MVyr{eiJd6EA{pF((l%Oi+7#ae)Mtu z=1CD;%n2_f-nOq@c*-`yD&n?P;P0)uhKCxSx!gYH&tE6gxODjzwV2zMhF1697zd9=2CPAN*_VGC+9Kj(b@ zVbMan*{vQ|n13#vF2SJG_%KG^uP^^mI z-?a;a5?(TF?rrQfelX|YrC_Tz8+Em5+5g@eK)m?!y50nd)&7TBHtzg0PxYPe>>Yc` znR%*0wkiF-RaB&@bo<)d>ui6YSbw&y;!xO-W5`x^>cHVS=WqY|vgQ2!2%Vy6o+rJg z2Db~g%kRkfblZIIS*e8^74qz6Y}Z*Ee=mDK=gsR?TVw=p?yB0p&#STYgkpi^rmvF? z9{lANf4$xJw}i3vr|0i8b9YGdXMbzEwj*|Ro-Xr@U&X2M(Fb34pV->c({F!6V2f

Rfl8HMf4{+Ad-elg>wdIxc@@jVs#C0y_ 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 O7(8A5T-G@yGywpQ;bp4; literal 0 HcmV?d00001 diff --git a/examples/peripherals/wave_gen/image/sine.png b/examples/peripherals/wave_gen/image/sine.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5a3177e39f8980b9e506beaa54b01b8f972d81 GIT binary patch literal 50835 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 DrwgiZ literal 0 HcmV?d00001 diff --git a/examples/peripherals/wave_gen/image/square.png b/examples/peripherals/wave_gen/image/square.png new file mode 100644 index 0000000000000000000000000000000000000000..57535395a0144428e8b11cc6bd021b27a8052a70 GIT binary patch literal 45087 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

Ox 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 TI>niRfq}u()z4*}Q$iB}Xg;DH literal 0 HcmV?d00001 diff --git a/examples/peripherals/wave_gen/image/triangle.png b/examples/peripherals/wave_gen/image/triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..b742ece1478ac0a6b3b92811da13afe297a0356c GIT binary patch literal 49953 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%0D@0Q${r9Uq&ebUvY=X-nm{5xhl%T#|g&UYx9 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 Y;`. -Program should run without error. Comment out "esp_task_wdt_feed()" to observe -a watchdog timeout. +### Hardware Required +* A development board with ESP32/ESP32-S2/ESP32-C3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) +* A USB cable for Power supply and programming + +### Configure the project + +Program should run without error. Comment out `esp_task_wdt_reset()` to observe a watchdog timeout. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) + +## Example Output + +As you run the example, you will see the following log: + +With `esp_task_wdt_reset()`: + +``` +I (0) cpu_start: Starting scheduler on APP CPU. +Initialize TWDT +Delay for 10 seconds +Unsubscribing and deleting tasks +Complete +``` + +Without `esp_task_wdt_reset()`: +``` +I (0) cpu_start: Starting scheduler on APP CPU. +Initialize TWDT +Delay for 10 seconds +E (6316) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time: +E (6316) task_wdt: - reset task (CPU 0) +E (6316) task_wdt: - reset task (CPU 1) +E (6316) task_wdt: Tasks currently running: +E (6316) task_wdt: CPU 0: IDLE +E (6316) task_wdt: CPU 1: IDLE +E (6316) task_wdt: Print CPU 0 (current core) backtrace + +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/wifi/README.md b/examples/wifi/README.md index 9879ea3efc..d425c186de 100644 --- a/examples/wifi/README.md +++ b/examples/wifi/README.md @@ -1,48 +1,24 @@ # Wi-Fi Examples -Including some examples about wifi. +This directory contains a range of examples ESP-IDF projects. These are intended to demonstrate the Wi-Fi functionality, and to provide code that you can copy and adapt into your own projects. -## wpa2_enterprise +# Example Layout -Show how ESP32 connects to AP with wpa2 enterprise encryption. +The examples are grouped into sub-directories by category. Each category directory contains one or more example projects: -See the [README.md](./wpa2_enterprise/README.md) file in the project [wpa2_enterprise](./wpa2_enterprise/). - -## power_save - -Show how to use power save mode of wifi. - -See the [README.md](./power_save/README.md) file in the project [power_save](./power_save/). - -## wps(Wifi Protected Setup) - -shows how to use wps(Wifi Protected Setup). - -See the [README.md](./wps/README.md) file in the project [wps](./wps/). - -## espnow - -shows how to use espnow. - -See the [README.md](./espnow/README.md) file in the project [espnow](./espnow/). - -## fast_scan - -Show how to use fast scan while connecting to an AP. - -See the [README.md](./fast_scan/README.md) file in the project [fast_scan](./fast_scan/). - -## scan - -Show how to scan for all the available APs. - -See the [README.md](./scan/README.md) file in the project [scan](./scan/). - -## FTM(Fine Timing Measurement) - -Shows how to use FTM(Fine Timing Measurement). - -See the [README.md](./ftm/README.md) file in the project [ftm](./ftm/). +* `espnow` is the connectionless Wi-Fi communication protocol. +* `fast_scan` shows how to use fast scan while connecting to an AP.. +* `ftm` is a how to use FTM (Fine Timing Measurement) feature to calculate distance between devices. +* `getting_started` contains the basic examples for using Wi-Fi in STA and AP mode. +* `iperf` shows the common performance measurements for two ESP running this example. +* `power_save` contains a how to use power save mode of Wi-Fi. +* `roaming` contains a example using 802.11k and 802.11v APIs. +* `scan` shows how to scan for all the available APs. +* `simple_sniffer` demonstrates basic usage of WiFi sniffer mode by saving packets into SD card with pcap format. +* `smart_config` shows how ESP connects to a target AP with ESPTOUCH. +* `wifi_easy_connect` shows how to configure an ESP device as an enrollee using Device Provisioning Protocol (DPP). +* `wpa2_enterprise` connects to AP with WPA2 enterprise encryption. +* `wps` contains a how to use the Wi-Fi Protected Setup protocol. # More diff --git a/examples/wifi/fast_scan/README.md b/examples/wifi/fast_scan/README.md index d6f21d2953..d2b5970c83 100644 --- a/examples/wifi/fast_scan/README.md +++ b/examples/wifi/fast_scan/README.md @@ -1,11 +1,94 @@ -# Wifi Fast Scan Example +# Wi-Fi Fast Scan Example -This example shows how to use the scan functionality of the Wi-Fi driver of ESP32 for connecting to an AP. +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +This example shows how to use the scan functionality of the Wi-Fi driver of ESP for connecting to an AP. Two scan methods are supported: fast scan and all channel scan. -* fast scan: in this mode, scan finishes right after a matching AP is detected, even if channels are not completely scanned. You can set thresholds for signal strength, as well as select desired authentication modes provided by the AP's. The Wi-Fi driver will ignore AP's that fail to meet mentioned criteria. +* `fast scan`: in this mode, scan finishes right after a matching AP is detected, even if channels are not completely scanned. You can set thresholds for signal strength, as well as select desired authentication modes provided by the AP's. The Wi-Fi driver will ignore AP's that fail to meet mentioned criteria. -* all channel scan: scan will end only after all channels are scanned; the Wi-Fi driver will store 4 of the fully matching AP's. Sort methods for AP's include rssi and authmode. After the scan, the Wi-Fi driver selects the AP that fits best based on the sort. +* `all channel scan`: scan will end only after all channels are scanned; the Wi-Fi driver will store 4 of the fully matching AP's. Sort methods for AP's include rssi and authmode. After the scan, the Wi-Fi driver selects the AP that fits best based on the sort. After the scan, the Wi-Fi driver will try to connect. Because it needs to to allocate precious dynamic memory to store matching AP's, and, most of the cases, connect to the AP with the strongest reception, it does not need to record all the AP's matched. The number of matches stored is limited to 4 in order to limit dynamic memory usage. Among the 4 matches, AP's are allowed to carry the same SSID name and all possible authentication modes - Open, WEP, WPA and WPA2. + +## How to use example + +Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. + +### Hardware Required + +* A development board with ESP32/ESP32-S2/ESP32-C3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) +* A USB cable for Power supply and programming + +### Configure the project + +Open the project configuration menu (`idf.py menuconfig`). + +In the `Example Configuration` menu: + +* Use `WiFi SSID` to set the SSID. +* Use `WiFi Password` to set the password. + +Optional: If you need, change the other options according to your requirements. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) + +## Example Output + +As you run the example, you will see the following log: + +``` +I (616) wifi:wifi firmware version: 6bff005 +I (616) wifi:wifi certification version: v7.0 +I (616) wifi:config NVS flash: enabled +I (616) wifi:config nano formating: disabled +I (626) wifi:Init data frame dynamic rx buffer num: 32 +I (626) wifi:Init management frame dynamic rx buffer num: 32 +I (636) wifi:Init management short buffer num: 32 +I (636) wifi:Init dynamic tx buffer num: 32 +I (646) wifi:Init static rx buffer size: 1600 +I (646) wifi:Init static rx buffer num: 10 +I (646) wifi:Init dynamic rx buffer num: 32 +I (656) wifi_init: rx ba win: 6 +I (656) wifi_init: tcpip mbox: 32 +I (666) wifi_init: udp mbox: 6 +I (666) wifi_init: tcp mbox: 6 +I (666) wifi_init: tcp tx win: 5744 +I (676) wifi_init: tcp rx win: 5744 +I (676) wifi_init: tcp mss: 1440 +I (686) wifi_init: WiFi IRAM OP enabled +I (686) wifi_init: WiFi RX IRAM OP enabled +I (696) phy_init: phy_version 4660,0162888,Dec 23 2020 +I (796) wifi:mode : sta (xx:xx:xx:xx:xx:xx) +I (796) wifi:enable tsf +I (806) wifi:new:<8,1>, old:<1,0>, ap:<255,255>, sta:<8,1>, prof:1 +I (806) wifi:state: init -> auth (b0) +I (826) wifi:state: auth -> assoc (0) +I (836) wifi:state: assoc -> run (10) +I (876) wifi:connected with SSID, aid = 1, channel 8, 40U, bssid = xx:xx:xx:xx:xx:xx +I (876) wifi:security: WPA2-PSK, phy: bgn, rssi: -56 +I (886) wifi:pm start, type: 1 + +I (966) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +W (1106) wifi:idx:0 (ifx:0, xx:xx:xx:xx:xx:xx), tid:0, ssn:0, winSize:64 +I (2086) scan: got ip:192.168.68.110 +I (2086) esp_netif_handlers: sta ip: 192.168.68.110, mask: 255.255.255.0, gw: 192.168.68.1 + +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/wifi/getting_started/softAP/README.md b/examples/wifi/getting_started/softAP/README.md index f5680275e3..b270725ed1 100644 --- a/examples/wifi/getting_started/softAP/README.md +++ b/examples/wifi/getting_started/softAP/README.md @@ -1,29 +1,36 @@ -# WiFi softAP example +# Wi-Fi SoftAP Example (See the README.md file in the upper level 'examples' directory for more information about examples.) +This example shows how to use the Wi-Fi SoftAP functionality of the Wi-Fi driver of ESP for serving as an Access Point. ## How to use example ### Configure the project -``` -idf.py menuconfig -``` +Open the project configuration menu (`idf.py menuconfig`). -* Set WiFi SSID and WiFi Password and Maximal STA connections under Example Configuration Options. +In the `Example Configuration` menu: + +* Set the Wi-Fi configuration. + * Set `WiFi SSID`. + * Set `WiFi Password`. + +Optional: If you need, change the other options according to your requirements. ### Build and Flash -Build the project and flash it to the board, then run monitor tool to view serial output: +Build the project and flash it to the board, then run the monitor tool to view the serial output: -``` -idf.py -p PORT flash monitor -``` +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. (To exit the serial monitor, type ``Ctrl-]``.) -See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) ## Example Output @@ -38,3 +45,7 @@ I (26457) wifi: station: 70:ef:00:43:96:67 join, AID=1, bg, 20 I (26467) wifi softAP: station:70:ef:00:43:96:67 join, AID=1 I (27657) tcpip_adapter: softAP assign IP to station,IP is: 192.168.4.2 ``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/wifi/getting_started/station/README.md b/examples/wifi/getting_started/station/README.md index e46c3459be..a778c269a1 100644 --- a/examples/wifi/getting_started/station/README.md +++ b/examples/wifi/getting_started/station/README.md @@ -1,29 +1,36 @@ -# WiFi station example +# Wi-Fi Station Example (See the README.md file in the upper level 'examples' directory for more information about examples.) +This example shows how to use the Wi-Fi Station functionality of the Wi-Fi driver of ESP for connecting to an Access Point. ## How to use example ### Configure the project -``` -idf.py menuconfig -``` +Open the project configuration menu (`idf.py menuconfig`). -* Set WiFi SSID and WiFi Password and Maximum retry under Example Configuration Options. +In the `Example Configuration` menu: + +* Set the Wi-Fi configuration. + * Set `WiFi SSID`. + * Set `WiFi Password`. + +Optional: If you need, change the other options according to your requirements. ### Build and Flash -Build the project and flash it to the board, then run monitor tool to view serial output: +Build the project and flash it to the board, then run the monitor tool to view the serial output: -``` -idf.py -p PORT flash monitor -``` +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. (To exit the serial monitor, type ``Ctrl-]``.) -See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) ## Example Output Note that the output, in particular the order of the output, may vary depending on the environment. @@ -105,3 +112,7 @@ I (8249) wifi station: connect to the AP fail I (10299) wifi station: connect to the AP fail I (10299) wifi station: Failed to connect to SSID:myssid, password:mypassword ``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/wifi/roaming/README.md b/examples/wifi/roaming/README.md index 66bf33180a..37e83407fe 100644 --- a/examples/wifi/roaming/README.md +++ b/examples/wifi/roaming/README.md @@ -1,11 +1,38 @@ # Roaming Example +(See the README.md file in the upper level 'examples' directory for more information about examples.) + This example demonstrate a roaming example using 11k and 11v APIs. +## How to use example + +Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. + +### Hardware Required + +* A development board with ESP32/ESP32-S2/ESP32-C3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) +* A USB cable for Power supply and programming + +### Build and Flash + +Build the project and flash it to the board, then run the monitor tool to view the serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) + +## Example Output + All the logs are taken after debug enabled: Beacon request: - +``` I (11125) wpa: scan issued at time=7579442263 I (11125) wpa: BSS: Add new id 1 BSSID b6:fb:e4:4d:6e:22 SSID 'ESPTest' chan 1 I (11135) wpa: BSS: Add new id 2 BSSID d6:fb:e4:4d:6e:22 SSID 'ESPDedicated' chan 1 @@ -21,9 +48,11 @@ I (12485) wpa: BSS: Add new id 11 BSSID b4:fb:e4:4d:7c:89 SSID 'ESPIndia' chan 1 I (12825) wpa: scan done received I (12845) wpa: action frame sent I (12845) wpa: action frame sent +``` Sta's moving from one AP to another on BTM request: +``` I (379479) wpa: WNM: RX action 7 from 50:3e:aa:26:35:42 I (379479) wpa: WNM: BSS Transition Management Request: dialog_token=1 request_mode=0x1 disassoc_timer=0 validity_interval=1 I (379489) wpa: WNM: Neighbor report tag 52 @@ -56,3 +85,8 @@ I (384729) wifi:pm start, type: 1 I (384789) wifi:AP's beacon interval = 102400 us, DTIM period = 2 I (385609) esp_netif_handlers: sta ip: 192.168.4.2, mask: 255.255.255.0, gw: 192.168.4.1 +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/wifi/scan/README.md b/examples/wifi/scan/README.md index 0fad7f9c1b..28feace27c 100644 --- a/examples/wifi/scan/README.md +++ b/examples/wifi/scan/README.md @@ -1,5 +1,88 @@ -# Wifi SCAN Example +# Wi-Fi Scan Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) This example shows how to scan for available set of APs. -* The SCAN_LIST_SIZE parameter needs to be set from the example configuration menu. It represents maximum number of scan list entries that driver can populate. \ No newline at end of file +## How to use example + +Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. + +### Hardware Required + +* A development board with ESP32/ESP32-S2/ESP32-C3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.). +* A USB cable for Power supply and programming. + +### Configure the project + +Open the project configuration menu (`idf.py menuconfig`). + +In the `Example Configuration` menu: + +* Set the Example configuration. + * Use `Max size of scan list` to set the maximum nunber of access points in the list. + +### Build and Flash + +Build the project and flash it to the board, then run the monitor tool to view the serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) + +## Example Output + +As you run the example, you will see the following log: + +``` +I (443) wifi:wifi firmware version: 6bff005 +I (443) wifi:wifi certification version: v7.0 +I (443) wifi:config NVS flash: enabled +I (443) wifi:config nano formating: disabled +I (453) wifi:Init data frame dynamic rx buffer num: 32 +I (453) wifi:Init management frame dynamic rx buffer num: 32 +I (463) wifi:Init management short buffer num: 32 +I (463) wifi:Init dynamic tx buffer num: 32 +I (473) wifi:Init static tx FG buffer num: 2 +I (473) wifi:Init static rx buffer size: 1600 +I (473) wifi:Init static rx buffer num: 10 +I (483) wifi:Init dynamic rx buffer num: 32 +I (483) wifi_init: rx ba win: 6 +I (493) wifi_init: tcpip mbox: 32 +I (493) wifi_init: udp mbox: 6 +I (493) wifi_init: tcp mbox: 6 +I (503) wifi_init: tcp tx win: 5744 +I (503) wifi_init: tcp rx win: 5744 +I (513) wifi_init: tcp mss: 1440 +I (513) wifi_init: WiFi IRAM OP enabled +I (513) wifi_init: WiFi RX IRAM OP enabled +I (533) phy_init: phy_version 300,6e46ba7,Jan 25 2021 +I (683) wifi:set rx active PTI: 0, rx ack PTI: 0, and default PTI: 0 +I (683) wifi:mode : sta (7c:df:a1:40:23:84) +I (683) wifi:enable tsf +I (2783) scan: Total APs scanned = 17 +I (2783) scan: SSID IoTNetwork +I (2783) scan: RSSI -50 +I (2783) scan: Authmode WIFI_AUTH_WPA2_PSK +I (2783) scan: Pairwise Cipher WIFI_CIPHER_TYPE_CCMP +I (2793) scan: Group Cipher WIFI_CIPHER_TYPE_CCMP +I (2793) scan: Channel 5 + +I (2883) scan: SSID TP-Link_6872 +I (2883) scan: RSSI -70 +I (2883) scan: Authmode WIFI_AUTH_WPA_WPA2_PSK +I (2893) scan: Pairwise Cipher WIFI_CIPHER_TYPE_CCMP +I (2893) scan: Group Cipher WIFI_CIPHER_TYPE_CCMP +I (2903) scan: Channel 11 +... +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/wifi/wps/README.md b/examples/wifi/wps/README.md index 2efd12bc92..eb5b051cd8 100644 --- a/examples/wifi/wps/README.md +++ b/examples/wifi/wps/README.md @@ -1,11 +1,78 @@ -# Wifi WPS Example +# Wi-Fi WPS Example -This example shows how to use wps enrollee in esp32. +(See the README.md file in the upper level 'examples' directory for more information about examples.) -Now we support to use enrollee feature in STA and APSTA mode. +This example shows how to use WPS enrollee in ESP. The WPS protocol simplifies the process of connecting to a Wi-Fi router. -* PBC_MODE: Start esp32 and press the wps button on router, Then esp32 will get the ssid&password by wps PBC mode. +## How to use example -* PIN_MODE: Start esp32, It will enter wps mode and you'll see a pin code showing by COM. Enter this pin code in router and the esp32 can get ssid&password by wps PIN mode. +Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. -More info in the code [wps.c](./main/wps.c). +### Hardware Required + +* A development board with ESP32/ESP32-S2/ESP32-C3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) +* A USB cable for Power supply and programming + +### Configure the project + +Open the project configuration menu (`idf.py menuconfig`). + +In the `Example Configuration` menu: + +* Use `WPS mode` to select the type. +* Select `PBC`, `PIN` or `disable`. + +In `PBC` mode, the ESP will wait for the WPS initialization (usually by pressing WPS button on the Wi-Fi router) and then will connect to the router. + +In `PIN` mode, the ESP will enter the WPS mode and you'll see a pin code on the terminal. Enter this pin code in your router and then the ESP will connect to it. + +(See your router manual and configuration for WPS compatibility.) + +### Build and Flash + +Build the project and flash it to the board, then run the monitor tool to view the serial output: + +Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. + +* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-S2](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html) +* [ESP-IDF Getting Started Guide on ESP32-C3](https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/get-started/index.html) + + +## Example Output + +As you run the example, you will see the following log: + +``` +I (814) example_wps: start wps... +I (814) example_wps: WIFI_EVENT_STA_START +I (7304) wifi:new:<5,1>, old:<1,0>, ap:<255,255>, sta:<5,1>, prof:1 +I (8084) wifi:state: init -> auth (b0) +I (8094) wifi:state: auth -> assoc (0) +I (8104) wifi:state: assoc -> run (10) +I (8904) wifi:state: run -> init (17a0) +I (8904) wifi:new:<5,0>, old:<5,1>, ap:<255,255>, sta:<5,1>, prof:1 +I (8914) example_wps: WIFI_EVENT_STA_DISCONNECTED +E (8914) wifi:sta is connecting, return error +I (9904) example_wps: WIFI_EVENT_STA_WPS_ER_SUCCESS +I (9914) wifi:new:<5,1>, old:<5,0>, ap:<255,255>, sta:<5,1>, prof:1 +I (10654) wifi:state: init -> auth (b0) +I (10664) wifi:state: auth -> assoc (0) +I (10664) wifi:state: assoc -> run (10) +I (10704) wifi:connected with ROUTER_SSID, aid = 3, channel 5, 40U, bssid = xx:xx:xx:xx:xx:xx +I (10704) wifi:security: WPA2-PSK, phy: bgn, rssi: -58 +I (10714) wifi:pm start, type: 1 + +I (10734) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +W (11104) wifi:idx:0 (ifx:0, xx:xx:xx:xx:xx:xx), tid:0, ssn:0, winSize:64 +I (12094) esp_netif_handlers: sta ip: 192.168.68.113, mask: 255.255.255.0, gw: 192.168.68.1 +I (12094) example_wps: got ip: 192.168.68.113 +``` + +## Troubleshooting + +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon.