segunda-feira, 22 de novembro de 2021

U-BLOX NINA W106 ACESSANDO MQTT DA TTN - THE THING NETWORKS VIA VISUINO


O objetivo deste BLOG é mostrar um exemplo em VISUINO que permite o NINA W106 se comunicar com um servidor MQTT (V3.1.1) da TTN (au1.cloud.thethings.network) via WIFI, pela porta 1883. Ele fará a inscrição em um Tópico no qual são periodicamente Publicados pelo TTN, dados (contador) enviados por um LOM204 via LoRaWAN.

Veja o pacote publicado pela TTN no Tópico.

{"end_device_ids":{"device_id":"eui-702xxxxffe5xxxxe",
"application_ids":{"application_id":"XXXXXXXX-smartcore-dht11-1"},
"dev_eui":"702C1xxxxxxxxxxxx",
"join_eui":"0000000000000001",
"dev_addr":"260D956E"},
"correlation_ids":["as:up:01FMSE4ZAJZ7S3H7TP0QDFJ83A",
"gs:conn:01FMHQJ60T9G456WB6AW07GMA9","gs:up:host:01FMHQJ6913P18Y4JQ6MQQRRAD",
"gs:uplink:01FMSE4Z3YBWF4A20RGTQ9MY4P","ns:uplink:01FMSE4Z40FX03C6MKN8MR1FZE",
"rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01FMSE4Z402806QPDY732GPX7K",
"rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01FMSE4ZAHCG3AGV7NVY0C4X1D"],
"received_at":"2021-11-18T11:50:43.794767602Z",
"uplink_message":{"session_key_id":"AX0y23LwYN+8apuujBwXbA==",
"f_port":1,"f_cnt":8,"frm_payload":"MA==",
"rx_metadata":[{"gateway_ids":{"gateway_id":"a840411bb0544150smartcore",
"eui":"A840411BB0544150"},"time":"2021-11-18T11:50:43.407706Z",
"timestamp":1172935675,"rssi":-33,"channel_rssi":-33,
"snr":9.2,
"uplink_token":"CicKJQoZYTg0MDQxMWJiMDU0NDE1MHNtYXJ0Y29yZRIIqEBBG7BUQVAQ+6emrwQaDAiT/NiMBhDS6fCVAiD4mKjDke46KgwIk/zYjAYQkLO0wgE=",
"channel_index":4}],"settings":{"data_rate":{"lora":{"bandwidth":125000,
"spreading_factor":7}},"coding_rate":"4/5","frequency":"917600000",
"timestamp":1172935675,"time":"2021-11-18T11:50:43.407706Z"},
"received_at":"2021-11-18T11:50:43.584480646Z","confirmed":true,
"consumed_airtime":"0.046336s","network_ids":{"net_id":"000013",
"tenant_id":"ttn","cluster_id":"ttn-au1"}}}




















TTN

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.

MQTT

Para os dispositivos de Internet das Coisas (IoT), a conexão com a Internet é um requisito. A conexão com a Internet permite que os dispositivos trabalhem entre si e com serviços de backend. O protocolo de rede subjacente da Internet é o TCP/IP. Desenvolvido com base na pilha TCP/IP, o MQTT (Message Queue Telemetry Transport) tornou-se o padrão para comunicações de IoT.


VISUINO

Visuino is the latest innovative software from Mitov Software. A visual programming environment that allows you to program your Arduino boards. ... The components found in the Visuino software represent your hardware components and you can easily create and design your programs using drag and drop.


UBLOX NINA W106

Wi-Fi 802.11b/g/n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32, com 4MB FLASH

MONTAGEM

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 (W106);
-Acesso às várias GPIOS.

Pequena 

Baixe e instale o VISUINO




Selecione o módulo ESP32 DEV MODULE e desenhe o projeto abaixo


Pegue aqui as credenciais no site TTN


Coloque no Componente MQTT (propriedades)

Credenciais

No componente MQTT coloque o Tópico a ser inscrito, baseado na opção Integratons-->MQTT



No componente TCP SSL (propriedades) coloque

Host: au1.cloud.thethings.network
Port: 1883

Servidor TTN e porta 1883

No Componente MQTT (propriedades) colocar Tópico (Subscriber)


Toda vez que o LOM204 publicar um dado no TTN, receberemos uma pacote MQTT (Tópico inscrito). Trata-se de um JSON descrito no início do BLOG, para filtrá-lo será utilizado um JSON Parser do VISUINO.


