segunda-feira, 24 de janeiro de 2022

U-BLOX NINA W106 SENDO PROGRAMADO EM .NET nanoFramework - agora com BLE

   U-BLOX NINA W106 SENDO PROGRAMADO EM .NET nanoFramework - agora com BLE

Testado no VISUAL STUDIO 2022


O objetivo deste BLOG é demonstrar como é possível utilizar o .NET nanoFramework para programar o módulo U-BLOX NINA W106. Foi utilizado o BREAKOUT módulo para o teste e exemplo consiste se comunicar com o celular via BLE (SPP), enviando um menu de mensagens abaixo, solicitando via APP que seja digitado uma opção  do menu e obtendo o resultado.

A implementação atual só suporta as chamadas do Servidor Gatt.

Também faz parte a classe NordicSPP que implementa um Perfil de Protocolo Serial baseado na especificação da NORDIC. Isso permite que os clientes se conectem facilmente via Bluetooth LE para enviar e receber mensagens através de um aplicativo Bluetooth Serial Terminal. Um caso de uso comum para dispositivos de provisionamento. 

Help
-------------------------------------------
'mem' - Show native free memory
'reboot' - Reboot device
-------------------------------------------


BLE tem recentemente sido portado para nanoFramework,  baseado no ESP-IDF 4.X.

U-BLOX NINA W106
BLE

O BLE ou Bluetooth Smart é uma tecnologia de rede de área pessoal sem fios concebida e comercializada pela Bluetooth Special Interest Group. Em comparação com Bluetooth Clássico, o Bluetooth Smart destina-se a fornecer consumo de energia e custos consideravelmente reduzidos, procurando manter um alcance de comunicação similar. O BLE poderia ser superior a outras tecnologias baseadas em localização para smartphones porque ele é mais direcionado. Por exemplo, com BLE uma loja pode detectar em qual departamento você está parado e enviar uma oferta relevante. Algumas empresas estão utilizando beacons para fazer sistemas de localização indoor em eventos ou shoppings. 
"Ao contrário do Arduino (por exemplo) você pode fazer debug a sério do código que está executando. Sem necessitar de ligações ou hardware complexo com o JTAG no caso de programação C pura."

.NET nanoFramework é uma plataforma livre e de código aberto que permite a escrita de aplicativos de código gerenciados para dispositivos incorporados restritos. É adequado para muitos tipos de projetos, incluindo sensores de IoT, wearables, prova acadêmica de conceito, robótica, criações de hobistas/fabricantes ou até mesmo equipamentos industriais complexos. Isso torna o desenvolvimento dessas plataformas mais fácil, rápido e menos caro, dando aos desenvolvedores incorporados acesso a tecnologias e ferramentas modernas usadas pelos desenvolvedores de aplicativos desktop.

Os desenvolvedores podem aproveitar o poderoso e familiar Microsoft Visual Studio IDE e seu conhecimento .NET C# para escrever rapidamente código sem ter que se preocupar com os meandros de hardware de baixo nível de um microcontrolador. Os desenvolvedores do Desktop .NET se sentirão "em casa" e poderão usar suas habilidades no desenvolvimento de sistemas embarcados, ampliando o pool de desenvolvedores embarcados qualificados.

Ele inclui uma versão reduzida do CLR (Common Language Runtime, tempo de execução da linguagem comum .NET) e possui um subconjunto das bibliotecas de classe base .NET, juntamente com as APIs mais comuns incluídas na Universal Windows Platform (UWP) permitindo o reaproveitamento de códigos de aplicativos de desktop, aplicativos IoT Core, milhares de exemplos de código e projetos de código aberto.
Usando o Microsoft Visual Studio, um desenvolvedor pode implantar e depurar o código diretamente em hardware real.

O projeto conta com o apoio da Fundação .NET.  

Roteiro baseado 

Instalando nanoFirmwareFlasher para copiar bootloader.

GitHub - nanoframework/nanoFirmwareFlasher: 🛠 nano firmware flasher (nanoFramework toolbox)

É uma ferramenta global .NET Core CLI que permite atualizar um alvo nanoFramework com nanoBooter, nanoCLR, aplicativo gerenciado ou arquivos de backup. Faz parte da caixa de ferramentas nanoFramework, juntamente com outras várias ferramentas que são necessárias no desenvolvimento, uso ou gerenciamento de repositório do nanoFramework. Um vez instalado é necessário atualizar o UBLOX NINA W106.

Necessita .NET 5.0 Desktop Runtime (v5.0.3) ou superior e Download .NET Core 3.1 Runtime ou superior.



