Arduino MKR OTA-programmering met spraakcontrole & extras
Onderdelen en benodigdheden
| Onderdeel | Aantal | Opmerking |
|---|---|---|
| Arduino MKR1000 | 1 | Nodig voor elk OTA-project. Onderdelen hieronder zijn voor het use-case: kamerthermostaat. |
| DHT11 Temperatuur- & vochtigheidssensor (4 pins) | 1 | |
| Relais (standaard) | 1 | |
| Breadboard (standaard) | 1 |
Apps en online diensten
- Arduino IDE
- Microsoft Azure IoT Hub
- Microsoft Visual Studio 2015 (UWP)
- Microsoft Project Oxford (Speech Recognition API)
Over dit project
Overzicht
Onze bijdrage bestaat uit twee delen:
Deel 1: Herbruikbare componenten. Een framework voor IoT-projecten met:
- Over-the-Air (OTA) programmering van de Arduino MKR1000 (firmware upload via LAN of internet, beveiligd via Azure IoT Hub).
- Een Universal Windows Platform (UWP) client-app met UI, die beveiligd communiceert via Azure IoT Hub.
- Spraakherkenning in de client-app via Microsoft Project Oxford Speech Recognition API. Gesproken commando's sturen het bord via Azure IoT Hub.
Deel 2: Use-case / voorbeeld: een kamerthermostaat, bedienbaar via telefoon (UWP-app). Dit voorbeeld demonstreert het gebruik van de componenten. We hebben het zelfs in productie genomen: onze kantoorverwarming wordt nu door dit project geregeeld.
Deel 1: Herbruikbare componenten voor OTA
OTA-werkprincipe
Ontwikkelde componenten:
Voor Arduino IDE:
- Een runtime-bibliotheek voor firmware-upload en kopieermechanica.
- Een aangepast "boards"-pakket met linker-instellingen die de bibliotheek nodig heeft.
- Een Arduino IDE-plugin die download-signalen en gecompileerde binaire sketches (firmware) verstuurt. Communiceert met het bord, Azure IoT Hub en de IoT-dispatcher server.
Op een derde-partij server (bijv. Azure Web Site):
- IoT Dispatcher, een PHP + MySQL-applicatie die firmware opslaat en serveert.
UWP-app werkprincipe
Ontwikkeld:
- Een UWP-clientapp in C#. Communiceert met het bord via Azure IoT Hub en herkent spraakcommando's via Microsoft Project Oxford. Kan als uitgangspunt dienen voor diverse projecten.
OTA-demo
Er zijn 3 OTA-uploadmethoden:
- OTA via LAN:
File > Examples > Arduino-FlowerOTA > WiFiOTA. Pas IP, WiFi, SSL, serverhandtekening aan. KiesFlower Platform > Upload OTA.... GebruikWiFiClienten de serverhandtekening. - OTA via beveiligde dispatcher: Hetzelfde bestand. Gebruik
WiFiSSLClientenota.begin(&udp, &client, "my-iot-dispatcher-upload-key"). - OTA via dispatcher + Azure IoT Hub:
File > Examples > Arduino-FlowerOTA > WiFiOTA-AzureIoTHub. Pas instellingen aan.
Let op: voor alle methodes is een initiële USB-upload vereist. Daarna kan OTA met de gekozen methode.
Deel 2: Use-case – Kamerthermostaat
Logica:
- Temperatuur < ingestelde temperatuur → relais (verwarming) AAN
- Temperatuur > ingestelde temperatuur → relais UIT
- UWP-client toont status en stelt ingestelde temperatuur in (tekst of spraak)
1. Hardware bouwen
Geen Fritzing-diagram (Beta MKR1000, pinlayout kan wijzigen). Zie foto's in het project.
2. Ontwikkelomgeving instellen voor OTA & Azure IoT Hub
- Arduino IDE ≥ 1.6.7
- Arduino SAMD Boards installeren via Boards Manager
- Bibliotheken in
SKETCHBOOK_DIR/libraries: WiFi101, AzureIoT, RTCZero - Onze componenten:
- OTA runtime-bibliotheek in
libraries - Custom boards-pakket in
hardware/flower-platform - Arduino IDE-plugin in
tools
- OTA runtime-bibliotheek in
- Voor beveiligde OTA via HTTPS: IoT Dispatcher op PHP/MySQL-server (bijv. Azure Cloud).
3. OTA testen
Zie bovenstaande 3 methodes. De voorbeeldcode bevat commentaren // CHANGE ME voor configuratie.
4. UWP-app testen (met Azure IoT Hub & Spraakherkenning)
Visual Studio 2015 + Windows 10 vereist. Pas verbindingsparameters aan in SendCloudToDevice.cs en ReadDeviceToCloud.cs (uit Azure Portal). De code is een uitgangspunt voor client-apps; pas de UI aan voor jouw project.
Toekomstige stappen
Borden als de MKR1000 (voldoende rekenkracht, SSL) zijn een grote stap voor makers. We ontwikkelen Flower Platform IoT, een online dienst die IoT-projecten versnelt:
- Ontwikkeling: OOP-componenten en grafische programmeertaal (mix met handgeschreven code).
- Deployment: OTA.
We willen een stichting oprichten die jonge kinderen leert IoT-projecten maken en programmeren.
Code-repositories
- Runtime-bibliotheek (C++): GitHub
- Custom boards-pakket (linker script): GitHub
- Arduino IDE-plugin (Java): GitHub
- IoT Dispatcher (PHP + MySQL): GitHub
- Kamerthermostaat use-case (C++): GitHub
- UWP-client voor thermostaat (C#, HTML, JS): GitHub
Schema
Geen Fritzing-diagram (Beta MKR1000). Zie foto in het project.
Productieproces
- Drie bewezen strategieën om controle over uw preventief onderhoudsprogramma te herwinnen
- Anticonceptiepil: Geschiedenis, Voordelen, Risico's en Productie
- Geautomatiseerd Zwembadvul- en Monitoringssysteem
- Emerson Verbetert Duurzaamheid met Azure-gehost Zedi Cloud SCADA Platform
- Stap-voor-Stap Gids Naar Microsoft Certified Azure Administrator
- Is Microsoft Azure Een Slimme Carrièrekeuze? Marktaandeel, Salarissen en Certificering Inzichten
- Microsoft Azure Kondigt Blockchain Tokenisatie & Datamanagement Services Aan
- Microsoft Azure Cheat Sheet 2020 – De Definitieve Gids tot Azure-services & Architectuur
- Azure Integreren met Power BI: Stapsgewijze Gids voor Moderne Bedrijven
- Edge AI en Low-Power Hardware Drijven De Opkomst van Stemmenbesturing
- Microsoft Lanceert Azure Edge Zones voor 5G-ingeschakelde IoT & AI-workloads