sexta-feira, 22 de novembro de 2019

NINA W102 MESH

REDE MESH COM ESP-MDF


O objetivo deste BLOG é demonstrar como é possível utilizar o módulo NINA W102 para implementar um rede MESH. Foram utilizados 2 NINA W102, um como nó raíz (ROOT) e o outro como nó não raíz.

O ESP-MDF, ou Espressif Mesh Development Framework, é uma estrutura de desenvolvimento para o ESP-MESH, um protocolo de rede construído sobre o protocolo Wi-Fi. O ESP-MDF é baseado no chip ESP32.

Visão global
O ESP-MDF é baseado na pilha de protocolos ESP-MESH para facilitar o desenvolvimento do ESP-MESH. O ESP-MDF fornece os seguintes recursos:

Configuração rápida de rede: além da configuração manual com os aplicativos de configuração de rede, como o ESP-MESH App ou aplicativos de terceiros semelhantes, o ESP-MDF oferece uma maneira encadeada de configuração de rede, durante a qual os dispositivos estabelecem uma rede de forma autônoma e rápida, e formar uma área de cobertura maior.

Atualização estável: o processo de atualização tornou-se mais eficiente com recursos como retransmissão automática de fragmentos com falha, compactação de dados, reversão para uma versão anterior, verificação de firmware etc.

Depuração eficiente: são suportadas várias abordagens de depuração, como transmissão sem fio de logs e depuração sem fio, depuração por meio de um terminal de comando etc.

Controle de LAN: a rede pode ser controlada por um aplicativo, sensor etc.


Diversas demonstrações de aplicação: Oferece soluções abrangentes baseadas em ESP-MESH nas áreas de iluminação, etc.

Para implementação foi seguido o roteiro proposto em 
https://github.com/espressif/esp-mdf/tree/master/examples/get-started

Ele apresenta uma maneira rápida de construir uma rede ESP-MESH sem um roteador. Para executar este exemplo, você precisa de pelo menos duas placas de desenvolvimento, uma configurada como nó raiz e a outra como nó não raiz. Neste exemplo, todos os dispositivos são nós não raiz por padrão.

Nó raiz: existe apenas um nó raiz em uma rede ESP-MESH. As redes MESH podem ser diferenciadas por seus MESH_ID e canais.
Nó não raiz: inclua nós folha e nós intermediários, que selecionam automaticamente seus nós pai de acordo com as condições da rede.

Você precisa acessar o submenu Configuração de exemplo e configurar um dispositivo como nó raiz e os outros como nós não raiz com make menuconfig (Make) ou idf.py menuconfig (CMake).

Você também pode acessar o submenu Component config -> MDF Mwifi e configurar os parâmetros relacionados ao ESP-MESH, como número máximo de camadas, número de dispositivos conectados em cada camada, intervalo de transmissão etc.


Defina a função de retorno de chamada do evento;

Inicialize o wifi e inicie o ESP-MESH;

Crie uma função de manipulador de eventos:

Nós não raiz enviam o pacote de dados Hello root! ao nó raiz em um intervalo de três segundos e aguarde sua resposta;

O nó raiz responde o nó Hello done!quando recebe os dados.
Criar um timer: imprima no horário especificado as informações da rede ESP-MESH sobre as camadas, a força do sinal e a memória restante do nó pai.

O log do nó raiz ficaria assim:


Instale

Toolchain de configuração: configure de acordo com o sistema operacional do seu PC (Windows, Linux ou Mac OS).

Obtenha ESP-MDF:


git clone --recursive https://github.com/espressif/esp-mdf.git

Se você clonar sem a opção --recursive, navegue até o diretório esp-mdf e execute o comando git submodule update --init --recursive

Configure o caminho do ESP-MDF: O Toolchain usa a variável de ambiente MDF_PATH para acessar o ESP-MDF. A configuração dessa variável é semelhante à da variável IDF_PATH. Por favor, consulte Adicionar IDF_PATH ao perfil do usuário.


export MDF_PATH=~/esp/esp-mdf

Iniciar um projeto: A palavra project refere-se ao exemplo de comunicação entre dois dispositivos ESP-MESH.


cp -r $MDF_PATH/examples/get-started/ .
cd  get-started/
Build e Flash: Somente o número da porta serial precisa ser modificado. De resto, apenas mantenha a configuração padrão intacta.


make menuconfig (mude para 2MB, por causa do NINA W102)

Mude partition para
# Name,   Type, SubType,  Offset,   Size,  Flags
nvs,      data, nvs,      0x9000,   16k
otadata,  data, ota,      0xd000,   8k
phy_init, data, phy,      0xf000,   4k
ota_0,    app,  ota_0,    0x10000,  1M
#ota_1,    app,  ota_1,    ,         1920k
coredump, data, coredump, ,         64K
reserved, data, 0xfe,     ,         128K

make erase_flash flash
Debug
make monitor

Atualizar ESP-MDF:
cd ~/esp/esp-mdf
git pull
git submodule update --init --recursive

Colocando em execução em 2 NINA W102.






No repositório da Smartcore você pode pegar os bins e gravar respeitando os endereços abaixo!

0xd000    ota_data_initial.bin 
0x1000    bootloader.bin 
0x10000  get-started.bin 
0x8000    partitions.bin

Com um ROOT e 2 NODOS





Duvidas:
suporte@smartcore.com.br

REFERÊNCIAS
https://github.com/espressif/esp-mdf
https://github.com/espressif/esp-mdf/tree/master/examples/get-started

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portifólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br