domingo, 10 de dezembro de 2023

LSM110A - COMANDOS AT (LORAWAN - OTA) - RAK LIB - ANNEX BASIC - UPLINK DE DADOS RANDOM - NODE RED

          

O objetivo deste BLOG é demonstrar como é possível enviar pacotes para  a rede LoRaWAN através de comandos AT enviados ao  módulo WISOL LSM110A.

Serão publicados dados simulando a tensão de uma bateria, alguns flags e intensidade de luz, valores de 0 a 255 e enviados pelo ESP32 a cada 10 segundos ao servidor LoRaWAN CHIRPSTACK (CLASS A, OTAA) e então encaminhado ao SERVIDOR Node-RED.

ChirpStack e Node-RED instalados no mesmo servidor.

Para envio dos comandos AT,  será programado em BASIC ANNEX.


LSM110A - WISOL

LSM110A Starter KIT
Módulo LSM110A

O LSM110A é um módulo de última geração que integra o STMicroelectronics STM32WL. É muito menos consumo atual para o dispositivo IoT para estender a vida útil da bateria. E, também suporta ambas as tecnologias – Sigfox e LoRa – com o próprio módulo LSM110A.

Você pode trocar Sigfox ou LoRa com ele para que você também possa reduzir o custo. É altamente otimizado para solução de IoT (Alto Consumo de Energia, Baixo Custo)

BREAKOUT para testes

Esquema Elétrico - últimas correções





PLACA MONTADA



CONEXÃO COM ST-LINK V2 E UART


Grave com o STM32 Programmer o BOOTLOADER no LSM110A 

Assim, pode-se transferir o programa via Serial, através dos pinos PA2 e PA3 do LSM110A.


RAK3272-SiP_latest_final.hex

CHIRPSTACK


ChirpStack é um Servidor de Rede LoRaWAN de código aberto que pode ser usado para configurar redes LoRaWAN. O ChirpStack fornece uma interface web para o gerenciamento de gateways, dispositivos e inquilinos, bem como para configurar integrações de dados com os principais provedores de nuvem, bancos de dados e serviços comumente usados para lidar com dados de dispositivos. O ChirpStack fornece uma API baseada em gRPC que pode ser usada para integrar ou estender o ChirpStack.

BASIC ANNEX RDS

Best  Embedded Basic Interpreter

ESP-NOW, BLE, MQTT...ÓTIMO PARA IoT

Veja o HELP  do BASIC ANNEX RDS

Veja também FORUM


INTRODUÇÃO AO ANNEX BASIC

ANNEX WI-FI RDS é um poderoso interpretador de scripts para o popular módulo WI-FI ESP32 (u-BLOX NINA W106).
O módulo pode ser gerenciado com um IDE WEB dedicado e um conjunto de utilitários AnnexToolKit associado.

O ANNEX WI-FI RDS fornece as seguintes funcionalidades principais:
  • Servidor web assíncrono baseado em Websockets
  • Servidor web muito rápido/servidor de arquivos
  • Apenas uma porta TCP necessária para http e websockets
  • IDE integrado
  • Pode ser programado usando seu navegador web (mesmo com um telefone/tablet)
  • Pontos de interrupção, execução imediata de comandos, exibição de variáveis, passo único.
  • Ajuda sensível ao contexto disponível pressionando a tecla F2
  • Atualização OTA (Over the Air)
  • Poderoso utilitário de faca suíça associado AnnexToolKit
  • Programação de flash simplificada
  • Backup/restauração (de/de arquivos, para/de zip)
FUNCIONALIDADES

