CC2538 + CC2592 - Como construir o melhor coordenador ZigBee V2

This topic will contain a table of contents

O CC2538 + CC2592 é um dos coordenadores ZigBee mais poderosos para utilizar com o Addon Zigbee2MQTT no Home Assistant. Suporta mais de 150 equipamentos ZigBee ligados diretamente ao coordenador e tem um alcance de cerca de 800 metros em céu aberto. Mais informação disponível aqui.

Este guia tem como objetivo disponibilizar os passos necessários para contruir um coordenador com o CC2538 que pode funcionar com ligação USB ou WiFi ao hardware onde está instalado o Home Assistant. Pode também ser utilizado como Router e ser flashado diretamente pela ligação USB através do Windows. Os modos de utilização são selecionados através de dois DIP Switch.

Nota:
Este guia destina-se a utilizadores intermédios e avançados, e que tenham experiência a utilizar o ferro de soldar, devido aos pads onde são soldados os fios no CC2538 serem muito pequenos, o que pode dificultar quem se sentir pouco à vontade na utilização do ferro de soldar.
Para além de todo o equipamento será necessário uma impressora 3D para imprimir a caixa.

Desde já obrigado ao @Maddoctor pela ajuda a configurar o Raspberry Pi e nos comandos necessários para flashar o CC2538. :wink:

O primeiro passo vai ser desbloquear o bootloader do CC2538 recorrendo a um Raspberry Pi. Este passo só é necessário fazer uma vez, depois pode-se flashar novos firmwares e alterar entre firmware de Coordenador e Router fazendo o flash através do Windows e a ligação USB ao Wemos.

O guia está dividido nos seguintes tópicos:

  1. Material necessário
  2. Preparar o Raspberry Pi com o OpenOCD
  3. Esquema de ligação entre o CC2538 e o Raspberry Pi
  4. Desbloquear o bootloader do CC2538
  5. Esquema de ligações
  6. Caixa 3D e montagem
  7. Flashar ou atualizar o firmware do CC2538
  8. Configuração Coordenador USB
  9. Configuração Coordenador WiFi
  10. Configuração Router
  11. Bibliografia

1. Material necessário

Necessitamos de um Raspberry Pi, cartão de memória, fios para ligações, ferro de soldar impressora 3D e do seguinte material:

1 - CC2538+CC2592 PA Zigbee Wireless Module – Link
1 - Antenna 3dBi RP-SMA Male Omni for wireless router+ IPX to RP-SMA Jack Male Pin – Link
1 - WeMos D1 Mini – Link
1 - Interruptor DIP (DIP-switch) 2 vias ON-OFF RM2.54mm – Link

2. Preparar o Raspberry Pi com o OpenOCD

O bootloader do CC2538 tem vindo bloqueado, e para o desbloquear é necessário fazer um reset através de JTAG recorrendo por exemplo a um Raspberry Pi.

Este guia foi feito utilizando um Raspberry Pi Model B R2. Devem ajustar as ligações ao vosso Raspberry caso seja necessário.

O primeiro passo é preparar um cartão de memória com o Raspberry Pi OS Lite com o SSH ativo e caso queiram utilizar a rede wireless do Raspberry Pi, criar o ficheiro com os dados de acesso à rede wireless.

Fazer download do Raspberry Pi Imager do seguinte link e copiar para o cartão de memória o Raspberry Pi OS Lite.

De seguida vão ter acesso a uma partição Boot no cartão de memória que devem utilizar para copiar para lá o ficheiro para configurar os dados de acesso à rede WiFi, consultar o seguinte link.

Para ativar o SSH, na partição Boot criar um ficheiro com o nome ssh sem nenhuma extensão no nome do ficheiro. Caso tenham dúvidas consultar o seguinte link.

Com o cartão de memória pronto, iniciar o Pi, descobrir o IP que lhe foi atribuído no vosso router e acederem por SSH utilizando o software Putty. A primeira vez que o Pi iniciar pode demorar mais que 5 minutos, dependendo da versão do Pi.

Login e password para aceder por SSH… Login: pi Password: raspberry

Em caso de dúvida de como fazer estas configurações, procurar informação no google que há muito informação sobre como configurar o Pi.

Depois de ter acesso ao Pi por SSH executar os seguintes comandos um a um para compilar e instalar o OpenOCD.

cd ~
sudo apt-get update
sudo apt-get install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev locate telnet
sudo updatedb
git clone http://openocd.zylin.com/openocd
cd openocd
./bootstrap
./configure --enable-sysfsgpio --enable-bcm2835gpio
make
sudo make install
sudo updatedb

No final destes comandos, o OpenOCD está pronto para ser utilizado.

3. Esquema de ligação entre o CC2538 e o Raspberry Pi

Depois de ter o Pi com o OpenOCD pronto a utilizar, fazer as ligações entre o Pi e o CC2538 como se pode ver pelo esquema da seguinte imagem.

