terça-feira, 1 de fevereiro de 2022

BLOX NINA W106 SENDO PROGRAMADO .NET nanoFramework - Evolução no final do ano de 2021

BLOX NINA W106 SENDO PROGRAMADO .NET nanoFramework - Evolução


.NET nanoFramework é uma plataforma de código aberto e livre baseada em .NET e foi projetada para pequenos dispositivos incorporados, microcontroladores. Com sua ajuda, você pode desenvolver vários dispositivos para a Internet das Coisas, dispositivos vestíveis, instrumentos científicos, dispositivos robóticos, você pode criar protótipos e até mesmo usar em equipamentos industriais. Na primeira parte, nos familiarizamos com a plataforma .NET nanoFramework, sua arquitetura, recursos básicos e olhamos exemplos de código de programa. Agora vamos passar para a prática, instalar nanoFramework nos u-BLOX NINA W106, escrever o primeiro "Hello World!", trabalhar com interfaces de hardware e avaliar a portabilidade do código desde o "grande" .NET até a plataforma nanoFramework.

Baseado no DOC ORIGINAL de Создано автором 

Conteúdo

Para quem é a plataforma nanoFramework?
Suporte ao dispositivo
Bibliotecas de Classe
Drivers de sensores
Instalação da Extensão
Carregando nanoFramework no microcontrolador ESP-WROOM-32
Crie seu primeiro aplicativo
LED embutido piscando
Uso de eventos, dispositivo - botão

Para quem é a plataforma nanoFramework?

Agora no mercado há um grande número de uma grande variedade de microcontroladores. Uma das mais famosas da atualidade é a plataforma Arduino, que utiliza a linguagem de programação C/C++. Em termos de conveniência, leveza, simplicidade, nanoFramework não é de forma alguma inferior à plataforma Arduino. Apesar de sua pouca idade, o nanoFramework já funciona em muitos microcontroladores, com suporte para depuração de códigos e pontos de interrupção no conveniente MS Visual Studio IDE. o nanoFramework é apenas a solução perfeita para desenvolvedores .NET existentes que não querem parar por aí e também estão interessados em desenvolver para a Internet das Coisas (IoT). Afinal, tudo o que você precisa saber e ser capaz de programar no nanoFramework, eles já sabem e sabem. O código do programa e as bibliotecas são em grande parte portáteis um para um, só que é necessário levar em conta a pequena quantidade de RAM e baixo desempenho do processador.

Depurando código de aplicação em nanoFramework no Visual Studio 2019

A plataforma nanoFramework também é ótima para a indústria de aprendizagem. Não há nada melhor do que aprender a desenvolver aplicações em C# para microcontroladores, onde você não tem gigabytes de RAM e n-número de núcleos de processadores, aqui você começa a pensar seriamente em otimizar algoritmos.

E, claro, a nanoFramework é adequada para todos aqueles que se esforçam pela criatividade e querem tornar suas vidas mais interessantes e diversas, adicionar automação, robôs e IA a ela. Para o desenvolvimento, você usa a versão gratuita do Visual Studio 2019 Community Edition. Tudo o que é necessário de você é paciência e perseverança.

Mais de seis meses se passaram as primeiras publicações, desde então houve grandes mudanças. Primeiro, a equipe de desenvolvimento atualizou o logotipo. Brincando, na verdade, ele foi realmente atualizado, mas também adicionou novas funções e suporte significativamente expandido para vários microcontroladores.

logotipos nanoFramework

Considere alguns microcontroladores para a plataforma nanoFramework.

Suporte ao dispositivo

Os dispositivos suportados se enquadram em duas categorias: placas principais e as suportadas pela comunidade (nanoframework do GitHub/nf-Community-Targets). Dependendo do dispositivo, todos ou apenas alguns conjuntos (.NET Assemblies) estarão disponíveis. Ao escolher, preste atenção a recursos suportados como: Gpio, Spi, I2c, Pwm, Adc, Dac, Serial, OneWire, CAN, Events, SWO, Networking, Large Heap e UI. 