Variáveis de dupla precisão de ponto flutuante
Variáveis de string com tamanho ilimitado
Matrizes multidimensionais (pontos flutuantes ou string)
Manipulação de eventos assíncronsos
Manipulação de erros
I/O em todos os pinos disponíveis, incluindo PWM/SERVO
Controladores PID
Contadores de frequência
Entrada ADC analógica
Geração de tons
Suporte para SPI e I2C
Suporte protocolos TCP e UDP para comunicações
Suporte para envio de e-mails usando servidores SSL SMTP
Suporte para comunicações AJAX
Suporte para comunicações ESP-NOW
Suporte para comunicações MQTT
Suporte para transferência de arquivos FTP
Suporte algoritmos IMU Fusion 6 DOF e 9 DOF (Madgwick e Mahony)   
Forte integração com o javascript permitindo trocas entre script Básico e navegador web
Uma paleta completa de funções/comandos 
Mais de 300 Comandos/Funções disponíveis
Suporte para os seguintes módulos/componentes
  • Sensores de temperatura/umidade DHT11, DHT21 ou DHT22
  • Sensor de temperatura DS18B20
  • LCD HD44780 com módulo de interface I2C (1, 2 ou 4 linhas com 16 ou 20 chars por linha)
  • Display LCD baseado no chipset ST7920 com monocromático de 128x64 pixels 
  • Display OLED baseado no chipset SSD1306 ou SH1106 com monocromáticos 128x64 
  • Display TFT baseado em chipset ILI9341 com 320x240 pixels e 16 bits cores
  • Exibição TM1637 de 4 dígitos de 7 segmentos
  • TM1638 8 dígitos 7 segmentos display incluindo 8 leds e 8 botões
  • Exibição max7219 de 8 dígitos de 7 segmentos
  • Módulos de exibição de matriz de ponto MAX7219 8x8
  • Tiras led Neopixel WS2812
  • Tela de matriz de pontos Neopixel WS2812 8x8
  • Módulo PWM/SERVO PCA9685
  • Interface infravermelha com muitos protocolos RC (transmissão e recepção)
  • Módulo RTC (DS1307 ou DS3231)
  • Sensor ultrassônico HC-SR04 para medição de distância
  • Sensor de orientação absoluta BNO055
  • BME280 Sensor combinado de umidade e pressão
  • Proximidade Digital APDS9960, Luz Ambiente, RGB e Sensor de Gestos     

PRIMEIROS PASSOS
  • Descompacte o pacote do Annex WI-Fi Basic para uma pasta de sua escolha.
  • Conecte o dispositivo ESP à porta Com serial do computador.
  • Execute o AnnexToolKit.exe da pasta pai descompactada.
  • Selecione o tipo de módulo, porta de comunicação e velocidade (taxa de transmissão) apropriados.
  • Se o seu dispositivo ESP não for capaz de 'flash automático', inicie-o no modo de flash manualmente (gpio0 a 0v na inicialização).
  • Clique no botão amarelo 'Flash Firmware + Dados' se estiver fazendo um flash pela primeira vez e siga as instruções na tela.
  • Após a conclusão bem-sucedida, o dispositivo será reinicializado e executará o novo firmware.
  • Conecte o wi-fi ao ESP SSID que aparecerá na lista de computadores de SSIDs Wifi disponíveis (leva alguns segundos).
  • Navegue até 192.168.4.1 para abrir a janela Saída padrão e, a seguir, clique com o botão direito do mouse no botão Editor para abri-lo em uma nova guia.
Estes são os primeiros passos para começar:

Faça o download do ANNEX  TOOLKIT para u-BLOX NINA W106 (ESP32), senha: annex


Abra o AnnexToolKit, selecione a Porta Serial, clique em Conectar e verifique o endereço IP mostrado na janela Serial Monitor. No exemplo foi escolhido o botão verde Flash Firmware ESP32 Only


Vendo se o boot ocorreu dentro do esperado

Neste caso, o Endereço é 192.168.1.8 porque foi pré-configurado para se conectar ao meu roteador wi-fi, caso contrário o endereço IP será padrão para 192.168.4.1 

Veja como pegar IP da sua REDE (modo Station)


Procurando e se conectando no ANNEX

Acessando 198.168.4.1 (IP inicial do ANNEX)

Coloque o SSID e SENHA de seu Access Point

Obtendo o IP da sua Rede Local

Uma vez configurado, ele entrará em sua REDE

Abra uma janela do navegador da Web e selecione o endereço IP do módulo. Clique em Editor


Agora você pode simplesmente digitar seu programa e salvá-lo no disco interno.

Podemos começar com um programa muito simples:

Digite print "Hello World" na janela do editor e clique em Save as, nomeie o programa /program/test.bas e clique em Save


Você pode ver na janela Serial Monitor que o arquivo foi salvo


A ajuda sensível ao contexto on-line está disponível para qualquer comando Annex. Isso requer que o computador seja conectado ao dispositivo e à internet ao mesmo tempo. Assim, o computador precisa de 2 interfaces de rede (uma para o dispositivo e outra para internet), ou o dispositivo deve ser configurado para logon ao seu roteador wi-fi para que ele esteja na mesma sub-rede que a conexão com a internet.

Ajuda online é muito fácil de usar, se você quiser ajuda para o comando PRINT, por exemplo, basta colocar o cursor na palavra imprimir na janela de edição e pressionar a tecla F2.

Esta janela pop-up aparecerá:


Agora você pode executar o programa clicando no botão Run

Na janela Serial Monitor você verá o resultado 


Agora você pode se divertir em experimentar qualquer programa usando a mesma lógica!

