segunda-feira, 10 de janeiro de 2022

LoRa e LoRaWAN - Conceitos, TTN, repetição de pacotes, tamanho, Data Rate

 LoRa e LoRaWAN - Conceitos, TTN, repetição de pacotes, tamanho, Data Rate

LOM204 utiliza Semtech SX1276

Rádio LoRAWAN e LoRa

O sistema LoRa consiste em duas partes: controle de acesso à mídia LoRaWAN e tecnologia de camada física LoRa.

LoRaWAN é um protocolo de camada de controle de acesso à mídia (MAC) projetado para redes públicas de grande escala com um único operador . Ele é construído usando o esquema de modulação LoRa da Semtech. LoRaWAN como um protocolo é estritamente para redes de longa distância.

LoRa como uma tecnologia de camada física de nível inferior (PHY) pode ser usada em todos os tipos de aplicações fora de uma área ampla. Não, você não precisa de um gateway para aplicativos que não precisam se conectar à Internet. Você pode implementar facilmente protocolos simples usando LoRa, seja com módulos ou com os próprios chips .

Existem duas opções para usar este tipo de tecnologia de rádio : LoRa e LoRaWAN

LoRa contém apenas o protocolo da camada de enlace e é perfeito para ser usado em comunicações P2P entre nós nas bandas de 868 e 900MHz. Módulos LoRa são um pouco mais baratos que os LoRaWAN. 
O LoRaWAN inclui também a camada de rede, pelo que é possível enviar a informação para qualquer Estação Base já ligada a uma plataforma Cloud. 

Uma coisa boa sobre o padrão aberto do LoRa é seu potencial para ser muito flexível ; não será conduzido por uma empresa específica. A estratégia da LoRa Alliance é que a especificação que governa como a rede é gerenciada é relativamente aberta . Você pode baixar as especificações e ingressar na LoRa Alliance, e qualquer fabricante de hardware ou gateway pode construir um módulo ou gateway que esteja em conformidade com as especificações LoRa . Enquanto o próprio ecossistema está aberto, ele tem um elemento fechado: atualmente a única empresa que faz o rádio para LoRa é a Semtech .

Se você precisa da funcionalidade de comando e controle - para, digamos, monitoramento da rede elétrica - LoRa é sua melhor opção . Possui bidirecionalidade verdadeira por causa do link simétrico .

Detalhes do rádio LoRa

Os sistemas de comunicação LoRa para IoT consistem em  LoRa (um formato de modulação chirped) e LoRaWAN (um protocolo de camada MAC). LoRa é uma tecnologia de espalhamento espectral que usa uma banda bastante ampla ( geralmente 125 kHz ou mais ). Seu chirp de frequência modulada utiliza ganho de codificação para aumentar a sensibilidade do receptor.

O ótimo desempenho do LoRa em 3 recursos ( boa sensibilidade, baixa perda de caminho, boa penetração de obstáculos ) torna o LoRa uma tecnologia inovadora que permite links de longo alcance . Como  o receptor LoRa olha para uma quantidade bastante ampla de espectro (então o receptor recebe muito mais ruído do que sistemas de banda estreita como o SigFox), ele precisa elevar o ruído porque uma largura de banda maior do receptor é mitigada pelos ganhos de codificação . Os orçamentos de link práticos são praticamente os mesmos para SigFox e LoRaWAN .

LoRa é um formato de modulação exclusivo que pode ser gerado por peças Semtech LoRa , incluindo os chips transceptores SX1272 e SX1276. É uma maneira realmente econômica e eficiente de obter ganho de processamento em um transceptor em pequena escala de chip . LoRa é uma tecnologia de espalhamento de espectro, mas não é uma tecnologia de espalhamento de espectro de sequência direta . LoRa usa uma portadora não modulada em um chirp FM, que tem semelhanças com o FSK M-ary . Outros recursos notáveis do LoRa são preâmbulos longos e taxas de bits variáveis .

As taxas de dados LoRaWAN variam de 0,3 kbps a 50 kbps (alguns chips podem oferecer taxa de bits de até 300 kbps ). Para maximizar a vida útil da bateria dos dispositivos finais e a capacidade geral da rede, o servidor de rede LoRaWAN está gerenciando a taxa de dados e a saída de RF para cada dispositivo final individualmente por meio de um esquema de taxa de dados adaptável (ADR) .