O módulo NINA W106  é a solução mais simples e acessível para começar a dominar o nanoFramework.  O módulo é baseado no chip SOC ESP32-D0WDQ6 da Espressif, inclui um processador Tensilica Xtensa LX6 de 2 núcleos de 32 bits com 448 unidades de memória ROM KB e 520 KB SRAM. No chip há módulos sem fio Wi-Fi/ Bluetooth, sensor Hall e sensor de temperatura, interfaces estão disponíveis: PWM, ADC, DAC, I2C, SPI, UART/ Serial, I2S. Além disso, o módulo contém memória Flash para 4 MB.


Módulo  de depuração U-BLOX NINA W106

Importante! Normalmente, dois botões EN e Boot são colocados na placa de depuração (BREAKOUT) com o módulo. O botão EN é reinicializado, Boot é a transferência manual do microcontrolador para o modo de inicialização do firmware. Quando você pressiona o botão Inicialização, o pino GPIO0 no microcontrolador se aproxima da Terra (GND), e o seguinte texto pode ser visto no terminal:

ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x7 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

Recentemente, a equipe de desenvolvimento da nanoFramework anunciou que o próximo firmware para dispositivos U-BLOX NINA W106  será baseado no sistema de compilação ESP-IDF 4.3.1. O novo sistema de compilação facilita a adoção de novas bibliotecas e funções ao nanoFramework que estão disponíveis ou fornecidos pelo ESP-IDF. Agora, os chips de núcleo duplo usam ambos os núcleos para executar o código. O componente mbedTLS foi migrado com sucesso do ESP-IDF sem perda de otimização e uso de blocos de hardware (cálculos criptográficos, geração aleatória de números, etc.). Configuração de rede, perfis Wi-Fi, certificados de raiz CA e certificados de dispositivo X509 estão agora disponíveis para uso também em toda a série ESP32 (U-BLOX NINA W106) de dispositivos.

Bibliotecas de Classe

Devido às pequenas capacidades de hardware dos microcontroladores, ao contrário do .NET IoT, cada classe de bibliotecas tem um pacote Nuget correspondente. Todos os pacotes são adicionados usando o sistema Nuget, como é habitual no .NET Core. Vamos dar uma olhada mais de perto nas bibliotecas de classe para representar as capacidades da plataforma. Todas as bibliotecas são divididas em geral para todos os dispositivos e especiais, projetadas para microcontroladores específicos ou uma série de dispositivos. As classes com nome, como System.Device.Gpio, são compatíveis com o IoT .NET para Linux, e as chamadas Windows.Device.Gpio são compatíveis com o Windows IoT Core. 

Bibliotecas .NET nanoFramework 

