terça-feira, 6 de dezembro de 2022

LOM204A - COLETANDO ÚLTIMOS 32 ESTADOS DE UMA CHAVE E ENVIANDO VIA LoRaWAN - CUSTOM CODE

    

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.
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

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

BSP (utilizar 2.2.0)

Em seguida, instale o BSP para STM32. Se a instalação estiver concluída como segue:

LIB LoraWAN para Arduino - LMIC (Catena)


Adicione ao Arduino IDE:

Ok, a LIB está instalada para ser acessada pelo Visuino. 

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


Buffer Circular


Estado do GPIO lido pelo CustomCode Buffer Circular

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

Significa que últimas 20 leituras do GPIO retornaram 0
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