Payload 64 encoded
Agora compile


Agora mande gravar 


Execução


Dúvidas:

suporte@smartcore.com.br

Referências:


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

terça-feira, 16 de novembro de 2021

U-BLOX NINA B302 (programado com VISUINO) acessando via WIFI (AIRLIFT) SERVIDOR HTTP (NODE-RED) VIA REMOT3.IT - VIA HTTP POST

 

O objetivo deste BLOG é mostrar um exemplo em VISUINO que permite o NINA B302 acessar via WIFI um servidor WEB (em seu PC) desenvolvido em NODE-RED. Utiliza o COPROCESSOR W102 (AIRLIFT), via 802.11. Para o servidor WEB (DASHBOARDS) ser acessado remotamente, será utilizado Remot3.it.

WIFI COPROCESSOR é baseado no NINA W102, o qual permite que você tenha acesso a INTERNET, via SPI.


COPROCESSOR PARA O NINA B302 - Suporta AIRLIFT (WIFININA)

Wi-Fi 802.11b/g/n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32, com 2MB FLASH

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).

NODE-RED

O Node-RED é uma ferramenta de programação baseada em fluxo, originalmente desenvolvida pela equipe de Serviços de Tecnologia Emergentes da IBM e agora parte da Fundação JS .

Programação Baseada em Fluxo

Inventado por J. Paul Morrison na década de 1970, a programação baseada em fluxo é uma maneira de descrever o comportamento de uma aplicação como uma rede de caixas pretas, ou “nós”, como são chamados no Node-RED. Cada nó tem um propósito bem definido; é dado alguns dados, faz algo com esses dados e depois passa esses dados. A rede é responsável pelo fluxo de dados entre os nós.

É um modelo que se presta muito bem a uma representação visual e o torna mais acessível a uma ampla gama de usuários. Se alguém pode dividir um problema em etapas discretas, ele pode analisar um fluxo e ter uma noção do que está fazendo; sem ter que entender as linhas individuais de código dentro de cada nó.


Instale NODE-RED em sua plataforma, pode ser RASPBERRY também


Bem-vindo ao remote.it!


Conecte e controle seus dispositivos de qualquer lugar do mundo, como se estivesse na sua rede local. Não é necessário enviar um técnico, corrigir problemas remotamente. Faça uma conexão única ou sempre fique conectado aos seus dispositivos. 

Nesta seção, mostraremos como instalar o remote.it em um dispositivo real e iniciar a conexão e o controle remotos com segurança.

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.


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 nos pino do 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
TABELA SIMPLIFICADA


APLICAÇÃO VISUINO



Mandando dados ao NODE-RED via HTTP POST

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


Click no módulo SOCKET para configurações de acesso a porta 1880 do NODE-RED.
No módulo HTTP, em propriedade Connection, deixar keep-alive; em URL deixar /update


COMPILANDO


TRANSFERINDO PROGRAMA


{"api_key":"tPmAT5Ab3j7F9","sensor_name":"BME280","temperature":24.25,"humidity":49.54,"pressure":1005.14}

EXECUTANDO NODE-RED


INSTALAÇÃO DO REMOT3.IT

Instale DESKTOP Remot3 e crie sua conta.


No Remot3 (DESKTOP) você tem que compartilhar a WEB SERVER criada pelo NODE-RED, sendo a mesma na porta 1880

localhost:1880/ui




