ESP32-C6 e ESP32-H2: Como Criar uma Rede Zigbee com Arduino IDE

Como Criar uma Rede Zigbee com ESP32-C6 e ESP32-H2

Projeto prático com ESP32-C6 como coordenador Zigbee e ESP32-H2 como End Device. Um botão conectado ao GPIO 23 do C6 controla o LED azul no GPIO 13 do H2 por meio de uma rede Zigbee com binding.

ESP32-C6 e ESP32-H2: Criando uma Rede Zigbee do Zero com Arduino IDE

Neste tutorial do RodRobot, vamos criar uma rede Zigbee utilizando duas placas: o ESP32-C6 e o ESP32-H2.

Vamos configurar o Arduino IDE, gravar os códigos nas duas placas e, ao final, testar um botão conectado ao ESP32-C6 para ligar e desligar o LED azul do ESP32-H2.

O objetivo é demonstrar, na prática, como duas placas podem se comunicar sem fios utilizando o protocolo Zigbee, sem precisar de conexão com a internet para realizar esse controle.


1. O que é Zigbee?

Como Funciona uma Rede Zigbee: Coordenador, Roteadores e End Devices

O Zigbee é um protocolo de comunicação sem fio utilizado em automação residencial, sensores, interruptores e sistemas de iluminação. A ilustração apresenta o funcionamento de uma rede Zigbee, com o ESP32-C6 como exemplo de coordenador, roteadores e dispositivos finais conectados para trocar informações sem fio.


O Zigbee é um protocolo de comunicação sem fio muito utilizado em aplicações de automação residencial, sensores, interruptores, sistemas de iluminação e dispositivos inteligentes.

Uma de suas características é permitir que dispositivos compatíveis troquem informações por meio de uma rede própria.

Diferentemente de muitas aplicações que utilizam Wi-Fi e serviços conectados à internet, neste projeto vamos criar uma rede Zigbee entre as duas placas ESP32.

A principal vantagem é que o controle funciona sem precisar de conexão com a internet. A comunicação acontece pela rede Zigbee, desde que os dispositivos estejam corretamente configurados e conectados.


2. Como funciona o projeto?

Neste projeto, cada placa terá uma função específica dentro da rede Zigbee.

Como Conectar o Botão ao ESP32-C6 e Preparar o ESP32-H2 para Zigbee
Esquema de montagem do projeto Zigbee com duas placas ESP32. O ESP32-C6 atua como coordenador da rede, com um botão conectado ao GPIO 23 e ao GND. O ESP32-H2 funciona como dispositivo final (End Device), utilizando o GPIO 13 para controlar o LED azul integrado à placa. As duas placas comunicam-se sem fio por meio da rede Zigbee.


ESP32-C6 — Coordenador da rede

O ESP32-C6 será configurado como coordenador Zigbee. Ele será responsável por iniciar a rede e realizar a leitura do botão conectado ao GPIO 23.

Quando o botão for pressionado, o programa verificará o estado atual do controle e enviará o comando correspondente ao ESP32-H2.

ESP32-H2 — End Device

O ESP32-H2 será configurado como dispositivo final, conhecido como End Device.

Sua função será entrar na rede Zigbee, receber os comandos enviados pelo ESP32-C6 e controlar o LED azul da placa, conectado ao GPIO 13.

Dessa forma, o botão e o LED ficam em placas diferentes, mas trabalham juntos por meio da comunicação sem fio.

Resumo das funções

Componente                                                Função
ESP32-C6                                       Coordenador Zigbee
GPIO 23 do C6                                       Entrada do botão
ESP32-H2                                       Dispositivo final (End Device)
GPIO 13 do H2                                       Controle do LED azul
Rede Zigbee                                       Comunicação sem fio entre as placas

3. Configurando o ESP32-C6 no Arduino IDE

Antes de gravar o programa, precisamos conferir as opções de configuração da placa no Arduino IDE.

Selecione a placa ESP32C6 Dev Module e configure as opções utilizadas neste projeto.

