This tutorial will guide you on how to run the ESP Zigbee Gateway example program using the Unit Gateway H2 paired with the CoreS3 controller. The ESP Zigbee Gateway is a gateway device based on the ESP32 series Wi-Fi SoC and the ESP32-H2 802.15.4 SoC. It connects Zigbee networks with Wi-Fi networks, enabling interoperability between smart home devices.
v5.3.1
for compiling this example.git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
git checkout v5.3.1 # recommend
./install.sh
. ./export.sh
clone recursive
to recursively clone the ESP-Zigbee-SDK repository:git clone --recursive https://github.com/espressif/esp-zigbee-sdk.git
cd esp-zigbee-sdk
idf.py
commands used in the subsequent tutorials depend on ESP-IDF. Before running the commands, you need to execute . ./export.sh
in ESP-IDF to activate the relevant environment variables. For detailed instructions, please refer to the
ESP-IDF - ESP32S3 Getting Started Tutorial
.esp32h2
:cd $IDF_PATH/examples/openthread/ot_rcp
idf.py set-target esp32h2
idf.py menuconfig
idf.py menuconfig
to enter the configuration page. In menuconfig, configure: Component config
-> OpenThread RCP Example
- Enable OPENTHREAD_NCP_VENDOR_HOOK
.main/esp_ot_config.h
and changing line 43 .baud_rate = 460800;
to .baud_rate = 230400;
.idf.py build
idf.py flash
esp_zigbee_gateway
example program path and set the compilation target:cd esp-zigbee-sdk/examples/esp_zigbee_gateway
idf.py set-target esp32s3
idf.py menuconfig
- Board Configuration
- Pin to RCP reset: -1
- Pin to RCP boot: -1
- Pin to RCP TX: 18
- Pin to RCP RX: 17
- Example Connection Configuration
- WiFi SSID
- WiFi Password
Add the following functions and header files, and call and initialize them at the beginning of app_main to enable the Grove power supply output capability of CoreS3.
#include "driver/i2c.h"
void fix_aw9523_p0_pull_up(void)
{
/* AW9523 P0 is in push-pull mode */
const i2c_config_t i2c_conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = GPIO_NUM_12,
.sda_pullup_en = GPIO_PULLUP_DISABLE,
.scl_io_num = GPIO_NUM_11,
.scl_pullup_en = GPIO_PULLUP_DISABLE,
.master.clk_speed = 400000
};
i2c_param_config(I2C_NUM_1, &i2c_conf);
i2c_driver_install(I2C_NUM_1, i2c_conf.mode, 0, 0, 0);
uint8_t data[2];
data[0] = 0x11;
data[1] = 0x10;
i2c_master_write_to_device(I2C_NUM_1, 0x58, data, sizeof(data), 1000 / portTICK_PERIOD_MS);
i2c_driver_delete(I2C_NUM_1);
}
idf.py build
idf.py erase_flash
idf.py flash
idf.py monitor
or other serial debugging tools to view the running logs at 115200bps.Normal running log content: