quinta-feira, 4 de novembro de 2021

NINA B302 sendo programado via RT-THREAD (Hello World)

NINA B302 sendo programado via RT-THREAD (Hello World)

O objetivo deste BLOG é demonstrar de forma resumida como é possível fazer com que o módulo NINA B302 possa se programado no RT-THREAD via pacote Platformio.

Tenha em mãos os seu gravador SEGGER J-LINK.


Caso estejas utilzando o EVK, o mesmo já vem com o gravador J-LINK EMBARCADO.

Prefácio

Um Ambiente de Desenvolvimento Integrado (IDE) é um aplicativo de software que fornece um ambiente de programação para agilizar o desenvolvimento e depuração de software. Em vez de realizar todas as etapas necessárias para fazer um programa executável ou gerar um firmware binário como tarefas individuais não relacionadas, os IDEs trazem todas as ferramentas necessárias para um aplicativo e espaço de trabalho. Cada uma das ferramentas tem consciência do ambiente e funcionam em harmonia para fornecer uma experiência de desenvolvedor muito boa fora da caixa, tanto para desenvolvedores novatos quanto para os experientes.

Mundo sem IDEs

Sem IDEs, os desenvolvedores precisam usar um editor, compilador e vinculador instalado em sua máquina de desenvolvimento para criar arquivos de código, compilá-los e vinculá-los. Isso às vezes pode ser opressor para novos desenvolvedores que primeiro precisam instalar e configurar todos os conjuntos de ferramentas necessários e manter uma guia de vários comandos para gerar os binários executáveis ​​para atualizar os dispositivos, especialmente no mundo do desenvolvimento de sistemas embarcados.

RT-THREAD

Desenvolvimento de IoT para microcontroladores. Ele inclui funções completas de desenvolvimento, compilação e depuração, tem grande suporte para chips da série NORDIC via Platformio e suporte completo para depuração DOP-Link J-Link DO ST-Link.

Passo 1 Instalação

A versão mais recente do RT-Thread Studio é o 2.0, que suporta o sistema operacional Windows 10 x64. O link de download do RT-Thread Studio é

https://realthread-ide.rt-thread.org/Global/RT-Thread-Studio-setup-x86_64-latest.exe , Depois de baixar o software, clique duas vezes para instalar

Para executar o Studio pela primeira vez, você precisa se cadastrar e fazer login na sua conta pessoal. Clique em Se inscrever para registrar uma conta e você pode fazer login

Após o login bem-sucedido, você pode ver a página de boas-vindas do software



Passo 2 Instalar pacote  PLATFORMIO
Feche a página de boas-vindas, você pode ver o gerente de projeto e a visualização de desenvolvimento C/C++, aqui instalamos alguns pacotes de recursos necessários para apoiar o desenvolvimento do U-BLOX NINA B302, as etapas de instalação:

1. Clique no ícone do gerenciador SDK
2. Selecione a versão PlatformIO 5.0.3.12
3. Clique no botão Instalar pacote para executar a instalação

2. Acenda o LED com a estrutura Arduino

Passo 0 Criar projeto NRF52840_MDK Arduino

Clique no botão Criar projeto no canto superior esquerdo do IDE para criar um novo projeto. Aqui escolhemos criar o Projeto Geral e optar por usar a plataforma PlatformIO. Os passos são os seguintes:

+ Criar Projeto Geral

+ Selecionar base no PlatformIO

+ Pesquisar NRF52840 (compatível com U-BLOX NINA B302)

+ Selecione NRF52840_DK

Aguarde





Passo 1 Adicionar código de piscar LED

PS:Para compatibilizar NRF52840_DK com U-BLOX NINA B302, em

C:\Users\Usuario\.platformio\packages\framework-arduinonordicnrf5\variants\nRF52DK

Altere variant.cpp para

