Programação OTA do Arduino MKR com Controle por Voz e Extras
Componentes e Materiais
| Componente | Quantidade | Observações |
|---|---|---|
| Arduino MKR1000 | 1 | Necessário para todos os projetos OTA. Componentes abaixo apenas para o caso de uso/exemplo: termostato de ambiente. |
| Sensor de Temperatura e Umidade DHT11 (4 pinos) | 1 | |
| Relé (genérico) | 1 | |
| Protoboard (genérico) | 1 |
Aplicativos e Serviços Online
- Arduino IDE
- Microsoft Azure (Azure IoT Hub)
- Microsoft Visual Studio 2015 (usando UWP - Universal Windows Platform)
- Microsoft Project Oxford (API de Reconhecimento de Fala)
Sobre o Projeto
Visão Geral
Nossa contribuição tem 2 partes.
Parte 1: Uma coleção de componentes reutilizáveis. Eles podem servir como estrutura para construir vários projetos IoT que aproveitam recursos úteis:
- Programação Over-the-Air (OTA) do Arduino MKR1000 (ou seja, upload do código binário compilado). Vários métodos disponíveis: ex: de dentro da LAN ou da Internet, de forma segura, via Microsoft Azure IoT Hub.
- Aplicativo cliente Universal Windows Platform (UWP), com interface de usuário agradável. Comunica-se com a placa de forma segura via Azure IoT Hub.
- Reconhecimento de voz (no aplicativo cliente), via API de Reconhecimento de Fala do Microsoft Project Oxford. Comandos falados podem ser usados para controlar a placa via Azure IoT Hub.
Parte 2: Um caso de uso/exemplo, construído com os componentes acima: um termostato de ambiente, controlado via telefone (app UWP). Construímos para servir como exemplo de como usar os componentes. E fomos além: instalamos em nosso escritório e, enquanto escrevemos estas linhas, o sistema de aquecimento do escritório é controlado por este mesmo projeto.
Parte 1: Componentes Reutilizáveis para OTA
Princípio de Funcionamento OTA

Desenvolvemos os seguintes componentes:
Para Arduino IDE:
- uma biblioteca de tempo de execução. Gerencia a mecânica de upload e cópia do firmware.
- um pacote personalizado de "placas". Tem algumas configurações relacionadas ao linker, necessárias pela biblioteca.
- um plugin para Arduino IDE. Envia sinais de download e sketches binários compilados (também conhecidos como firmware). Comunica-se com a placa, Azure IoT Hub, o aplicativo servidor despachante IoT (cf. abaixo).
Para ser instalado em servidor de terceiros (ex: Microsoft Azure Web Site):
- IoT Dispatcher, uma aplicação PHP + MySQL que armazena e serve firmware.
Princípio de Funcionamento do App UWP

Desenvolvemos:
- Um app cliente UWP, escrito em C#. Comunica-se com a placa via Azure IoT Hub, e reconhece comandos falados via Microsoft Project Oxford. Pode ser usado como ponto de partida para vários projetos.
DEMO OTA
Parte 2: Caso de Uso / Exemplo: Termostato de Ambiente
Como mencionado antes, desenvolvemos o termostato de ambiente para demonstrar como combinar nossos componentes para construir um projeto real. No nosso caso, até colocamos em produção, ou seja, controla o aquecimento do nosso escritório.
A lógica é simples:
- quando a temperatura cai abaixo da temperatura predefinida => o relé (aquecimento) liga
- quando a temperatura está acima da predefinida => o relé/aquecimento desliga
- a interface de usuário/app cliente UWP: mostra o status e define a temperatura predefinida (via caixa de texto ou voz)




1. Construa o Projeto (Hardware)

Não fornecemos diagrama Fritzing, pois usamos um MKR1000 Beta. Layout de pinos pode mudar no futuro.
2. Configure o Ambiente de Desenvolvimento para OTA e Azure IoT Hub
- Instale Arduino IDE, versão 1.6.7 ou superior
- Instale Arduino SAMD Boards. Na IDE Arduino: Ferramentas > Placa: ... > Gerenciador de Placas ... > selecione "Arduino SAMD Boards"
- Baixe e descompacte algumas bibliotecas em: SKETCHBOOK_DIR (ex: Documentos/Arduino)/libraries: WiFi101, AzureIoT, RTCZero.
E agora nossos componentes:
- Baixe e descompacte a biblioteca de tempo de execução OTA em: SKETCHBOOK_DIR (ex: Documentos/Arduino)/libraries.
- Baixe nosso pacote personalizado de "placas". Crie um diretório: SKETCHBOOK_DIR (ex: Documentos/Arduino)/hardware/flower-platform. Descompacte o arquivo baixado aqui.
- Baixe o plugin Arduino IDE. Crie um diretório: SKETCHBOOK_DIR (ex: Documentos/Arduino)/tools. Descompacte o arquivo baixado aqui.
Para OTA seguro via Internet/HTTPS:
- Baixe o IoT Dispatcher e instale-o em um servidor PHP + MySQL. Ex: temos instruções sobre como implantar na Nuvem Microsoft Azure.
3. Teste OTA
Existem 3 métodos de upload OTA.
1) Teste OTA via LAN: Arquivo > Exemplos > Arduino-FlowerOTA > WiFiOTA. Altere as linhas comentadas com "// MUDA-ME" adequadamente, para configurar endereço IP, parâmetros WiFi, plain/ssl, assinatura do servidor. Então Flower Platform > Upload OTA ...


