domingo, 7 de julho de 2024

PROGRAMANDO WISOL LSM110A ( LoRaWAN CLASS A - OTAA) COM STM32DUINO LoRaWAN E ACESSANDO LoRaWAN - EVERYNET - SYNC

  

Baseado no canais de uplink, downlink, dwell, etc

LA915 · Everynet Network Server Máscara de canais (Join, Uplink, Downlink)

Foram alterados os arquivos RegionAU915.h e RegionAU915.c para serem compatíveis somente com EVERYNET.

Entre em contato para testes.

LORAMAC VERSION 1.0.3

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

Será publicada uma sequência de bytes {0xde, 0xad, 0xbe, 0xef} a cada 20 segundos na rede LoRaWAN EVERYNET (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


ATENÇÃO: PARA UTILIZAR SERVIÇOS DA EVERYNET, CONTATE E PEÇA OS BROKERS.

A American Tower é uma multi nacional presente em mais de 16 países, com de 160.000 sites no mundo onde ela aluga espaço para as operadoras colocarem suas torres celulares e rádios. No Brasil ela possui mais de 19.000 sites, tendo uma ampla presença geográfica. Ela decidiu de forma pioneira no Brasil lançar uma rede LoRaWAN junto com a EveryNet, de forma a permitir o avanço do IoT.

O cliente que tem um produto que siga o padrão LoRaWAN pode contratar o serviço de dados da American Tower / EveyNet de forma a se preocupar somente com seus devices e aplicação, sem ter que se focar na infra-estrutura e gateways.





OTAA

• Vantagem: a rede gera e envia as chaves de criptografia; isto torna mais seguro. Devido ao maior nível de segurança, o OTAA é o método mais utilizado em IoT / LoRaWAN. 

• AppEUI: Este é um identificador de aplicativo exclusivo usado para agrupar objetos. este
endereço, 64 bits, é usado para classificar os dispositivos periféricos por aplicação. Essa configuração pode seja ajustado. 

• DevEUI: Este identificador, configurado de fábrica, torna cada objeto único. Em princípio, esta
configuração não pode ser ajustada. 

• AppKey: esta é uma chave secreta compartilhada entre o dispositivo periférico e a rede. É usado para determinar as chaves da sessão. Essa configuração pode ser ajustada.

Concentre-se na OTAA 

O Servido de Rede é o componente de software encarregado de estabelecer uma conexão com os objetos e gerenciando o núcleo da rede. Durante a conexão OTAA, e supondo que o dispositivo esteja autorizado a conectar-se a rede, a rede troca chaves de criptografia específicas da sessão com o núcleo da rede. O Servidor de Rede então aloca informações específicas para a sessão e as envia para o aparelho periférico:

DevAddr: Endereço lógico (equivalente a um endereço IP) que será usado para todos comunicação subseqüente.

 NetSKey (chave de sessão de rede): chave de criptografia entre o objeto e o operador usado para transmissões e para validar a integridade das mensagens. 

•   AppSKey (chave de sessão do aplicativo): chave de criptografia entre o objeto e operador (através da aplicação) utilizado para as transmissões e para validar a integridade das mensagens

1.1 Entrando na EveryNet

Passo 1: Cadastre-se uma conta de usuário no servidor EveryNet, em https://ns.atc.everynet.io




1.2 Adicionar um dispositivo EndDevice LoRaWan




Esta seção mostra como adicionar um dispositivo EndDevice LoRaWAN à rede LoRaWAN e ver os dados pelo web site da EveryNet. Usamos o LSM110A como um dispositivo de referência - a configuração para outros dispositivos LoRaWAN será semelhante.

Passo 1​: Criar uma definição de dispositivos no EveryNet

Três códigos são necessários para definir o dispositivo no EveryNet: 

Device EUI - código de identificação único para um dispositivo em particular. 
Application EUI - código de identificação para um aplicativo definido no Everynet. 
Application key - Chave exclusiva para proteger as comunicações com um dispositivo em particular.

Para o servidor EveryNet, você pode usar os códigos estabelecidos por você ou criados pelo servidor.

Pressione o sinal de + para abrir a tela abaixo e adicionar device!





Mude para Activation para OTAA e Encryption para NS

LA915-928


Dicas

Device EUI –  deixe o sistema gerar
Application EUI – deixe o sistema gerar
Application key – deixe o sistema gerar

Nota-se que há uma APP EUI já criado por EveryNet, mas esta não é a definida no dispositivo. Para adicionar o APP EUI do dispositivo LSM110A, utilize comandos AT.

Introduzir os códigos ApplicationEUI ApplicationKey obtidos do site da EveryNet e SET para cada um.




Passo 2: Ligar dispositivo LSM110A e vai juntar-se automaticamente a rede EveryNet. 


Depois de ingressar com sucesso, ele vai começar a fazer upload de mensagens para a EveryNet. Selecione a guia Dados e você vai ver os dados que aparecem no painel.

Note que isso pode levar algum tempo para que os dados do dispositivo para aparecer no visor EveryNet.

Dados são mostrados no final da página

Configuração no Servidor final.

Não esquecer de especificar "LoRaWAN protocol version" que você está utilizando em seu EndDevice (LoRaWAN protocol version)



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 (última versão na presente data)

LIB STM32LoRaWAN

No github


Baixe em formato ZIP


Adicione ao Arduino IDE:


Pronto


Altere Placa para STM32WL series


Modelo Generic WLE5CCUX


Baseado no canais de uplink, downlink, dwell, etc

LA915 · Everynet Network Server Máscara de canais (Join, Uplink, Downlink)

Foram alterados os arquivos RegionAU915.h e RegionAU915.c para serem compatíveis somente com EVERYNET.

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

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



Neste exemplo, será transmitido para LoRaWAN (EVERYNET) 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. * This example is using the RTC in MIX (binary and BCD) mode * * Revised BSD License - https://spdx.org/licenses/BSD-3-Clause.html */ #include <STM32LoRaWAN.h> #include <IWatchdog.h> STM32LoRaWAN modem; static const unsigned long TX_INTERVAL = 10000; /* ms */ unsigned long last_tx = 0; /* Get the rtc object */ STM32RTC& rtc = STM32RTC::getInstance(); void setup() { Serial.begin(115200); Serial.println("Start"); modem.begin(AU915); modem.setPort(1); modem.setADR(true); modem.power(14); //wdt IWatchdog.begin(32000000); // Configure join method by (un)commenting the right method // call, and fill in credentials in that method call. //bool connected = modem.joinOTAA(/* AppEui */ "534ae9677ffc1c41", /* AppKey */ "708ce3cfacf88f24eb88da478ce56fca", /* DevEui */ "0080e115051fcc25"); bool connected = modem.joinABP(/* DevAddr */ "83c6cf87", /* NwkSKey */ "f65b7ad67da7c8a26e5ff76d4bcde9c9", /* AppSKey */ "6422a647db52181dc18502e4715b98f7"); if (connected) { Serial.println("Joined"); } else { Serial.println("Join failed"); while (true) /* infinite loop */ ; } /* set the calendar */ rtc.setTime(15, 30, 58); rtc.setDate(04, 07, 23); } void send_packet() { char payload[27] = {0xde, 0xad, 0xbe, 0xef}; /* packet to be sent */ /* prepare the Tx packet : get date and format string */ sprintf(payload, "%02d/%02d/%04d - %02d:%02d:%02d", rtc.getMonth(), rtc.getDay(), 2000 + rtc.getYear(), rtc.getHours(), rtc.getMinutes(), rtc.getSeconds()); modem.beginPacket(); modem.write(payload, strlen(payload)); if (modem.endPacket(true) == (int)strlen(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(); } //WDT WAKE UP IWatchdog.reload(); }














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 20 segundos.
UPLINK message
PA2 - TXD / PA3- RXD

DOWNLINK message




Caso você teste o exemplo ScheduledAsync, comentar as linhas de acesso ao GPIO de LED_BUILTIN, pois é reservado no caso do LSM110A.

//pinMode(LED_BUILTIN, OUTPUT);
//do_blink();

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

domingo, 30 de junho de 2024

LSM110A - AU915 --> LA915 - EveryNet

 LA915 - EveryNet

      

TESTES PRELIMINARES

Baseado nas informações obtidas pelo LINK abaixo, iniciou-se a conversão dos SDK da WISOL para funcionar com a EVERYNET (LA915).


Para isto, foi comparado parâmetro por parâmetro dos arquivos AU915 e LA915 (pois são muito parecidos), para então fazer as mudanças no AU915 para que funcione com LA915.

LA915A

Implantação da EveryNet do plano de canais AU915-928 para o Brasil.

Primeiros 8 canais utilizados.

ChannelsDefaultMask[0] = 0xFF;

Canais para Uplink:
Índice Frequência Taxa de dados
0         915.2 0,1,2,3,4,5
1         915.4 0,1,2,3,4,5
2         915.6 0,1,2,3,4,5
3         915.8 0,1,2,3,4,5
4         916.0 0,1,2,3,4,5
5         916.2 0,1,2,3,4,5
6         916.4 0,1,2,3,4,5
7         916.6 0,1,2,3,4,5
Canais para Downlink:
Índice Frequência
0         923.3
1         923.9
2         924.5
3         925.1
4         925.7
5         926.3
6         926.9
7         927.5

Frequência de downlink, na verdade, não escrita em fontes, mas calculada na configuração da janela RX1 da seguinte maneira:

923300000 + (uplink_channel_number % 8) * 600000

O canal da janela RX2 é fixo:

Frequência: 923.3 Datarate (Taxas de dados): 8.

Atraso de recebimento para a janela RX1: 5 segundos.

Atraso de recebimento para a janela RX2: 6 segundos.

Tempo de espera padrão do uplink: 0.

Tempo de espera padrão do downlink: 0.

Datarates (Taxas de dados)
Índice Largura de banda Fator de espalhamento Tamanho máximo do payload Taxa de bits física [bit/s]
0         125 kHz                 SF12                         51                                                 250
1         125 kHz                 SF11                         51                                                 440
2         125 kHz                 SF10                         51                                                 980
3         125 kHz                 SF9                                 115                                                 1760
4         125 kHz                 SF8                                 242                                                 3125
5         125 kHz                 SF7                                 242                                                 5470
6         500 kHz                 SF8                                 242                                                 12500

A EveryNet disponibilizou dois arquivos para ajudar a conversão: REGIONLA915.c e REGIONLA915.h.


Destaque foi dado ao REGIONLA915.h pois possui os parâmetros de configuração utilizados pelo REGIONLA915.c

Para verificar as diferenças, foi utilizado o utility DIFFCHECKER para Windows e utilizado a opção Plain Text Compare.







Foram alterados várias diferenças entre os arquivos e alterados os arquivos REGIONLA915.h e REGIONAU915.h.

Optou-se por alterar o arquivo REGIONAU915.h e não criar um novo REGIONLU915.h devido à vários erros de compilação. 

Após alteração do REGIONAU915.h, o mesmo foi substituído no SDK da WISOL, bem como demais parâmetros conforme blog abaixo


E então gerado o HEX para testes.

A EveryNet disponibilizou Login/Password para testes e então foi criado um EndDevice para testes com os parâmetros abaixo.



Testes foram realizados e foram obtidos alguns JOIN e envio de pacotes com sucesso, mas de forma intermitente, conforme imagem abaixo.


Acredita-se que o problema pode estar relacionado à qualidade do sinal por causa da existências de vários morros na região de testes.




Uma vez realizado o JOIN, continua a intermitência para envio dos pacotes.

Pacote chegando na EveryNet




Obervou-se que no novo HEX gerado:

 a Janela RX1 está batendo com a fórmula

923300000 + (uplink_channel_number % 8) * 600000

 a Janela RX2 está batendo com 

Frequência: 923.3 Datarate (Taxas de dados): 8.

e tempo de espera das Janelas de recebimento batem com

Atraso de recebimento para a janela RX1: 5 segundos.

Atraso de recebimento para a janela RX2: 6 segundos.



Downlink

Também foi possível receber da EveryNet mensagens






24H = '$'

Pretende-se esta semana realizar mais testes em locais mais próximos e visados às torres da EveryNet.

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

terça-feira, 21 de maio de 2024

LSM110A - TESTES DA MOTHER BOARD - A/D - 4-20mA

                                                  LSM110A - TESTES DA MOTHER BOARD

      


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

Neste exemplo será feito um projeto para:

-PISCA LED NO PINO PA7
-IMPRIMIR HELLO WORLD NO TERMINAL A CADA 1 SEGUNDO
-MANDAR UM CONTADOR VIA "SPI" PARA DISPLAY 7 SEGMENTOS (TM1637)
-LER HORA/DATA DO DS3231 E MOSTRAR NA UART
-LER A/D  E MOSTRAR NA UART
-LER DS3221 E MOSTERA NO TM1637
-ESCREVER E LER REGISTRADOR MODBUS VIA RS485
-PWM LED
-RELAY
-OPTO DIGITAL INPUT
-LoRa RECEIVE
-LER A/D (4-20mA) E MOSTRAR NA UART
 

LSM110A Mother Board

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.

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)