Adicione /ui (http://[host]:[port]/ui) para acessar DASHBOARDS


Projeto NODE-RED





Interface de Sensores (Dashboard) no servidor WEB sendo acessado localmente.


Interface de Sensores (Dashboard) no servidor WEB sendo acessado remotamente (Remot3)

Pacote Dashboard para NODE-RED


Projeto Node-Red server - Import

   [
    {
        "id": "5ddcb592.3a70dc",
        "type": "tab",
        "label": "Flow 1",
        "disabled": false,
        "info": ""
    },
    {
        "id": "904d0ec6.732d3",
        "type": "json",
        "z": "5ddcb592.3a70dc",
        "name": "",
        "property": "payload",
        "action": "obj",
        "pretty": true,
        "x": 450,
        "y": 340,
        "wires": [
            [
                "8deb0cec.b657"
            ]
        ]
    },
    {
        "id": "f32e4a01.6f0ef8",
        "type": "ui_gauge",
        "z": "5ddcb592.3a70dc",
        "name": "",
        "group": "b5806088.39ff4",
        "order": 4,
        "width": 0,
        "height": 0,
        "gtype": "gage",
        "title": "Pressure",
        "label": "hPa",
        "format": "{{value}}",
        "min": 0,
        "max": "1200",
        "colors": [
            "#b366ff",
            "#8000ff",
            "#440088"
        ],
        "seg1": "",
        "seg2": "",
        "x": 880,
        "y": 600,
        "wires": []
    },
    {
        "id": "8e71a3f.85b6e6",
        "type": "ui_gauge",
        "z": "5ddcb592.3a70dc",
        "name": "",
        "group": "b5806088.39ff4",
        "order": 3,
        "width": 0,
        "height": 0,
        "gtype": "gage",
        "title": "Humidity",
        "label": "%",
        "format": "{{value}}",
        "min": 0,
        "max": "100",
        "colors": [
            "#0080ff",
            "#0062c4",
            "#002f5e"
        ],
        "seg1": "",
        "seg2": "",
        "x": 880,
        "y": 540,
        "wires": []
    },
    {
        "id": "fb783753.cabd68",
        "type": "ui_gauge",
        "z": "5ddcb592.3a70dc",
        "name": "",
        "group": "b5806088.39ff4",
        "order": 2,
        "width": 0,
        "height": 0,
        "gtype": "gage",
        "title": "Temperature",
        "label": "ºC",
        "format": "{{value}}",
        "min": 0,
        "max": "38",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 890,
        "y": 480,
        "wires": []
    },
    {
        "id": "8deb0cec.b657",
        "type": "function",
        "z": "5ddcb592.3a70dc",
        "name": "JSON or URL Encoded",
        "func": "var msg0 = { payload: msg.payload.api_key };\nvar msg1 = { payload: msg.payload.sensor_name };\nvar msg2 = { payload: msg.payload.temperature };\nvar msg3 = { payload: msg.payload.humidity };\nvar msg4 = { payload: msg.payload.pressure };\n\nreturn [msg0, msg1, msg2, msg3, msg4];",
        "outputs": 5,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 630,
        "y": 340,
        "wires": [
            [
                "c342a60f7c73cf58"
            ],
            [
                "ecd86985.bf61c8"
            ],
            [
                "fb783753.cabd68"
            ],
            [
                "8e71a3f.85b6e6"
            ],
            [
                "f32e4a01.6f0ef8"
            ]
        ]
    },
    {
        "id": "ecd86985.bf61c8",
        "type": "ui_text",
        "z": "5ddcb592.3a70dc",
        "group": "b5806088.39ff4",
        "order": 1,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "Sensor Name",
        "format": "{{msg.payload}}",
        "layout": "row-spread",
        "className": "",
        "x": 900,
        "y": 420,
        "wires": []
    },
    {
        "id": "c342a60f7c73cf58",
        "type": "ui_text",
        "z": "5ddcb592.3a70dc",
        "group": "b5806088.39ff4",
        "order": 4,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "API_Key",
        "format": "{{msg.payload}}",
        "layout": "row-spread",
        "className": "",
        "x": 890,
        "y": 360,
        "wires": []
    },
    {
        "id": "d060a8a37080ff23",
        "type": "http in",
        "z": "5ddcb592.3a70dc",
        "name": "",
        "url": "/update",
        "method": "post",
        "upload": false,
        "swaggerDoc": "",
        "x": 110,
        "y": 340,
        "wires": [
            [
                "4799717e85851cc5",
                "904d0ec6.732d3"
            ]
        ]
    },
    {
        "id": "4799717e85851cc5",
        "type": "debug",
        "z": "5ddcb592.3a70dc",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 390,
        "y": 160,
        "wires": []
    },
    {
        "id": "b5806088.39ff4",
        "type": "ui_group",
        "name": "SENSORS",
        "tab": "667c00e9.9ac12",
        "order": 1,
        "disp": true,
        "width": "6",
        "collapse": false
    },
    {
        "id": "667c00e9.9ac12",
        "type": "ui_tab",
        "name": "HTTP",
        "icon": "dashboard",
        "order": 1,
        "disabled": false,
        "hidden": false
    }
]

Remot3 APP







REMOT3.IT em ação


Unexpected end of JSON input in Json Node - General - Node-RED Forum (nodered.org)

Sobre a SMARTCORE

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