Configurações do ESP32-C6

  • Board: ESP32C6 Dev Module

  • USB CDC On Boot: Disabled

  • Zigbee Mode: Zigbee ZCZR (coordinator/router)

  • Partition Scheme: Zigbee ZCZR 4MB with spiffs

  • Erase All Flash Before Sketch Upload: utilizar Enabled quando for necessário apagar a memória antes da gravação.

Os nomes e as opções disponíveis podem variar conforme a versão do pacote ESP32 instalado e a placa selecionada.

Para que serve o USB CDC On Boot?

Neste projeto, utilizamos a opção USB CDC On Boot: Disabled no ESP32-C6 porque, durante nossos testes, essa configuração permitiu que o Monitor Serial funcionasse corretamente na conexão USB utilizada.

Essa opção controla a inicialização da comunicação serial USB CDC. O comportamento pode variar de acordo com a placa, a conexão USB e a configuração do ambiente.

O que significa Zigbee ZCZR?

A opção Zigbee ZCZR (coordinator/router) permite utilizar os recursos de coordenador e roteador Zigbee compatíveis com o ESP32-C6.

Neste projeto, o programa será configurado para que o C6 atue como coordenador e inicie a rede.

Configurando a partição de memória

Em Partition Scheme, selecionamos:

Zigbee ZCZR 4MB with spiffs

Essa configuração define a organização da memória flash utilizada pelo programa e disponibiliza a configuração de partição correspondente ao modo Zigbee selecionado.

É importante conferir se a opção está disponível e corresponde à configuração exigida pelo código utilizado.

Atenção ao Erase All Flash Before Sketch Upload

Na primeira gravação, podemos utilizar Erase All Flash Before Sketch Upload: Enabled para apagar os dados anteriores da memória.

Isso pode ajudar a evitar conflitos com configurações persistentes de projetos anteriores.

Entretanto, essa opção apaga dados da memória flash e pode remover configurações da rede Zigbee, dados de pareamento ou outras informações persistentes. Por isso, não é necessário deixá-la habilitada em todos os uploads.

Depois de configurar a placa, fazemos o upload do código do coordenador Zigbee.


4. Configurando o ESP32-H2 no Arduino IDE

Agora vamos preparar o ESP32-H2, que será o dispositivo final da rede.

Selecione a placa correspondente ao ESP32-H2 e confira as configurações necessárias para o projeto.

Configurações do ESP32-H2

No Arduino IDE, selecione as seguintes opções:

  • Placa: ESP32H2 Dev Module

  • USB CDC On Boot: Enabled

  • Zigbee Mode: Zigbee ED (end device)

  • Partition Scheme: Zigbee 4MB with spiffs

Para que serve o USB CDC On Boot: Enabled?

Essa opção permite utilizar a comunicação USB CDC para a porta serial, facilitando a visualização das mensagens no Monitor Serial durante os testes, quando a placa e a conexão oferecem suporte a esse recurso.

Vídeo tutorial: ESP32-C6 e ESP32-H2 — Criando uma Rede Zigbee

https://www.youtube.com/watch?v=PTjINxsFHuM&t=58s


E se o ESP32-H2 não entrar em modo de gravação?

Se você estiver com dificuldades para reconhecer a porta COM, instalar a placa ou gravar o primeiro código no ESP32-H2 SuperMini, preparei um tutorial no canal RodRobot explicando o procedimento passo a passo.

No vídeo, mostro como instalar a placa, resolver problemas relacionados à porta COM e realizar a gravação do primeiro programa.

▶️ Assista ao tutorial completo:

ESP32-H2 SuperMini: Como Instalar, Resolver Erro na COM e Gravar o Primeiro Código

Recomendo assistir ao vídeo antes de continuar, caso sua placa não seja reconhecida pelo computador ou apresente erros durante o upload.

Com a placa reconhecida e pronta para receber o programa, você poderá continuar a configuração do ESP32-H2 para o nosso projeto Zigbee.

Assim como no ESP32-C6, o recurso Erase All Flash Before Sketch Upload pode ser utilizado quando for necessário limpar configurações anteriores. Antes de utilizá-lo, lembre-se de que os dados persistentes serão apagados.

Com as opções corretas, fazemos o upload do código do dispositivo final.


5. Como os códigos controlam o LED pela rede Zigbee?

Depois de gravar os programas, precisamos entender como o botão do ESP32-C6 controla o LED do ESP32-H2.