Biblioteca de classe /Nome nuget do pacoteDescrição
Bases
Biblioteca de Classe Base (nanoFramework.CoreLibrary)conhecida como mscorlib, a classe base da plataforma
nanoFramework.Runtime.Events (nanoFramework.Runtime.Events)suporte a eventos
nanoFramework.Runtime.Native (nanoFramework.Runtime.Native)suporte para recursos de baixo nível, como coleta de lixo (GC), energia, relógios em tempo real e informações do sistema sobre o dispositivo
System.Threading (nanoFramework.System.Threading)suporte multithreading
System.Math (nanoFramework.System.Math)suporte para funções matemáticas
System.Text (nanoFramework.System.Text)suporte para codificação/decodificação de texto e a classe StringBuilder
System.Text.RegularExpressions (nanoFramework.System.Text.RegularExpressions)suporte de expressão regular
System.Collections (nanoFramework.System.Collections)suporte para coleções: ArrayList, Dictionary, Queue, Stack. Ele também suporta o trabalho através de interfaces: Ienumerable, Ienumerator, etc.
nanoFramework.Json (nanoFramework.Json)serialização/deserialização em JSON
nanoFramework.ResourceManager (nanoFramework.ResourceManager)gerenciar recursos de aplicativos
Microsoft.Extensions.Logging (nanoFramework.Logging)registro (compatível com Microsoft.Extensions.Logging)
Interfaces de hardware
System.Device.Gpio (nanoFramework.System.Device.Gpio)suporte para gerenciamento de contatos GPIO (entrada/saída de uso geral)
Windows.Device.Gpio (nanoFramework.Windows.Devices.Gpio)suporte para gerenciamento de contatos GPIO (entrada/saída de uso geral)
System.Device.Dac (nanoFramework.System.Device.Dac)Suporte DAC (Conversor Digital-para-Analógico), Conversor Digital-para-Analógico, DAC
Windows.Devices.Adc (nanoFramework.Windows.Devices.Adc)Suporte ADC (Conversor Analógico-Digital), Conversor Analógico-Digital, ADC
System.Device.I2c (nanoFramework.System.Device.I2c)O suporte para o protocolo Circuito Interconteligado (I2C) é um barramento de dados serial para comunicação integrada de circuitos usando duas linhas de comunicação bidirecional (SDA e SCL).
Windows.Devices.I2c (nanoFramework.Windows.Devices.I2c)O suporte para o protocolo Circuito Interconteligado (I2C) é um barramento de dados serial para comunicação integrada de circuitos usando duas linhas de comunicação bidirecional (SDA e SCL).
System.Device.Spi (nanoFramework.System.Device.Spi)Suporte de barramento SPI (Serial Periférico). Dispositivos de alta velocidade, como displays LCD, placas de rede, etc. estão conectados.
Windows.Devices.Spi (nanoFramework.Windows.Devices.Spi)Suporte de barramento SPI (Serial Periférico). Dispositivos de alta velocidade, como displays LCD, placas de rede, etc. estão conectados.
nanoFramework.Devices.OneWire (nanoFramework.Devices.OneWire)Suporte ao protocolo OneWire, pode conectar esse sensor de temperatura DS18B20
System.iO.Ports (nanoFramework.System.IO.Ports)Suporte para portas seriais COM
Windows.Devices.SerialCommunication (nanoFramework.Windows.Devices.SerialCommunication)Suporte para portas seriais COM
System.Device.Pwm (nanoFramework.System.Device.Pwm)suporte para PWM (modulação da largura de pulso), modulação de largura de pulso PWM. Usado para controlar o brilho dos displays LCD, e regular a velocidade dos motores
Windows.Devices.Pwm (nanoFramework.Windows.Devices.Pwm)suporte para PWM (modulação da largura de pulso), modulação de largura de pulso PWM. Usado para controlar o brilho dos displays LCD, e regular a velocidade dos motores
nanoFramework.Devices.Can (nanoFramework.Devices.Can)suporte para o protocolo CAN (Controller Area Network) é um padrão do setor que permite combinar vários nós, mecanismos, sensores, etc. em uma única rede.
Rede
Windows.Devices.WiFi (nanoFramework.Windows.Devices.WiFi)Suporte para protocolo Wi-Fi. Digitalize e conecte-se aos pontos de acesso (APs) disponíveis
System.Net (nanoFramework.System.Net)Suporte à rede. Trabalho com DNS, proxies web, soquetes e criptografia SSL são suportados
System.Net.http (nanoFramework.System.Net.http)suporte ao protocolo http
System.Net.http.Client (nanoFramework.System.Net.Http.Client)suporte ao cliente http
System.Net.WebSockets (nanoframework. System.Net.WebSockets)Suporte ao WebSocket
System.Net.http.Server (nanoFramework.System.Net.Http.Server)suporte para servidor HTTP. Você pode criar seu próprio servidor Web para fornecer gerenciamento remoto de dispositivos
nanoFramework.WebServer (nanoFramework.WebServer)"versão simplificada" ASP.NET, API REST
nanoFramework.Networking (nanoFramework.Networking.Sntp)O suporte ao cliente do Simple Network Time Protocol (SNTP), permite o controle remoto do dispositivo através deste protocolo, o suporte é o padrão de fato para switches, roteadores, hubs, etc.
nanoFramework.Azure.Devices (nanoFramework.Azure.Devices.Client)Cliente de dispositivos Azure IoT
Armazenamento
System.IO.FileSystem (nanoFramework.System.IO.FileSystem)suporte para sistemas de arquivos, trabalhar com memória microSD e MMC
Windows.Storage (nanoFramework.Windows.Storage)suporte para armazenar arquivos na mídia
Windows.Storage.Streams (nanoFramework.Windows.Storage.Streams)classes para streaming de dados de gravação/leitura para mídia
Interface gráfica do usuário (GUI)
nanoFramework.Graphics (nanoFramework.Graphics)Exibir gráficos de exibição e interface do usuário
System.Drawing (nanoFramework.System.Drawing)trabalhar com gráficos
Dependente de hardware
nanoFramework.Hardware.Esp32 (nanoFramework.Hardware.Esp32)Funções de hardware Esp32, como controlar os modos de sono do dispositivo
nanoFramework.Hardware.Esp32.Rmt (nanoFramework.Hardware.Esp32.Rmt)Suporte para controle remoto (RMT)
nanoFramework.M5Stack (nanoFramework.M5Stack)Recursos de hardware M5Stack, como controle LCD embutido
nanoFramework.Hardware.Stm32 (nanoFramework.Hardware.Stm32)Funções de hardware Stm32
nanoFramework.Hardware.TI (nanoFramework.Hardware.TI)Funções de hardware da TI (Texas Instruments), como gerenciamento de energia
nanoFramework.TI.EasyLink (nanoFramework.TI.EasyLink)Funções de hardware TI EasyLink
Terceiros
Amqp.* (AMQPNetLite.nanoFramework)Suporte avançado do Protocolo de Enfilamento de Mensagens (AMQP) para corretores de mensagens como RabbitMQ
Amqp.* (AMQPNetMicro.nanoFramework)Suporte avançado do Protocolo de Enfilamento de Mensagens (AMQP) para corretores de mensagens como RabbitMQ
nanoFramework.M2Mqtt (nanoFramework.m2mqtt)Suporte para o protocolo MQTT. Protocolo de mensagens Publisher-Sub (pub/sub)

