domingo, 19 de fevereiro de 2023

PROGRAMANDO WISOL LSM110A ( LoRaWAN CLASS A - OTAA) COM ARDUINO E ACESSANDO LoRaWAN TTN

 

O objetivo deste BLOG é demonstrar como é possível programar o módulo WISOL LSM110A via Arduino Framework e assim utilizá-lo como OPENCPU.

Será publicada uma sequência de bytes {0xde, 0xad, 0xbe, 0xef} a cada 60 segundos na rede LoRaWAN TTN (CLASS A, OTAA).

LSM110A Starter KIT
Módulo

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


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.

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

LSM110A e Arduino (STM32DUINO)

LSM110A é baseado em STM32WL55.  No Arduino STM32 existe este core.

Como instalar Arduino STM32? adicionar em Arquivo-->Preferências-->URLs adicionais

https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json


BSP

2.4.0

LIB STM32LoRaWAN

No github


Baixe em formato ZIP


Adicione ao Arduino IDE:


Pronto


Altere Placa para STM32WL series


Modelo Generic WLE5CCUX


Baseado em...


...máscara de canais (Join, Uplink, Downlink)

Ver RegionAU915.h
C:\Users\Usuario\Documents\Arduino\libraries\STM32LoRaWAN-main\src\STM32CubeWL\LoRaWAN\Mac\Region

// Initialize channels default mask #if ( HYBRID_ENABLED == 1 ) RegionNvmGroup2->ChannelsDefaultMask[0] = HYBRID_DEFAULT_MASK0; RegionNvmGroup2->ChannelsDefaultMask[1] = HYBRID_DEFAULT_MASK1; RegionNvmGroup2->ChannelsDefaultMask[2] = HYBRID_DEFAULT_MASK2; RegionNvmGroup2->ChannelsDefaultMask[3] = HYBRID_DEFAULT_MASK3; RegionNvmGroup2->ChannelsDefaultMask[4] = HYBRID_DEFAULT_MASK4; RegionNvmGroup2->ChannelsDefaultMask[5] = 0x0000; #else RegionNvmGroup2->ChannelsDefaultMask[0] = 0xFF00; RegionNvmGroup2->ChannelsDefaultMask[1] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[2] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[3] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[4] = 0x00FF; RegionNvmGroup2->ChannelsDefaultMask[5] = 0x0000; #endif /* HYBRID_ENABLED == 1 */


Altere em radio_board_if.c 
em
C:\Users\Usuario\Documents\Arduino\libraries\STM32LoRaWAN-main\src\BSP

// Supported TX modes (LP/HP or both) #if !defined(LORAWAN_TX_CONFIG) #define LORAWAN_TX_CONFIG RBI_CONF_RFO_HP //MIGUEL#define LORAWAN_TX_CONFIG RBI_CONF_RFO_LP_HP #endif #if !defined(LORAWAN_RFSWITCH_PINS) #define LORAWAN_RFSWITCH_PINS PB12,PC13 #define LORAWAN_RFSWITCH_PIN_COUNT 2 #define LORAWAN_RFSWITCH_OFF_VALUES LOW,LOW #define LORAWAN_RFSWITCH_RX_VALUES HIGH,LOW #define LORAWAN_RFSWITCH_RFO_LP_VALUES HIGH,HIGH #define LORAWAN_RFSWITCH_RFO_HP_VALUES HIGH,HIGH #endif










Ok, o ambiente de desenvolvimento está pronto. Abra o  Basic.ino  e configure 3 parâmetros para LoRaWAN_OTAA os quais deve ser obtidos no servidor TTN.

bool connected = modem.joinOTAA(/* AppEui */ "0000000000000099", /* AppKey */ "FF9F138B40180AA45D6846E0A0146954", /* DevEui */ "0080E115051FD80A");



Neste exemplo, será transmitido para LoRaWAN (TTN) os dados

Segue código final (alterado)

/** * This is a very basic example that demonstrates how to configure the * library, join the network, send regular packets and print any * downlink packets received. * * Revised BSD License - https://spdx.org/licenses/BSD-3-Clause.html */





#include <STM32LoRaWAN.h> HardwareSerial Serial1(PB6, PB7); STM32LoRaWAN modem; static const unsigned long TX_INTERVAL = 60000; /* ms */ unsigned long last_tx = 0; void setup() { Serial.begin(115200); Serial.println("Start"); modem.begin(AU915); // Configure join method by (un)commenting the right method // call, and fill in credentials in that method call. bool connected = modem.joinOTAA(/* AppEui */ "0000000000000099", /* AppKey */ "FF9F13XX40180AAXXD6846E0A0146954", /* DevEui */ "00XXXX15051XX8XX"); //bool connected = modem.joinABP(/* DevAddr */ "00000000", /* NwkSKey */ "00000000000000000000000000000000", /* AppSKey */ "00000000000000000000000000000000"); if (connected) { Serial.println("Joined"); } else { Serial.println("Join failed"); while (true) /* infinite loop */; } } void send_packet() { uint8_t payload[] = {0xde, 0xad, 0xbe, 0xef}; modem.setPort(10); modem.beginPacket(); modem.write(payload, sizeof(payload)); if (modem.endPacket() == sizeof(payload)) { Serial.println("Sent packet"); } else { Serial.println("Failed to send packet"); } if (modem.available()) { Serial.print("Received packet on port "); Serial.print(modem.getDownlinkPort()); Serial.print(":"); while (modem.available()) { uint8_t b = modem.read(); Serial.print(" "); Serial.print(b >> 4, HEX); Serial.print(b & 0xF, HEX); } Serial.println(); } } void loop() { if (!last_tx || millis() - last_tx > TX_INTERVAL) { send_packet(); last_tx = millis(); } }














