Arduino MKR1000: OTA-прошивка, голосовое управление и UWP-приложение через Azure IoT Hub
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino MKR1000 | 1 | Основа для всех OTA-проектов |
| Датчик DHT11 (температура/влажность) | 1 | Для примера «термостат» |
| Реле (любое) | 1 | Управление нагрузкой (обогрев) |
| Беспаечная макетная плата | 1 | Сборка прототипа |
Инструменты и сервисы
- Arduino IDE (≥ 1.6.7)
- Microsoft Azure IoT Hub — облачный брокер
- Visual Studio 2015+ — UWP-приложение (C#)
- Microsoft Project Oxford (Speech API) — распознавание речи
Суть проекта
Проект состоит из двух частей:
Часть 1: Переиспользуемые компоненты для OTA и голосового управления
- Библиотека рантайма (C++) — механика приёма и записи прошивки во Flash.
- Пакет плат (boards package) — настройки линкера для размещения OTA-кода.
- Плагин для Arduino IDE (Java) — отправка бинарника на плату, в Azure IoT Hub или на диспетчер.
- IoT Dispatcher (PHP + MySQL) — сервер хранения и раздачи прошивок (деплой на Azure Web App).
- UWP-клиент (C#) — UI для управления устройством через Azure IoT Hub, с голосовым вводом через Speech API.
Принцип OTA

Три режима загрузки:
- По LAN (UDP) — прямо из Arduino IDE в плату.
- Через IoT Dispatcher (HTTPS) — бинарник лежит на сервере, плата качает сама.
- Через Azure IoT Hub — облако шлёт команду на загрузку, плата тянет прошивку с диспетчера.
Принцип UWP-приложения

Приложение на Windows 10 общается с MKR1000 через Azure IoT Hub (C2D / D2C сообщения). Голосовые команды распознаются локально (Project Oxford) и отправляются как команды управления.
Часть 2: Пример использования — комнатный термостат
Реальный проект, управляющий отоплением офиса.
- Температура < уставки → реле ВКЛ (обогрев).
- Температура > уставки → реле ВЫКЛ.
- UWP-приложение: текущая температура, уставка (ползунок/голос), статус реле.


Настройка окружения разработки
- Arduino IDE → Boards Manager → Arduino SAMD Boards.
- Библиотеки в
Documents/Arduino/libraries: WiFi101, AzureIoT, RTCZero. - Наши компоненты:
- Библиотека OTA →
libraries/Arduino-FlowerOTA - Пакет плат →
hardware/flower-platform/ - Плагин IDE →
tools/flower-platform-arduino-ide-plugin/
- Библиотека OTA →
- Для OTA через интернет: разверните IoT Dispatcher на PHP/MySQL (инструкция для Azure Web App есть в репозитории).
Тестирование OTA
1. OTA по LAN
Файл → Примеры → Arduino-FlowerOTA → WiFiOTA. Правьте строки // CHANGE ME (IP, WiFi, SSL, подпись сервера). Меню Flower Platform → Upload OTA....
WiFiClient client;
ota.begin(&udp, &client, "1hvtdliHzKLjMykvfW1MfPwsFthUU/YfjN8fOZJ3Qhc="); // подпись сервера
2. OTA через IoT Dispatcher (HTTPS)
WiFiSSLClient client;
ota.begin(&udp, &client, "my-iot-dispatcher-upload-key"); // ключ из конфига PHP
3. OTA через Azure IoT Hub
Пример: WiFiOTA-AzureIoTHub. Настройте connection string устройства.
4. Пример «Термостат»
Скетч в репозитории ThermostatIoT.
UWP-клиент (голосовое управление)
Проект: thermostat-uwp-ui (Visual Studio 2015, Windows 10).
Правьте параметры Azure в двух файлах:
// SendCloudToDevice.cs
private const string HOST = "ваш-хуб.azure-devices.net";
private const string DEVICE_ID = "device01";
private const string DEVICE_KEY = "ключ-устройства";
static string sharedAccessKeyName = "iothubowner";
static string sharedAccessKey = "ключ-политики";
// ReadDeviceToCloud.cs
private static string ConnectionString = "Endpoint=sb://...";
private static string eventHubEntity = "ваш-eventhub";
Это база для любого клиентского приложения — просто меняйте UI под свой проект.
Перспективы
Платформы вроде MKR1000 (SSL, производительность) открывают путь к серьезным IoT-проектам. Команда развивает Flower Platform IoT — онлайн-сервис с графическим программированием, OOP-компонентами и OTA-деплоем. Цель — обучать детей созданию IoT-устройств.
Репозитории (GitHub)
- Runtime library (C++)
- Boards package (linker script)
- Arduino IDE Plugin (Java)
- IoT Dispatcher (PHP + MySQL)
- Thermostat sample (C++)
- UWP Client (C#, HTML, JS)
Схема подключения термостата

Fritzing-диаграмма не предоставляется — используется бета-версия MKR1000, распиновка может измениться.
Производственный процесс
- Пошаговое руководство к становлению Microsoft Certified Azure Administrator
- Является ли Microsoft Azure умным карьерным путем? Доля рынка, зарплаты и инсайты по сертификациям
- Microsoft Azure анонсирует токенизацию блокчейна и сервисы управления данными
- Microsoft Azure Cheat Sheet 2020 — полное руководство по сервисам и архитектуре Azure
- Интеграция Azure с Power BI: пошаговое руководство для современных бизнесов
- Противозачаточные таблетки: история, польза, риски и производство
- Edge AI и низкопотребляющее железо питают рост голосового управления
- Автоматизированная система наполнения и мониторинга бассейна
- Microsoft анонсирует Azure Edge Zones для питания 5G IoT и ИИ нагрузок
- Emerson повышает устойчивость с платформой Zedi Cloud SCADA на Azure