MKR1000 + DHT22: мониторинг температуры и влажности в Azure в реальном времени
Компоненты и материалы
| Arduino MKR1000 | ×1 |
| Датчик температуры и влажности DHT22 | ×1 |
Приложения и сервисы
- Microsoft Azure (Event Hubs / IoT Hub)
- Arduino IDE
- Microsoft Visual Studio 2015+ (Community Edition)
О проекте
Пол ДеКарло описал отправку погодных данных с Particle Photon в Azure через вебхук. MKR1000 поддерживает HTTPS напрямую — данные можно слать в Azure без посредников. Руководство основано на проекте Microsoft Connect the Dots.
Железо
DHT22 измеряет температуру и влажность. Подключение на макетке:
- Pin 1 DHT22 → 3.3V (MKR1000)
- Pin 2 DHT22 → 10 кОм pull-up к 3.3V, и провод к пину 6 MKR1000
- Pin 3 DHT22 → не используется
- Pin 4 DHT22 → GND
Подробнее: Adafruit DHT Tutorial.
Arduino IDE
- Boards Manager → установить Arduino SAMD Boards (включает MKR1000)
- Library Manager → установить WiFi101, DHT sensor library, ArduinoJson, RTCZero
HTTPS и сертификаты
MKR1000 поддерживает HTTPS, но сертификаты нужно загрузить вручную (память ограничена). Два шага:
- Загрузить в Arduino скетч WiFi101 Firmware Updater (из примеров WiFi101).
- Скачать WiFi101 Firmware Updater Tool (winc1500-uploader-gui.exe), запустить, ввести
ctd-ns.servicebus.windows.net(хост Azure Event Hubs), выбрать COM-порт, нажать «Upload Certificates».
Скетч Arduino
Скачайте с GitHub. В файле ssid укажите свои ssid[] и password[]. Загрузите в MKR1000.
Откройте Serial Monitor — должны появиться сообщения об отправке в Azure. Данные попадают в публичный Event Hub проекта Connect the Dots. Откройте в браузере: connectthedotsdx.azurewebsites.net — увидите данные (смешанные с другими устройствами). Можно поменять displayname или guid в функции createJSON.
Создание собственного Event Hub
Для изолированных данных нужен свой Event Hub. Требуются Visual Studio и Azure-подписка (есть бесплатный пробный период).
- Клонируйте репозиторий:
git clone https://github.com/Azure/connectthedots.git - Откройте в Visual Studio решение
AzurePrep(connectthedots\Azure\AzurePrep), запустите в Release Mode. - Авторизуйтесь в Azure, ответьте на вопросы в консоли. Имя ресурсов: рекомендуют
ctd+ инициалы (например,ctddc). - Запустите таргет
CreateWebConfigв проекте AzurePrep — создастсяweb.configна рабочем столе. - Скопируйте
web.configв проект сайта (connectthedots\Azure\WebSite\ConnectTheDotsWebSite), добавьте в решение (Add → Existing Item). - Откройте решение
ConnectTheDotsWebsite, запустите в Edge — сайт заработает (данные появятся после настройки девайса).
SAS-ключ для Arduino:
- Скачайте Event Hubs Signature Generator (RedDog.ServiceBus.EventHubs.SignatureGenerator).
- В Azure Portal (старый портал) найдите свой Event Hub namespace → Event Hubs → ehdevices → Configure → скопируйте Primary Key для политики D1.
- В Signature Generator: Namespace =
ваш_namespace(например,ctddc-ns), Hub =ehdevices, Publisher =D1, Sender Key Name =D1, TTL = 525600 минут (1 год). Вставьте ключ, нажмите Generate. - Скопируйте сгенерированную подпись (SAS-токен).
В скетче Arduino замените:
char hostname[] = "ваш_namespace.servicebus.windows.net";
char authSAS[] = "сгенерированный_SAS_токен";
Сохраните, загрузите в MKR1000. Проверьте Serial Monitor и сайт Connect the Dots.
IoT Hub (альтернатива)
Azure IoT Hub новее, поддерживает device-to-cloud и cloud-to-device.
- Создайте IoT Hub на портале Azure.
- Скачайте Device Explorer (SetupDeviceExplorer.msi).
- В портале: IoT Hub → ключи → iothubowner → connection string (primary key).
- В Device Explorer: вставьте connection string → Update → Management tab → Create device ID
D1→ SAS Token → Generate. - В скетче Arduino:
char hostname[] = "ваш_iot_hub.azure-devices.net";
char authSAS[] = "SAS_токен_после_SharedAccessSignature=";
String deviceName = "D1";
String uri = "/devices/" + deviceName + "/messages/events?api-version=2016-02-03";
В функции sendEvent измените проверку ответа: Event Hub возвращает HTTP 201, IoT Hub — HTTP 204:
if (response.startsWith("HTTP/1.1 204")) { ... }
Загрузите скетч. В Device Explorer вкладка Data → Monitor — увидите входящие данные.
Для приема команд из облака лучше использовать официальные Azure IoT SDK (хотя они не очень Arduino-friendly). См. блог Мохана Паланисами про отправку из IoT Hub в MKR1000.
Важно: После экспериментов удалите ненужные Azure-ресурсы (проект AzurePrep имеет ClearResources), чтобы не платить лишнее.
Полезные ссылки
- Device Explorer (IoT Hub)
- Connect the Dots (Azure sample code)
- MKR1000-Azure (Arduino Source Code)
- WiFi101 Firmware Updater
- Event Hubs Signature Generator
Производственный процесс
- Arduino-датчики: типы, применения и реальные проекты
- Датчики влажности: принцип работы и ключевые применения
- Датчик DHT11: принцип работы и ключевые применения
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Проверка и калибровка датчика влажности для точных измерений
- Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
- Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
- Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
- Сенсорная башня на Arduino Cloud: Мониторинг температуры, движения и газа
- Вывод данных BME280 (температура, влажность, давление) на сенсорный экран Nextion