diff --git a/examples/openthread/ot_br/README.md b/examples/openthread/ot_br/README.md index 953c4c3bd7..f864976500 100644 --- a/examples/openthread/ot_br/README.md +++ b/examples/openthread/ot_br/README.md @@ -18,13 +18,13 @@ The ESP Thread Border Router SDK provides extra components and examples for putt #### **Wi-Fi based Thread Border Router** By default, two SoCs are required to run this example: * An ESP32 series Wi-Fi SoC (ESP32, ESP32-C, ESP32-S, etc) loaded with this ot_br example. -* An ESP32-H4 802.15.4 SoC loaded with [ot_rcp](../ot_rcp) example. -* Another ESP32-H4 SoC loaded with [ot_cli](../ot_cli) example. +* An ESP32-H2 802.15.4 SoC loaded with [ot_rcp](../ot_rcp) example. +* Another ESP32-H2 SoC loaded with [ot_cli](../ot_cli) example. -Connect the two SoCs via UART, below is an example setup with ESP32 DevKitC and ESP32-H4 DevKitC: -![thread_br](image/thread-border-router-esp32-esp32h4.jpg) +Connect the two SoCs via UART, below is an example setup with ESP32 DevKitC and ESP32-H2 DevKitC: +![thread_br](image/thread-border-router-esp32-esp32h2.jpg) -ESP32 pin | ESP32-H4 pin +ESP32 pin | ESP32-H2 pin ----------|------------- GND | G GPIO4 | TX diff --git a/examples/openthread/ot_br/image/thread-border-router-esp32-esp32h4.jpg b/examples/openthread/ot_br/image/thread-border-router-esp32-esp32h2.jpg similarity index 100% rename from examples/openthread/ot_br/image/thread-border-router-esp32-esp32h4.jpg rename to examples/openthread/ot_br/image/thread-border-router-esp32-esp32h2.jpg diff --git a/examples/openthread/ot_cli/README.md b/examples/openthread/ot_cli/README.md index 1c53acf0da..917c4b1b9e 100644 --- a/examples/openthread/ot_cli/README.md +++ b/examples/openthread/ot_cli/README.md @@ -9,7 +9,7 @@ This example demonstrates an [OpenThread CLI](https://github.com/openthread/open ### Hardware Required -To run this example, an ESP32-H4 board is required. +To run this example, an ESP32-H2 board is required. ### Configure the project @@ -63,7 +63,7 @@ factoryreset ## Set Up Network -To run this example, at least two ESP32-H4 boards flashed with this ot_cli example are required. +To run this example, at least two ESP32-H2 boards flashed with this ot_cli example are required. On the first device, run the following commands: ```bash diff --git a/examples/openthread/ot_rcp/README.md b/examples/openthread/ot_rcp/README.md index fff79a198a..d241c3d905 100644 --- a/examples/openthread/ot_rcp/README.md +++ b/examples/openthread/ot_rcp/README.md @@ -13,11 +13,11 @@ OpenThread RCP doesn't function alone, it needs to work together with a Host and ### Hardware Required -To run this example, an ESP32-H4 board is required. +To run this example, an ESP32-H2 board is required. ### Configure the project -The default communication interface is port 0 of ESP32-H4 UART running at 115200 baud, change the configuration in [esp_ot_config.h](main/esp_ot_config.h) if you want to use another interface or need different communication parameters. +The default communication interface is port 0 of ESP32-H2 UART running at 460800 baud, change the configuration in [esp_ot_config.h](main/esp_ot_config.h) if you want to use another interface or need different communication parameters. ### Build and Flash diff --git a/examples/zigbee/.build-test-rules.yml b/examples/zigbee/.build-test-rules.yml index b50f84619b..36bb2e31c6 100644 --- a/examples/zigbee/.build-test-rules.yml +++ b/examples/zigbee/.build-test-rules.yml @@ -2,16 +2,16 @@ examples/zigbee/esp_zigbee_gateway: disable: - - if: IDF_TARGET in ["esp32c2", "esp32c6", "esp32h2"] + - if: IDF_TARGET in ["esp32c2", "esp32h2"] temporary: true reason: target(s) not supported yet examples/zigbee/esp_zigbee_rcp: enable: - - if: IDF_TARGET in ["esp32h4", "esp32c6", "esp32h2"] - reason: should able to run on esp32h4 esp32h2 and esp32c6 + - if: IDF_TARGET in ["esp32c6", "esp32h2"] + reason: should able to run on esp32h2 and esp32c6 examples/zigbee/light_sample: enable: - - if: IDF_TARGET in ["esp32h4", "esp32c6", "esp32h2"] - reason: should able to run on esp32h4 esp32h2 and esp32c6 + - if: IDF_TARGET in ["esp32c6", "esp32h2"] + reason: should able to run on esp32h2 and esp32c6 diff --git a/examples/zigbee/esp_zigbee_gateway/CMakeLists.txt b/examples/zigbee/esp_zigbee_gateway/CMakeLists.txt index 4d57970926..eac8c5c438 100644 --- a/examples/zigbee/esp_zigbee_gateway/CMakeLists.txt +++ b/examples/zigbee/esp_zigbee_gateway/CMakeLists.txt @@ -3,5 +3,6 @@ # The following five lines of boilerplate have to be in your project's # CMakeLists in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.16) +set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common) include($ENV{IDF_PATH}/tools/cmake/project.cmake) project(esp_zigbee_gateway) diff --git a/examples/zigbee/esp_zigbee_gateway/README.md b/examples/zigbee/esp_zigbee_gateway/README.md index 9f15b9d28e..40aa4be56b 100644 --- a/examples/zigbee/esp_zigbee_gateway/README.md +++ b/examples/zigbee/esp_zigbee_gateway/README.md @@ -1,21 +1,24 @@ -| Supported Targets | ESP32 | ESP32-C3 | ESP32-S2 | ESP32-S3 | -| ----------------- | ----- | -------- | -------- | -------- | +| Supported Targets | ESP32 | ESP32-C3 | ESP32-C6 | ESP32-S2 | ESP32-S3 | +| ----------------- | ----- | -------- | -------- | -------- | -------- | # Gateway Example -This example demonstrates how to build a Zigbee Gateway device. It runs on a Wi-Fi SoC such as ESP32, ESP32-C3 and ESP32-S3, with an 802.15.4 SoC like ESP32-H4 running [esp_zigbee_rcp](../esp_zigbee_rcp) to provide 802.15.4 radio. +This example demonstrates how to build a Zigbee Gateway device. + +The ESP Zigbee SDK provides more examples and tools for productization: +* [ESP Zigbee SDK Docs](https://docs.espressif.com/projects/esp-zigbee-sdk) +* [ESP Zigbee SDK Repo](https://github.com/espressif/esp-zigbee-sdk) ## Hardware Required -* One development board with ESP32 or ESP32-S3 SoC acting as Zigbee gateway (loaded with esp_zigbee_gateway example) -* A USB cable for power supply and programming -* Three jumper wires for UART (TX, RX and GND) -* Gateway doesn't function alone. Choose ESP32-H4 as Zigbee rcp (see [esp_zigbee_rcp example](../esp_zigbee_rcp)) -* **Flash** Zigbee rcp on the ESP32-H4 DevKitC first **before** connecting to Zigbee gateway -* Connect the two SoCs via UART, below is an example setup with ESP32-DevKitC and ESP32-H4-DevKitC: -![Zigbee_gateway](../../openthread/ot_br/image/thread-border-router-esp32-esp32h4.jpg) +By default, two SoCs are required to run this example: +* An ESP32 series Wi-Fi SoC (ESP32, ESP32-C, ESP32-S, etc) loaded with this esp_zigbee_gateway example. +* An ESP32-H2 802.15.4 SoC loaded with [esp_zigbee_rcp](../esp_zigbee_rcp) example -ESP32 pin | ESP32-H4 pin +Connect the two SoCs via UART, below is an example setup with ESP32-DevKitC and ESP32-H2-DevKitC: +![Zigbee_gateway](../../openthread/ot_br/image/thread-border-router-esp32-esp32h2.jpg) + +ESP32 pin | ESP32-H2 pin ------------- |------------- GND | G GPIO4 (RX) | TX @@ -23,9 +26,13 @@ ESP32 pin | ESP32-H4 pin * TX, RX pin can be also configured by user in esp_zigbee_gateway.h +The example could also run on a single SoC which supports both Wi-Fi and Zigbee (e.g., ESP32-C6), but since there is only one RF path in ESP32-C6, which means Wi-Fi and Zigbee can't receive simultaneously, it has a significant impact on performance. Hence the two SoCs solution is recommended. + ## Configure the project -Before project configuration and build, make sure to set the correct chip target using `idf.py set-target esp32` or `idf.py set-target esp32s3` +Before project configuration and build, make sure to set the correct chip target using `idf.py set-target `. + +In order to run the example on single SoC which supports both Wi-Fi and Thread, the option `CONFIG_ESP_COEX_SW_COEXIST_ENABLE` and option `CONFIG_ZB_RADIO_NATIVE` should be enabled. The two options are enabled by default for ESP32-C6 target. ## Erase the NVRAM diff --git a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c index 4f757ffcb2..7e79318bd9 100644 --- a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c +++ b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c @@ -38,6 +38,12 @@ #include "esp_log.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" +#include "esp_netif.h" +#include "esp_vfs_eventfd.h" +#include "esp_wifi.h" +#include "nvs_flash.h" +#include "protocol_examples_common.h" +#include "esp_coexist_internal.h" #include "esp_zigbee_gateway.h" #if (!defined ZB_MACSPLIT_HOST && defined ZB_MACSPLIT_DEVICE) @@ -127,5 +133,18 @@ void app_main(void) }; /* load Zigbee gateway platform config to initialization */ ESP_ERROR_CHECK(esp_zb_platform_config(&config)); + ESP_ERROR_CHECK(nvs_flash_init()); + ESP_ERROR_CHECK(esp_netif_init()); + ESP_ERROR_CHECK(esp_event_loop_create_default()); +#if CONFIG_EXAMPLE_CONNECT_WIFI + ESP_ERROR_CHECK(example_connect()); +#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE + ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_MIN_MODEM)); + coex_enable(); + coex_schm_status_bit_set(1, 1); +#else + ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE)); +#endif +#endif xTaskCreate(esp_zb_task, "Zigbee_main", 4096, NULL, 5, NULL); } diff --git a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h index 46e4188a8c..d73745035a 100644 --- a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h +++ b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h @@ -51,6 +51,13 @@ .max_children = MAX_CHILDREN, \ }, \ } + +#if CONFIG_ZB_RADIO_NATIVE +#define ESP_ZB_DEFAULT_RADIO_CONFIG() \ + { \ + .radio_mode = RADIO_MODE_NATIVE, \ + } +#else #define ESP_ZB_DEFAULT_RADIO_CONFIG() \ { \ .radio_mode = RADIO_MODE_UART_RCP, \ @@ -70,6 +77,7 @@ .tx_pin = 5, \ }, \ } +#endif #define ESP_ZB_DEFAULT_HOST_CONFIG() \ { \ diff --git a/examples/zigbee/esp_zigbee_gateway/partitions.csv b/examples/zigbee/esp_zigbee_gateway/partitions.csv index d8dcfcdf6b..c6e1d03bfa 100644 --- a/examples/zigbee/esp_zigbee_gateway/partitions.csv +++ b/examples/zigbee/esp_zigbee_gateway/partitions.csv @@ -2,6 +2,6 @@ # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 550K, -zb_storage, data, fat, 0x9a000, 16K, -zb_fct, data, fat, 0x9e000, 1K, +factory, app, factory, 0x10000, 1150K, +zb_storage, data, fat, , 16K, +zb_fct, data, fat, , 1K, diff --git a/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults b/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults index 781db6e5c8..6e62dede3e 100644 --- a/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults +++ b/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults @@ -30,6 +30,5 @@ CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=n # CONFIG_ZB_ENABLED=y CONFIG_ZB_ZCZR=y -CONFIG_ZB_RADIO_MACSPLIT_UART=y # end of Zboss # end of Component config diff --git a/examples/zigbee/esp_zigbee_rcp/README.md b/examples/zigbee/esp_zigbee_rcp/README.md index ba98d6d410..a930b7fc81 100644 --- a/examples/zigbee/esp_zigbee_rcp/README.md +++ b/examples/zigbee/esp_zigbee_rcp/README.md @@ -1,5 +1,5 @@ -| Supported Targets | ESP32-C6 | ESP32-H2 | ESP32-H4 | -| ----------------- | -------- | -------- | -------- | +| Supported Targets | ESP32-C6 | ESP32-H2 | +| ----------------- | -------- | -------- | # Rcp Example @@ -7,7 +7,7 @@ This test code shows how to configure Zigbee rcp (radio co-processor) device. Rc ## Hardware Required -* One development board with ESP32-H4 SoC acting as Zigbee rcp (loaded with esp_zigbee_rcp example) +* One development board with ESP32-H2 SoC acting as Zigbee rcp (loaded with esp_zigbee_rcp example) * A USB cable for power supply and programming * Choose ESP32 or ESP32-S3 as Zigbee gateway. The connection and setup refer to the Zigbee gateway example for setup details (see [esp_zigbee_gateway example](../esp_zigbee_gateway)) * TX, RX pin can be also configured by user in esp_zigbee_rcp.h diff --git a/examples/zigbee/light_sample/HA_on_off_light/README.md b/examples/zigbee/light_sample/HA_on_off_light/README.md index 2f481ee1aa..28eaf8d327 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/README.md +++ b/examples/zigbee/light_sample/HA_on_off_light/README.md @@ -1,15 +1,19 @@ -| Supported Targets | ESP32-C6 | ESP32-H2 | ESP32-H4 | -| ----------------- | -------- | -------- | -------- | +| Supported Targets | ESP32-C6 | ESP32-H2 | +| ----------------- | -------- | -------- | # Light Bulb Example -This test code shows how to configure Zigbee end device and use it as HA on/off light bulb +This test code shows how to configure Zigbee end device and use it as HA on/off light bulb. + +The ESP Zigbee SDK provides more examples and tools for productization: +* [ESP Zigbee SDK Docs](https://docs.espressif.com/projects/esp-zigbee-sdk) +* [ESP Zigbee SDK Repo](https://github.com/espressif/esp-zigbee-sdk) ## Hardware Required -* One development board with ESP32-H4 SoC acting as Zigbee end device (loaded with HA_on_off_light example) +* One development board with ESP32-H2 SoC acting as Zigbee end device (loaded with HA_on_off_light example) * A USB cable for power supply and programming -* Choose another ESP32-H4 as Zigbee coordinator (see [HA_on_off_switch example](../HA_on_off_switch)) +* Choose another ESP32-H2 as Zigbee coordinator (see [HA_on_off_switch example](../HA_on_off_switch)) ## Configure the project @@ -45,7 +49,7 @@ I (9671) ESP_ZB_LIGHT: on/off light set to 0 ## Light Control Functions - * By toggling the switch button (BOOT) on the ESP32-H4 board loaded with the `HA_on_off_switch` example, the LED on this board loaded with `HA_on_off_light` example will be on and off. + * By toggling the switch button (BOOT) on the ESP32-H2 board loaded with the `HA_on_off_switch` example, the LED on this board loaded with `HA_on_off_light` example will be on and off. ## Troubleshooting diff --git a/examples/zigbee/light_sample/HA_on_off_switch/README.md b/examples/zigbee/light_sample/HA_on_off_switch/README.md index 761486a733..2b5ffc21e1 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/README.md +++ b/examples/zigbee/light_sample/HA_on_off_switch/README.md @@ -1,15 +1,19 @@ -| Supported Targets | ESP32-C6 | ESP32-H2 | ESP32-H4 | -| ----------------- | -------- | -------- | -------- | +| Supported Targets | ESP32-C6 | ESP32-H2 | +| ----------------- | -------- | -------- | # Light Switch Example -This test code shows how to configure Zigbee Coordinator and use it as an HA on/off_switch +This test code shows how to configure Zigbee Coordinator and use it as an HA on/off_switch. + +The ESP Zigbee SDK provides more examples and tools for productization: +* [ESP Zigbee SDK Docs](https://docs.espressif.com/projects/esp-zigbee-sdk) +* [ESP Zigbee SDK Repo](https://github.com/espressif/esp-zigbee-sdk) ## Hardware Required -* One development board with ESP32-H4 SoC acting as Zigbee Coordinator (loaded with HA_on_off_switch) +* One development board with ESP32-H2 SoC acting as Zigbee Coordinator (loaded with HA_on_off_switch) * A USB cable for power supply and programming -* Choose another ESP32-H4 as Zigbee end-device (see [HA_on_off_light](../HA_on_off_light/)) +* Choose another ESP32-H2 as Zigbee end-device (see [HA_on_off_light](../HA_on_off_light/)) ## Configure the project