segunda-feira, 7 de fevereiro de 2022

U-BLOX NINA W106 SENDO PROGRAMADO .NET nanoFramework - DHT22

    U-BLOX NINA W106 SENDO PROGRAMADO .NET nanoFramework - DHT22

COM DEBUG

Testado no VISUAL STUDIO 2015 e 2019


O objetivo deste BLOG é demonstrar como é possível utilizar o .NET nanoFramework para programar o módulo U-BLOX NINA W106. Foi utilizado o EVK-NINA-W1 (W106) para o teste e o exemplo consiste ler o sensor de temperatura e umidade DHT22.

Atenção, conexão com 2 fios para o 1 WIRE PROTOCOl.

FORUM

Por que 2 GPIOS para ler o DHT22 ???

<@!400822224392552470> you are correct. Both pins connected to the 1 on the DHT. <@!779010417896325120> sometimes one wire protocols are handles internally with 2 pins because it's too costly to change the pin state from input to output and vice versa. While you can do that in native C and the performance will be ok, in C#, it's not enough. So for performance reasons we're using 2 pins. And as you'll see, you never have any false read (except the first expected one). In C implementations you'll see on all the platform you mentioned, you have a lot of false read mainly due to this pin change mode. Here it is for the detailed explanations 🙂


DHT22


O DHT22 é um sensor de temperatura e umidade que permite fazer leituras de temperaturas entre -40 a +80 graus Celsius e umidade entre 0 a 100%, sendo muito fácil de usar com Arduino, Raspberry e outros microcontroladores pois possui apenas 1 pino com saída digital.
"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) e Download .NET Core 3.1 Runtime


Gravação do Bootloader
Sinal que está Rodando!

Baixe e instale o Visual Studio Community 2017/2019
Habilite o Workload do Desktop com .NET

Workload .NET
Instalando Visual Studio 2017

Habilite a Extension do .NET nanoFramework e instale

Para o 2017 aparecerá VS2017

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


Abra um repositório GIT para exemplos .NET

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




Vários exemplos em .NET nanoFramework

  Abrindo o exemplo PWM
Altere o código para
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Device.I2c; using System.Diagnostics; using System.Threading; using Iot.Device.DHTxx.Esp32; namespace Dhtxx_sample { public class Program { public static void Main() { // Set these values to test according to the list below: var pinEcho = 26; var pinTrigger = 27; var device = 5; // ----------------------------------------------------- Debug.WriteLine("Hello DHT!"); Debug.WriteLine("This is a sample program for the following sensors:"); Debug.WriteLine(" 1. DHT10 on I2C"); Debug.WriteLine(" 2. DHT11 on GPIO"); Debug.WriteLine(" 3. DHT12 on GPIO"); Debug.WriteLine(" 4. DHT21 on GPIO"); Debug.WriteLine(" 5. DHT22 on GPIO"); if (device == 0) { Debug.WriteLine("Set the device and pin in the source of this program before running."); return; } if (device == 1) { ////////////////////////////////////////////////////////////////////// // when connecting to an ESP32 device, need to configure the I2C GPIOs // used for the bus //Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA); //Configuration.SetPinFunction(22, DeviceFunction.I2C1_CLOCK); // Init DHT10 through I2C Debug.WriteLine($"Using DHT10 on I2C."); I2cConnectionSettings settings = new(1, Dht10.DefaultI2cAddress); I2cDevice i2cDevice = I2cDevice.Create(settings); using Dht10 dht = new(i2cDevice); Dht(dht); return; } switch (device) { case 1: // Init DHT10 through I2C Debug.WriteLine($"Using DHT10 on I2C."); I2cConnectionSettings settings = new(1, Dht10.DefaultI2cAddress); I2cDevice i2cDevice = I2cDevice.Create(settings); { using Dht10 dht = new(i2cDevice); { Dht(dht); } } return; case 2: Debug.WriteLine($"Reading temperature and humidity on DHT11, pins {pinEcho} and {pinTrigger}"); using (Dht11 dht11 = new(pinEcho, pinTrigger)) { Dht(dht11); } break; case 3: Debug.WriteLine($"Reading temperature and humidity on DHT12, pins {pinEcho} and {pinTrigger}"); { using (Dht12 dht12 = new(pinEcho, pinTrigger)) Dht(dht12); } break; case 4: Debug.WriteLine($"Reading temperature and humidity on DHT21, pins {pinEcho} and {pinTrigger}"); using (Dht21 dht21 = new(pinEcho, pinTrigger)) { Dht(dht21); } break; case 5: Debug.WriteLine($"Reading temperature and humidity on DHT22, pins {pinEcho} and {pinTrigger}"); using (Dht22 dht22 = new(pinEcho, pinTrigger)) { Dht(dht22); } break; default: Debug.WriteLine("Please select one of the option."); break; } } private static void Dht(DhtBase dht) { while (true) { var temp = dht.Temperature; var hum = dht.Humidity; // You can only display temperature and humidity if the read is successful otherwise, this will raise an exception as // both temperature and humidity are NAN if (dht.IsLastReadSuccessful) { Debug.WriteLine($"Temperature: {temp.DegreesCelsius}\u00B0C, Relative humidity: {hum.Percent}%"); } else { Debug.WriteLine("Error reading DHT sensor"); } // You must wait some time before trying to read the next value Thread.Sleep(2000); } } } }

Atualize versões dos pacotes

Compile o código
Encontrando o U-BLOX NINA W106 (Device Explorer)
Fazendo ping se está ativo
Transferindo o programa (Deploy)

Execução 


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

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

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