Управление светодиодами через Alexa и Arduino Yun — руководство по умному дому
Компоненты и материалы
- Arduino Yun — 1 шт.
- Amazon Echo (Alexa) — 1 шт.
- Светодиод (любой) — 1 шт.
- Micro SD-карта — 1 шт.
Приложения и онлайн-сервисы
- AWS IoT Core
- AWS Lambda
- Alexa Skills Kit (Smart Home Skill v3)
О проекте
Мотивация
После создания умного зеркала с интегрированным Alexa автор искал способы подключения различных устройств домашней автоматизации. Появление Alexa Smart Home API v3 позволило управлять пользовательскими устройствами напрямую, что и стало отправной точкой для этого проекта. В качестве аппаратной базы выбрана Arduino Yun — плата, объединяющая микроконтроллер ATmega32u4 и Linux-систему (OpenWrt) на одном кристалле.
Обзор проекта
Цель — подключить Arduino Yun к навыку Alexa Smart Home v3. Архитектура включает:
- Навык Alexa Smart Home (v3).
- AWS Lambda-функцию для обработки директив.
- AWS IoT Thing (теневое устройство) для хранения состояния.
- Arduino Yun, подписанное на изменения тени устройства.
На диаграмме показан поток данных при включении света: голосовая команда → Alexa → Lambda → IoT Thing Shadow → Arduino Yun → светодиод.
Пошаговая реализация
Шаг 1: Создание Smart Home Skill и Lambda-функции
Следуйте официальному руководству Amazon. Настройте Link Account (LWA) для получения Client ID и Client Secret. После создания навыка и Lambda-функции проверьте обнаружение устройства в консоли Alexa — должно появиться виртуальное устройство, отвечающее на обнаружение.
Шаг 2: Создание IoT Thing
В консоли AWS IoT создайте «Thing». Используйте «Thing Shadow» — JSON-документ, хранящий текущее и желаемое состояние. Arduino будет подписан на топик дельты (изменений) тени. Скачайте сертификаты: публичный ключ, приватный ключ, сертификат устройства и корневой CA. Активируйте сертификат. В разделе Shadow добавьте начальное состояние:
{ "reported": { "light": "on" } }
Шаг 3: Связывание Lambda с IoT Thing
Обновите код Lambda-функции так, чтобы она обновляла тень устройства при получении директив TurnOn/TurnOff. Убедитесь, что у роли IAM Lambda есть права AWSIoTFullAccess. Протестируйте с тестовыми событиями (JSON-директивы) — в тени должно появляться желаемое состояние.
Шаг 4: Настройка Arduino Yun
Настройте Yun через веб-интерфейс (подключите по Ethernet для первичной настройки, затем WiFi). Отформатируйте SD-карту в FAT32. Проверьте SSH-доступ и работу примера Blink в Arduino IDE.
Шаг 5: Подключение Yun к AWS IoT
Установите AWS IoT Arduino Yun SDK (скрипт AWSIoTArduinoYunInstallAll.sh). В Arduino IDE откроется пример ShadowThing. Отредактируйте aws_iot_config.h — укажите эндпоинт, пути к сертификатам. Загрузите скетч и проверьте Serial Monitor: должно появиться сообщение об успешном подключении. Изменение тени в консоли AWS должно вызывать уведомление на Arduino.
Шаг 6: Обработка изменений тени на Arduino
Используйте предоставленный скетч (основан на примере ShadowThing). Он отслеживает ключ light в дельте тени и устанавливает пины массива ledArray в HIGH/LOW. В массиве уже есть встроенный пин 13, поэтому без дополнительных светодиодов вы увидите мигание onboard-LED. Для подключения внешних светодиодов добавьте их пины в массив.
Шаг 7: Проверка голосовым управлением
Скажите: «Алекса, включи [имя устройства]» / «Алекса, выключи [имя устройства]». Если не работает, отладку удобнее вести через тестовые события в консоли Lambda.
Заключение
Проект демонстрирует полный цикл: от голоса до железа через облако. Теперь можно расширять систему: добавлять реле, датчики, создавать сцены.
Код
Полный код Lambda (Python) и скетч для Arduino доступны в Gist: GitHub Gist. Файлы .ino и .h — для Arduino, lambda_function.py — для AWS Lambda.
Производственный процесс
- Управление Chromecast через Amazon Alexa с помощью Raspberry Pi и Python
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Alexa-управляемый ARDrone 2.0: Голосовой дрон с Raspberry Pi и Hologram Nova
- Настольная RGB-лампа с управлением жестами – Интерактивное беспроводное освещение
- Превратите MIDI-клавиатуру в интерактивного репетитора по фортепиано с Arduino, LED-лентой и MuseScore
- Управление светодиодами через Alexa с помощью Raspberry Pi – простое пошаговое руководство
- Превращаем старую радиоуправляемую машину в джойстик-контролируемый болид на Arduino
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- Управление манипулятором по Ethernet: Arduino 101 + WIZ750SR + Android-приложение