Montagem


Compilando

Gravador

"Instale" o STM32 Cube Programmer, o Arduino (STM32 PACKAGE) irá reconhecê-lo e então utilizá-lo para programar o LSM110A. O Kit LSM110A possui um "gravador" ST-LINK embarcado.

Neste blog foi utilizado o BREAKOUT e um ST-LINK-V2.



Uma vez gravado o Software, o LSM110A fará o JOIN na LoRaWAN enviará o pacote a cada 60 segundos.



UPLINK message
PA2 - TXD / PA3- RXD

DOWNLINK message



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

quinta-feira, 16 de fevereiro de 2023

Wisol LOM204A02 com comandos AT - LORAWAN - VISUINO + PICSIMLAB

 Wisol LOM204A02 com comandos AT  - LORAWAN - VISUINO + PICSIMLAB



O objetivo deste BLOG é demonstrar como pode-se programar o LOM204 com comandos AT,  baseado nos blogs:


E utilizar o VISUINO para enviar comandos AT e simulado no PICSIMLAB através de uma COMM virtual (PICSIMLAB) conectado a um Spare Parts que abre uma COMM real com o LOM204 pela USB (serial para USB).

PICSIMLAB COM VISUINO

PICSimLab é um emulador em tempo real de placas de desenvolvimento com integração de depurador MPLABX/avr-gdb. PICSimLab suporta microcontroladores de picsim, simavr, uCsim, qemu-stm32, qemu-esp32 e gpsim. O PICSimLab possui integração com MPLABX/Arduino IDE para programação das placas do microcontrolador. Como o objetivo do PICSimLab é emular hardware real, ele não possui nenhum suporte para edição de código-fonte. Para edição de código e depuração, as mesmas ferramentas usadas para uma placa real devem ser usadas com o PICSimLab, como MPLABX, Arduino IDE ou VSCode com PlatformIO.
O PICSimLab suporta vários dispositivos (peças sobressalentes) que podem ser conectados às placas para simulação. Como exemplos de LEDs e botões para saídas e entradas simples e alguns mais complexos como o ethernet shield w5500 para conexão com a internet ou o visor gráfico colorido ili9340 com tela sensível ao toque. A lista completa de peças pode ser acessada na documentação.


VISUINO

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á facilmente criar e projetar seus programas arrastando e soltando. Nenhum equipamento ou hardware é necessário para executar o software no modo de design. Depois de concluir o projeto, você pode conectar o upload da placa Arduino e executá-lo.
Para aquelas pessoas que não são fortes em escrever código, projetar, compilar e criar programas Arduino nunca foi tão fácil! Por que perder tempo codificando quando todo o trabalho duro é feito para você? Você tem sua placa Arduino e um ótimo design de hardware, coloque-a em funcionamento em minutos, não em horas!
Como executar o código Visuino no PICSIMLAB?
Baixe e instale o PICSIMLAB
PICSimLab - Prog. Laboratório de Simulação IC. Baixar | SourceForge.net
(EMULADOR DE ARDUINO)


TTN
The Thing Network

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.

Testado no STARTER KIT LOM204


Bem como em uma placa de testes



Veja a execução (Putty) (WARM UP do LOM204)

                          TXD do PC no RX do LOM204 (PA3) e RXD do PC no TX do LOM204 (PA2)
Baud 19200,N,8,1



TTN

Projeto no PICSIMLAB

Foi utilizado o ATMEGA2560 e nele conectado na UART1 o MODEM LoRa LOM204, através do componente Spare Parts IO UART

o TX da Placa Spare Parts conecta no PINO 17 (RX2 do ATMEGA2560) e o RX da Placa Spare conecta no pino 17 (TX2 do ATMEGA2560)

Projeto no VISUINO 

Básico para ler UART2 (Spare Parts configurada para o Modem LoRa LOM204) e directionar na UART0, esta última em Bridge com a COMM virtual criada pelo COMM0COMM.


                Projeto com Visuino para interagir com Modem LOM204 via Spare Parts IO UART

Projeto exemplo (similar)

Aguarda a ocorrência do JOIN e então envia AABBCCDDEEFF a cada 10 segundos".


Agora compile



Carrege o hex gerado pelo Visuino






Questões: suporte@smartcore.com.br



FONTES: 


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