WARAN - Домашняя автоматизация
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 4 | ||||
| × | 2 | ||||
| × | 3 |
Необходимые инструменты и машины
| ||||
| ||||
| ||||
|
Приложения и онлайн-сервисы
| ||||
| ||||
|
Об этом проекте
Я планировал построить дешевую систему домашней автоматизации. Я хочу, чтобы это была модульная система, чтобы я мог добавлять в нее датчики и устройства без особых изменений. ВАРАН ( З indows IoT, A zure, R aspberry Pi, А rduino, N RF24L01 +) - это модульная система домашней автоматизации, состоящая из одного концентратора и нескольких модулей. Модуль будет сочетать микроконтроллер и датчики, собирающие данные из разных мест дома и передающие данные в концентратор через RF. Вся связь между хабом и модулями происходит через RF. Также будет сопутствующее приложение для Windows Phone для Hub. Вот простая блок-схема, объясняющая настройку.
Почему Windows IoT?
Я разработчик программного обеспечения, в настоящее время занимающийся Интернетом вещей. Учитывая мой предыдущий опыт работы с XAML / C # и Visual Studio (который я считаю лучшей IDE на свете), мне было очень полезно реализовать их очень быстро.
Почему NRF24L01 +?
Когда я изучал варианты беспроводной связи, NRF24L01 + представлял собой дешевое решение с низким энергопотреблением. С некоторыми действительно мощными библиотеками это стало для меня лучшим решением.
Почему именно Windows Azure
Windows Azure очень проста в освоении и адаптации. При небольшой настройке, необходимой для запуска службы, мы можем больше сосредоточиться на разработке, а не на настройке и развертывании. Мой предыдущий опыт работы с Azure помог мне в быстрой интеграции.
Центр
Хаб - это центральный управляющий центр WARAN. Он состоит из RPI2, Arduino Uno и nRF24L01 +. RPI2 работает под управлением ядра Windows IoT. Он запускает универсальное приложение, которое действует как центр управления. Концентратор будет подключен к большому дисплею (обычно к телевизору или монитору), через который мы можем видеть данные от модулей, а также управлять модулями. Клавиатура и мышь, подключенные к RPI2, помогут добавлять и удалять модули из центра управления. Вот его принципиальная схема (см. Файл WARAN.Hub.fzz. В проекте)
Как это работает?
У каждого модуля будет уникальный адрес, по которому хаб будет с ним общаться. Мы добавим модуль в центр управления, используя этот адрес и давая имя модулю. После добавления центр управления (универсальное приложение) будет отправлять данные в Arduino Uno через I2C. Arduino Uno будет отправлять данные в модуль через nRF24L01 +, а модуль считывает данные с датчиков или запускает / останавливает устройство на основе полученных данных и отправляет данные обратно в Arduino Uno. Arduino Uno отправит данные в центр управления через I2C. Эти данные будут отображаться на телевизоре / мониторе, а также отправлены в облако. Arduino Uno будет просто действовать как интерфейс для RPI2 для получения данных датчиков от других модулей. Вышеупомянутый процесс будет происходить в трех сценариях
- Через определенные промежутки времени в зависимости от модуля
- Когда пользователь взаимодействует с центром управления (с помощью мыши / клавиатуры)
- Когда триггер отправляется из облака (по отношению к PubNub)
Вот типичный алгоритм
Именно так компоненты в хабе и модули взаимодействуют между собой.
Центр управления
Центр управления - это универсальное приложение, работающее в RPI2. Центр управления - это интерфейс, с которым может взаимодействовать пользователь. Он взаимодействует с модулями, а также с облаком. Центр управления WARAN использует мобильные службы Azure и PubNub в качестве облачной серверной части. Информация о каждом добавляемом модуле будет храниться локально в sqlite db, а также отправляться в мобильную службу Azure. Это, в свою очередь, отправит сообщение PubNub или push-уведомление в мобильное приложение. Я не хочу объяснять здесь кодирование и портить эту статью. Исходный код проекта, документация и подробности развертывания можно найти на https://bitbucket.org/arjunganesan/waran (я нахожусь в процессе полного обновления документации, что будет сделано в ближайшее время). Так работает центр управления
Мобильное приложение
Мобильное приложение представляет собой приложение для Windows Phone (позже будет разрабатываться для других платформ), которое будет выступать в качестве приложения-компаньона для концентратора. Мы можем видеть все данные, связанные с датчиками, на мобильном телефоне в любой точке мира. Если в случае получения какой-либо важной информации от модуля (например, оповещения об утечке газа от модуля контроля утечки газа), мы также получим push-уведомление. Также мы можем инициировать некоторые действия с модулем (например, запуск насоса в модуле полива растений) с самого мобильного телефона. Поскольку все это происходит через облако, для выполнения всех этих действий мобильное устройство не требуется где-либо рядом с хабом.
Вот как выглядит мобильное приложение
Модули
Модуль представляет собой комбинацию компонентов, работающих вместе и получающих и отправляющих данные в концентратор и из него через RF. Это может быть комбинация, такая как Arduino Pro Mini с датчиками или RPI2 с датчиками и т. Д. Все, что нужно сделать, это получить данные / команду от концентратора через RF и отреагировать соответствующим образом. Это дает бесконечные возможности модулей. Для начала добавляю 2 модуля
- Полив растений
- Монитор температуры
Поливщик растений
Устройство для полива растений будет следить за уровнем воды в растениях, а также за температурой окружающей среды вокруг растения. Если воды недостаточно, на мобильное приложение будет отправлено предупреждение. Мы можем запустить помпу из мобильного приложения откуда угодно. Мы также можем настроить его на автоматический запуск насоса, когда уровень воды опускается ниже порогового значения. Он состоит из Arduino Pro Mini, DHT11, почвенного гигрометра и nRF24L01 +. Вот принципиальная схема (см. PlantWaterer.fzz в проекте)
Питание от батареи 9 В поступает на вывод RAW Arduino Pro Mini. Встроенный стабилизатор напряжения в Arduino выдает выходное напряжение 5 В в Vcc. Мы будем использовать это для питания DHT11. Также мы подаем мощность 9 В на вход регулятора напряжения 3,3 В, который мы будем использовать для питания nRF24L01 +. Уровень воды гигрометра будет считываться на аналоговом контакте A3. Показания температуры с DHT11 будут считываться на цифровом выводе 6. На цифровом выводе 5 мы отправим сигнал на транзистор или реле, с помощью которого мы запускаем остановку насоса. В демонстрационных целях я буду использовать насос постоянного тока и транзистор в качестве переключателя. А вот как это работает
Я не хотел, чтобы схема оставалась на макетной плате, поэтому я перенес ее на монтажную плату. Я хочу, чтобы он был компактным, поэтому сделал его таким. Вы можете обратиться к принципиальной схеме и придумать свой собственный макет.
А ниже видео о том, как это работает.
Монитор температуры
Монитор температуры будет следить за температурой в комнате (например, в спальне) и получать информацию об уровне температуры и влажности. Также мы можем включить / выключить или настроить устройство (термостат, кондиционер и т. Д.) С хаба или мобильного телефона. Ради демонстрации я выключу / включу светодиод, подключенный к Arduino. Схема состоит из Arduino Pro Mini, DHT11 и nRF24L01 +. Ниже приведена принципиальная схема (см. Файл TemperatureMonitor.fzz в проекте)
Питание от батареи 9 В поступает на вывод RAW Arduino Pro Mini. Встроенный стабилизатор напряжения в Arduino выдает выходное напряжение 5 В в Vcc. Мы будем использовать это для питания DHT11. Также мы подаем мощность 9 В на вход регулятора напряжения 3,3 В, который мы будем использовать для питания nRF24L01 +. Показания температуры и влажности от DHT11 будут считываться на цифровом выводе 5. На выводе 6 мы отправим сигнал на транзистор или реле, с помощью которого мы запускаем остановку устройства (например, термостата, переменного тока и т. Д.). В демонстрационных целях я буду использовать светодиод, чтобы показать включение / выключение устройства. А вот как это работает
Вот как я положил это на перфокарт. Вы можете придумать свой собственный макет на основе принципиальной схемы.
А вот как это работает
Известные проблемы
- Питание. Батарея в обоих модулях разряжается в течение нескольких часов. Необходимо найти эффективный и портативный источник питания. Я планирую использовать процессоры attiny вместо pro mini в любых возможных модулях. По мощности было бы эффективнее. Мои предыдущие статьи об аттинии можно найти здесь.
- Параллелизм I2C - если RPI2 отправляет двухпроводной запрос к Arduino uno за раз, то один из них не работает. Я работаю над тем, чтобы этого избежать, а также пытаюсь реализовать механизм повтора.
- Односторонняя связь - прямо сейчас хаб инициирует запрос, а модуль отвечает на него. Хотя это хорошо работает во многих сценариях, некоторым новым модулям может потребоваться отправлять данные на концентратор без отправки запроса от концентратора.
- Диапазон - я сохранил модули в соседней комнате и могу нормально получать данные. Но если вы хотите увеличить диапазон, замените nRF24L01 в концентраторе на NRF24L01 + PA + LNA с внешней антенной.
- Безопасность. Поскольку он разработан на основе предположения, что он принадлежит разработчику, я не добавил никаких механизмов аутентификации. При желании вы можете использовать службу идентификации мобильной службы Azure для интеграции аутентификации Microsoft, FB, Twitter, Google в мобильное приложение и концентратор.
Планы на будущее
Я хотел бы сделать это открытой платформой, чтобы люди могли реализовать свою собственную систему домашней автоматизации. Я буду стабилизировать хаб и мобильное приложение. Я хотел бы добавить в этот проект еще много модулей. Голосовое управление и ответ также включены в дорожную карту. Прямо сейчас я работаю над модулями ниже
- Датчик утечки газа
- Детектор вторжений
- Контроллеры устройств (например, контроллер кофемашины, контроллеры освещения и т. д.).
- Устройство открывания гаражных ворот
- Некоторые носимые модули
- Интернет-службы без оборудования (погода, приложение Azure Logic, отчет о запасах и т. д.).
- Модули, которые работают за пределами зоны действия хаба и связываются с ним через Интернет (например, трекер автомобилей, трекер домашних животных, шагомер и т. д.).
Все эти модули, объединенные вместе и работающие как единое целое через Hub, дадут мне систему домашней автоматизации, которую я всегда хотел иметь. Я буду добавлять новые модули как отдельные проекты в hackster. Приглашаем всех желающих добавлять новые модули и расширяться. Будет обновлять вики-страницу о том, как добавлять новые модули в проект.
Код
Bitbucket
Схема
WARAN.Hub.fzz PlantWaterer.fzz TemperatureMonitor.fzzПроизводственный процесс
- Приложения домашней автоматизации
- МАЛИНОВАЯ АВТОМАТИЗАЦИЯ ДОМА
- Цифровые игральные кости Arduino
- Игровой контроллер Arduino
- Физический интерфейс домашней автоматизации
- Игра Pixel Chaser
- Система полива домашних растений
- Отталкивающая электромагнитная левитация Arduino
- Домашний контроллер Arduino, активированный Alexa
- NeoMatrix Arduino Pong