/* Copyright (c) 2014-2015 Arduino LLC. All right reserved. Copyright (c) 2016 Sandeep Mistry All right reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "variant.h" const uint32_t g_ADigitalPinMap[] = { // D0 .. D13 29, // D0 is P0.29 (UART RX) 45, // D1 is P1.13 (UART TX) 44, // D2 is P1.12 (NFC2) 31, // D3 is P0.31 (LED1) 13, // D4 is P0.13 (LED2) 11, // D5 is P0.11 9, // D6 is P0.09 10, // D7 is P0.10 (Button) 41, // D8 is P1.09 12, // D9 is P0.12 14, // D10 is P0.14 15, // D11 is P0.15 32, // D12 is P1.00 7, // D13 is P0.07 // D14 .. D21 (aka A0 .. A5) 4, // D14 is P0.04 (A0) 30, // D15 is P0.30 (A1) 5, // D16 is P0.05 (A2) 2, // D17 is P0.02 (A3) 28, // D18 is P0.28 (A4) 3, // D19 is P0.03 (A5) // D20 .. D21 (aka I2C pins) 16, // D20 is P0.16 (SDA) 24, // D21 is P0.24 (SCL) // QSPI pins (not exposed via any header / test point) 19, // D22 is P0.19 (QSPI CLK) 17, // D23 is P0.17 (QSPI CS) 20, // D24 is P0.20 (QSPI Data 0) 21, // D25 is P0.21 (QSPI Data 1) 22, // D26 is P0.22 (QSPI Data 2) 26, // D27 is P0.23 (QSPI Data 3) 40, // D28 is P1.08 - IO34 41, // D29 is P1.01 - IO35 44, // D30 is P1.02 - IO36 45, // D31 is P1.03 - IO37 42, // D32 is P1.10 - IO38 43, // D33 is P1.11 - IO39 47, // D34 is P1.15 - IO40 46, // D35 is P1.14 - IO41 26, // D36 is P0.26 - IO42 6, // D37 is P0.6 - IO43 27, // D38 is P0.27 - IO44 };
variant.h para

/* Copyright (c) 2014-2015 Arduino LLC. All right reserved. Copyright (c) 2016 Sandeep Mistry All right reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _VARIANT_NRF52_DK_ #define _VARIANT_NRF52_DK_ /** Master clock frequency */ #define VARIANT_MCK (64000000ul) //#define USE_LFXO // Board uses 32khz crystal for LF /*---------------------------------------------------------------------------- * Headers *----------------------------------------------------------------------------*/ #include "WVariant.h" #ifdef __cplusplus extern "C" { #endif // __cplusplus // Number of pins defined in PinDescription array #define PINS_COUNT (40) #define NUM_DIGITAL_PINS (34) #define NUM_ANALOG_INPUTS (6) #define NUM_ANALOG_OUTPUTS (0) // LEDs #define PIN_LED1 (3) #define PIN_LED2 (4) #define LED_BUILTIN PIN_LED1 #define LED_CONN PIN_LED2 #define LED_RED PIN_LED1 #define LED_BLUE PIN_LED2 #define LED_STATE_ON 1 // State when LED is litted /* * Buttons */ #define PIN_BUTTON1 (7) /* * Analog pins */ #define PIN_A0 (14) #define PIN_A1 (15) #define PIN_A2 (16) #define PIN_A3 (17) #define PIN_A4 (18) #define PIN_A5 (19) #define D0 (0) #define D1 (1) #define D2 (2) #define D3 (3) #define D4 (4) #define D5 (5) #define D6 (6) #define D7 (7) #define D8 (8) #define D9 (9) #define D10 (10) #define D11 (11) #define D12 (12) #define D13 (13) static const uint8_t A0 = PIN_A0 ; static const uint8_t A1 = PIN_A1 ; static const uint8_t A2 = PIN_A2 ; static const uint8_t A3 = PIN_A3 ; static const uint8_t A4 = PIN_A4 ; static const uint8_t A5 = PIN_A5 ; #define ADC_RESOLUTION 14 #define PIN_NFC1 (31) #define PIN_NFC2 (2) #define PIN_SERIAL_RX (0) #define PIN_SERIAL_TX (1) /* * SPI Interfaces */ #define SPI_INTERFACES_COUNT 1 #define PIN_SPI_MISO (22) //24 original #define PIN_SPI_MOSI (23) //25 original #define PIN_SPI_SCK (24) //26 original static const uint8_t SS = (13); static const uint8_t MOSI = PIN_SPI_MOSI; static const uint8_t MISO = PIN_SPI_MISO; static const uint8_t SCK = PIN_SPI_SCK; /* * Wire Interfaces */ #define WIRE_INTERFACES_COUNT 1 #define PIN_WIRE_SDA (20) #define PIN_WIRE_SCL (21) // QSPI Pins #define PIN_QSPI_SCK 22 #define PIN_QSPI_CS 23 #define PIN_QSPI_IO0 24 #define PIN_QSPI_IO1 25 #define PIN_QSPI_IO2 26 #define PIN_QSPI_IO3 27 // On-board QSPI Flash #define EXTERNAL_FLASH_DEVICES GD25Q16C #define EXTERNAL_FLASH_USE_QSPI #ifdef __cplusplus } #endif /*---------------------------------------------------------------------------- * Arduino objects - C++ only *----------------------------------------------------------------------------*/ #endif

O projeto NRF52840_DK criado é um projeto vazio. Adicione o código piscando do LED no src/main.cpp para perceber o piscar do LED.

#include <Arduino.h> void setup() { // write your initialization code here pinMode(LED_BUILTIN, OUTPUT); // set LED pin as output mode (P0.31) IO20 Serial.begin(115200); // set Serial baudrate to 115200 bps } void loop() { // write your code here digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(100); // wait for 100 millisecond digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(100); // wait for 100 millisecond Serial.print("hello world!\r\n"); }










Passo 2 Construir projeto NRF52840_DK
Depois de adicionar o código piscando LED na principal.cpp e salvá-lo, clique no ícone de construção de martelo pequeno para compilar o projeto 


Passo 3 Download
Vincule o cabo Mini USB à placa de desenvolvimento, clique no botão de download na barra de ferramentas e, em seguida, o programa pode ser baixado 


Depois que o download estiver concluído, você pode ver que o LED verde começa a piscar, o IDE integra um terminal portuário serial, abre o terminal portuário serial, conecta-se à porta serial, você pode ver a mensagem "Hello world"




Passo 4 Debug 
O RT-Thread Studio suporta simulação on-line. Clique no botão depuração na barra de ferramentas para entrar na interface de depuração. A simulação de depuração suporta operações de depuração em etapa única, suspensão e outras operações de depuração  



Testes

Foi realizada a conexão dos pinos IO22 e IO23 no emulador de erminal 



Questões: suporte@smartcore.com.br

Outras referências

NINA-B3 data sheet (u-blox.com)

NINA-B3 system integration manual (u-blox.com)

Light up your LED in 30 seconds with NUCLEO-F411RE and IDE RT-Thread Studio

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