Você pode transmitir e receber a modulação LoRa em muitas frequências entre 150 MHz e 1 GHz . A arquitetura da estação base Semtech foi projetada para operar apenas de 850 MHz a 1 GHz . Normalmente, LoRa é usado em bandas de frequência não licenciadas de 868 MHz (Europa) e 915 MHz (EUA). Os módulos LoRaWAN podem funcionar nas bandas de 868/900 / 433MHz.

Em comunicações de rádio sem licença, existem limites para os ciclos de trabalho do transmissor. Na Europa, a banda de 863 a 870 MHz foi alocada para operação livre de licença com ciclo de trabalho de transmissão de 0,1%, 1% ou 10% (ou outros meios de controle como LBT e AFA). Em 868 MHz, o ciclo de trabalho é de 1% . Para outras regiões, aplicam-se limitações bastante semelhantes.

Existem também outras recomendações, por exemplo , a Política de Acesso Justo TTN limita os dados que cada dispositivo final pode enviar , permitindo: Uma média de 30 segundos de uplink no ar, por dia, por dispositivo . No máximo 10 mensagens de downlink por dia . Um bom objetivo é manter a carga útil do aplicativo abaixo de 12 bytes e o intervalo entre as mensagens de pelo menos vários minutos (o tamanho do pacote do aplicativo pode variar entre 51 bytes para a taxa de dados mais lenta e 222 bytes para as taxas mais rápidas ).

A LoRa tem contado até agora com espectro não licenciado para fornecer conectividade para sensores usados ​​em medidores inteligentes, dispositivos de rastreamento de ativos e outras redes de “Internet das Coisas” (IoT), mas também está indo para frequências licenciadas ?. As operadoras de telefonia móvel que fizeram investimentos em redes LoRa agora procuram usar o espectro licenciado para dar suporte à tecnologia . Usar a tecnologia sobre o espectro licenciado pode ajudar as operadoras a superar uma das principais desvantagens da tecnologia - a interferência e o congestionamento que podem ocorrer em ondas não licenciadas . “O único benefício das operadoras é que podem garantir a qualidade do serviço por se tratar de uma banda licenciada,”disse o porta-voz misterioso. Ir para outras bandas que não o ISM não deve ser um grande problema, porque, por exemplo, o transceptor SX1272 LoRa cobre uma faixa de frequência de 860 a 1.020 MHz e o transceptor SX1276 abrange uma faixa de frequência de 137 a 1.020 MHz .

Detalhes LoRaWAN

O LoRaWAN inclui também a camada de rede, pelo que é possível enviar a informação para qualquer Estação Base já ligada a uma plataforma Cloud. LoRaWAN foi projetado para a arquitetura centralizada de operadoras de telecomunicações.

A arquitetura de rede LoRaWAN é normalmente apresentada em uma topologia star-of-star na qual os gateways são uma ponte transparente que retransmite mensagens entre os dispositivos finais e um servidor de rede central no backend . Os gateways são conectados ao servidor de rede por meio de conexões IP padrão, enquanto os dispositivos finais usam comunicação sem fio de salto único para um ou vários gateways . Toda a comunicação do terminal é geralmente bidirecional , mas também oferece suporte à operação, como atualização de software que permite multicast pelo ar ou outras mensagens de distribuição em massa para reduzir o tempo de comunicação no ar. 

No sistema LoRa, tanto o ponto final quanto a estação base são relativamente baratos . Isso ocorre principalmente porque você pode usar o mesmo rádio para um receptor na estação base e no terminal . Normalmente, a estação base LoRaWAN tende a ser mais cara do que o terminal.

Vantagens e desvantagens do LoRaWAN

