segunda-feira, 13 de dezembro de 2021

U-BLOX NINA B302 (VISUINO) COM U-BLOX NINA W102 (AIRLIFT WIFI) - REALIZANDO ACESSO THINGSTREAM


O objetivo deste BLOG é como programar o U-BLOX NINA  B302 (BLE SENSE 32) com o VISUINO para que possa acessar a INTERNET SEM FIO (802.11), utilizando o COPROCESSOR "AIRLIFT", no caso, haverá um conexão e fará uma requisição MQTT ao servidor THINGSTREAM

"O poder da programação VISUAL do VISUINO no U-BLOX NINA B302 e a adição de acesso à INTERNET via U-BLOX NINA W102 via SPI de 8MHz"

AIRLIFT é baseado no WIFININA, o qual é baseado no NINA W102,  utiliza a interface SPI.

WIFI COPROCESSOR PARA O NINA B302

POR QUE AIRLIFT ?

Ter o WiFi gerenciado por um chip separado significa que seu código é mais simples, você não precisa armazenar dados do soquete ou compilar e depurar uma biblioteca SSL. Com o AirLift, você pode enviar comandos básicos, mas poderosos baseados em socket, sobre SPI de 8MHz para transferência de dados de alta velocidade. O U-BLOX NINA W102 pode lidar com todo o trabalho pesado de conexão a uma rede WiFi e transferir dados de um site e usar a mais recente criptografia TLS/SSL (tem certificados radiculares pré-gravados).


MONTAGEM DO BREAKOUT COM  U-BLOX NINA B302 E U-BLOX NINA W102


Adquirimos então os seguintes componentes


Montado ficou assim


O esquema elétrico é este


Algumas características do Kit

-Botão de RESET;
-Botão de Modo BOOTLOADER (W102);
-Acesso às várias GPIOS.

Pequena 

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ê pode criar e projetar facilmente seus programas usando o recurso de arrastar e soltar.

Instalação do VISUINO 8.0.0.36

Baixe em  https://www.visuino.com/ e instale


Gravando bootloader BLE SENSE 32 no U-BLOX NINA B302


Use o gravador SEGGER JLINK para gravar o BREAKOUT com módulo U-BLOX 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


Abra J-FLASH lite e grave o bootloader para o U-BLOX NINA B302 (BLE SENSE 32)


O mesmo se encontra em 

C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\mbed\2.4.1\bootloaders\nano33ble

Com ele, você poderá transferir programas via USB (serial) (SAM-BA extended). 

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


Gravando "AIRLIFT" NO  U-BLOX NINA W102

Baixe o BIN 

Execute o ESP32 DOWLOAD TOOL ou ESPTOOL


Ligue os pino do U-BLOX NINA B302 no U-BLOX NINA W102 

 

BREAKOUT B302

 NRF52840

BREAKOUT W102

 ESP32

CS

IO36

P1.02

IO28

5

READY

IO25

P0.04

IO7

33

RESET

IO21

P1.12

RESET

RESET

SCK

IO1

P0.13

IO29

18

MOSI

IO35

P1.01

IO31

14

MISO

IO34

P1.08

IO1

23

GPIO0

IO27

P0.05

IO27

0

 

BREAKOUT B302

NRF52840

BREAKOUT W102

ESP32

TABELA DE CONEXÃO

NINA B302 W102
-MOSI IO35 IO31
-MISO IO34 IO1
-CLK IO1 IO29
-CS         IO36 IO28
-RST IO21 RST
-READY IO25 IO7
-GPIO0 IO27  IO27



Conheça ThingStream, servidor MQTT da U-BLOX
Implementa também SSL e SN-MQTT

Ambiente thingstream

Características:
  • o custo do Thingstream como um MQTT Broker é muito menor do que o custo daqueles associados ao Azure e AWS;
  • o gerenciador de fluxo de dados é uma excelente vantagem, dados podem ser tratados no servidor e então encaminhados;
  • permite programação Node.js;
  • a segurança é diferente e muito mais simplificada do que tentar fazer uma troca de certificados com a AWS etc;
  • tem uma conexão segura em vez do dispositivo. Isso realmente simplifica a integração;
  • capacidade de se inscrever em vários tópicos diferentes;
  • nós para acessos para vários serviços da AWS Amazon, Azure IoT, IBM Watson, IFTTT (DashBoard e uma infinidade de outras opções)
  • criação de Coisas (Thing);
  • monitoração de eventos MQTT;
  • alertas quando algo não vai bem.
No modo tradicional, se você quer acessar AWS, AZURE, etc:
  • você deve fazer registro
  • gerar Certificados
  • manter, guardar e proteger seus Certificados
  • despachar cada Certificado um por um para os Devices na produção
  • você precisa manter identidades diferentes por cada um dispositivo e entregá-los com segurança
  • fortes impactos na complexidade na logística, produção tempo, configuração do sistema e custos de manutenção
Com ThingStream, se você quer acessar AWS, AZURE, etc:
  • você deve fazer um registro de CA (certificate authority) (Access ID e Secret Key), exemplo, IAM na AMAZON.
  • quando você cria um Device (Things) no ThingStream, você deve pegar as credenciais (Username, Password, Client ID) (Device Certificate), basicamente muda Client Id e Password para cada Device
  • utilize estas credenciais (Things) (Username, Password e Client ID) no Device (U-BLOX NINA W106) para acessar o ThingStream  via MQTT
  • crie Tópicos (Topics) que devem acessados pelos Devices (U-BLOX NINA W106), ou seja, para fazer Publish ou Subscribe
  • no DATAFLOW manager (Flows), o Nó ThingStream Subscribe deve estar conectado à um Tópico previamente criado para o seu Device (U-BLOX NINA W106), é por ele que começa o disparo para o DATAFLOW manager
  • Dentro do DATAFLOW pode de ter vários Nós ThingStream Subscribe
  • no DATAFLOW manager tenha fácil acesso à AWS, AZURE, etc utilizando Access ID e Secret Key e então solicite os serviços disponíveis (S3, LAMBDA, etc) (No caso da AMAZON)

FLOW

Saldo de "Publish"

Registros dos Eventos


Planos acessíveis

Credenciais devem ser obtidas no ThingStream.IO

Pegue aqui as credenciais

O Tópico do MQTT deve ser criado aqui

Tráfego no Broker MQTT da u-BLOX



ABRA O VISUINO E MONTE O SEGUINTE PROJETO (CONFORME TABELA DE CONEXÃO)
Click no módulo AIRLIFT e coloque as credenciais do WIFI.



Click no módulo MQTT CLIENT para configurações de acesso MQTT do THINGSTREAM



Configure servidor MQTT e PORTA



DADO ENVIADO AO THINGSTREAM

Neste caso, é enviado uma STRING a cada 1 segundo, como exemplo: "123456"


COMPILANDO


TRANSFERINDO PROGRAMA



Sobre a SMARTCORE

A SmartCore fornece módulos para comunicacã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, 9 de novembro de 2021

U-BLOX NINA B302 (VISUINO) COM U-BLOX NINA W102 (AIRLIFT WIFI) - REALIZANDO HTTP


O objetivo deste BLOG é como programar o U-BLOX NINA  B302 (BLE SENSE 32) com o VISUINO para que possa acessar a INTERNET SEM FIO (802.11), utilizando o COPROCESSOR "AIRLIFT", no caso, haverá um conexão e fará uma requisição HTTP ao servidor THINGSPEAK e então a informação recebida (formato JSON) será tratada para extrair o field1 e então controlar o estado de um LED conectado no IO24 (P0.30) do U-BLOX NINA B302.

{"channel":{"id":1368213,"name":"ELETIVA II","description":"Demonstração Disciplina Eletiva II - BCC - SIS - FURB","latitude":"0.0","longitude":"0.0","field1":"annex","created_at":"2021-04-22T22:17:35Z","updated_at":"2021-07-20T17:02:54Z","last_entry_id":183},"feeds":[{"created_at":"2021-09-30T00:49:50Z","entry_id":183,"field1":"0"}]}

"O poder da programação VISUAL do VISUINO no U-BLOX NINA B302 e a adição de acesso à INTERNET via U-BLOX NINA W102 via SPI de 8MHz"

AIRLIFT é baseado no WIFININA, o qual é baseado no NINA W102,  utiliza a interface SPI.
WIFI COPROCESSOR PARA O NINA B302

POR QUE AIRLIFT ?

Ter o WiFi gerenciado por um chip separado significa que seu código é mais simples, você não precisa armazenar dados do soquete ou compilar e depurar uma biblioteca SSL. Com o AirLift, você pode enviar comandos básicos, mas poderosos baseados em socket, sobre SPI de 8MHz para transferência de dados de alta velocidade. O U-BLOX NINA W102 pode lidar com todo o trabalho pesado de conexão a uma rede WiFi e transferir dados de um site e usar a mais recente criptografia TLS/SSL (tem certificados radiculares pré-gravados).



Thingspeak é uma plataforma de análise IoT (Internet of Things) que permite agregar, visualizar e analisar streams de dados, de uma forma muito simples. Uma das grandes vantagens da plataforma Thingspeak é que nos permite visualizar os dados enviados pelos nossos dispositivos, em tempo real, mas também a possibilidade de analisar os mesmo recorrendo ao poderoso Matlab.

MONTAGEM DO BREAKOUT COM  U-BLOX NINA B302 E U-BLOX NINA W102


Adquirimos então os seguintes componentes


Montado ficou assim


O esquema elétrico é este


Algumas características do Kit

-Botão de RESET;
-Botão de Modo BOOTLOADER (W102);
-Acesso às várias GPIOS.

Pequena 

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ê pode criar e projetar facilmente seus programas usando o recurso de arrastar e soltar.

Instalação do VISUINO 8.0.0.36

Baixe em  https://www.visuino.com/ e instale


Gravando bootloader BLE SENSE 32 no U-BLOX NINA B302


Use o gravador SEGGER JLINK para gravar o BREAKOUT com módulo U-BLOX 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


Abra J-FLASH lite e grave o bootloader para o U-BLOX NINA B302 (BLE SENSE 32)


O mesmo se encontra em 

C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\mbed\2.4.1\bootloaders\nano33ble

Com ele, você poderá transferir programas via USB (serial) (SAM-BA extended). 

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


Gravando "AIRLIFT" NO  U-BLOX NINA W102

Baixe o BIN 

Execute o ESP32 DOWLOAD TOOL ou ESPTOOL


Ligue os pino do U-BLOX NINA B302 no U-BLOX NINA W102 

 

BREAKOUT B302

 NRF52840

BREAKOUT W102

 ESP32

CS

IO36

P1.02

IO28

5

READY

IO25

P0.04

IO7

33

RESET

IO21

P1.12

RESET

RESET

SCK

IO1

P0.13

IO29

18

MOSI

IO35

P1.01

IO31

14

MISO

IO34

P1.08

IO1

23

GPIO0

IO27

P0.05

IO27

0

 

BREAKOUT B302

NRF52840

BREAKOUT W102

ESP32

TABELA DE CONEXÃO

NINA B302 W102
-MOSI IO35 IO31
-MISO IO34 IO1
-CLK IO1 IO29
-CS         IO36 IO28
-RST IO21 RST
-READY IO25 IO7
-GPIO0 IO27  IO27


CRIANDO CONTA NO THINGSPEAK

Crie um conta no ThingSpeak

Em Channel Settings crie Field: Field1




Em API keys anote as chaves para escrita e Leitura de dados noThingsSpeak



Teremos então basicamente duas URLS, uma para escrita e outra para leitura dois Fields.

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXX&field1=X
ESCRITA (via BROWSER)
https://api.thingspeak.com/channels/CCCCCCCCC/fields/1.json?api_key=XXXXXXXXXXXXXX
&results=
1 LEITURA (via U-BLOX NINA B03 + U-BLOX NINA W102 AIRLIFT)


ABRA O VISUINO E MONTE O SEGUINTE PROJETO (CONFORME TABELA DE CONEXÃO)

Click no módulo AIRLIFT e coloque as credenciais do WIFI.



Click no módulo HTTP CLIENT para configurações de acesso HTTP para o THINGSPEAK




Click no módulo HTTP e configure endereço HTTP e PORTA


Click no módulo SPLITJSON e importe o modelo JSON que servidor THINGSTREAM enviará.

Você pode obter o JSON com seu Browser digitando
https://api.thingspeak.com/channels/CCCCCCCCC/fields/1.json?api_key=XXXXXXXXXXXXXX
&results=
1
Aqui é tratado o fiedl1


O exemplo faz uma análise da resposta HTTP e filtra a linha que começa com "{" então dispara o SPLITJSON para extrair o field1, este é comparado se retorna "1"  e então acendendo o LED (Analog 2), caso contrário apagando.

COMPILANDO


TRANSFERINDO PROGRAMA


ATUALIZE field1 via BROWSER

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1=0
PARA APAGAR LED
https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1=1
PARA ACENDER LED
Se localize pelo arquivo VARIANTS.CPP do MBED BLE SENSE 33.

PinDescription g_APinDescription[] = { // D0 - D7 { P1_3, NULL, NULL, NULL }, // D0/TX { P1_10, NULL, NULL, NULL }, // D1/RX { P1_11, NULL, NULL, NULL }, // D2 { P1_12, NULL, NULL, NULL }, // D3 { P1_15, NULL, NULL, NULL }, // D4 { P1_13, NULL, NULL, NULL }, // D5 { P1_14, NULL, NULL, NULL }, // D6 { P0_23, NULL, NULL, NULL }, // D7 // D8 - D13 { P0_21, NULL, NULL, NULL }, // D8 { P0_27, NULL, NULL, NULL }, // D9 { P1_2, NULL, NULL, NULL }, // D10 { P1_1, NULL, NULL, NULL }, // D11/MOSI { P1_8, NULL, NULL, NULL }, // D12/MISO { P0_13, NULL, NULL, NULL }, // D13/SCK/LED // A0 - A7 { P0_4, NULL, NULL, NULL }, // A0 { P0_5, NULL, NULL, NULL }, // A1 { P0_30, NULL, NULL, NULL }, // A2 { P0_29, NULL, NULL, NULL }, // A3 { P0_31, NULL, NULL, NULL }, // A4/SDA { P0_2, NULL, NULL, NULL }, // A5/SCL { P0_28, NULL, NULL, NULL }, // A6 { P0_3, NULL, NULL, NULL }, // A7 // LEDs { P0_24, NULL, NULL, NULL }, // LED R { P0_16, NULL, NULL, NULL }, // LED G { P0_6, NULL, NULL, NULL }, // LED B { P1_9, NULL, NULL, NULL }, // LED PWR { P0_19, NULL, NULL, NULL }, // INT APDS // PDM { P0_17, NULL, NULL, NULL }, // PDM PWR { P0_26, NULL, NULL, NULL }, // PDM CLK { P0_25, NULL, NULL, NULL }, // PDM DIN // Internal I2C { P0_14, NULL, NULL, NULL }, // SDA2 { P0_15, NULL, NULL, NULL }, // SCL2 // Internal I2C { P1_0, NULL, NULL, NULL }, // I2C_PULL { P0_22, NULL, NULL, NULL } // VDD_ENV_ENABLE };


VENDO RESULTADO


Dúvidas:


suporte@smartcore.com.br

Referências:

https://www.u-blox.com/en/docs/UBX-17056481
https://www.u-blox.com/sites/default/files/NINA-B3_DataSheet_%28UBX-17052099%29.pdf
Overview | Adafruit AirLift - ESP32 WiFi Co-Processor Breakout | Adafruit Learning System
https://learn.adafruit.com/adding-a-wifi-co-processor-to-circuitpython-esp8266-esp32/firmware-files
https://thingspeak.com/

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicacã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