Programmation OTA Arduino MKR avec contrôle vocal et extras
Composants et fournitures
| Composant | Quantité | Note |
|---|---|---|
| Arduino MKR1000 | 1 | Requis pour tout projet OTA. Composants ci-dessous uniquement pour le cas d'usage / exemple : thermostat d'ambiance. |
| Capteur température/humidité DHT11 (4 broches) | 1 | |
| Relais (générique) | 1 | |
| Plaque d'essai (breadboard) | 1 |
Applications et services en ligne
- Arduino IDE
- Microsoft Azure IoT Hub
- Microsoft Visual Studio 2015 (plateforme UWP - Universal Windows Platform)
- Microsoft Project Oxford (API Reconnaissance vocale)
À propos du projet
Vue d'ensemble
Notre contribution comporte deux parties.
Partie 1 : Une collection de composants réutilisables. Ils servent de cadre pour construire divers projets IoT exploitant des fonctionnalités utiles :
- Programmation OTA (Over-the-Air) de l'Arduino MKR1000 (téléversement du binaire compilé). Plusieurs méthodes : depuis le LAN ou depuis Internet, de façon sécurisée, via Microsoft Azure IoT Hub.
- Application cliente UWP (Universal Windows Platform) avec interface soignée. Elle communique sécurisément avec la carte via Azure IoT Hub.
- Reconnaissance vocale (sur l'application cliente), via l'API Speech Recognition de Microsoft Project Oxford. Les commandes vocales contrôlent la carte via Azure IoT Hub.
Partie 2 : Un cas d'usage / exemple, construit avec les composants ci-dessus : un thermostat d'ambiance contrôlé par téléphone (application UWP). Nous l'avons développé pour montrer comment combiner nos composants dans un projet réel. Nous l'avons même mis en production : il contrôle le chauffage de notre bureau pendant que nous écrivons ces lignes.
Partie 1 : Composants réutilisables pour OTA
Principe de fonctionnement OTA

Composants développés :
Pour Arduino IDE :
- Une bibliothèque d'exécution (run-time library) : gère la mécanique de téléversement et copie du firmware.
- Un package « boards » personnalisé : quelques paramètres d'édition de liens nécessaires à la bibliothèque.
- Un plugin Arduino IDE : envoie signaux de téléchargement et binaires compilés (firmware). Communique avec la carte, Azure IoT Hub, l'application serveur « IoT Dispatcher » (cf. infra).
À installer sur un serveur tiers (ex. Microsoft Azure Web Site) :
- IoT Dispatcher, application PHP + MySQL qui stocke et sert le firmware.
Principe de fonctionnement de l'application UWP

Développé :
- Application cliente UWP en C#. Communique avec la carte via Azure IoT Hub, reconnaît les commandes vocales via Microsoft Project Oxford. Point de départ pour divers projets.
Démonstration OTA




Partie 2 : Cas d'usage / Exemple : Thermostat d'ambiance
Développé pour démontrer la combinaison des composants en projet réel. Mis en production : contrôle le chauffage de notre bureau.
Logique simple :
- Température < consigne → relais (chauffage) ON
- Température > consigne → relais/heating OFF
- Interface utilisateur / client UWP : affiche l'état, règle la consigne (zone de texte ou voix)

Pas de schéma Fritzing fourni : utilisation d'un MKR1000 Beta, brochage susceptible de changer.
1. Configuration de l'environnement de développement pour OTA et Azure IoT Hub
- Installer Arduino IDE ≥ 1.6.7
- Installer « Arduino SAMD Boards » : Outils > Board > Boards Manager > Arduino SAMD Boards
- Télécharger et décompresser dans
SKETCHBOOK_DIR/libraries(ex.Documents/Arduino/libraries) :WiFi101,AzureIoT,RTCZero
Nos composants :
- Bibliothèque d'exécution OTA →
SKETCHBOOK_DIR/libraries - Package « boards » personnalisé → créer
SKETCHBOOK_DIR/hardware/flower-platform, décompresser ici - Plugin Arduino IDE → créer
SKETCHBOOK_DIR/tools, décompresser ici
Pour OTA sécurisé via Internet/HTTPS :
- Télécharger IoT Dispatcher et l'installer sur serveur PHP + MySQL. Instructions de déploiement sur Microsoft Azure Cloud disponibles.
2. Test OTA
Trois méthodes de téléversement OTA.
1) OTA via LAN : Fichier > Exemples > Arduino-FlowerOTA > WiFiOTA. Modifier les lignes commentées // CHANGE ME (adresse IP, paramètres WiFi, plain/SSL, signature serveur). Puis Flower Platform > Upload OTA...


