quarta-feira, 21 de abril de 2021

U-BLOX NINA W106 SENDO PROGRAMADO EM B4R - ThingStream.IO - MQTT

U-BLOX NINA W106 SENDO PROGRAMADO EM B4R - ThingStream.IO - MQTT


O objetivo deste BLOG é demonstrar como é possível programar o módulo u-BLOX NINA W106 (ESP32) no starter kit EVK-NINA-W1 com a linguagem B4R e transmitir os dados coletados (temperatura - Random) para um servidor MQTT da u-BLOX (mqtt.thingstream.io) via WIFI, pela porta 1883 (não SSL). Os  dados são tratados por uma poderosa ferramenta da u-BLOX chamada FLOW.
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

SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portifó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

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.



É um protocolo de mensagens de publicação/assinatura, extremamente simples e leve, projetado para dispositivos restritos e redes de baixa largura de banda, alta latência ou não confiáveis. Os princípios de design são minimizar a largura de banda da rede e os requisitos de recursos do dispositivo, ao mesmo tempo em que tentam garantir a confiabilidade e algum grau de garantia de entrega. Esses princípios também acabam por tornar o protocolo ideal do emergente mundo "máquina para máquina" (M2M) ou "Internet das Coisas" de dispositivos conectados, e para aplicativos móveis onde a largura de banda e a bateria estão em um prêmio.

O anexo implementa o protocolo com as seguintes limitações:

- Ele só pode publicar mensagens QoS 0.
- Pode se inscrever em QoS 0 ou QoS 1.
- O tamanho máximo da mensagem é de 256 caracteres
- O intervalo de manutenção é definido para 15 segundos
- O cliente usa MQTT 3.1.1

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

ublox


SOBRE A LINGUAGEM BASIC