Esquema Elétrico - últimas correções


Placa Montada


CONEXÃO COM ST-LINK V2 E UART

ST-LINK V2 e UART1

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!

Para utilizar o Visuino para programar o LSM110A, deve-se copiar o arquivo Visuino_Wisintainer.zip para a pasta 

Wisintainer : Namespace //--------------------------------------------------------------------------- +TArduinoSTM32_STM32WL_HardwareSerial : TArduinoSTM32DefinedPinsBasicSerial RXPin = 3 TXPin = 2 ; //--------------------------------------------------------------------------- //Miguel Wisintainer [Name( 'STM32WL' )] [ArduinoBoardArchitecture_STM32] [ArduinoBoardCompileParams( 'STMicroelectronics:stm32:GenWL:pnum=GENERIC_WL55JCIX' )] [Category( TSTM32Category )] [ParentImage] +TArduino_STM32_STM32WL_Board : TArduino_STM32_Basic_Shared_Modules_Board [AddItem( TArduinoSTM32HardwareSerial0 )] [AddItem( TArduinoSTM32_STM32WL_HardwareSerial )] Serial [AddItem( TArduinoI2C, 1 )] I2CChannels [AddItem( TArduinoSPI, 1 )] SPIChannels [ArduinoBoard_Add_DigitalAnalogChannel( 0, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PA0 (BUT1) 3.3V', 'PA0' )] [ArduinoBoard_Add_DigitalAnalogChannel( 1, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PA1 (BUT2) (WKUP) 3.3V', 'PA1' )] [ArduinoBoard_Add_DigitalAnalogChannel( 2, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMSerial0Channel, 'PA2 (TX0) 3.3V', 'PA2' )] [ArduinoBoard_Add_DigitalAnalogChannel( 3, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMSerial0Channel, 'PA3 (RX0) 3.3V', 'PA3' )] [ArduinoBoard_Add_DigitalAnalogChannel( 4, TArduinoCombinedAnalogDigitalPullDownOpenDrainChannel, 'PA4 (SPI1-NSS) 3.3V', 'PA4' )] [ArduinoBoard_Add_DigitalAnalogChannel( 5, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMSPI0Channel, 'PA5(SPI1-SCK) 3.3V', 'PA5' )] [ArduinoBoard_Add_DigitalAnalogChannel( 6, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMSPI0Channel, 'PA6(SPI1-MISO) 3.3V', 'PA6' )] [ArduinoBoard_Add_DigitalAnalogChannel( 7, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PA7 3.3V', 'PA7' )] [ArduinoBoard_Add_DigitalAnalogChannel( 8, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PA8 3.3V', 'PA8' )] [ArduinoBoard_Add_DigitalAnalogChannel( 9, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMSerial1Channel, 'PA9 (TX1) 3.3V', 'PA9' )] [ArduinoBoard_Add_DigitalAnalogChannel( 10, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMSerial1Channel, 'PA10 (RX1) 3.3V', 'PA10' )] [ArduinoBoard_Add_DigitalAnalogChannel( 11, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMI2C0Channel, 'PA11 (I2C0-SDA) 3.3V', 'PA11' )] [ArduinoBoard_Add_DigitalAnalogChannel( 12, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMI2C0Channel, 'PA12 (I2C0-SCL) 3.3V', 'PA12' )] [ArduinoBoard_Add_DigitalAnalogChannel( 13, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PA13 (SWDIO) 3.3V', 'PA13' )] [ArduinoBoard_Add_DigitalAnalogChannel( 14, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PA14 (SWCLK) 3.3V', 'PA14' )] [ArduinoBoard_Add_DigitalAnalogChannel( 15, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PA15 (LED3) 3.3V', 'PA15' )] [ArduinoBoard_Add_DigitalAnalogChannel( 18, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PB2 3.3V (ADC-IN4)', 'PB2' )] [ArduinoBoard_Add_DigitalAnalogChannel( 19, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PB3 3.3V', 'PB3' )] [ArduinoBoard_Add_DigitalAnalogChannel( 20, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PB4 3.3V', 'PB4' )] [ArduinoBoard_Add_DigitalAnalogChannel( 21, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMSPI0Channel, 'PB5(SPI1-MOSI) 3.3V', 'PB5' )] [ArduinoBoard_Add_DigitalAnalogChannel( 22, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PB6 3.3V', 'PB6' )] [ArduinoBoard_Add_DigitalAnalogChannel( 23, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PB7 3.3V', 'PB7' )] [ArduinoBoard_Add_DigitalAnalogChannel( 24, TArduinoCombinedAnalogDigitalPullDownOpenDrainPWMChannel, 'PB8 3.3V', 'PB8' )] Digital : TArduinoDigitalChannels ; //--------------------------------------------------------------------------- ; // Wisintainer