A seguir estão as vantagens do LoRaWAN :
➨Ele usa bandas ISM de 868 MHz / 915 MHz que está disponível em todo o mundo.
➨Tem uma cobertura muito ampla, cerca de 5 km em áreas urbanas e 15 km em áreas suburbanas.
➨Ela consome muito pouca energia e, portanto, a bateria durará muito tempo.
➨O dispositivo Single LoRa Gateway é projetado para cuidar de 1000 dispositivos ou nós finais.
➨ É fácil de implantar devido à sua arquitetura simples
➨Ele usa a técnica Adaptive Data Rate para variar a taxa de dados de saída / saída Rf dos dispositivos finais. A taxa de dados pode variar de 0,3 kbps a 27 Kbps para largura de banda de 125 KHz.
➨A camada física usa modulação CSS robusta (Chirp Spread Spectrum). Ele usa 6 SF (fatores de espalhamento) de SF 7 a 12. Isso fornece transmissões ortogonais em taxas de dados diferentes. Além disso, fornece ganho de processamento. A modulação LoRa tem modulação de envelope constante semelhante à modulação FSK (fácil para design de PA)
➨LoRaWAN suporta três tipos diferentes de dispositivos viz. classe A, classe B e classe C.

A seguir estão as desvantagens do LoRaWAN :

➨ Ele pode ser usado para aplicativos que requerem baixa taxa de dados, ou seja, até cerca de 27 Kbps.
➨O tamanho da rede LoRaWAN é limitado com base no parâmetro chamado de ciclo de trabalho. Este parâmetro surge da regulamentação como fator de limitação chave para o tráfego servido na rede LoRaWAN.
➨Não é o candidato ideal para ser usado em aplicativos de tempo real que requerem latência mais baixa e requisitos de jitter limitado.

A segurança é importante. As redes nacionais que visam a Internet de coisas como infraestrutura crítica, dados pessoais confidenciais ou funções críticas para a sociedade têm uma necessidade especial de comunicação segura. Isso foi resolvido no sistema LoRaWAN por várias camadas de criptografia, conforme detalhado nesta foto da LoRa Alliance .

O modelo de segurança usa várias chaves: Chave de rede exclusiva (EUI64) e garante a segurança no nível da rede, a chave de aplicativo exclusiva (EUI64) garante segurança de ponta a ponta no nível do aplicativo e chave específica do dispositivo (EUI128). Alguma discussão sobre a segurança LoRaWAN pode ser encontrada em Segurança de uma rede IoT usando AES (LoRaWAN) página da web: MIC (Código de Integridade da Mensagem) para cada mensagem e a criptografia ponta a ponta (aplicativo a aplicativo) da carga útil usam AES Chave de 128 bits .

The Things Network

A Things Network é uma rede de internet das coisas global, crowdsourced, aberta, gratuita e descentralizada .  A Things Network (TTN) compreende uma série de gateways LoRaWAN conectados à Internet, implantados por apoiadores entusiasmados em um número crescente de áreas ao redor do mundo.

Como os custos da tecnologia LoRa são muito baixos, a ideia é que não precisemos depender de grandes empresas de telecomunicações para construir essa rede . Por exemplo, a cidade de Amsterdã foi coberta com apenas 10 gateways ao custo de 1200 dólares cada - um único Gateway pode servir milhares de dispositivos. Se você ainda não tem cobertura local, pode implantar seu próprio gateway e conectá-lo ao TTN . Embora os gateways custem cerca de US$500 cada , existem muitas oportunidades de financiamento local.

Embora o objetivo da The Things Network seja oferecer suporte a qualquer protocolo que possa ser útil para a comunidade, o foco atualmente está no LoRaWAN. LoRaWAN é perfeito para a Internet das Coisas, pois utiliza low battery, longo alcance e largura de banda baixa .

The Things Network visa permitir que dispositivos de baixo consumo de energia usem Gateways de longo alcance para se conectar a uma rede descentralizada e de código aberto para trocar dados com aplicativos e plataformas .

Os gateways formam a ponte entre os dispositivos e a The Things Network . Os dispositivos usam redes de baixa energia como LoRaWAN para se conectar ao Gateway, enquanto o Gateway usa redes de alta largura de banda como WiFi, Ethernet ou Celular para se conectar à The Things Network . Todos os Gateways ao alcance de um dispositivo receberão suas mensagens e as encaminharão para a The Things Network.

