LOM204A - COLETANDO ÚLTIMOS 32 ESTADOS DE UMA CHAVE E ENVIANDO VIA LoRaWAN, para CHIRPSTACK
O objetivo geral deste BLOG é demonstrar como é possível programar o módulo WISOL LOM204A02 via VISUINO e assim utilizá-lo como OPENCPU.
O objetivo específico neste projeto é programar o LOM204A02 com VISUINO, para permitir coletar os últimos N estados (até 4 bytes) de um GPIO e então enviar para um servidor LoRaWAN.
JSON {"S":X,"C":Y}, onde S contém os últimos estados de leituras da GPIO e Y o número de estados já lidos.
É possível também receber uma mensagem de DownLink para acionar um outra GPIO (Relay), sendo este estado gravado na EEPROM (Flash) e recuperada no próximo Reset do LOM204A.
É possível pela UART, o usuário mandar a SUB-BAND que está sendo utilizado pelo projeto, a mesma é gravada também na EEPROM (Flash) e recuperada no próximo Reset do LOM204A.
Foi utilizado o recurso do VISUINO: Custom Code, o qual permite a inclusão de código Arduino, baseado nos exemplos Arduino da Library LMIC.
O estado do GPIO é obtido a cada 1 minuto.
Testado no STARTER KIT LOM204 e também no Breakout LOM204
TTN
The Thing Network
A Rede de Coisas (TTN) é uma iniciativa iniciada pela sociedade civil holandesa. O objetivo é ter redes LoRaWAN instaladas em todas as cidades do mundo. Ao interconectar essas redes locais, a TTN quer construir uma infra-estrutura mundial para facilitar uma Internet das Coisas (IoT) pública.
A The Things Network (TTN) é o servidor IoT na nuvem utilizado nesse projeto. É um dos servidores gratuitos para LoRaWAN mais utilizados, com mais de 90 mil desenvolvedores, mais de 9 mil gateways de usuários conectados à rede ao redor do mundo e mais de 50 mil aplicações em funcionamento.
A TTN comercializa nós e gateways LoRa e provê treinamento individual e coletivo para empresas e desenvolvedores que desejam utilizar o LoRa. Possui uma comunidade bem ativa nos fóruns, sempre colaborando e ajudando a resolver problemas, além de prover diversos meios de integrar a TTN com a aplicação que se deseja usar. Possui integração nativa com diversas aplicações como: Cayenne, Hypertext Transfer Protocol (HTTP), permitindo ao usuário realizar uplink para um gateway e receber downlink por HTTP, OpenSensors e EVRYTHNG . Caso o usuário queira criar sua própria aplicação, a TTN disponibiliza Application Programming Interface (API) para uso com Message Queuing Telemetry Transport (MQTT) e diversos Software Developer Kits (SDK) para uso com as linguagens Python, Java , Node.Js , NODE-RED e Go
A rede TTN utiliza o protocolo LoRaWAN objetivando uma cobertura em longo alcance para os dispositivos da rede, caracterizando-a assim com uma Wide Area Network (WAN). Devido ao baixo consumo de energia e ao uso da tecnologia LoRa, é chamada de LPWAN (Low Power Wide Area Network). O grande diferencial da TTN é seu estabelecimento como uma rede aberta (open-source) e colaborativa (crowd-sourced), onde qualquer usuário pode contribuir instalando um gateway em sua residência.
Os elementos da TTN são classificados como:
• Endpoints (nós): Os dispositivos responsáveis pela camada de sensoriamento da rede, o endpoint LoRaWAN. Podem coletar informações através de sensores e também acionar dispositivos/máquinas via atuadores. São configurados através de uma das três classes distintas do protocolo LaRaWAN;
• Gateways: Elementos responsáveis por concentrar e processar as informações enviadas pelos endpoints. Os gateways em geral estão conectados a internet, seja por WiFi/Ethernet ou 3G/4G em locais remotos. Mesmo que uma mesma rede LoRaWAN tenha diferentes objetivos, baseados em aplicações distintas, os gateways possuem o objetivo comum de fornecer a maior área de cobertura possível;
• Aplicações: Conectar e interligar os diferentes dispositivos da rede TTN para o fornecimento de informações gerais sobre a coleta de dados dos dispositivos.
VISUINO
O Visuino é o mais recente software inovador da Mitov Software. Um ambiente de programação visual que permite programar suas placas Arduino.
O Visuino é o mais recente software inovador da Mitov Software. Um ambiente de programação visual que permite programar suas placas Arduino.
Os componentes encontrados no software Visuino representam seus componentes de hardware e você poderá criar e projetar facilmente seus programas usando arrastar e soltar. Nenhum equipamento ou hardware é necessário para executar o software no modo de design. Depois de ter concluído o design, você pode conectar o upload da placa Arduino e executá-lo.
Para aquelas pessoas que não são fortes em escrever código, em seguida, projetar, compilar e criar programas Arduino nunca foi tão fácil! Por que perder tempo criando código quando já se faz todo o trabalho duro para você? Você tem sua placa Arduino e um ótimo design de hardware, veja-a rodando em minutos, não em horas!
ARDUINO
O que é Arduino? Se você sabe pouco sobre Arduino, por favor dê uma olhada abaixo:
Você conhece Arduino. Instale o IDE primeiro:
https://www.arduino.cc/en/Main/Software
Você conhece Arduino. Instale o IDE primeiro:
https://www.arduino.cc/en/Main/Software
LOM204 e Arduino
LOM204 é baseado em STM32L071. No Arduino STM32 existe este core.
Como instalar Arduino STM32?
adicionar em Arquivo Preferências URLs adicionais
http://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
Em seguida, instale o BSP para STM32. Se a instalação estiver concluída como segue:
LIB LoraWAN para Arduino - LMIC (Catena)
Baixe a biblioteca LoRaWAN de:
mcci-catena/arduino-lmic: LoraWAN-MAC-in-C library, adapted to run under the Arduino environment (github.com)
mcci-catena/arduino-lmic: LoraWAN-MAC-in-C library, adapted to run under the Arduino environment (github.com)
Adicione ao Arduino IDE:
Defina a Região
lmic_project_config.h
// project-specific definitions
//#define CFG_eu868 1
//#define CFG_us915 1
#define CFG_au915 1
//#define CFG_as923 1
// #define LMIC_COUNTRY_CODE LMIC_COUNTRY_CODE_JP /* for as923-JP */
//#define CFG_kr920 1
//#define CFG_in866 1
#define CFG_sx1276_radio 1
//#define LMIC_USE_INTERRUPTS
No PACKAGE do STM32, alguns arquivos tiveram que ser alterados para ter acesso aos GPIOS do LOM204.
Em
C:\Users\Usuario\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.2.0\variants\STM32L0xx
Descompacte
Em
C:\Users\Usuario\AppData\Local\Arduino15\packages
Tem-se então em variants, uma placa LOM204
Gravador para utilizar com Visuino
Instale o STM32 Cube Programmer, o Arduino (STM32 PACKAGE) irá reconhecê-lo e então utilizá-lo para programar o LOM204. O Kit LOM204 possui um gravador ST-LINK embarcado.
Caso não tenhas um Kit LOM204 ou seja, apenas um módulo, utilize o um ST-LINK V2
O autor utilizou o ST-LINK.
Baixe o VISUINO PRO e instale
Foi Criado, não oficialmente , um VCOMP (Virtual Component) para o LOM204, o qual pode ser baixado aqui.
Copie para a PASTA
C:\Users\Usuario\Documents\Arduino\libraries\Mitov\Visuino
Projeto VISUINO, baseado no exemplo Lmic (TTN-OTAA.ino)
Atenção, o VISUINO instalará o SDK "STM32" em
C:\Users\Usuario\AppData\Local\Arduino15\packages
Podes apagar, deixe o baixado pela IDE do Arduino, para que faça referência ao SDK oficial do STM32.
C:\Users\Usuario\AppData\Local\Arduino15\packages\STMicroelectronics
LMIC LoRaWAN Stack
Certifique-se que LOM204 e programador estejam selecionados, bem como demais parâmetros e então compile.
Transfira o programa para os dois LOM204
Pronto!
Explicação do Projeto Visuino
Imprime a cada 20 segundos o estado do GPIO e últimos 32 estados (CustomCode)
void printBin(unsigned long int aByte) {
for (int8_t aBit = 31; aBit >= 0; aBit--)
Serial.write(bitRead(aByte, aBit) ? '1' : '0');
Serial.println();
}
CustomCode LMIC - Credenciais
CustomCode LMIC - LoRaWAN Stack
Estado do Relay é alterado e gravado na EEPROM via DownLink - JSON {"RELAY":0}
Pela UART é enviada a SUB-BAND utilizada para LoRaWAN - JSON {"SUBBAND":0}
Eventos do LoRaWAN - Lmic
Sinalizar em GPIO o Status das Operações do Lmic
Execução
Significa se você não mandou pela UART a SUB-BAND e EPROM está com "Sujeira"
bit_t LMIC_selectSubBand(u1_t band) {
bit_t result = 0;
ASSERT(band < 8); //<==============================
for (int b = 0; b<8; ++b) {
if (band == b)
result |= LMIC_enableSubBand(b);
else
result |= LMIC_disableSubBand(b);
}
return result;
}
Altere para (assim se SUB-BAND for maior que 7, altere para 1)
bit_t LMIC_selectSubBand(u1_t band) {
bit_t result = 0;
int band_aux;
band_aux = band;
if(band_aux>7)
band_aux = 1; //Configurado no Gateway
ASSERT(band_aux < 8);
for (int b = 0; b<8; ++b) {
if (band_aux == b)
result |= LMIC_enableSubBand(b);
else
result |= LMIC_disableSubBand(b);
}
return result;
}
Recompile, grave, envie JSON
Pegue Credenciais OTAA no CHIRPSTACK e altere
Atenção LSB para DEVEUI
Publicação TTN
DOWNLINK PARA ACIONAR RELE
Deve mandar a mensagem
{"RELAY":X}, onde 1 LIGA RELÊ e 0 DESLIGA RELÊ
GPIO vai para ALTO (Ligado à um RELÊ)
EXEMPLO
Fontes:
Dúvidas
suporte@smartcore.com.br
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