U-BLOX NINA B302 ACESSANDO LoRaWAN COM ARDUINO ADAFRUIT
O objetivo deste BLOG é demonstrar como é possível utilizar e programar o módulo U-BLOX NINA B302 com a linguagem Arduino Adafruit. Foi utilizado o módulo NINA B302 (opencpu) para o teste.
Diferente do NINA B112, o B302 tem uma USB a qual permite que você possa criar um COM virtual e MSD e copiar os programas, graças ao bootloader do time da Adafruit.
A Adafruit foi fundada em 2005 pela engenheira do MIT, Limor "Ladyada" Fried. Seu objetivo era criar o melhor local on-line para o aprendizado de eletrônicos e para a fabricação dos melhores produtos projetados para fabricantes de todas as idades e níveis de habilidade.
LoRaWAN
A especificação LoRaWAN® é um protocolo de rede de baixa potência, área ampla (LPWA) projetado para conectar 'coisas' operadas por bateria sem fio à internet em redes regionais, nacionais ou globais, e tem como alvo os principais requisitos da Internet das coisas (IoT), como bi serviços de comunicação direcional, segurança ponta a ponta, mobilidade e localização.
como "URL adicional do gerenciador de pastas" Abra o Boards Manager no menu Tools -> Board e instale o "Adafruit nRF52 by Adafruit" Selecione sua placa nRF5 no menu Ferramentas -> Placa Adafruit Bluefruit nRF52 Feather
OBSERVAÇÃO: Durante a instalação, o Arduino IDE leva alguns minutos para extrair as ferramentas após o download, por favor, seja paciente.
Gravando bootloader da Adafruit
Use o gravador SEGGER JLINK para gravar o BREAKOUT com módulo NINA B302, conecte nos pinos do SWCLK (pino 7) e SWDIO (pino 9) do SEGGER JLINK nos pinos SWDCLK e SWDIO do BREAKOUT (pinos nas laterais, próximo à antena). Não esquecer de ligar os GND do BREAKOUT no GND do SEGGER JTAG, bem como alimentar o BREAKOUT com 3.3V.
Ligue os pinos SWD DIO e CLK ...
...nestes pinos da placa BREAKOUT
Você pode também usar o ST-LINK V2
Abra J-FLASH lite e grave o bootloader da Adafruit
Segundo a documentação, se você pressionar o reset, o módulo aguardará por um certo tempo se há algo sendo enviado pelo Arduino, ou seja, o programa a ser gravado via DFU.
ATENÇÃO, o bootloader usa USB para gravação do NINA 302, OU SEJA, CRIA UMA COMM VIRTUAL, TAMBÉM PARA SER A SERIAL PADRÃO DO ARDUINO
/**
* Example of OTAA device
* Authors:
* Ivan Moreno
* Eduardo Contreras
* June 2019
*
* This code is beerware; if you see me (or any other collaborator
* member) at the local, and you've found our code helpful,
* please buy us a round!
* Distributed as-is; no warranty is given.
*/#include <lorawan.h>
// OTAA credentials
constchar*devEui="xxxxxxxxxxxxxxxx";constchar*appEui="xxxxxxxxxxxxxxxx";constchar*appKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";constunsignedlonginterval=10000;// 10 s interval to send message
unsignedlongpreviousMillis=0;// will store last time message sent
unsignedintcounter=0;// message counter
charmyStr[50];charoutStr[255];byterecvStatus=0;constsRFM_pinsRFM_pins={.CS=SS,.RST=4,.DIO0=32,.DIO1=30,.DIO2=23,.DIO5=9,};/*
const sRFM_pins RFM_pins = {
.CS = IO2, P0.14 OK
.RST = IO1, P0.13 OK
.DIO0 = IO47, P0.23 OK
.DIO1 = I048, P0.21 OK
.DIO2 = IO5, P0.24 OK
.DIO5 = IO46,P0.12 OK
.MISO = IO8, P1.00 OK
.MOSI = IO3, P0.15 OK
.SCK = IO45,P0.07 OK
};
*/voidsetup(){Serial.begin(115200);while(!Serial);delay(1000);if(!lora.init()){Serial.println("RFM95 not detected");delay(5000);return;}Serial.println("RFM95 Detected!");// Set LoRaWAN Class change CLASS_A or CLASS_C
lora.setDeviceClass(CLASS_A);// Set Data Rate
lora.setDataRate(SF9BW125);// set channel to random
lora.setChannel(MULTI);// Put OTAA Key and DevAddress here
lora.setDevEUI(devEui);lora.setAppEUI(appEui);lora.setAppKey(appKey);// Join procedure
boolisJoined;do{Serial.println("Joining...");isJoined=lora.join();//wait for 10s to try again
delay(10000);}while(!isJoined);Serial.println("Joined to network");}voidloop(){// Check interval overflow
if(millis()-previousMillis>interval){previousMillis=millis();sprintf(myStr,"Counter-%d",counter);Serial.print("Sending: ");Serial.println(myStr);lora.sendUplink(myStr,strlen(myStr),0,1);counter++;}recvStatus=lora.readData(outStr);if(recvStatus){Serial.println(outStr);}// Check Lora RX
lora.update();}
7) Conectando Módulo SX1276 no NINA B302
# .CS = IO2, P0.14 OK
# .RST = IO1, P0.13 OK
# .DIO0 = IO47, P0.23 OK -> irq (RFMX)
# .DIO1 = I048, P0.21 OK
# .DIO2 = IO5, P0.24 OK
# .DIO5 = IO46,P0.12 OK
# .MISO = IO8, P1.00 OK
# .MOSI = IO3, P0.15 OK
# .SCK = IO45,P0.07 OK
IOx correspondem aos PADS do Módulo NINA B302
PX.XX correspondem aos pinos do Core NRF52840 (NINA B302)
U-BLOX NINA B302 ACESSANDO LoRaWAN COM CIRCUITPYTHON
O objetivo deste BLOG é demonstrar como é possível utilizar e programar o módulo U-BLOX NINA B302 com a linguagem de Scripts Python. Foi utilizado o módulo NINA B302 (opencpu) para o teste e CircuitPython com programação.
Diferente do NINA B112, o B302 tem uma USB a qual permite que você possa criar um COM virtual e MSD e copiar os programas, graças ao bootloader do time da Adafruit.
A Adafruit foi fundada em 2005 pela engenheira do MIT, Limor "Ladyada" Fried. Seu objetivo era criar o melhor local on-line para o aprendizado de eletrônicos e para a fabricação dos melhores produtos projetados para fabricantes de todas as idades e níveis de habilidade.
LoRaWAN
A especificação LoRaWAN® é um protocolo de rede de baixa potência, área ampla (LPWA) projetado para conectar 'coisas' operadas por bateria sem fio à internet em redes regionais, nacionais ou globais, e tem como alvo os principais requisitos da Internet das coisas (IoT), como bi serviços de comunicação direcional, segurança ponta a ponta, mobilidade e localização.
Altere em Adafruity_usbser.inf, caso contrário, o Windows não vai detectar o CDC (Serial)
USB\VID_1B4F&PID_5289&REV_0100&MI_00
4) Desconecte e conecte a USB no seu PC e os novos drivers serão instalados. Uma COM virtual aparecerá, na figura abaixo, apareceu COM55 e um MSD.
Ou mande atualizar drivers e aponte para o caminho.
A COM é para ser o terminal de comunicação serial com o PYTHON, o MSD (CIRCUITPY) é para transferir o SCRIPT PYTHON
5) Executando um script python
Execute o emulador de terminal Teraterm, abra a COM e tecle CONTROL-D, você verá as boas vindas do Python.
ou utilizares
Mu
Mu Python
Agora há uma ferramenta muito interessante para interagir com REPL, o Mu Python.
Automaticamente ela vai detectar o dispositivo conectado na USB para programação, mas atenção, pegue o VID/PID da serial (USB) criada e edite o arquivo arquivo de configuração do Mu.
vá para
C:\Users\USERNAME\AppData\Local\Mu\pkgs\mu\modes and edit the adafruit.py file, add your VID,PID to the list and save -> reopen Mu
Será necessário agora baixar os módulos (libraries) para executar com programa para acesso à rede a LoRaWAN
Antes que o NINA B302 possa se comunicar com a The Things Network, você precisará criar um aplicativo.
Primeiro, vamos registrar uma conta no TTN. Navegue até a página de registro da conta para configurar uma conta.
Uma vez conectado, navegue até o console do The Things Network. Esta página é onde você pode registrar aplicativos e adicionar novos dispositivos ou gateways. Clique em Aplicativos.
Clique em Adicionar aplicativo.
Preencha um ID de aplicativo para identificar o aplicativo e uma descrição do que é o aplicativo. Definimos nosso registro de manipulador para corresponder à nossa região, us-west. Se você não estiver nos EUA, o TTN fornece várias regiões para o registro do manipulador.
Depois de criado, você será direcionado para a Visão geral do aplicativo. A partir daqui, você pode adicionar dispositivos, visualizar os dados que entram (e saem) do aplicativo, adicionar integrações para serviços externos e muito mais.
Click Register Device
Na página de registro do dispositivo, o ID do dispositivo deve ser uma string exclusiva para identificar o dispositivo.
A chave do aplicativo será gerada aleatoriamente para você pelo TTN. Selecione o EUI do aplicativo (usado para identificar o aplicativo) na lista.
Em seguida, vamos mudar as configurações do dispositivo de Ativação Over-the-Air para Ativação por Personalização. Na Visão geral do dispositivo, clique em Configurações.
Na tela de configurações, altere o Método de ativação de OTAA para ABP.
Em seguida, mude a Largura do contador de quadros de 32b para 16b e desative as verificações do contador de quadros. TTN exibirá um aviso, ignore-o e clique em Salvar.
8) Coloque os dados TTN no código CircuitPython e execute