segunda-feira, 18 de janeiro de 2021

U-BLOX NINA B302 RODANDO TINYGO - HELLO WORLD

U-BLOX NINA B302 RODANDO TINYGO - HELLO WORLD


O objetivo deste BLOG é demonstrar como é possível programar o módulo U-BLOX NINA B302 com a linguagem TINYGO. Foi utilizado o breakout NINA B302. Neste exemplo faremos um HELLO WORLD.


Adquirimos então os seguintes componentes



Montamos a BREAKOUT (B302)


O esquema elétrico é este



Algumas características do Kit

-Botão de RESET;
-Botão de Modo BOOTLOADER (W102);
-Plugável no PROTOBOARD;
-Acesso às várias GPIOS;

Pequena 
BREAKOUT



TinyGo é um projeto para levar a linguagem de programação Go para microcontroladores e navegadores modernos, criando um novo compilador baseado em LLVM.

Você pode compilar e executar programas TinyGo em muitas placas microcontroladoras diferentes, como o micro:bit da BBC e o Arduino Uno.

TinyGo também pode ser usado para produzir código WebAssembly (WASM), que é muito compacto em tamanho.

Só quer ver o código? Vá ao repositório do Github em 


TinyGo também tem suporte para vários dispositivos diferentes, como acelerômetros e magnetômetros. Confira o repositório do Github em 

https://github.com/tinygo-org/drivers para obter mais informações.

Instalando no WINDOWS 10

Você deve usar o Go 1.14.x+ com a instalação nativa do Windows 10 do TinyGo.

Se você ainda não o instalou, você pode obtê-lo a partir de https://golang.org/dl/

Escolha o link de download para Microsoft Windows, Windows 7 ou posterior, processador Intel de 64 bits.


Descomprima o arquivo assim:

Primeiro clique duas vezes no arquivo ZIP baixado para abri-lo.

Agora arraste a pasta "tinygo" na janela do arquivo ZIP para a unidade "C:".

Quando a pasta terminar de extrair, você pode fechar a janela de arquivo ZIP.

Você precisará adicionar C:\tinygo\bin ao seu PATH.

> set PATH=%PATH%;"C:\tinygo\bin";

Agora você deve ser capaz de executar o comando TinyGo:

> tinygo version
tinygo version 0.17.0 windows/amd64 (using go version go1.16 and LLVM version 11.0.0)

Montagem

Um cabo USB foi soldado em D+, D-, GND e VBUS do NINA B302

Gravando o BOOTLOADER

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.

Adafruit Team

feather_nrf52840_express_bootloader-0.5.0.zip

Com seu gravador SEGGER J-TAG, será necessário gravar o BOOTLOADER  da Adafruit.




DFU

Obs: além de um dispositivo MSD, teremos uma COMM Virtual (para debug)

CDC USB COMM E MSD


INFO_UF2.TXT dentro do MSD

UF2 Bootloader 0.5.0 lib/nrfx (v2.0.0) lib/tinyusb (0.9.0-22-g7cdeed54) lib/uf2 (remotes/origin/configupdate-9-gadbb8c7)
Model: Adafruit Feather nRF52840 Express
Board-ID: nRF52840-Feather-revD
SoftDevice: S140 version 6.1.1
Date: Apr  4 2021

Como pode observar, está o Softdevice S140 junto!

Gravando a programa TINYGO

Conecte o u-BLOX NINA B302 na porta USB do seu computador.
Mostre seu programa TinyGo para o quadro usando este comando:

tinygo flash -port=COMxx -target=feather-nrf52840 examples/serial


O NRF52840 é o core do U-BLOX NINA-B302

A placa u-BLOX NINA B302 deve reiniciar e, em seguida, começar a executar o seu programa.

Solucionando problemas

Se você tiver problemas para enviar código para ou-BLOX NINA B302 receber código, tente isso:

Pressione o botão "RESET" na placa duas vezes para deixar a placa u-BLOX NINA B302 pronta para receber o código.

A placa u-BLOX NINA B302 aparecerá no seu computador como uma unidade USB.

Depois de atualizar sua placa u-BLOX NINA B302 pela primeira vez, depois disso você deve ser capaz de "flash-lo" inteiramente da linha de comando.

Notas
Você pode usar a porta USB para o u-BLOX NINA B302 como uma porta serial. UART0 refere-se a esta conexão.

Para um exemplo que usa os LEDs Neopixel embutidos, dê uma olhada no repositório de drivers TinyGo localizado em 


O suporte bluetooth já está disponível para a placa u-BLOX NINA B302.

Executando o exemplo Serial

Gravando na FLASH

Execução do Exemplo - 115200

código Fonte

Interfaces implementadas no U-BLOX NINA B302 com o TINYGO


PISCANDO LED

Gravando na Flash

Código Fonte

Para direcionar machine.LED para o pino GPIO02  do NINA B302 foi necessário abrir o arquivo board_feather-nrf52840.go e configurá-lo para D26, que corresponde à P0_14 ou GPIO 02.

D26 = P0_14 

const (
LED      = D26


Breakout

Datasheet

Execução

Restrições TINYGO


Questões: 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


U-BLOX NINA B302 FAZENDO P2P COM SX1276 E WISOL LOM204 VIA JAVASCRIPT - ESPRUINO

U-BLOX NINA B302 FAZENDO P2P COM SX1276 E WISOL LOM204 VIA JAVASCRIPT - ESPRUINO


O objetivo deste BLOG é demonstrar como é possível utilizar e programar o módulo U-BLOX NINA B302 com a linguagem de Scripts JAVASCRIPT e então prepará-lo para recepção de Pacote LoRA (enviado pelo WISOL LOM204) via SX1276. Foi utilizado o breakout NINA B302 conectado ao SX1276 para recepção e o LOM204A02 para transmissão (módulo).


Adquirimos então os seguintes componentes



Montamos a BREAKOUT (B302)


O esquema elétrico é este



Algumas características do Kit

-Botão de RESET;
-Botão de Modo BOOTLOADER (W102);
-Plugável no PROTOBOARD;
-Acesso às várias GPIOS;

Pequena 


Espruino é um intérprete de JavaScript para microcontroladores que torna o desenvolvimento de software embarcado rápido e fácil. O intérpretador Espruino é um firmware de código aberto que roda em uma variedade de microcontroladores diferentes.

O Espruino em si não é apenas o firmware ou hardware do interpretador - há também o IDE da Web, ferramentas de linha de comando, documentação, tutoriais e módulos que formam uma solução completa para desenvolvimento de software embarcado.
 
Grave o código HEX do JAVASCRIPT usando o utility J-FLASH LITE ou NRFGO STUDIO no NINA B302



Resete o NINA B302

Instale o ESPRUINO IDE (Native)

Instale o USB DONGLE CSR 4.0 (drivers)


Mas atenção!

Para o Windows 8.1 e posterior
O IDE é capaz de usar os drivers BLE do próprio Windows. A única configuração necessária é que você vá para as configurações de Bluetooth do seu sistema e clique em Conectar (Parear no Windows 10) no seu dispositivo NINA B302. Isso expõe ao sistema e garante que ele apareça no IDE da Web. Para o Windows anterior ao 8.1
Como as versões do Windows anteriores à 8.1 não suportam Web Bluetooth no sistema operacional, o noble (que o Espruino IDE usa) precisa acessar diretamente o adaptador BLE - portanto, é necessário garantir que o driver WinUSB seja carregado para ele (como oposição a um driver específico do fabricante). Baixe o Zadig e execute-o - é apenas um executável Vá para Opções -> Listar todos os dispositivos Escolha o seu adaptador BLE (o meu é CSR8510 A10) Certifique-se de que o WinUSB esteja definido como o driver Agora, quando você executar o IDE da Web nativo e clicar em "conectar" no canto superior esquerdo, deverá ver uma lista de dispositivos BLE conectáveis.



Execute o ESPRUINO IDE (Native)


Faça o SCAN para encontrar o NINA B302


Conecte ao NINA B302


Transfira o SCRIPT JAVASCRIPT abaixo 


No B302 transfira o seguinte código Javascript e execute

//D7 CLK //D32 MISO //D15 MOSI //D13 CS //D44 RST SPI1.setup({ sck:D7, miso:D32, mosi:D15 }); var sx = require("SX127x").connect({spi: SPI1, cs: D13, rst : D44 }); // Until DIO0 line irqs are implemented we need this: setInterval(function() { sx.onIRQ(); }, 100); var config = { power : 14, // transmit power in dBm, allowed range: -4 to +17dBm or 20dBm. If you use Hope RF or TTGO module see the note below! freq: 917300000, // frequency in MHz, by default 868MHz bandwidth : 0, // 0: 125 kHz (default), 1: 250 kHz, 2: 500 kHz datarate : 7, // spreading factor, 7(default)..12 coderate : 1, // [1: 4/5 (default), 2: 4/6, 3: 4/7, 4: 4/8] preambleLen : 8, // preamble length, default: 8 fixLen : false, // fixed length? a boolean. If true, payloadLen needs specifying too crcOn : false, // CRC enabled? freqHopOn : false, // frequency hopping on? If true, hopPeriod should be set iqInverted : false, // Inverts IQ signals rxContinuous : true, // continuous reception? it's easiest to set this to true and manually cancel reception symbTimeout : false, // RxSingle timeout value when rxContinuous = false forcePaBoost : false // Required for HopeRF RFM9xW and TTGO LoRa32 modules }; sx.setRxConfig(config); // enter receive mode sx.rx(function(err, inf) { // Error, or you get signal strength and data returned in an object if (err) console.log("RX ERROR"); else console.log("RX>",inf); });



LoRa

LoRa é uma tecnologia de radio frequência que permite comunicação a longas distâncias (em áreas urbanas 3-4 Km de alcance, e em áreas rurais, até 12 Km ou mais), com consumo mínimo de energia.

LOM204A02


Modem LoRa. para operação redes públicas e privadas LoRaWAN bem como ponto a ponto (P2P), Permite embarcar a aplicação, Dimensão: 15mm x 18mm x 2.2mm, SAW filter integrado, Potência de saida: +20dBm, Baixo consumo

Módulo LoRa


Descrição
Módulo Lora1278 433 mhz Lora 2.0 - IOT CHIP SX1276

Características:
Faixa De freqüência: 433 MHz
sensibilidade-139 dBm até
potência máxima de saída: 20dBm
10.3mA @ modo receptor
Consumo modo Sleep atual < 200nA
taxa de transferência de dados: @ FSK, 1.2-300 kbps
@ Lora TM, 0.018-37.5 kbps
Modulação FSK, GFSK e OOK
Lora TM
Alimentação 1.8-3.7Vdc
127 dB Dynamic Range RSSI
pacote de dados até 256 bytes com CRC
Faixa de Temperatura de operação:-40 ~ + 85 ° C
sensor de temperatura embutido e indicador de bateria fraca

1) Montagem

Um cabo USB foi soldado em D+, D-, GND e VBUS do NINA B302 (BREAKOUT)




2) Conectando  Módulo SX1276 no NINA B302

//D7 CLK
//D32 MISO
//D15 MOSI
//D13 CS
//D44 RST


Datasheet



3) Preparando LOM204 para transmissao de pacote LoRa 


4) Execute a aplicação no NINA B302 JAVASCRIPT (para recebimento)

5) Transmita Pacote pelo WISOL LOM204 (STRING AAA)



6) Veja recebimento no NINA B302 JAVASCRIPT






Questões: 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