Utiliser :
WiFiClient client;
ota.begin(&udp, &client, "1hvtdliHzKLjMykvfW1MfPwsFthUU/YfjN8fOZJ3Qhc="); // signature serveur
NOTE : Pour les 3 méthodes, un premier téléversement via USB est requis. Ensuite, OTA avec la méthode choisie.
2) OTA via dispatcher sécurisé : même fichier exemple.

Utiliser :
WiFiSSLClient client;
ota.begin(&udp, &client, "my-iot-dispatcher-upload-key"); // configuré dans IoT Dispatcher (PHP)
3) OTA via dispatcher sécurisé + Azure IoT Hub. Fichier > Exemples > Arduino-FlowerOTA > WiFiOTA-AzureIoTHub. Ajuster les // CHANGE ME.

4) Tester le cas d'usage : thermostat d'ambiance. Disponible ici.
3. Test de l'interface utilisateur (application UWP avec Azure IoT Hub et reconnaissance vocale)
Projet UWP disponible ici. Nécessite Visual Studio 2015 et Windows 10.
Modifier les paramètres de connexion selon votre compte Azure :
// SendCloudToDevice.cs
class SendCloudToDevice {
// CHANGE ME: remplacer les constantes par vos valeurs réelles (portail 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 {
private static string ConnectionString = "???";
private static string eventHubEntity = "???";
}
Ce code sert de point de départ pour applications clientes de divers projets. Adaptez l'interface utilisateur à votre projet.
Étapes futures
Les cartes comme l'Arduino MKR1000, avec puissance de traitement correcte et capacités SSL, représentent un grand pas pour la communauté makers.
Nous continuons ce travail pour développer Flower Platform IoT, un service en ligne qui accélérerait considérablement les projets IoT :
- Développement : composants POO et langage de programmation graphique (mélangeable avec code manuel)
- Déploiement : utilisation de l'OTA
En tirant parti de Flower Platform, nous prévoyons de créer une fondation axée sur l'enseignement de la programmation IoT aux jeunes enfants.
Code
- Bibliothèque d'exécution (gère téléversement et copie firmware) : GitHub
- Package « boards » personnalisé (paramètres linker/script) : GitHub
- Plugin Arduino IDE (communique carte, dispatcher, IoT Hub - Java) : GitHub
- IoT Dispatcher (stocke/sert firmware OTA - PHP + MySQL) : GitHub
- Thermostat d'ambiance (cas d'usage/exemple) (C++) : GitHub
- Client UWP pour thermostat (C#, HTML, JavaScript) : GitHub
Schémas
Pas de schéma Fritzing (MKR1000 Beta, brochage peut changer).

Processus de fabrication
- Guide étape par étape pour devenir Administrateur Azure Certifié Microsoft
- Microsoft Azure : Un Choix de Carrière Intelligent ? Parts de Marché, Salaires et Insights Certifications
- Microsoft Azure Annonce Services de Tokenisation Blockchain & Gestion de Données
- Cheat Sheet Microsoft Azure 2020 — Guide définitif des services et architecture Azure
- Intégrer Azure à Power BI : guide étape par étape pour les entreprises modernes
- La pilule contraceptive : histoire, avantages, risques et production
- Système automatisé de remplissage et de surveillance de piscine
- Microsoft dévoile Azure Edge Zones pour alimenter les charges de travail IoT et IA compatibles 5G
- Emerson booste la durabilité avec sa plateforme Zedi Cloud SCADA hébergée sur Azure