C:\Users\Usuario\libraries

 e descompactar.

Também alterar variant_generic.h para

C:\Users\UsuA!rio\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.7.1\variants\STM32WLxx\WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I

// I2C definitions
#ifndef PIN_WIRE_SDA
  #define PIN_WIRE_SDA          PA11
#endif
#ifndef PIN_WIRE_SCL
  #define PIN_WIRE_SCL          PA12
#endif

e

// SPI definitions
#ifndef PIN_SPI_SS
  #define PIN_SPI_SS            PA4
#endif
#ifndef PIN_SPI_SS1
  #define PIN_SPI_SS1           PA15
#endif
#ifndef PIN_SPI_SS2
  #define PIN_SPI_SS2           PB2
#endif
#ifndef PIN_SPI_SS3
  #define PIN_SPI_SS3           PNUM_NOT_DEFINED
#endif
#ifndef PIN_SPI_MOSI
  #define PIN_SPI_MOSI          PB5
#endif
#ifndef PIN_SPI_MISO
  #define PIN_SPI_MISO          PA6
#endif
#ifndef PIN_SPI_SCK
  #define PIN_SPI_SCK           PA5
#endif

Execute o Visuino faça o projeto abaixo

Projeto Visuino para imprimir conteúdo do conversor A/D - 4-20mA

Configure as Seriais 1 e 2



Altere Placa para STM32WL series e compile


Transferindo (utilizado o STM32CubeProgrammer)

Via ST-LINK V2


Execução 

Gerador 4-20mA




Gerador 4-20mA





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