BASIC (acrônimo para Beginner's All-purpose Symbolic Instruction Code; em português: Código de Instruções Simbólicas de Uso Geral para Principiantes) é uma linguagem de programação, criada com fins didáticos, pelos professores John George Kemeny, Thomas Eugene Kurtz e Mary Kenneth Keller em 1964 no Dartmouth College.

Basic pode ser uma opção de linguagem para se aprender lógica, uma vez que foi desenvolvida em alto nível (próxima da linguagem humana). Além da sua relativa facilidade de criar aplicações de forma simples e rápida.

BASIC também é o nome genérico dado a uma grande família de linguagens de programação derivadas do BASIC original. Provavelmente existem mais variações de BASIC do que de qualquer outra linguagem de programação.

Simple, powerful and modern
development tools.
With B4X, anyone who wants to, can develop real-world solutions.

B4X suite supports more platforms than any other tool
ANDROID | IOS | WINDOWS | MAC | LINUX 



B4R é uma ferramenta de desenvolvimento 100% gratuita para programas nativos como o U-BLOX NINA W106.
O B4R segue os mesmos conceitos das outras ferramentas B4X, fornecendo uma ferramenta de desenvolvimento simples e poderosa.
B4R, B4A, B4J e B4i juntos fazem a melhor solução de desenvolvimento para a Internet das Coisas (IoT).

B4R é uma ferramenta de desenvolvimento do fabricante do basic4Android.

Você baixa a ferramenta de https://www.b4x.com/b4r.html e os requisitos  são Arduino 1.8+ e o pacote ESP32 que devem ser instalados no seu PC de desenvolvimento, depois de instalar o B4R você configurar o caminho para o IDE Arduino para que eles possa utilizar as ferramentas Arduino que estão instaladas para compilação e programação.

Com B4R você pode Programar (Compilar) em BASIC e C++ juntos!!!

B4R é 100% free!


Instalação








u-BLOX NINA W106 é baseado no ESP32, escolha "ESP32 Dev Module"



Copie e cole o programa abaixo, colocando suas credenciais e do ThingStream.Credenciais devem ser obtidas no site ThingStream.IO

Pegue aqui as credenciais
Servidor

Tráfego no Broker MQTT da u-BLOX

Servidor MQTT ThingStream recebendo dados (RANDOM) do Tópico do u-BLOX NINA W106
(estão em HEXADECIMAL)

Sub Process_Globals Public Serial1 As Serial Private WiFi As ESP8266WiFi Private WiFiStr As WiFiSocket Private MQTT As MqttClient Private MQTTOpt As MqttConnectOptions Private MQTTUser As String = "xxxxHZWCKHZASRDIOME9" Private MQTTPassword As String = "xxxxuIOtke4yXeF1lY9mXbbCxTovHAAgE3CViJ/4" Private MQTTHostName As String = "mqtt.thingstream.io" Private MQTTPort As Int = 1883 End Sub Private Sub AppStart Serial1.Initialize(115200) Delay(1000) Log("AppStart") 'Connect to local WiFi Access Point WiFi.Connect2("Andreia Oi Miguel 2.4G", "xxxxxxxx") If WiFi.IsConnected Then Log("Connected to WiFi, Local IP ", WiFi.LocalIp) Else Log("Not Connected to WiFi") 'Connect to CloudMQTT broker Dim ClientId As String = "device:xxxx9a7-3211-4e46-8a9a-a390f2e4ca86" MQTT.Initialize2(WiFiStr.stream, MQTTHostName, MQTTPort, ClientId, "MQTT_MessageArrived", "MQTT_Disconnected") MQTTOpt.Initialize(MQTTUser, MQTTPassword) MQTT_Connect(0) End Sub Sub MQTT_MessageArrived (Topic As String, Payload() As Byte) Log("Topic = ", Topic, " and Payload = ", Payload) End Sub Sub MQTT_Publish(Unused As Byte) Log("Published...") MQTT.Publish("esp32-sniffer/xxxx127531c8/ble", JoinStrings(Array As String("", Rnd(1,100)))) CallSubPlus("MQTT_Publish", 10000, 0) End Sub Sub MQTT_Connect(Unused As Byte) If MQTT.Connect = False Then Log("Trying to connect to broker") MQTT.Connect2(MQTTOpt) CallSubPlus("MQTT_Connect", 10000, 0) Else Log("Connected to broker") MQTT.Subscribe("esp32-sniffer/xxxx127531c8/ble", 0) Log("Subscribed") CallSubPlus("MQTT_Publish", 1000, 0) End If End Sub Sub MQTT_Disconnected Log("Disconnected") MQTT.Close MQTT_Connect(0) End Sub













Pressione F5 para iniciar a compilação

Compilando

Então o programa será transferido para o U-blox NINA W106 (coloque no modo de BOOT)

Transferindo

Execução


O exemplo basicamente
  • Define o servidor e porta (não SSL) do Servidor ThingsStream.io
  • Publica um número RANDOM no tópico a cada 10 segundos em um tópico
  • Se inscreve no mesmo tópico, mostra o retorno quando publicado algo nele
Credenciais devem ser obtidas no ThingStream.IO

Pegue aqui as credenciais
Servidor

Tráfego no Broker MQTT da u-BLOX

Servidor MQTT ThingStream recebendo dados (RANDOM) do Tópico do u-BLOX NINA W106
(estão em HEXADECIMAL)


Flow

No exemplo, FLOW está inscrito no Tópico o qual u-BLOX NINA W106 publica dados.

Sendo os dados publicados, o FLOW encaminha para o debug para visualização.

Basicamente o Flow se inscreve no mesmo tópico, transforma os dados recebidos para String e
mostra no debug do Flow.


Sobre o thingsteam subcribe no FLOW, é o campo que fez subscribe para receber os dados enviados pelo u-BLOX NINA W106 (publish)

DÚVIDAS

suporte@smartcore.com.br

REFERÊNCIAS

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 


Bibliotecas Disponíveis para IoT (veja nos forúms para BLE)

Core - v2.00
rAdafruit_ILI9341 - v1.00
rAdafruit_MCP4725 - v1.00
rAdafruit_PWMServoDriver - v1.00
rAdafruit_STMPE610 - v1.00
rAdafruitBMP280 - v1.00
rAdafruitGFX - v1.01
rAdafruitMotorShieldV2 - v1.00
rAdafruitNeoPixel - v1.00
rAdafruitRGBMatrix - v1.00
rAdafruitSSD1306 - v1.10
rAPDS9960 - v1.00
rCurieBLE - v1.00
rDht - v2.00
rDS1302 - v1.00
rEEPROM - v1.20
rESP8266 - v1.00
rESP8266FastSSD1331 - v1.32 - Written by Massimo Meli
rESP8266FileSystem - v1.00
rESP8266Ping - v1.00
rESP8266WiFi - v1.30
rEthernet - v1.11
rIRremote - v1.00
rIRremoteESP8266 - v1.12
rKeypad - v1.00
rLedControl - v1.00
rLiquidCrystal - v1.00
rLiquidCrystal_I2C - v1.01
rMAX7219LedMatrix - v1.01
rMCP2515 - v1.00
rMCUFRIEND_kbv - v1.00
rMFRC522 - v1.01
rMQTT - v1.30
rNSRainbow - v1.00
rOneWire - v1.00
rRandomAccessFile - v1.80
rRF24 - v1.00
rSD - v1.03
rSeeedOLED - v1.00
rServo - v0.90
rSFE_BMP180 - v1.10
rSoftwareSerial - v1.00
rStepper - v1.00
rTM1637 - v1.10
rTTP229 - v1.00
rWebSocketClient - v1.20
rWiFi101 - v1.00
rWire - v1.10

Perguntas frequentes sobre o B4R

P: O B4R é totalmente gratuito, inclusive para fins comerciais?
R: Sim.

P: Posso acessar o código-fonte C e os objetos gerados?
R: Sim. O código e os objetos compilados estão disponíveis na pasta Objetos.

P: As bibliotecas são de código aberto?
R: Sim. As bibliotecas B4R são de código aberto (licença MIT). O código está disponível no GitHub.

P: Estou recebendo este erro na inicialização: "O aplicativo não pôde ser inicializado corretamente, erro 0xc0000135".
Windows Vista +: .Net Framework 4.5.2.
Windows XP: .Net Framework 4.0.

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

Nenhum comentário:

Postar um comentário