Na altura que flashei este CC2538 não tinha comigo ferro de soldar, mas recorrendo a um pouco de fita cola e fios retirados de um cabo de rede, fiz as “ligações” no CC2538 como se pode ver pela imagem seguinte.

No final as ligações entre o CC2538 e o Wemos tem de ser feitas recorrendo ao ferro de soldar.

Este método serve para poderem tirar ideias para outros projetos em que só necessitam de flashar um firmware, por exemplo com um FTDI, sem ter de manter as ligações depois do equipamento estar flashado.

Depois de desbloquear o bootloader descrito no próximo passo, estas ligações não são mais necessárias.

4. Desbloquear o bootloader do CC2538

Depois das ligações feitas, iniciar o Pi e aceder por SSH utilizando o Putty.

Para iniciar o OpenOCD utilizar o seguinte comando:

sudo openocd -f /home/pi/openocd/tcl/interface/raspberrypi-native.cfg -f /home/pi/openocd/tcl/target/cc2538.cfg

Pode ser necessário alterar entre o ficheiro raspberrypi-native.cfg e o raspberrypi2-native.cfg tendo em conta a versão que estão a utilizar do Pi. No meu caso ainda é um Raspberry Pi Model B R2 de 2012. Comigo funcionou o raspberrypi-native.cfg

O resultado deve ser como na seguinte imagem…

Sem fechar esta primeira sessão no Putty, abrir uma nova sessão por SSH e executar o seguinte comando:

telnet localhost 4444

O resultado deve ser como na seguinte imagem…

run_telnet

De seguida executar o seguinte comando…

mww 0x400D300C 0x7F800

E de seguida…

mww 0x400D3008 0x0205

O resultado deve ser como na seguinte imagem…

telnet_mww

Se tudo tiver corrido bem, o vosso CC2538 tem o bootloader desbloqueado e pode agora ser flashado por FTDI.

5. Esquema de ligações

O esquema das ligações que vai ser necessário fazer é o seguinte:

Todas as ligações são feitas recorrendo a fios. Utilizar fio flexível o mais fino possível para facilitar as soldaduras no CC2538 e ser mais fácil arrumar dentro da caixa.

Depois de feitas todas as ligações o aspeto final é o seguinte.

6. Caixa 3D e montagem

A caixa está desenhada para ser tudo montado por encaixe depois de já ter todos os fios soldados.

Para fazer download do STL da caixa, visitar o seguinte link no Thingiverse.

O aspeto final vai ser o das seguintes imagens:

7. Flashar ou atualizar o firmware do CC2538

Depois de ter o bootloader desbloqueado, sempre que se iniciar o CC2538 ele vai entrar em modo bootloader até ser flashado um firmware válido.

Caso já tenha sido flashado um firmware válido, para ativar o modo bootloader que permite o CC2538 ser novamente flashado, colocar os DIP Switch 1 a On e 2 a On.

De seguida ligar um cabo micro USB do Wemos a uma porta USB do computador e fazer os seguintes passos.

Criar uma pasta em C:\ com o nome CC2538.

Copiar para esta pasta o ficheiro cc2538-bsl.py do seguinte link.

Para flashar o firmware Coordenador ir ao seguinte link e fazer download para o PC da versão UART mais recente, descompactar e copiar o ficheiro *.bin para a pasta CC2538 que criaram em C:\.

Para flashar o firmware Router ir ao seguinte link e fazer download para o PC da versão UART mais recente, descompactar e copiar o ficheiro *.bin para a pasta CC2538 que criaram em C:\.

Iniciar a Linha de Comandos do Windows (menu Iniciar do Windows, escrever “cmd” + enter), de seguida escrever o seguinte comando.

python

Se abrir uma janela como na seguinte imagem, clicar em Obter para instalar o Python.

De seguida escrever novamente python na Linha de Comandos e se tudo tiver corrido bem, vão ter o resultado da seguinte imagem.

Para sair do python, Ctrl + Z seguido de Enter.

De seguida escrever na Linha de Comandos.

pip3 install pyserial

Resultado vai ser como da seguinte imagem.

Para flashar o CC2538 utilizar o seguinte comando.

Substituir JH_2538_2592_ZNP_UART_20201010.bin pela versão Coordenador ou Router mais recente do ficheiro que acabaram de fazer download no passo anterior, e a porta COM3 pela porta onde tiverem ligado o Wemos.

python cc2538-bsl.py -p COM3 -e -v -w JH_2538_2592_ZNP_UART_20201010.bin

O resultado que devem ter é o da imagem seguinte.

Depois de ser flashado um firmware válido pela primeira vez, sempre que necessitarem de flashar novo firmware é só colocar os DIP Switch 1 a On e 2 a On para flashar novo firmware ou alternar entre o firmware Router e Coordenador.