ESCREVENDO Hello SmartCore no TERMINAL COM A INSTRUÇÃO Print



Node-RED


O Node-RED, é uma ferramenta visual de ambiente de código aberto, que inicialmente foi desenvolvida para implementar, criar e/ou conectar dispositivos de IoT, tendo sido estendida posteriormente para hardwares, APIs e web services. Assim sendo, por meio dos nodes ou nós é possível ler arquivos CSV, escutar eventos http, tcp, websocket, twitter, mqtt entre outros. Ele possui um editor baseado em navegador que além de simples e compatível com todos os browsers, facilita a conexão de fluxos usando os nós (nodes) do palette. E assim como o protocolo MQTT (Message Queue Telemetry Transport), assunto de outras postagens dentro do universo de IoT, o Node-RED também foi criado pela IBM Emerging Technology.

Entre as características do Node-RED destaca-se a possibilidade de poder ser desenvolvido em qualquer Sistema Operacional. Entretanto, para que seja possível proceder com a instalação da dependência do Node-RED, dependência esta que pode ser entendida como um pacote de módulos, é preciso que já esteja instalado o Node.js.

INSTALANDO Node-RED NO UBUNTU (ONDE ESTÁ O CHIRPSTACK)
https://github.com/nodesource/distributions#debian-and-ubuntu-based-distributions
INTEGRAÇÃO CHIRPSTACK COM Node-RED

Este guia explica como configurar o Node-RED com os nós ChirpStack Node-RED e configurar um fluxo de eco simples. Esse fluxo consumirá o evento uplink usando MQTT e enfileirará mensagens de downlink usando o nó downlink, que usa a API gRPC.

Antes de começar, certifique-se de que tem um ChirpStack e Node-RED em funcionamento e que já tem um dispositivo ligado. Como vamos configurar um fluxo de eco, o melhor dispositivo para usar seria um dispositivo do qual você pode ler as mensagens de downlink recebidas usando uma interface serial.


ChirpStack fornece um pacote chamado node-red-contrib-chirpstack que fornece vários nós Node-RED que irão ajudá-lo a integrar com ChirpStack.

Consulte a documentação Adicionando nós à paleta para obter instruções de instalação. Dependendo da instalação do Node-RED, o comando que você precisa executar pode ser:

npm install @chirpstack/node-red-contrib-chirpstack

ou


Nota: Se você estiver usando a instância Node-RED do ChirpStack Gateway OS, poderá ignorar esta etapa, pois este pacote já está instalado para você.



As etapas abaixo descrevem como criar um fluxo de eco, que enfileirará o uplink recebido do dispositivo como downlink. Embora isso provavelmente não cubra um caso de uso real, ele demonstra como receber mensagens de uplink, processá-las e agendar downlinks.

Receber dados do MQTT

Depois de abrir o Node-RED em seu navegador, primeiro configure um mqtt no nó. Esse nó será usado para receber eventos de dispositivo que são publicados pela integração MQTT do ChirpStack.

As seguintes propriedades de nó devem ser definidas:

Servidor:
Servidor: por exemplo, localhost

Porta: 1883 ou 8883 caso o TLS seja usado
Selecione Usar TLS caso o TLS seja usado, caso também adicione uma nova configuração TLS

Tópico: application/+/device/+/event/+

QoS: 0
Saída: auto-detect

Nota:

Para testar a conexão com o agente MQTT, implante o fluxo. No nó recém-adicionado, você verá um rótulo Conectado.




CONEXÃO ENTRE O ESP32 E LSM110A


LÓGICA DO PROGRAMA BASIC ANNEX

AT+DEVEUI=00xxE115xx1Fxx0A
AT+APPKEY=A614D59963A0861EDF2702AE6F0E1AD6
AT+BAND=6
AT+MASK=0002
AT+CLASS=A
AT+JOIN=1:0:10:8
AT+CFM=1
loop
       se já fez Join AT+NJS=? retorna 1, então 
          você pode enviar pacote AT+SEND=2:112233
       caso contrário
          faça Join AT+JOIN=1:0:10:8
       fim se
       verifica se há algum erro para reenvio dos comandos AT
       aguarda downlink de pacotes
       aguarde intervalo para o próximo pacote
fim loop

PROGRAMA