Certifique-se de usar:
WiFiClient client;
e (cf. a "assinatura do servidor" da janela pop-up).
ota.begin(&udp, &client, "1hvtdliHzKLjMykvfW1MfPwsFthUU/YfjN8fOZJ3Qhc=");
NOTA: para todos os 3 métodos, você precisa fazer um upload inicial via USB. Depois disso, pode continuar usando OTA, com o método de sua escolha.
2) Teste OTA via despachante seguro, usando o mesmo arquivo:

Certifique-se de usar:
WiFiSSLClient client;
e
ota.begin(&udp, &client, "minha-chave-upload-iot-dispatcher"); // cf. configurado no IoT Dispatcher (PHP)
3) Teste OTA via despachante seguro + Azure IoT Hub. Arquivo > Exemplos > Arduino-FlowerOTA > WiFiOTA-AzureIoTHub. Novamente: não esqueça de ajustar as linhas comentadas com "// MUDA-ME".

4) Teste o caso de uso/exemplo: o termostato de ambiente. Está disponível aqui.
4. Teste a Interface de Usuário (App UWP c/ Azure IoT Hub e Reconhecimento de Fala)
O projeto UWP está disponível aqui. Visual Studio 2015 e Windows 10 são necessários.
Certifique-se de alterar os parâmetros de conexão cf. sua conta Azure:
SendCloudToDevice.cs
class SendCloudToDevice {
// MUDA-ME: Substitua as constantes abaixo por valores reais (do seu Portal Azure)
private const string HOST = "???.azure-devices.net";
private const string DEVICE_ID = "???";
private const string DEVICE_KEY = "???";
static string sharedAccessKeyName = "???";
static string sharedAccessKey = "???";
}
ReadDeviceToCloud.cs
class ReadDeviceToCloud {
// Substitua as constantes abaixo por valores reais (do seu Portal Azure)
private static string ConnectionString = "???";
private static string eventHubEntity = "???";
}
Este código pode servir como ponto de partida para apps clientes de vários projetos. Você só precisa ajustar a interface do usuário conforme seu projeto.
Próximos Passos
Placas como o Arduino MKR1000, que têm poder de processamento razoável e capacidades de comunicação SSL, representam um grande passo à frente para a comunidade de makers.
Estamos continuando o trabalho iniciado com este projeto, para desenvolver o Flower Platform IoT, um serviço online que aceleraria tremendamente projetos IoT:
- desenvolvimento: uso de componentes OOP e linguagem de programação gráfica (que pode ser misturada com código escrito à mão);
- implantação: uso de OTA.
Aproveitando a Flower Platform, planejamos criar uma fundação que focará em ensinar crianças pequenas a fazer e programar projetos IoT.
Código
- Biblioteca de tempo de execução gerenciando upload e mecânica de cópia do firmware (C++) - GitHub
- Pacote personalizado "boards" com configurações de linker necessárias pela biblioteca (script de linker) - GitHub
- Plugin Arduino IDE. Comunica com a placa, despachante e IoT Hub (Java) - GitHub
- IoT Dispatcher. Armazena e serve firmware necessário durante OTA (PHP + MySQL) - GitHub
- Caso de uso/exemplo termostato de ambiente (C++) - GitHub
- Cliente UWP, para o caso de uso/exemplo termostato (C#, HTML, JavaScript) - GitHub
Esquemáticos
Não fornecemos diagrama Fritzing, pois usamos um MKR1000 Beta. Layout de pinos pode mudar no futuro.

Processo de manufatura
- Guia Passo a Passo para se Tornar um Administrador Azure Certificado Microsoft
- O Microsoft Azure é um Caminho de Carreira Inteligente? Market Share, Salários e Insights de Certificação
- Microsoft Azure Anuncia Serviços de Tokenização Blockchain e Gerenciamento de Dados
- Microsoft Azure Cheat Sheet 2020 – O Guia Definitivo para Serviços e Arquitetura Azure
- Integre Azure com Power BI: Guia Passo a Passo para Empresas Modernas
- Pílulas Anticoncepcionais: História, Benefícios, Riscos e Produção
- Edge IA e Hardware de Baixo Consumo Impulsionam Ascensão do Controle por Voz
- Sistema Automatizado de Enchimento e Monitoramento de Piscina
- Microsoft Revela Azure Edge Zones para Impulsionar Cargas de Trabalho IoT e IA Habilitadas para 5G
- Emerson Aumenta Sustentabilidade com Plataforma Zedi Cloud SCADA Hospedada no Azure