A rede irá desduplicar as mensagens . O Backend lida com os dados recebidos. O objetivo é tornar os diferentes componentes do backend o mais desacoplados possível , para que haja uma separação clara das responsabilidades de cada componente . Os diferentes componentes do serviço de roteamento da 

The Things Network :
Gateway, Roteador, Broker, NetworkServer, Handler e Aplicativo

LoRaWAN é um protocolo “ intensivo em rede”, no sentido de que devido à abordagem simples e minimalista dos dispositivos, os sistemas backend são responsáveis ​​pela maior parte da lógica. Em primeiro lugar, existem algumas funções relacionadas ao gateway, como agendamento e gerenciamento da utilização dos gateways. O agendamento é necessário porque um gateway só pode fazer uma transmissão ao mesmo tempo . As informações de utilização são usadas para distribuir uniformemente a carga por diferentes gateways e para estar em conformidade com os ciclos de trabalho europeus . Outro recurso importante é monitorar o status de cada gateway . Também precisamos de funções relacionadas ao dispositivo que gerenciam o estado dos dispositivos na rede: O endereçamento é tal que os endereços do dispositivo não são exclusivos , portanto, a rede deve manter o controle de quais endereços são usados ​​por quais dispositivos , a fim de mapear uma mensagem para o dispositivo e aplicativo corretos). Outras coisas que a rede deve controlar são as chaves de segurança e os contadores de quadros . Os manipuladores precisam saber como interpretar dados binários e fazer a ponte para protocolos de camada superior , como AMQP e MQTT. Como a The Things Network será uma rede distribuída, deve haver uma funcionalidade que suporte essa distribuição .

A implementação do Manipulador padrão simplesmente publica uma representação JSON de mensagens de uplink para um tópico <app_eui>/devices/<dev_eui>/up em um broker MQTT. Isso permite que os aplicativos simplesmente assinem o mesmo tópico MQTT e processem os dados de qualquer maneira.

EXEMPLO : A partir da mensagem a seguir, o aplicativo pode, por exemplo, ver que a temperatura medida pelo dispositivo 001122334455667788foi de 12,86 graus:

Topic: 0102030405060708/devices/001122334455667788/up

{ payload: 'BQY=',
  fields:{temperature: 12.86 },
  port: 14,
  counter: 1234,
  metadata:
  [ { frequency: 868.1,
      datarate: 'SF7BW125',
      codingrate: '4/5',
      ...
      longitude: 6.55738,
      latitude: 53.18977 } ] }

A rede da comunidade pública provavelmente ficará com essa API e formato, mas esse comportamento pode ser facilmente adaptado a outros casos de uso.  Depois de publicar a mensagem de uplink no MQTT, o Manipulador determinará se é necessário responder ao dispositivo com uma mensagem de downlink .

Em uma rede aberta com muitos dispositivos finais diferentes (nós) , que não estão conectados, mas apenas começam a enviar quando precisam ( protocolo do tipo ALOHA ), e todos têm uma necessidade de dados e qualidade de conexão diferentes, há muitos fatores limitantes para manter as coisas funcionando .

A taxa de dados e o tamanho máximo do pacote dependem aproximadamente da distância até o gateway mais próximo e do tipo de dados a serem enviados . Para a banda europeia de 863-870 MHz, o tamanho do pacote de aplicativo varia entre 51 bytes para a taxa de dados mais lenta e 222 bytes para taxas mais rápidas   (o protocolo LoRaWAN adiciona pelo menos 13 bytes à carga útil do aplicativo). Quando um dispositivo final está longe de um gateway, ele precisa usar uma taxa de dados baixa para garantir que pelo menos um gateway receba seus dados . Mas uma taxa de dados mais baixa implica em um tempo de transmissão mais longo para cada byte. Para a banda ISM europeia de 863-870 MHz da UE limita o ciclo de trabalho a 1% para dados . Para outras regiões, aplicam-se limitações bastante semelhantes. Para 1000 nós por gateway e limitações de ciclo , acabamos aproximadamente 30 segundos por nó por dia . Com esta Política de Acesso Justo para 10 bytes de carga útil, isso se traduz em (aproximadamente): 20 mensagens por dia no SF12 ou 500 mensagens por dia no SF7 .