ERRORS_AT_NO_NETWORK_JOINED = 0 JOINED$ = "NO" FAIL$ = "NO" fail = 0 WDT = 0 pin.mode 12, output : pin(12) = 0 pin.mode 2, output : pin(2) = 0 pin.mode 5, output : pin(5) = 0 pin.mode 18, output : pin(18) = 0 pin.mode 19, output : pin(19) = 0 pin.mode 23, output : pin(23) = 0 serial2.mode 115200, 13, 15 onserial2 rec2 timer0 1000, mytimer_wdt pause 1000 gosub RESET_LSM110A gosub boot do printAT "AT+NJS=?" pause 19500 if JOINED$ = "YES" then gosub joined if FAIL$ = "YES" then gosub boot loop END ' ------------------- boot: ERRORS_AT_NO_NETWORK_JOINED = 0 JOINED$ = "NO" FAIL$ = "NO" pin(2) = 0 pause 20000 ' Pause enough to receive the JOIN if JOINED$ = "YES" then return printAT "AT+NWM=1" ' enable LoRaWAN
printAT "AT+NJM=1" ' OTA printAT "AT+LINKCHECK=2" ' enable linkcheck message printAT "AT+DEVEUI=0080e115051fd80a" ' DEV EUI printAT "AT+APPKEY=a614d59963a0861edf2702ae6f0e1ad6" ' APP KEY printAT "AT+BAND=6" ' AU915 printAT "AT+MASK=0002" ' MASK (regional parameters) printAT "AT+CLASS=A" ' CLASS A printAT "AT+CFM=0" ' no confirmation downlink printAT "AT+TXP=14" ' TX POWER 14 printAT "AT+ADR=1" ' adaptative data rate printAT "AT+PNM=1" ' private network printAT "AT+JOIN=1:0:10:8" ' auto join return ' ------------------- joined: pin(2) = 1 FAIL$ = "NO" print "Sending Package" printAT "AT+MASK=0002" a$= STR$(rnd(255), "%02x", 1) b$= STR$(rnd(255), "%02x", 1) c$= STR$(rnd(255), "%02x", 1) package$= "AT+SEND=2:" + a$ + b$ + c$ print package$ printAT package$ return ' ------------------- rec2: wdt = 0 r$ = serial2.input$ print r$ fail = 0 if instr(r$, "AT_NO_NETWORK_JOINED") > 0 then incr ERRORS_AT_NO_NETWORK_JOINED if ERRORS_AT_NO_NETWORK_JOINED = 3 then fail = 1 if fail = 1 then FAIL$ = "YES" JOINED$="FALSE" ERRORS_AT_NO_NETWORK_JOINED = 0 gosub RESET_LSM110A return endif if instr(r$, "+EVT:LINKCHECK") > 0 then print "Package Sent" rem of who is the JOINED text ? if instr(r$, "JOINED") > 0 then if instr(r$, "AT_NO_NETWORK_JOINED") = 0 then PRINT "CONGRATULATIONS, JOINED" JOINED$="YES" return ENDIF endif if instr(r$, "+EVT:RX_1") > 0 then s$= mid$(r$, instr(r$, ":") + 1) s$= mid$(s$, instr(s$, ":") + 1) s$= mid$(s$, instr(s$, ":") + 1) s$= mid$(s$, instr(s$, ":") + 1) s$= mid$(s$, instr(s$, ":") + 1) s$= mid$(s$, instr(s$, ":") + 1) s$= left$(s$,instr(s$, "+EVT") - 1) if instr(s$, "31") > 0 then pin(23) = 1 if instr(s$, "32") > 0 then pin(19) = 1 if instr(s$, "33") > 0 then pin(18) = 1 if instr(s$, "34") > 0 then pin(5) = 1 if instr(s$, "35") > 0 then pin(23) = 0 if instr(s$, "36") > 0 then pin(19) = 0 if instr(s$, "37") > 0 then pin(18) = 0 if instr(s$, "38") > 0 then pin(5) = 0 endif return ' ------------------- SUB printAT(message$) print2 message$ + chr$(13) + chr$(10) pause 500 END SUB mytimer_wdt: incr wdt if wdt = 3600 then wdt = 0 gosub RESET_LSM110A end if return RESET_LSM110A: pin(12) = 1 pause 1 pin(12) = 0 pause 1 return

Execução

Node-RED

Veja os UPLINKS no LSM110A no lado Direito
ENVIANDO PACOTES

LOG

CHIRPSTACK

Recebimento do Pacote LoRaWAN

Pacote LoRaWAN - BASE64


XXXXXX (Random) enviado pelo ANNEX BASIC

DOWNLINK PARA LIGAR RELAY 4






CIRCUITO DE TESTES

ESP32 conectado ao LSM110A

GATEWAY LoRaWAN

Dragino

Fontes:

Dúvidas

FORUM

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfó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

Nenhum comentário:

Postar um comentário