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á publicada uma sequência de bytes AAAAAAAA a cada 10 segundos na rede LoRaWAN CHIRPSTACK (CLASS A, OTAA).
Será aguardado mensagem de DOWNLINK
'1'=liga RELÊ 1
'2'=liga RELÊ 2
'3'=liga RELÊ 3
'4'=liga RELÊ 4
'5'=desliga RELÊ 1
'6'=desliga RELÊ 2
'7'=desliga RELÊ 3
'8'=desliga RELÊ 4
Para envio dos comandos AT, será utilizado o ESP32, o qual será programado em BASIC ANNEX.
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.
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
ESCREVENDO Hello SmartCore no TERMINAL COM A INSTRUÇÃO Print
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
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"
printAT "AT+SEND=2:AAAAAAAA"
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
ENVIANDO PACOTES
LOG
VÍDEO
DOWNLINK PARA LIGAR RELAY 4
CIRCUITO DE TESTES
ESP32 conectado ao LSM110A
GATEWAY LoRaWAN
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