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 Создано автором Anton
Conteúdo
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 nanoFrameworkConsidere 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:
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 pacote | Descriçã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:
Para acessar a Ajuda, execute o comando:
O utilitário é atualizado com o seguinte comando:
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:
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 firmware | Wi-Fi | Ethernet | Bluetooth | PSRAM (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áficos | 0 -> 3 | |||
EP32_PICO | 0 -> 3 | ||||
ESP32_LILYGO | 0 -> 3 |
- 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:
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:
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
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.
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.
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.
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