Código do ESP32-C6

O programa do coordenador monitora o botão conectado ao GPIO 23.

Quando detecta um pressionamento, o código alterna o estado do controle entre ligado e desligado.

As funções utilizadas no programa são:

  • lightOn(): envia o comando para ligar a iluminação.

  • lightOff(): envia o comando para desligar a iluminação.

Essas chamadas são utilizadas pelo código para solicitar a mudança de estado do dispositivo de iluminação Zigbee configurado no projeto.

Código do ESP32-H2

No ESP32-H2, o programa utiliza o endpoint ZigbeeLight para receber e tratar as mudanças de estado.

A função onLightChange() permite registrar uma rotina que será chamada quando o estado da iluminação for alterado por um comando Zigbee.

A rotina do programa utiliza essa mudança de estado para controlar o GPIO 13, responsável pelo LED azul da placa.

Assim, quando o ESP32-H2 recebe o comando de ligar, o programa acende o LED. Quando recebe o comando de desligar, apaga o LED.

Importante: para que os comandos controlem o dispositivo correto, os endpoints e o mecanismo de comunicação utilizados pelos programas precisam estar configurados de forma compatível. Se o projeto utilizar binding Zigbee, o vínculo também deverá estar estabelecido.


6. Testando a rede Zigbee

Com os dois programas gravados, podemos iniciar os testes.

Passo 1 — Ligar o ESP32-C6

Ligue o ESP32-C6 e abra o Monitor Serial para acompanhar as mensagens de inicialização do coordenador.

O programa deverá iniciar a rede Zigbee conforme a configuração utilizada.

Passo 2 — Ligar o ESP32-H2

Em seguida, ligue o ESP32-H2.

O dispositivo final deverá procurar a rede e tentar se conectar ao coordenador. No Monitor Serial, podemos acompanhar as mensagens de inicialização e conexão disponibilizadas pelo programa.

A indicação de conexão, isoladamente, não garante que todos os comandos estejam funcionando. O vínculo ou mecanismo de controle necessário também precisa estar configurado corretamente.

Passo 3 — Pressionar o botão

Com a rede conectada e o controle configurado, pressione o botão ligado ao GPIO 23 do ESP32-C6.

O comportamento esperado é:

  1. Primeiro pressionamento: o LED azul do ESP32-H2 acende.

  2. Segundo pressionamento: o LED azul apaga.

  3. Os pressionamentos seguintes alternam novamente entre ligado e desligado.

Observe que o botão está conectado ao ESP32-C6, enquanto o LED está no ESP32-H2. Não existe um fio de comunicação entre as duas placas: os comandos são transmitidos pela rede Zigbee.


7. Zigbee precisa de internet?

Não. Uma rede Zigbee pode funcionar localmente sem conexão com a internet.

Neste projeto, o ESP32-C6 inicia a rede e o ESP32-H2 participa dela como dispositivo final. A comunicação entre as placas acontece por rádio, utilizando o protocolo Zigbee.

A internet pode ser necessária em outros projetos quando queremos controlar dispositivos remotamente, acessar serviços na nuvem ou integrar a automação a sistemas externos. Porém, para o teste local apresentado aqui, ela não é necessária.


Conclusão

Neste tutorial, vimos como preparar o Arduino IDE e configurar duas placas ESP32 para um projeto de comunicação Zigbee.

O ESP32-C6 atua como coordenador, inicia a rede e lê o botão conectado ao GPIO 23. O ESP32-H2 atua como End Device, recebe os comandos e controla o LED azul conectado ao GPIO 13.

O resultado é um exemplo prático de comunicação sem fio entre microcontroladores, sem depende


🔧 Acompanhe o RodRobot

Projetos maker com ESP32, Arduino, eletrônica e programação.

RodRobot – Projetos maker, eletrônica e programação na prática.

Comentários

Postagens mais visitadas deste blog

ESP32 + RoboEyes: Como Criar Olhos Animados para seu Robô com Display OLED

ESP-NOW com ESP32-C3 e ESP32: Comunicação Sem Wi-Fi na Prática

ESP32-C3 Super Mini: Características, Vantagens, Pinagem, Matter.