Drivers de sensores

Muitos dos sensores utilizados para se conectar ao Arduino também são suportados pela plataforma, entre eles: acelerômetros, analisadores de gás, medição de nível de luz, barômetros, termômetros, sensores infravermelhos, giroscópios, bússolas, drivers de motores, módulos NFC, etc.

Para obter uma lista completa de sensores suportados, consulte a lista e a documentação da categoria de dispositivos. Dispositivos — nanoFramework. Com exemplos do GitHub, nanoFramework.IoT.Device/devices.

Instalação da Extensão

Para desenvolver aplicativos para nanoFramework, você precisará do Microsoft Visual Studio Community 2019 Versão 16.11, instalado .NET, Windows 10 (no Windows 7, o painel Explorer do dispositivo não abre). A extensão é instalada de série, através do menu: Extensões -> Gerenciar extensões. Nome de extensão: Extensão .NET nanoFramework VS2019.

Extensão nanoframework para Microsoft Visual Studio

Depois de instalar a extensão, a janela Explorador de dispositivos aparecerá (Exibir -> outro menu do Explorador de Dispositivos > Windows). Nesta janela, o mais importante são apenas três botões: Dispositivo ping, recursos do dispositivo, aplicativo de apagar.

Extensões nanoFramework do painel do explorador de dispositivos

Comando:

  • Dispositivo ping — verifica a disponibilidade do dispositivo/microcontrolador conectado;
  • Recursos do dispositivo - Exibe uma lista de recursos do dispositivo no console.
  •  Aplicativo de apagar - Desinstalar o aplicativo baixado (nanoFramework permanece no local).

Carregando nanoFramework no módulo U-BLOX NINA W106

Para ser capaz de executar o código .NET em um microcontrolador, é necessário piscá-lo com o firmware nanoFramework apropriado. O firmware é realizado usando o utilitário nanoFirmwareFlasher. Instale os drivers para o microcontrolador, o utilitário e pise no dispositivo.

Passo 1 – Instale o driver para a USB CP2102 para a Ponte UART

Se você conectar a placa de depuração BREAKOUT U-blox NINA W106 via USB e ver se o microcontrolador está no nó Outros Dispositivos no Gerenciador de Dispositivos, você deve instalar o driver.

Gerenciador de dispositivos