nanoff --update --target ESP32_BLE_REV0 --serialport COM3 --preview


Gravação do Bootloader

Baixe e instale o Visual Studio Community e habilite o Workload do Desktop com .NET
Workload .NET
Instalando Visual Studio

Habilite a Extension do .NET nanoFramework e instale


Visual Studio
Crie um Projeto Blank com .NET nanoFramework (Blank Application nanoFramework)


Se quiser, abra um repositório GIT para exemplos .NET


https://github.com/nanoframework/Samples.git




Vários exemplos em .NET nanoFramework

  Abrindo o exemplo Ble
Exemplo com BLE

Cole o código  abaixo (versão sem WiFi) no Projeto Blank 

using System; using System.Diagnostics; using System.Threading; using nanoFramework.Hardware.Esp32; using nanoFramework.Runtime.Native; using nanoFramework.Device.Bluetooth.Spp; namespace BluetoothLESerial { public static class Program { static NordicSpp spp; public static void Main() { Debug.WriteLine("\nSerial Terminal over Bluetooth LE Sample"); // Create Instance of Bluetooth Serial profile spp = new NordicSpp(); // Add event handles for received data and Connections spp.ReceivedData += Spp_ReceivedData; spp.ConnectedEvent += Spp_ConnectedEvent; // Start Advertising SPP service spp.Start("nanoFrameworkSerial"); while (true) { Thread.Sleep(10000); if (spp.IsConnected && !spp.SendString($"Current device time:{DateTime.UtcNow}\n")) { Debug.WriteLine($"Send failed!"); } } } private static void Spp_ConnectedEvent(IBluetoothSpp sender, EventArgs e) { if (spp.IsConnected) { spp.SendString($"Welcome to Bluetooth Serial sample\n"); spp.SendString($"Send 'help' for options\n"); } Debug.WriteLine($"Client connected:{sender.IsConnected}"); } private static void Spp_ReceivedData(IBluetoothSpp sender, SppReceivedDataEventArgs ReadRequestEventArgs) { string message = ReadRequestEventArgs.DataString; Debug.WriteLine($"Received=>{message}"); string[] args = message.Trim().Split(' '); if (args.Length != 0) { switch (args[0].ToLower()) { case "mem": uint totalSize, totalFreeSize, largestBlock; NativeMemory.GetMemoryInfo(NativeMemory.MemoryType.All, out totalSize, out totalFreeSize, out largestBlock); sender.SendString($"Native memory - total:{totalSize} Free:{totalFreeSize} largest:{largestBlock}\n"); break; // Reboot device case "reboot": sender.SendString("Rebooting now\n"); Thread.Sleep(100); Power.RebootDevice(); break; // Some help case "help": sender.SendString("Help\n"); sender.SendString("-------------------------------------------\n"); sender.SendString("'mem' - Show native free memory\n"); sender.SendString("'reboot' - Reboot device\n"); sender.SendString("-------------------------------------------\n"); break; } } } } }

Atualize versões dos pacotes (uma boa referência são os Using no código)




Compile o código


Encontrando o U-BLOX NINA W106 (Device Explorer)


Fazendo Ping se o u-BLOX NINA W106 está ativo


Transferindo o programa (Deploy) (Implantar)




Resete o u-BLOX NINA W106  e abra o APP BlueFruitConnect






Pacotes .NET nanoFramework

LINKS

API docs: https://docs.nanoframework.net/api/Windows.Devices.Adc.html
Browse our samples repository: https://github.com/nanoframework/samples
Check our documentation online: https://docs.nanoframework.net/
Join our lively Discord community: https://discord.gg/gCyBu8T
Report issues: https://github.com/nanoframework/Home/issues
Follow us on Twitter: https://twitter.com/nanoframework
Follow our YouTube channel: https://www.youtube.com/c/nanoFramework

Questões: suporte@smartcore.com.br

Agradecimentos:

JOSÉ SIMÕES
Husband, father, developer, maker, CEO at @Eclo, founder of @nanoframework. MVP. Developer: .NET C# , C/C++, IoT, Azure, Lego


Sobre a SMARTCORE

Mais detalhes em www.smartcore.com.br 

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.


Nenhum comentário:

Postar um comentário

U-BLOX NINA W106 SENDO PROGRAMADO COM .NET nanoFramework - Amazon ALEXA - Mandando Temperatura e Umidade

U-BLOX NINA W106 SENDO PROGRAMADO COM .NET nanoFramework - Amazon ALEXA  Mandando Temperatura e Umidade para Assistente Alexa falar Testado ...