Por padrão, os gateways transmitem com potência TX máxima permitida (14 para EU-868) . Cada dispositivo tem o mesmo ciclo de serviço de transmissão, os gateways não são exceção , portanto, o gateway deve ter menos de 1% do ciclo de serviço de transmissão.

Veja o KIT de AVALIAÇÃO LoRa / LoRaWAN da SMARTCORE



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 

sexta-feira, 7 de janeiro de 2022

Wisol LOM204A02 com comandos AT - STM32 ICUBE IDE - LORAWAN

Wisol LOM204A02 com comandos AT  - STM32 ICUBE IDE - LORAWAN

IMPORTANTE: Opção NÃO OFICIAL da WISOL, indicamos uso do KEIL C



O objetivo deste BLOG é demonstrar como pode-se programar o LOM204 com comandos AT,  baseado na library en.i-cube_lrwan_v2.1.0.

Foi utilizado o STM32 CUBE IDE para compilar a APP dos comandos AT, o mesmo pode também ser compilado com o KEIL C.

Testado no STARTER KIT LOM204


Bem como em uma placa de testes

Sobre o I-CUBE-LRWAN:

• Integração de aplicativos pronta;
• Complemento fácil da solução lora® de baixa potência;
• Carga de CPU extremamente baixa; 
• Sem requisitos de latência; 
• Pouco uso de memória;
• Serviços de tempo de baixa potência.

O mesmo foi portado para se compatível com o LOM204.

IMPORTANTE: Opção NÃO OFICIAL da WISOL, indicamos uso do KEIL C

Baseado no link abaixo

Baixe e instale o STM32 CUBE IDE



Baixe e descompacte o github 


(coloque (por exemplo) em C:\STM32CubeExpansion_LRWAN_V2.1.0_LOM204-master)



No STM32 CUBE IDE, faça a importação do Projeto


C:\STM32CubeExpansion_LRWAN_V2.1.0_LOM204-master\Projects\B-L072Z-LRWAN1\Applications\LoRaWAN\LoRaWAN_AT_Slave\STM32CubeIDE\cmwx1zzabz_0xx

Algumas alterações Básicas foram realizadas

  • Em lora_app.h
/* LoraWAN application configuration (Mw is configured by lorawan_conf.h) */
#define ACTIVE_REGION                        LORAMAC_REGION_AU915
  • Em lorawan_conf.h para
/* Region ------------------------------------*/
/* the region listed here will be linked in the MW code */
/* the application (on sys_conf.h) shall just configure one region at the time */
/*#define REGION_AS923*/
#define REGION_AU915
/*#define REGION_CN470*/
/*#define REGION_CN779*/
/*#define REGION_EU433*/
/*#define REGION_EU868*/
/*#define REGION_KR920*/
/*#define REGION_IN865*/
/*#define REGION_US915*/
/*#define REGION_RU864*/
  • Em se-identity.h 
****************************************************************************** ****************************************************************************** ****************************************************************************** */ /*! * When set to 1 DevEui is LORAWAN_DEVICE_EUI * When set to 0 DevEui is automatically set with a value provided by MCU platform */ #define STATIC_DEVICE_EUI 1 /*! * end-device IEEE EUI (big endian) */ #define LORAWAN_DEVICE_EUI { 0x8X, 0x5X, 0x1X, 0xFX, 0xFX, 0xEX, 0x8X, 0x9X } /*! * App/Join server IEEE EUI (big endian) */ #define LORAWAN_JOIN_EUI { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } /*! * When set to 1 DevAddr is LORAWAN_DEVICE_ADDRESS * When set to 0 DevAddr is automatically set with a value provided by a pseudo * random generator seeded with a value provided by the MCU platform */ #define STATIC_DEVICE_ADDRESS 1 /*! * Device address on the network (big endian) */ #define LORAWAN_DEVICE_ADDRESS ( uint32_t )0x01E0002A /*! * Application root key */ #define LORAWAN_APP_KEY 97,4A,BB,55,8A,25,01,94,A6,CB,C2,16,E2,AB,2E,5B /*! * Network root key */ #define LORAWAN_NWK_KEY 97,4A,BB,55,8A,25,01,94,A6,CB,C2,16,E2,AB,2E,5B /*! * Forwarding Network session key */ #define LORAWAN_NWK_S_KEY 2B,7E,15,16,28,AE,D2,A6,AB,F7,15,88,09,CF,4F,3C /*! * Application session key */ #define LORAWAN_APP_S_KEY 2B,7E,15,16,28,AE,D2,A6,AB,F7,15,88,09,CF,4F,3C













































  • Em cmwx1zzabz_0xx_conf.h (pinos do LOM204 (Radio SX1276))