Depois de flashado, colocar o DIP Switch 2 a On para modo USB ou a Off para modo WiFi. O DIP Switch 1 fica sempre a Off em funcionamento normal.

8. Configuração Coordenador USB

Podemos utilizar o CC2538 + Wemos para comunicar com o hardware onde temos instalado o Home Assistant, através da ligação USB do Wemos.

Para ativar o modo USB colocamos o DIP Switch 1 a Off e o 2 a On que vai fazer com que o Wemos passe a funcionar como um FTDI.

Para configurar este novo coordenador no Addon Zigbee2MQTT do Home Assistant, ir às configurações do Addon e em Serial colocar o seguinte:

serial:
  port: 'PORTA_USB_ONDE_ESTÁ_LIGADO_O_WEMOS'

De seguida salvar as alterações e reiniciar o Addon.

Caso tenham erros no Log do Addon, pode ser necessário desinstalar e instalar novamente o Addon, caso já o tenham utilizado com outra PEN ZigBee.

9. Configuração Coordenador WiFi

Podemos utilizar o CC2538 + Wemos para comunicar com o hardware onde temos instalado o Home Assistant, através do WiFi do Wemos.

Para ativar o modo WiFi colocamos o DIP Switch 1 a Off e o 2 a Off.

Para utilizar a comunicação WiFi temos que flashar o Wemos com o ESP-Easy. Seguir este guia ou pesquisar no google como flashar o ESP-Easy no Wemos.

De seguida aceder à Web Interface do ESP-Easy e configurar os dados de acesso à vossa rede Wireless.

Próximo passo, clicar em Devices, de seguida Add na primeira linha e preencher os campos como na imagem seguinte.

De seguida clicar em Submit e tem o ESP-Easy configurado.

Para configurar este novo coordenador no Addon Zigbee2MQTT do Home Assistant, ir às configurações do Addon e em Serial colocar o seguinte:

serial:
  port: 'tcp://IP_DO_ESP_EASY:1775'

Em que IP_DO_ESP_EASY é o IP que utilizam para aceder à Web Interface do ESP-Easy.

De seguida salvar as alterações e reiniciar o Addon.

Caso tenham erros no Log do Addon, pode ser necessário desinstalar e instalar novamente o Addon, caso já o tenham utilizado com outra PEN ZigBee.

10. Configuração Router

Para utilizarmos o CC2538 como Router seguimos o passo Flashar ou atualizar o firmware do CC2538 e flashamos o firmware Router. De seguida colocamos o DIP Switch 1 a Off e 2 a On.

A alimentação pode ser feita por exemplo através de um carregador de telemóvel ou uma porta USB de outro equipamento que seja capaz de fornecer energia ao Wemos.

Para emparelhar o Router no Zigbee2MQTT só temos que ativar o modo Permit Join que ele vai ser adicionado automaticamente.

Nota:
No momento em que foi escrito este guia, as versões do firmware de 2021 ainda não eram suportadas pelo Zigbee2MQTT. Tinha que ser utilizada a versão 20200522.

11. Bibliografia

Links para consulta e que serviram como ajuda na realização deste guia.

https://www.zigbee2mqtt.io/information/supported_adapters.html#texas-instruments-cc2538-with-cc2592-rf-amplifier

https://gist.github.com/hwhw/fc43892785aa84913d03495c97b0f25a

https://www.letscontrolit.com/wiki/index.php?title=ESPEasy#Loading_firmware

https://github.com/letscontrolit/ESPEasy

https://github.com/jethome-ru/zigbee-firmware/tree/master/ti/coordinator/cc2538_cc2592

https://github.com/JelmerT/cc2538-bsl

https://github.com/jethome-ru/zigbee-firmware/raw/master/ti/router/cc2538_cc2592/

6 Likes

Boa tarde
Mais uma vez muitos parabéns para este projeto.
ja tinha posto a questão na versão V1, mas se me permitem volto a por aqui.
em vez do Zigbee2MQTT pode usar-se com o Zigbee home assistant por usb?
Muito obrigado.

Desculpa ter fechado o outro tópico antes de teres resposta.

No site do ZHA faz referencia ao CC2538 ser suportado… Podes ver neste link

De momento não te posso confirmar se com este firmware é suportado ou não… Talvez hoje à noite possa testar.

Mas alguma razão em especial para quereres utilizar o ZHA?

Boa noite
Obrigado pela rápida resposta.
Pareceu-me mais simples a configuração no home assistant, mas não testei o Zigbee2MQTT (isto parece os que dizem que não gostam sem provar). lololololololol
Não tenho como testar, mas dentro de alguns (largos) dias já vou testar pois acabei de mandar vir o material do ali.
Devia ter feito logo em vez da raspbee2 que não funciona com ssd a não ser que fique longe…


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade