Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Компоненты и расходные материалы

Raspberry Pi 2 Model B × 1
HSRel5 — релейная плата 5 реле, 3 GPIO, I²C (PCF8574) × 1
HSRel8(+8) — релейная плата 8 реле, 8 GPIO, I²C (MAX7311) × 1
I2C-Port 16 HS — расширитель портов 16 GPIO, I²C (MAX7311) × 1
Блок питания DR-60-12 (12В / 54Вт, DIN-рейка) × 1
Блок питания DR-30-5 (5В / 3А, DIN-рейка) × 1
Prototyping Shield для Raspberry Pi (LED статуса, защищённый вход прерывания, клеммники) × 1
I2C-Buffer HS (уровневый преобразователь I²C на P82B96 с подтяжками) × 1
Arduino Nano R3 (мост между датчиками DHT22 и I²C) × 1
Передатчик/приёмник 433 МГц (для беспроводных реле) × 1

Программное обеспечение и сервисы

О проекте

Обновление 2: Проект развивается, добавлены Twitter-клиент, интеграция Telegram-ботов. Подробности в GitHub.

Обновление 1: Спасибо за отзывы! Проект презентован на Maker Faire Rome 2015 и Microsoft Technical Summit 2015.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Разрабатываю систему домашней автоматизации 3 года: монтаж железа и разработка ПО.

Входы (сенсоры)

Выходы (исполнительные механизмы)

Другие возможности

Концепция

При ремонте дома решил управлять всем из щитка через реле. Каждая кнопка, лампа, розетка, роллет — свой кабель к щитку. Шина типа KNX/EIB не нужна.

Примечание: Компоненты рассчитаны на 230В (Германия). Монтаж силовых кабелей делал электрик.

Аппаратная часть

Новый щиток

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Шина I²C

I²C не рассчитана на длинные линии, но можно увеличить длину:

Оптимизированная шина соединяет все платы в щитке.

Релейные платы (выходы)

Платы CCTools (Германия) с реле на I²C. Можно покупать как сборки, так и отдельные платы/PCB. Держатели для реле и ИС — удобная замена. PCA9555D дешевле и доступнее MAX7311.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

HSRel5: 5 реле + 3 GPIO на PCF8574 (8 GPIO). Первые 5 — реле, последние 3 — свободные выходы. Реле требуют 12В — нужен драйвер (ULN2803) и инвертор, так как при включении PCF8574 все порты HIGH (реле бы сработали случайно). Логика инвертированная: для включения 1-го реле шлём 00011110 (MSB).

HSRel8(+8): 8 реле + 8 GPIO на MAX7311. Инвертора не нужно. HIGH = ON. Разница в логике обрабатывается в драйвере.

PCF8574 — 8 адресов, PCF8574A — ещё 8. Итого до 16 плат HSRel5 на шине.

Расширители портов (входы)

Кнопки, датчики движения, реконтакты — на плате I2C-Port16 HS (MAX7311, подтяжки 5В/10к, керамические конденсаторы 100 нФ для фильтра дребезга). Питание 12В или 5В.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Каждое устройство — свой кабель CAT7 (экран на PE) к щитку. Несколько кнопок в одной точке — один кабель.

На щитке: вход устройства → порт расширителя + GND. Подтяжка держит HIGH, замыкание на GND даёт LOW.

Общий провод interrupt (подтянут к HIGH) соединяет все платы ввода. При изменении состояния расширитель тянет interrupt в LOW. Программа на Pi опрашивает только изменившиеся платы — нет постоянного опроса всей шины.

Raspberry Pi 2

Запускает Windows 10 IoT, в кастомном корпусе на щитке. Prototyping Shield: статусный LED, вход interrupt с подтяжкой 10к, защитным резистором 1к и конденсатором 100 нФ. Все кабели — на клеммниках.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Датчики температуры и влажности

10 датчиков DHT22 (AOSONG). Протокол без адресации — каждый датчик нужен свой МК. Использую Arduino Nano V3.0 как I²C-slave. Nano опрашивает все датчики каждые 2.5 с, кэширует значения. Pi читает по ID порта (0–10) — как чтение регистров I²C.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

В веб-приложении: два вида отображения. Иконка влажности: зелёный (<60%), жёлтый (<70%), красный (>70%) — риск плесени.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Схема щитка

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

433 МГц пультовые реле

Передатчик 433 МГц (FS1000A) спрятан в корпусе с датчиками DHT22 в центральной комнате. Тот же Nano шлёт коды. Питание передатчика 12В для дальности (на 3.3В — близко).

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Проблема: пультовые реле не сообщают состояние. Пользователь может переключить оригинальным пультом — рассинхрон. Решение: ПО принудительно синхронизирует состояние каждые 5 с.

Коды пультов настраиваются вручную через схему на макетке (см. Fritzing и скетч в CK.HomeAutomation.SensorsBridge\RemoteCodeFinder).

Цифровой туалет для кота

Лоток в кладовке без окна. Вентилятор на реле в неиспользуемой дымоходе. Датчик движения в кладовке включает вентилятор на несколько минут.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

В веб-приложении своя иконка лотка с ручным управлением вентилятором.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Анализ логов (Azure SQL или CSV) позволяет отслеживать частоту использования и оптимизировать уборку.

Программное обеспечение

Раньше работало на GHI G120 (.NET Micro Framework 4.3) — мало производительности. Перенёс на Windows 10 IoT Background Task, добавил Azure.

Репозиторий: CK.HomeAutomation — Visual Studio 2015 Solution, все проекты. Готово к расширению кастомными драйверами.

Структура проектов

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

CK.HomeAutomation.TraceViewer

Консольное приложение для просмотра UDP-тресов от контроллера (порт 19227). Классы уведомлений в CK.HomeAutomation.Notifications.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

CK.HomeAutomation.Networking

HTTP-сервер для веб-приложения: JSON-статус, команды управления. Хостит веб-приложение (файлы вручную через SMB: \\[IP]\c$\Users\DefaultAccount\AppData\Local\Packages\CK.HomeAutomation.Controller-uwp_p2wxv0ry6mv8g\LocalState\app).

CK.HomeAutomation.Controller.*

Каждый проект в Controllers — IoT Background Task. Примеры конфигурации (используются у меня). Есть пустой шаблон CK.HomeAutomation.Controller.Empty.

Необходимые навыки: настройка Pi2 с Windows 10 IoT, PowerShell Remote, деплой UWP. Скрипт SetupRaspberryPi.ps1 автоматизирует настройку (поправьте IP!).

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

CK.HomeAutomation.Actuators

Высокоуровневая абстракция: дом, комнаты, актуаторы (кнопки, лампы, розетки...). Fluent API для конфигурации комнат.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Актуаторы

MotionDetector: события MotionDetected и DetectionCompleted. В веб-UI — красная точка при движении, можно деактивировать программно.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Button: PressedShort (<1.5 с) и PressedLong (>1.5 с). Позволяет многозадачные кнопки. Есть VirtualButton — нажатие только из веб-UI.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Socket, Lamp, BinaryStateOutput: базовый класс для ON/OFF. Методы обновления и переключения. Кнопки взаимодействуют через IBinaryStateOutputActuator. Кастомные иконки через Configuration.js.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

CombinedBinaryStateActuators: логическое объединение физических выходов. Один «мастер» определяет состояние при toggle. Внутреннее отслеживание изменений убирает задержки последовательного обновления по I²C.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

StateMachine: сложные состояния (вент: выкл/1/2/3). Методы: выкл, следующее состояние. Циклично. Можно создавать «настроения» (moods) для группы актуаторов.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Метод WithTurnOffIfStateIsAppliedTwice: повторное нажатие выключает, если настроение активно.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

TemperatureSensor / HumiditySensor: значения с I²C-моста каждые 10 с. Разделены на два актуатора.

Автоматизация ≠ Управление

Суть — автоматизация. Реализованные правила:

AutomaticTurnOnAndOffAutomation: включение на заданное время по триггеру (кнопка/движение). Опционально временной диапазон (день/ночь — нужен WeatherStation).

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

AutomaticRollerShutterAutomation: роллеты по восходу/закату (нужен WeatherStation), с коррекцией. «Не открывать раньше» заданного времени. Закрытие при перегреве улицы (для мансардных окон). Позиция отслеживается по времени.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

AutomaticConditionalOnAutomation: включение пока выполняются условия. Садовые лампы только ночью. Диапазоны ON/OFF, можно использовать восход/закат.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Общая автоматизация и сложные условия: фреймворк кастомных действий при выполнении условий. Проверка при каждом триггере (кнопка, движение, интервал...).

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

WeatherStation: погода, восход/закат, температура, влажность — каждые 60 с через OpenWeatherMap API. Интерфейс IWeatherStation позволяет подменить на физическую станцию.

CK.HomeAutomation.Hardware

Драйверы плат CCTools, 433 МГц, код Arduino Nano (мост датчиков + 433 МГц передатчик). Абстракция через интерфейсы — легко добавлять новые платы.

CK.HomeAutomation.Telemetry

Два компонента:

  1. CSV-логгер в LocalState\BinaryStateOutputActuatorChanges.csv (доступ через SMB).
  2. AzureEventHubPublisher — события в Azure Event Hub. SQL-скрипты и Stream Analytics в папке #Azure. Каждое изменение = 2 записи: START (новое состояние) и END (длительность в секундах).
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

WebApp

Проект CK.HomeAutomation.App на AngularJS, jQuery, Bootstrap. Конфигурация комнат считывается с контроллера, UI генерируется динамически. Файл Configuration.js — настройка и перевод, там же IP контроллера. Можно открыть локально index.html или хостить на веб-сервере (для добавления на домашний экран iOS нужен HTTPS). Я использую BananaPi + nginx.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам
Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Терминал

В гостиной на стене старое iPad 3 с веб-приложением.

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Планы

Заинтересованы в участии (железо, софт, доки) — пишите!

Код

Полный репозиторий: CK.HomeAutomation (SDK, WebApp, личная конфигурация).

Схемы

Схема для чтения кодов 433 МГц пульта:

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Плата датчика DHT22 (в каждой комнате):

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Shield для Pi: статусный LED, клеммники I²C и interrupt:

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Корпус с DHT22 и 433 МГц передатчиком (один на дом):

Домашняя автоматизация на Raspberry Pi 2 с Windows 10 IoT Core: Полное руководство по компонентам

Производственный процесс

  1. Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
  2. Удалённый мониторинг погоды на Raspberry Pi 3 с PubNub
  3. Интеграция TI SensorTag с Blynk через Node‑RED на Raspberry Pi Zero
  4. Управление светодиодом с PIR-датчиком движения на Raspberry Pi
  5. Мониторинг домашней температуры с панелью управления на Raspberry Pi
  6. Считывание пульса сердечного ритма на Windows 10 IoT Core на Raspberry Pi — пошаговое руководство
  7. Создайте систему домашней автоматизации на Raspberry Pi для удаленного управления
  8. Передача данных Adafruit 10DOF IMU с Raspberry Pi 2 в Azure Event Hubs на Windows 10 IoT Core
  9. Точный мониторинг температуры и влажности с SHT15 на Windows 10 IoT Core
  10. Установка Windows 10 IoT Core на Raspberry Pi 3 Model B+: Пошаговое руководство