/** ****************************************************************************** * @file : cmwx1zzabz_0xx_conf.h * @brief : This file provides code for the configuration * of the shield instances (pin mapping). ****************************************************************************** * @attention * * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics. * All rights reserved.</center></h2> * * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License. You may obtain a copy of the License at: * www.st.com/SLA0044 * ****************************************************************************** */ #ifndef __CMWX1ZZABZ_0XX_CONF_H__ #define __CMWX1ZZABZ_0XX_CONF_H__ #ifdef __cplusplus extern "C" { #endif #include "platform.h" #include "radio_conf.h" /* Defines ---------------------------------------------------------------*/ #define RADIO_DIO_0_IT_PRIO 0 #define RADIO_DIO_1_IT_PRIO 0 #define RADIO_DIO_2_IT_PRIO 0 #define RADIO_DIO_3_IT_PRIO 0 /* Daughter board Pin mapping --------------------------------------------*/ /* SPI functions redefinition */ #define RADIO_SPI_Init BSP_SPI1_Init #define RADIO_SPI_DeInit BSP_SPI1_DeInit #define RADIO_SPI_SendRecv BSP_SPI1_SendRecv #define RADIO_SPI_SCK_GPIO_PIN BUS_SPI1_SCK_GPIO_PIN #define RADIO_SPI_MISO_GPIO_PIN BUS_SPI1_MISO_GPIO_PIN #define RADIO_SPI_MOSI_GPIO_PIN BUS_SPI1_MOSI_GPIO_PIN #define RADIO_SPI_SCK_GPIO_PORT BUS_SPI1_SCK_GPIO_PORT #define RADIO_SPI_MISO_GPIO_PORT BUS_SPI1_MISO_GPIO_PORT #define RADIO_SPI_MOSI_GPIO_PORT BUS_SPI1_MOSI_GPIO_PORT #define RADIO_SPI_SCK_GPIO_AF BUS_SPI1_SCK_GPIO_AF #define RADIO_SPI_MOSI_GPIO_AF BUS_SPI1_MOSI_GPIO_AF #define RADIO_SPI_MISO_GPIO_AF BUS_SPI1_MISO_GPIO_AF #define RADIO_SPI_SCK_GPIO_CLK_ENABLE() BUS_SPI1_SCK_GPIO_CLK_ENABLE() #define RADIO_SPI_MOSI_GPIO_CLK_ENABLE() BUS_SPI1_MOSI_GPIO_CLK_ENABLE() #define RADIO_SPI_MISO_GPIO_CLK_ENABLE() BUS_SPI1_MISO_GPIO_CLK_ENABLE() /* SPIx Bus Pin mapping */ #define RADIO_NSS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define RADIO_NSS_PORT GPIOA #define RADIO_NSS_PIN GPIO_PIN_4 /* LORA I/O pin mapping */ #define RADIO_RESET_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define RADIO_RESET_PORT GPIOA #define RADIO_RESET_PIN GPIO_PIN_8 #define RADIO_DIOn 4U #define RADIO_DIO_0_PORT GPIOA #define RADIO_DIO_0_PIN GPIO_PIN_12 #define RADIO_DIO_0_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define RADIO_DIO_0_EXTI_LINE EXTI_LINE_12 #define RADIO_DIO_0_IRQn EXTI4_15_IRQn #define H_EXTI_12 hRADIO_DIO_exti[0] #define RADIO_DIO_1_PORT GPIOB #define RADIO_DIO_1_PIN GPIO_PIN_2 #define RADIO_DIO_1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define RADIO_DIO_1_EXTI_LINE EXTI_LINE_2 #define RADIO_DIO_1_IRQn EXTI2_3_IRQn #define H_EXTI_2 hRADIO_DIO_exti[1] #define RADIO_DIO_2_PORT GPIOB #define RADIO_DIO_2_PIN GPIO_PIN_5 #define RADIO_DIO_2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define RADIO_DIO_2_EXTI_LINE EXTI_LINE_5 #define RADIO_DIO_2_IRQn EXTI4_15_IRQn #define H_EXTI_5 hRADIO_DIO_exti[2] #define RADIO_DIO_3_PORT GPIOB #define RADIO_DIO_3_PIN GPIO_PIN_0 #define RADIO_DIO_3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define RADIO_DIO_3_EXTI_LINE EXTI_LINE_0 #define RADIO_DIO_3_IRQn EXTI0_1_IRQn #define H_EXTI_0 hRADIO_DIO_exti[3] #define RADIO_TCXO_VCC_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define RADIO_TCXO_VCC_PORT GPIOB #define RADIO_TCXO_VCC_PIN GPIO_PIN_1 #define RADIO_ANT_SWITCH_CLK_ENABLE_RX() __HAL_RCC_GPIOA_CLK_ENABLE() #define RADIO_ANT_SWITCH_PORT_RX GPIOA #define RADIO_ANT_SWITCH_PIN_RX GPIO_PIN_15 #define RADIO_ANT_SWITCH_CLK_ENABLE_TX_BOOST() __HAL_RCC_GPIOC_CLK_ENABLE() #define RADIO_ANT_SWITCH_PORT_TX_BOOST GPIOC #define RADIO_ANT_SWITCH_PIN_TX_BOOST GPIO_PIN_1 #define RADIO_ANT_SWITCH_CLK_ENABLE_TX_RFO() __HAL_RCC_GPIOC_CLK_ENABLE() #define RADIO_ANT_SWITCH_PORT_TX_RFO GPIOC #define RADIO_ANT_SWITCH_PIN_TX_RFO GPIO_PIN_2 #ifdef __cplusplus } #endif #endif /* __CMWX1ZZABZ_0XX_CONF_H__ */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
























































































  • Em RegionAU915.c, a máscara utilizada para compatibilizar com configuração utilizada no Gateway LoRaWAN

