Wisol LOM204A02 com comandos AT - STM32 ICUBE IDE - LORAWAN - VISUINO + Wokwi
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 VISUINO para enviar comandos AT e simulado no Wokwi através de uma COMM virtual conectado ao LOM204 pela USB.
Foi utilizado o STM32 CUBE IDE para compilar a APP dos comandos AT, o mesmo pode também ser compilado com o KEIL C.
Wokwi é um simulador de eletrônica online. Você pode usá-lo para simular Arduino, U-BLOX NINA W106 (ESP32) e muitas outras placas, componentes e sensores populares.
Simula várias partes (elementos Wokwi) como LEDs, shift registers, Buzzer, sensores (ultrassônico, temperatura, umidade etc. ) Display SSD, teclados e muito mais.
Você pode aprender programação Arduino onde quer que esteja. Nenhum hardware é necessário. Além de tudo isso, o simulador Arduino é totalmente gratuito!
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 (utilizado nesse trabalho), 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!
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
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>© 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>© 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
Projeto no VISUINO
"Aguarda ocorrer o JOIN e entao envia AABBCCDDEEFF a cada 10 segundos"
Agora compile
Clique no ICONE para pegar o caminho completo do BIN gerado pelo VISUINO, o qual será colado no Wokwi.
Redirecionado para COMM
{
"version": 1,
"author": "Miguel Wisintainer",
"editor": "Inkscape",
"parts": [
{ "type": "wokwi-custom-board", "id": "esp", "top": 1.57, "left": -48.5, "attrs": {} },
{
"type": "wokwi-serial-port",
"id": "serial",
"top": 0,
"left": 0,
"attrs": { "baud": "9600" }
},
{
"type": "wokwi-lcd2004",
"id": "lcd1",
"top": -0.46,
"left": 121.09,
"attrs": { "pins": "i2c" }
}
],
"connections": [
[ "esp:TX0", "serial:RX", "", [] ],
[ "esp:RX0", "serial:TX", "", [] ],
[ "esp:D21", "lcd1:SDA", "green", [ "h35.19", "v-12.23" ] ],
[ "esp:D22", "lcd1:SCL", "green", [ "h51.75", "v26.28" ] ]
]
}
Execução
Clicando no Sketch (pode deixar vazio), pressione F1 e escolha
LOAD HEX FILE AND SIMULATE
e então COLE o BIN gerado pelo VISUINO
Lista de comandos AT
Você pode consultar em
Mandar apenas CR depois do comando
Questões: suporte@smartcore.com.br
Notas para ARDUINO MEGA
{
"version": 1,
"author": "Anonymous maker",
"editor": "wokwi",
"parts": [ { "id": "mega", "type": "wokwi-arduino-mega" },
{
"type": "wokwi-serial-port",
"id": "serial",
"top": 0,
"left": 0,
"attrs": { "baud": "19200" }
} ],
"connections": [
[ "mega:17", "serial:TX", "", [] ],
[ "mega:16", "serial:RX", "", [] ]]
}
void setup() {
// put your setup code here, to run once:
Serial2.begin(19200);
Serial.begin(19200);
}
void loop() {
// put your main code here, to run repeatedly:
Serial2.println("AT");
Serial.println(Serial2.read());
delay(10);
}
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