WARAN: модульная система умного дома на Raspberry Pi, Arduino и nRF24L01+
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Raspberry Pi 2 Model B | 1 |
| Arduino UNO | 1 |
| DHT11 (температура и влажность, 4 пина) | 2 |
| Датчик влажности почвы (Soil Hygrometer) | 1 |
| Arduino Pro Mini 5V | 2 |
| Крона 9 В | 3 |
| Насос для воды (опционально) | 1 |
| nRF24L01+ | 3 |
| Сокет для nRF24L01+ (опционально) | 1 |
| NPN-транзистор (опционально) | 1 |
| Стабилизатор 3,3 В | 2 |
| Резистор 10 кОм | 2 |
| Конденсатор 10 мкФ | 4 |
| Конденсатор 47 мкФ | 2 |
| Монтажная плата (perfboard) | 3 |
Инструменты
- Паяльная станция
- Обкусыватель
- Кусачки
- Перемычки
Приложения и сервисы
- Microsoft Windows 10 IoT Core
- Microsoft Azure
- PubNub Publish/Subscribe API
О проекте
Автор хотел построить дешёвую модульную систему умного дома, к которой легко добавлять новые датчики и устройства. WARAN (Windows IoT, Azure, Raspberry Pi, Arduino, NRF24L01+) — модульная система с единым Хабом и множеством модулей. Модуль — это микроконтроллер с датчиками, собирающий данные в разных точках дома и передающий их Хабу по радиоканалу. Вся связь Хаб↔Модули — по RF. Есть также сопутствующее приложение для Windows Phone.
Почему Windows IoT?
Автор — разработчик ПО с опытом XAML/C# и Visual Studio (лучшая IDE). Это позволило быстро реализовать проект.
Почему nRF24L01+?
Дешёвое, малоэнергопотребляющее решение с мощными библиотеками.
Почему Windows Azure?
Простая настройка, фокус на разработке, а не на развёртывании. Опыт работы с Azure ускорил интеграцию.
Хаб (The Hub)
Центр управления WARAN. Состоит из RPi2, Arduino Uno, nRF24L01+. RPi2 на Windows IoT Core запускает Universal App — центр управления. Хаб подключён к большому дисплею (TV/монитор) для отображения данных и управления. Клавиатура и мышь — для добавления/удаления модулей.
Принцип работы
У каждого модуля уникальный адрес. Добавление модуля в центр управления — по адресу и имени. После добавления Universal App шлёт данные Arduino Uno по I2C. Arduino передаёт модулю через nRF24L01+. Модуль считывает датчики или включает/выключает устройство, шлёт ответ обратно Arduino, тот — в центр управления по I2C. Данные отображаются на экране и уходят в облако.
Arduino Uno выступает интерфейсом между RPi2 и модулями. Процесс происходит в трёх сценариях:
- По расписанию (интервалы зависят от модуля)
- При взаимодействии пользователя с центром управления (мышь/клавиатура)
- При триггере из облака (через PubNub)
Центр управления (Control Center)
Universal App на RPi2. Интерфейс пользователя, связь с модулями и облаком. Использует Azure Mobile Services и PubNub. Данные модулей хранятся локально (SQLite) и синхронизируются с Azure. Push-уведомления на мобильное приложение. Исходный код, документация, деплой: Bitbucket (документация обновляется).
Мобильное приложение
Windows Phone app (позже — другие платформы). Показывает данные датчиков из любой точки мира. Push-уведомления при авариях (утечка газа и т.д.). Управление устройствами (включение насоса) удалённо через облако — телефон не обязан быть рядом с Хабом.
Модули
Модуль — комбинация компонентов, принимающая/отправляющая данные Хабу по RF. Бесконечные варианты. Для старта реализованы два модуля:
- Plant Waterer (автополив растений)
- Temperature Monitor (мониторинг температуры)
Plant Waterer
Контролирует влажность почвы и температуру вокруг растения. При недостатке влаги — алерт в мобильное приложение. Насос можно запустить из приложения из любой точки. Можно настроить автозапуск при падении влаги ниже порога. Состав: Arduino Pro Mini, DHT11, Soil Hygrometer, nRF24L01+.
Питание: 9 В на RAW Pro Mini → встроенный стабилизатор даёт 5 В (DHT11). 9 В → стабилизатор 3,3 В → nRF24L01+. Влажность почвы — аналоговый пин A3. Температура DHT11 — цифровой пин 6. Пин 5 — управление транзистором/реле для насоса (демо — DC-насос + транзистор).
Схема перенесена на монтажную плату для компактности.
Temperature Monitor
Мониторит температуру/влажность в комнате (спальня). Позволяет вкл/выкл или регулировать устройство (термостат, кондиционер) из Хаба или мобильного приложения. Для демо — просто LED на Arduino. Состав: Arduino Pro Mini, DHT11, nRF24L01+.
Питание аналогично Plant Waterer. DHT11 на пине 5. Пин 6 — управление транзистором/реле для нагрузки (демо — LED).
Известные проблемы
- Питание — батареи сажаются за несколько часов. Нужен эффективный источник. Планируется замена Pro Mini на ATtiny там, где возможно.
- I2C Concurrency — если RPi2 шлёт 2 запроса к Arduino одновременно, один падает. Разрабатывается механизм повторных попыток.
- Односторонняя связь — Хаб инициирует запрос, модуль отвечает. Некоторые модули могут требовать отправку данных без запроса.
- Дальность — в соседней комнате работает. Для увеличения — заменить nRF24L01+ в Хабе на версию с PA+LNA и внешней антенной.
- Безопасность — нет аутентификации (предполагается личное использование). Можно добавить через Azure Identity (Microsoft/FB/Twitter/Google).
Планы на будущее
Сделать WARAN открытой платформой. Стабилизировать Хаб и мобильное приложение. Добавить модули:
- Датчик утечки газа
- Детектор проникновения
- Контроллеры устройств (кофемашина, свет и т.д.)
- Открыватель гаражных ворот
- Носимые модули
- Интернет-сервисы без железа (погода, Azure Logic Apps, котировки)
- Модули за пределами радиуса Хаба, связь через интернет (трекер авто, питомца, педометр)
Все модули, работающие как единое целое через Хаб, дадут желаемую систему умного дома. Новые модули будут выкладываться как отдельные проекты на Hackster. Все приветствуются к участию. Wiki с инструкцией по добавлению модулей будет обновляться.
Код и схемы
Исходный код: Bitbucket
Схемы (Fritzing): WARAN.Hub.fzz, PlantWaterer.fzz, TemperatureMonitor.fzz
Производственный процесс
- Как технологии умного дома трансформируют повседневную жизнь
- Создайте систему домашней автоматизации на Raspberry Pi для удаленного управления
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Надежный физический интерфейс для управления умным домом
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Умная система автополива растений на Arduino Nano
- Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
- Arduino Home Controller с Alexa: умный дом голосовым управлением
- NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10