// Initialize channels default mask /* ST_WORKAROUND_BEGIN: Hybrid mode */ #if ( HYBRID_ENABLED == 1 ) RegionNvmGroup2->ChannelsDefaultMask[0] = 0x00FF; RegionNvmGroup2->ChannelsDefaultMask[1] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[2] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[3] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[4] = 0x0001; RegionNvmGroup2->ChannelsDefaultMask[5] = 0x0000; #else RegionNvmGroup2->ChannelsDefaultMask[0] = 0xFF00; RegionNvmGroup2->ChannelsDefaultMask[1] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[2] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[3] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[4] = 0x0000; RegionNvmGroup2->ChannelsDefaultMask[5] = 0x0000;













Carta de Apresentação


  • em stm32l0xx_it.c
/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file stm32l0xx_it.c * @brief Interrupt Service Routines. ****************************************************************************** * @attention * * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics. * All rights reserved.</center></h2> * * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License. You may obtain a copy of the License at: * www.st.com/SLA0044 * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32l0xx_it.h" #include "radio_board_if.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN TD */ /* USER CODE END TD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ extern DMA_HandleTypeDef hdma_lpuart1_tx; extern UART_HandleTypeDef hlpuart1; extern RTC_HandleTypeDef hrtc; /* USER CODE BEGIN EV */ /* USER CODE END EV */ /******************************************************************************/ /* Cortex Processor Interruption and Exception Handlers */ /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ /* USER CODE END NonMaskableInt_IRQn 0 */ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ while (1) { } /* USER CODE END NonMaskableInt_IRQn 1 */ } /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) { /* USER CODE BEGIN W1_HardFault_IRQn 0 */ /* USER CODE END W1_HardFault_IRQn 0 */ } } /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) { /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ /* USER CODE END W1_MemoryManagement_IRQn 0 */ } } /** * @brief This function handles Prefetch fault, memory access fault. */ void BusFault_Handler(void) { /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) { /* USER CODE BEGIN W1_BusFault_IRQn 0 */ /* USER CODE END W1_BusFault_IRQn 0 */ } } /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) { /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ /* USER CODE END W1_UsageFault_IRQn 0 */ } } /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { /* USER CODE BEGIN SVCall_IRQn 0 */ /* USER CODE END SVCall_IRQn 0 */ /* USER CODE BEGIN SVCall_IRQn 1 */ /* USER CODE END SVCall_IRQn 1 */ } /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { /* USER CODE BEGIN DebugMonitor_IRQn 0 */ /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { /* USER CODE BEGIN PendSV_IRQn 0 */ /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } /******************************************************************************/ /* STM32L0xx Peripheral Interrupt Handlers */ /* Add here the Interrupt Handlers for the used peripherals. */ /* For the available peripheral interrupt handler names, */ /* please refer to the startup file (startup_stm32l0xx.s). */ /******************************************************************************/ /** * @brief This function handles PPP interrupt request. * @param None * @retval None */ /*void PPP_IRQHandler(void) { }*/ void EXTI0_1_IRQHandler(void) { #if (defined(CMWX1ZZABZ0XX)) HAL_EXTI_IRQHandler(&H_EXTI_0); #endif } void EXTI2_3_IRQHandler(void) { HAL_EXTI_IRQHandler(&H_EXTI_2); #if (defined(CMWX1ZZABZ0XX)) HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2); #endif #if (defined(SX1276MB1MAS) | defined(SX1276MB1LAS) | defined(SX1272MB2DAS)) HAL_EXTI_IRQHandler(&H_EXTI_3); #endif } void EXTI4_15_IRQHandler(void) { HAL_EXTI_IRQHandler(&H_EXTI_12); HAL_EXTI_IRQHandler(&H_EXTI_5); #if (defined(SX1276MB1MAS) | defined(SX1276MB1LAS) | defined(SX1272MB2DAS)) HAL_EXTI_IRQHandler(&H_EXTI_5); #endif #if (defined(SX1276MB1MAS) | defined(SX1276MB1LAS) | defined(SX1272MB2DAS)) HAL_EXTI_IRQHandler(&H_EXTI_10); #endif #if (defined(CMWX1ZZABZ0XX)) //HAL_EXTI_IRQHandler(&H_EXTI_13); #else HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13); #endif } void DMA1_Channel4_5_6_7_IRQHandler(void) { /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 0 */ /* USER CODE END DMA1_Channel4_5_6_7_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_lpuart1_tx); /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 1 */ /* USER CODE END DMA1_Channel4_5_6_7_IRQn 1 */ } /** * @brief This function handles LPUART1 Interrupt. */ void LPUART1_IRQHandler(void) { /* USER CODE BEGIN LPUART1_IRQn 0 */ /* USER CODE END LPUART1_IRQn 0 */ HAL_UART_IRQHandler(&hlpuart1); /* USER CODE BEGIN LPUART1_IRQn 1 */ /* USER CODE END LPUART1_IRQn 1 */ } void RTC_IRQHandler(void) { /* USER CODE BEGIN RTC_Alarm_IRQn 0 */ /* USER CODE END RTC_Alarm_IRQn 0 */ HAL_RTC_AlarmIRQHandler(&hrtc); /* USER CODE BEGIN RTC_Alarm_IRQn 1 */ /* USER CODE END RTC_Alarm_IRQn 1 */ } /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
























































































































































































































Compilando


Na pasta 
C:\Users\Usuario\Desktop\STM32CubeExpansion_LRWAN_V2.1.0\Projects\B-L072Z-LRWAN1\Applications\LoRaWAN\LoRaWAN_AT_Slave\STM32CubeIDE\cmwx1zzabz_0xx\Debug
será gerado um arquivo cmwx1zzabz_0xx.elf

Abra o STM32 CUBE Programmer e faça a gravação!


Veja a execução (Putty)

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



Lista de comandos AT

Você pode consultar em 

Mandar apenas CR depois do comando


Questões: suporte@smartcore.com.br


Agradecimento especial à

Cleoner Pietralonga

Sem a sua ajuda, não teríamos progredido tanto na portabilidade para o módulo WISOL LOM204.


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