esp8266IoT

ESP8266 gateway mesh com NRF24L01 e MySensors

mesh com NRF24L01

Eu sei, estou escrevendo muitos artigos de gateway e nenhum da comunicação ainda, mas vamos ficar felizes? Um ESP8266 pode ser um gateway de uma rede mesh com NRF24L01 e o melhor, a configuração é mais simples e o custo, bem menor que usar um Raspberry Pi. Por isso acho válido investir um pouco de tempo nessa empreitada, de modo que você poderá escolher entre todas as opções a que melhor lhe convém.

O que é uma rede mesh?

Se você não acompanhou os artigos relacionados anteriores, vou fazer uma breve introdução; uma rede mesh é um conjunto de dispositivos que chegam ao seu destino saltando entre outros dispositivos configurados na mesma rede. E o melhor, ele se encarrega de achar a melhor rota. Quando discorro sobre hops, gateway e rotas, estou me referindo a características específicas de comunicação em rede e se você não tem esses conceitos, talvez seja melhor dar uma pesquisada para saber de que se trata, senão o artigo (ou até a configuração final) pode não fazer muito sentido para você.

Como funciona um roteamento?

Uma rota em rede é a mesma coisa que uma rota no seu GPS. Você sai de uma origem a um destino pretendido e no caso do GPS, ele se orienta por um programa que dá as coordenadas para chegar ao destino. As redes comuns, em sua grande (e quase absoluta) maioria utilizam 2 tipos de roteamento (existem diversos outros e muitos protocolos); o caminho padrão e o caminho estático (default gateway e static route, respectivamente). Então a regra é simples. Todos os endereços que seu computador não sabe como chegar, ele vai pelo default gateway, que por sua vez se comunica com seu respectivo default gateway e assim, o roteamento é feito até o destino. Porém, muitas redes tem caminhos diferentes para determinados destinos; por exemplo, para acessar uma segunda rede de uma empresa, como uma intranet. Nesse caso, não adianta ir pelo default gateway porque ele procurará o destino na Internet (exceto a rota estática esteja configurado nele). Nesse caso, seu computador pode ir para a rede pretendida através de um gateway para essa outra rede, através de uma rota estática configurada localmente ou distribuida através do servidor DHCP da sua rede local. Ficou um pouco complicado, hum? É ai que entra a mágica da rede mesh.

Em uma rede mesh, os dispositivos interligados à rede se comunicam entre sí de forma livre e um dispositivo próximo ao gateway pode ser levado para longe. Ele não estará mais se conectando diretamente ao gateway, mas através de saltos (hops) através dos outros dispositivos dessa rede mesh, ele poderá chegar ao gateway novamente, sem nenhuma configuração adicional e sem a necessidade de configuração de endereços!

Que ESP8266 utilizar?

Acredito que para evitar riscos, é melhor dar uma cartada logo; use alguma board que tenha o ESP12, pelos recursos que ele oferece. Além disso, precisaremos de pinos de GPIO para fazer o wiring do NRF24L01, que usa SPI. Eu ainda não testei com esse ESP32, mas depois farei alguns testes e atualizo esse artigo.

O que é SPI?

SPI é um protocolo de comunicação serial (Serial Peripheral interface), utilizado por alguns dispositivos e disponível em grande parte de MCUs e CPUs (como é o caso do ESP8266). Ele é mais rápido que I2C, mas em contrapartida utiliza-se de mais pinos para fazer a comunicação.

mesh com NRF24L01 e ESP8266

Agora, como configurá-lo para que seja um gateway? Acredite ou não, o processo é tão simples e transparente quanto o funcionamento da rede mesh.

Adicione o ESP8266 à IDE do Arduino

O primeiro passo é ter o suporte a ESP8266 na IDE do Arduino. Se ainda não o fez, recomendo que leia esse artigo.

USB2UART

O próximo passo é adicionar um driver para a comunicação  USB2UART. Baixe e instale a partir desse link.

Dentro do diretório tem as instruções para compilação conforme a plataforma. Eu só utilizo Linux, então nem vou discorrer quanto ao procedimentod a compilação para outras plataformas. Dentro tem também um código de exemplo para a comunicação, mas não funcionou, haviam erros que me levaram a crer que o código nem havia sido testado, então eu modifiquei ele. Renomei o arquivo cp210x_gpio_example.c  para cp210x_gpio_example.cpp e deixe-o desse modo (aproveitei para receber a porta como parâmetro):

 

E para compilar:

Compilar e subir o sketch no ESP8266

A primeira coisa que você precisa fazer é instalar a biblioteca MySensors. Siga o menu Sketch > Include Library > Library manager e digite MySensors na caixa de pesquisa. Instale.

Depois de instalado o MySensors, abra o sketch e apenas substitua os parâmetros de rede. O sketch a ser aberto é o File -> Sketchbook -> Libraries -> MySensors -> GatewayEsp8266. Salve e faça o upload para o ESP8266.

Depois de todos esses procedimentos, você poderá abrir o terminal serial e assistir o ESP8266 se conectando à sua rede WiFi. Daí você poderá posteriormente colocar um IP fixo no ESP8266 ou configurar seu servidor DHCP para lhe atribuir sempre o mesmo IP, baseado no MAC. Depois disso você poderá conectar qualquer aplicação capaz de se comunicar com o MySensors Ethernet Gateway. Só isso.

Debugging

Dá pra fazer um teste também, conectando-se via telnet (coisa dos primórdios da comunicação IP, mas útil até a atualidade), conectando-se à porta 5003. Supondo o IP 192.168.0.7:

E envie alguns comandos. Agora, espante-se com a simplicidade do sketch:

Wiring

O wiring está descrito no próprio sketch, sugerindo resistores de pulldown. Eu achei melhor fazer, mas quando eu não estiver mais me divertindo com ele, vou experimentar sem os resistores pra ver se o ESP8266 aguenta o tranco. No próximo artigo relacionado vamos ver a intercomunicação de alguns dispositivos, prometo que não escrevo mais sobre gateways!

1 Star2 Stars3 Stars4 Stars5 Stars (54 votes, average: 5,00 out of 5)
Loading...

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!