Baixe o driver do site oficial CP210x USB para UART Bridge VCP Drivers e instale. Após a instalação do driver, o microcontrolador está disponível na porta COM3.

Gerenciador de dispositivos

Passo 2 – Instalação de nanoFirmwareFlasher

Agora instale o utilitário nanoFirmwareFlasher, para fazer isso, execute a linha de comando como administrador e execute o comando:

dotnet tool install -g nanoff

Para acessar a Ajuda, execute o comando:

nanoff --help

O utilitário é atualizado com o seguinte comando:

dotnet tool update -g nanoff

Passo 3 - Informações de identificação de saída para a placa de depuração

Às vezes pode ser difícil entender que tipo de microcontrolador da série ESP32 está na sua frente, especialmente se veio de um site chinês. Portanto, antes do firmware, você pode exibir as informações de identificação na tela com o comando:

nanoff --platform esp32 --serialport COM3 --devicedetails

onde o parâmetro — o parâmetro da plataforma aponta para o Alvo da plataforma — serialport é o número da porta COM, neste caso COM3.

O resultado do comando:

Informações de identificação do conselho de depuração

Quando a linha roxa "Segurar o botão BOOT/FLASH na placa ESP32 ***" aparecer, então neste momento você precisa pressionar o botão Inicialização na placa, caso contrário o comando não será executado.

A partir da saída podemos ver que a placa tem um chip com 4 MB de memória Flash, a bordo há Wi-Fi e BT.

Passo 4 – Escolher um Firmware

Agora vamos passar para o passo mais difícil. Existem várias versões diferentes de firmware para a série ESP32. O Expresso produz chips SoC e forma módulos com base neles. Vamos recorrer à descrição da Série ESP32-S no site oficial. Módulos da série esp32 estão disponíveis com base em chips:

  • ESP32-D0WD-V3 (terceira versão/revisão);
  • ESP32-D0WD (primeira versão/revisão - versão antiga);
  • ESP32-D0WDQ6 (primeira versão/revisão - versão antiga);
  • e outros.

Chips ESP32-D0WD e ESP32-D0WDQ6 em funcionalidade não são diferentes, a diferença está apenas no fator de forma do próprio chip.

NanoFramework (target) disponível :- 000

  • ESP32_REV0 - (DEV) é adequado para todas as placas ESP32 sem suporte a PSRAM; serve para o U-blox NINA W106
  • ESP32_REV3 - (DEV) é adequado para todas as placas ESP32 com chip ESP32 versão/revisão 3 sem suporte a PSRAM
  • ESP32_PSRAM_REV0 - (DEV) é adequado para todas as placas ESP32 com suporte psram;
  • ESP32_PSRAM_REV3 - (DEV) é adequado para todas as placas ESP32 com chip ESP32 versão/revisão 3 e suporte psram;
  • ESP32_WROOM_32 - Aplica-se a todas as placas ESP32 habilitadas para PSRAM, mas não suporta Bluetooth BLE devido a limitações de memória na partição IRAM causada pelas correções PSRAM,  serve para o U-blox NINA W106
  • ESP32_WROOM_32_BLE - adequado para todas as placas ESP32, suporta Bluetooth BLE, mas PSRAM está desativado;serve para o U-blox NINA W106
  • ESP32_WROOM_32_V3_BLE - adequado para todas as placas ESP32 com chip ESP32 versão/revisão 3, PSRAM e Bluetooth BLE são suportados ao mesmo tempo;
  • ESP32_PSRAM_REV3_ILI9341 - (mencionado na documentação, mas firmware não encontrado) é adequado para todas as placas ESP32 com chip ESP32/revisão 3 e suporte psram, inclui driver para LCD ILI9341;
  • ESP32_PSRAM_REV3_ILI9342 - (mencionado na documentação, mas firmware não encontrado) é adequado para todas as placas ESP32 com chip ESP32 versão/revisão 3 e suporte psram, inclui um driver para LCD ILI9342;
  • ESP_WROVER_KIT é uma opção especial para a placa de depuração ESP WROVER KIT. Inclui funções de interface do usuário, suporte psram e driver para SPI LCD ILI9341;
  • ESP32_PICO - Adequado para todas as placas ESP32 com ESP32 PICO sem suporte a PSRAM, como ESP32-PICO-KIT e M5Stack ATOM;
  • ESP32_PICO_ST7735S - (mencionado na documentação, mas sem firmware encontrado) é adequado para placa ESP32 PICO, inclui driver para LCD ST7735S;
  • ESP32_PICO_ST7789V - (mencionado na documentação, mas sem firmware encontrado) placa adequada para M5Stick C Plus, inclui driver para LCD ST7789V;
  • ESP32_REV0_ILI9342 - (mencionado na documentação, mas sem firmware encontrado) placa adequada para M5Stack, inclui driver para ILI9342;
  • ESP32_LILYGO é uma opção especial para a placa de depuração LilyGO ESP32, inclui suporte para ethernet PHY.

Vamos transferir da documentação uma tabela de resumo do firmware principal com uma descrição das opções:

Nome do firmwareWi-FiEthernetBluetoothPSRAM (grande pilha)Versão ESP32
WROOM_32✔️✔️0 -> 3
WROOM_32_BLE✔️✔️0 -> 3
WROOM_32_V3_BLE✔️✔️✔️versão 3 apenas
ESP_WROVER_KIT✔️✔️ Heap de 2Mb + Gráficos0 -> 3
EP32_PICO✔️✔️0 -> 3
ESP32_LILYGO✔️✔️✔️0 -> 3
U-BLOX NINA W106

  • A placa de depuração é baseada no chip ESP32-D0WDQ6, a primeira revisão;
  • Suporte wi-fi, BT ativado;

Passo 5 – Firmware U-blox NINA W106

Para piscar, você precisa conectar a placa de depuração e emitir o comando:

nanoff --update --target ESP32_BLE_REV0 --serialport COMx --preview

onde o parâmetro de destino aponta para o identificador de firmware — serialport é o número da porta COM, neste caso COM3.

O resultado do comando:

Se o firmware não for carregado no repositório, você pode repetir a operação ou baixá-la na página e desempacotar, por exemplo, no caminho: "c:\nanofw". Haverá vários arquivos no arquivo:

Firmware descompactado para U-BLOX NOINA W106

Para piscar o dispositivo usando o firmware local, emita o comando:

nanoff --update --clrfile "C:\nanofw\nanoCLR.bin" --serialport COM3

onde o parâmetro — clrfile é o caminho para o arquivo nanoCLR.bin — serialport é o número da porta COM, neste caso COM3.

Não se esqueça de pressionar o botão "Inicializar" durante o piscar. Seu dispositivo está pronto para baixar programas .NET!

Crie seu primeiro aplicativo

Vamos começar o Visual Studio 2019 Community Edition e abrir a janela Do Explorador de Dispositivos. Execute o comando Recursos do dispositivo. Como resultado da execução do comando, informações sobre as capacidades do microcontrolador serão exibidas no console.

Informações sobre as capacidades do U-BLOX NINA W106

Lista completa de saída do comando recursos do dispositivo 






























































Dos dados obtidos, a lista de Assembleias Nativas é a mais importante. Esta lista contém montagens que podemos usar em nosso projeto, todas as outras bibliotecas devem ser incluídas no projeto como código-fonte. Além disso, você pode formar um firmware com suas montagens nativas em C++, mas como fazer isso será na continuação.

Vamos criar um novo aplicativo, escolher o tipo de projeto: Aplicativo em branco (nanoFramework).


Modelo de projeto de aplicativo em branco (nanoFramework)

O projeto de modelo exibe uma mensagem de depuração para o console.


Projeto de modelo nanoframework

Vamos executar o projeto para depuração

Depurando o nanoFramework Project

Na janela de depuração, você verá a mensagem: "Olá do nanoFramework!".

Ótimo, o primeiro app lançado! Em seguida, vamos executar o programa de flashagem LED padrão.

LED embutido piscando

Vamos executar o programa Blink, semelhante ao de Arduino. Para fazer isso, vamos criar um novo projeto nanoframework-esp32-blink e adicionar um pacote Nuget: nanoFramework.System.Device.Gpio. Vamos pegar o código-fonte do projeto Nanoframework/Samples do GitHub – Blinky.

public class Program
{
private static GpioController s_GpioController;
public static void Main()
{
s_GpioController = new GpioController();
// 4 is a valid GPIO pin in
// W106
GpioPin led = s_GpioController.OpenPin(2,PinMode.Output);
led.Write(PinValue.Low);
while (true)
{
led.Write(PinValue.High);
Thread.Sleep(1000);
led.Write(PinValue.Low);
Thread.Sleep(1000);
}
}
}

Vejamos um exemplo:

  • s_GpioController = novo GpioController() — inicializa o objeto do controlador de acesso GPIO;
  • Led GpioPin = s_GpioController.OpenPin(2,PinMode.Output) — o método openPin coloca o pino GPIO2 no modo de saída;
  • LED. Write(PinValue.Low) — alimenta o "0" lógico ao contato;
  • LED. Write(PinValue.High) — lógico "1", tensão fornecida de 3.3V.

Qualquer dispositivo interage com o mundo exterior e precisa de gerenciamento, agora vamos adicionar um botão e implementar uma nova lógica.

Uso de eventos, dispositivo - botão

Conecte um botão ao microcontrolador e implemente a seguinte lógica: o LED embutido acende-se e permanece na posição on ao segurar o botão pressionado. Ao soltar o botão, o LED apaga. O LED usará o mesmo, pino GPIO2. O botão está conectado ao pino GPIO25, marcado como "D25" na placa. Vamos criar um novo projeto nanoframework-esp32-button e adicionar um pacote Nuget: nanoFramework.System.Device.Gpio.

using System;
using System.Diagnostics;
using System.Threading;
using System.Device.Gpio;
namespace nanoframework_esp32_button
{
public class Program
{
//Board: BREAKOUT W106
static GpioController s_GpioController;
static int s_BluePinNumber=2;
static int s_UserButtonPinNumber=25;
public static void Main()
{
s_GpioController = new GpioController();
//setup blue LED
s_GpioController.OpenPin(s_BluePinNumber, PinMode.Output);
s_GpioController.Write(s_BluePinNumber, PinValue.Low);
//setup user button
s_GpioController.OpenPin(s_UserButtonPinNumber, PinMode.Input);
//s_GpioController.OpenPin(s_UserButtonPinNumber, PinMode.InputPullUp);
//Event registration
s_GpioController.RegisterCallbackForPinValueChangedEvent(
s_UserButtonPinNumber,
PinEventTypes.Falling | PinEventTypes.Rising,
UserButton_ValueChanged);
//Infinite
Thread.Sleep(Timeout.Infinite);
}
private static void UserButton_ValueChanged(object sender, PinValueChangedEventArgs e)
{
// read Gpio pin value from event
Debug.WriteLine("USER BUTTON (event) : " + e.ChangeType.ToString());
Debug.WriteLine("USER BUTTON (event) : " + ((((int)e.ChangeType) == 1) ? "Rising" : "Falling"));
//if (e.ChangeType != PinEventTypes.Rising) //for DFRobot
if (e.ChangeType == PinEventTypes.Rising)
{
s_GpioController.Write(s_BluePinNumber, PinValue.High);
}
else
{
s_GpioController.Write(s_BluePinNumber, PinValue.Low);
}
}
}
}

Vejamos um exemplo:

  • s_GpioController.OpenPin (s_UserButtonPinNumber, PinMode.Input) — abre o contato do botão e define o modo de operação para entrada (o sinal vem do botão). Se for necessário excluir a leitura de leads externos, então você pode usar o elevador de alimentação PinMode.InputPullUp (nem todos os pinos de entrada suportam);
  • s_GpioController.RegisterCallbackForPinValueChangedEvent - O manuseio de interrupção é implementado adicionando Callback para alterar o status de um contato. O retorno de chamada está registrado no controlador GPIO. Especifique o número de contato - s_UserButtonPinNumber, o evento do gatilho - Caindo (mude de "1" para "0") ou Subindo (mude de "0" para "1"), o nome da função de processamento - UserButton_ValueChanged.
Questões: suporte@smartcore.com.br

Agradecimentos:

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