perfectowebСтудия дизайна и программирования
Блог Железо

Умный дом на Raspberry Pi и Arduino

Давно хотели автоматизировать базовые функции вашего дома, сделать их легкодоступными и управляемыми удаленно? Предлагаем вашему вниманию статью, которая поможет сделать собственный умный дом на базе Raspberry Pi и Arduino. В данной статье мы расскажем, как создать блок управления, который позволит нам управлять освещением в разных комнатах, измерять температуру и влажность, управлять игровой приставкой PlayStation 4, домофоном, принимать сигналы с датчиков движения. Все это можно автоматизировать посредством Apple HomeKit.

Что необходимо иметь?

Можно выбрать любую другую версию Raspberry Pi. Наш выбор - Raspberry Pi 3 из-за наличия встроенного WiFi и Bluetooth. Вместо NodeMCU можете взять обычный Arduino Nano и отдельный модуль ESP8266 для WiFi. Далее все это спаять, перепрошить и настроить. Однако, для задач, которые мы будем выполнять, не нужны лишние затраты времени. В связи с чем, как по цене так и по трудозатратам, разумнее взять NodeMCU или что-то другое, уже готовое. Относительно силового реле – выберите необходимое вам количество. В нашем случае будут задействованы 3 устройства, в связи с чем мы будем использовать два реле с двумя отдельно-управляемыми отсеками. Ну и само собой, датчик движения вы тоже можете не использовать, если у вас нет в нем необходимости. Статья расскажет об установке, настройке всех этих компонентов, а каким именно образом использовать - решать вам.

 

Установка Raspbian Jessie

Установка Raspbian Jessie
  1. Переходим на официальный сайт Raspberry Pi, и скачиваем последнюю версию операционной системы Raspbian Jessie Lite. Вы можете использовать обычную версию с desktop-ом, если вдруг она вам будет необходима для каких-то других целей
  2. Форматируем SD карту FAT32 или FAT.
  3. Следуем инструкции по установке скачанного образа на Windows, Linux или macOS. Мы воспользовались Etcher для быстрого монтирования образа из-под Mac OS X в графическом интерфейсе.
  4. Вставляем карту памяти в Raspberry Pi, подключаем USB клавиатуру и HDMI монитор (можно обычный телевизор). Ждем загрузки и корректируем некоторые настройки по своему усмотрению
  5. Изменяем пароль по умолчанию в пункте 2 - Change User Password
  6. Экран загрузки оставляем Scratch, так как графический интерфейс нам не пригодится
  7. Изменяем имя хоста в Advanced Options > Hostname (по желанию)
  8. Включаем SSH в Advanced Options > SSH, для удобного управления с другого компьютера
  9. Все! Нажимаем Finish и ждем перезагрузки
 

Настройка Wifi на Raspberry Pi

  1. После загрузки Raspberry открываем файл интерфейсов сети, для этого пишем:
    sudo nano /etc/network/interfaces Находим iface wlan0 inet manual и меняем на iface wlan0 inet static, под ним добавляем статичный локальный адрес. В нашем случае получилось так:
    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet static

    address 192.168.1.150
    netmask 255.255.255.0
    gateway 192.168.1.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
    address, netmask, gateway - разумеется пишем под настройки вашего роутера.
    После введения изменений нажимаем CTRL+X, потом Y, потом ENTER
  2. Открываем файл супликанта, вводя в командную строку следующее:
    sudo nano /etc/wpa_supplicant/wpa_supplicant.confВ открывшемся файле пишем настройки вашего WiFi, как указано ниже. В нашем случае получилось так:
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
         update_config=1
         network={
         ssid="PerfectoWeb"
         psk="AcC3S4R@SBP1"
    }
    Естественно, вместо PerfectoWeb - ваш SSID, а вместо AcC3S4R@SBP1 - ваш пароль.
    После введения изменений нажимаем CTRL+X, потом Y, потом ENTER.
  3. Вводим в командную строку: sudo ifdown wlan0 После завершения процесса вводим: sudo ifup wlan0 Перезагружаемся командой: sudo reboot Wifi настроен и будет автоматически подключаться при старте Raspberry Pi.
 

Обновление системы

  1. До начала настройки рекомендуем обновиться и проапгрейдится. Для этого вводим в командную строку: sudo apt-get update
    sudo apt-get upgrade
  2. Если вдруг, вы используете не Raspbian Jessie, то стоит установить необходимый компилятор. Проверить версию можно по команде:
    g++-4.9 -v Если в ответе вы получили gcc version 4.9.2 (Raspbian 4.9.2-10), то все в порядке. Если же у вас старая версия или вовсе не установлен компилятор, то необходимо установить следующей командой:
    sudo apt-get install g++
 

Установка Node.js

Установка Node.js на RaspberryPi

Нам необходимо установить Node.js начиная с версии 4.0. Именно с этой версии Node.js начал поддерживать ARM платформы по умолчанию. Мы установим версию 6.х, так как на данный момент многие плагины Homebridge не адаптированы под версию 8.х. Для установки последней актуальной версии из линейки 6.х выполняем следующие команду:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
Проверяем корректность установленной версии:
nodejs -v В нашем случае установилась версия v6.11.2

 

Установка Homebridge

Установка Homebridge
  1. Изначально необходимо установить Avahi и прочие зависимости, которые необходимы для пакета MDNS из библиотеки HAP-NodeJS.
    Выполняем команду: sudo apt-get install avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev
  2. Устанавливаем Homebridge и все зависимости последовательностью следующих команд:
    sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
    cd /usr/lib/node_modules/homebridge/
    sudo npm install --unsafe-perm bignum
    cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns
    sudo node-gyp BUILDTYPE=Release rebuild
    Проверяем тестовым запуском:
    homebridge В ответ должны получить:
    [2017-08-15 10:05:15] ---
    [2017-08-15 10:05:15] config.json (/home/pi/.homebridge/config.json) not found.
    Scan this code with your HomeKit App on your iOS device to pair with Homebridge:

         ┌────────────┐
         │ 031-45-154 │
         └────────────┘

    [2017-08-15 10:05:15] Homebridge is running on port 44278
    Это означает, что все успешно установлено и работает. Вы можете заметить, что Homebridge не смог найти файл конфигурации config.json. Именно его необходимо создать на следующем шаге.
  3. Создаем файл конфигурации следующими командами:
    sudo -i
    mkdir /root/.homebridge
    touch /root/.homebridge/config.json
    Пример с минимальной конфигурацией:
    {
    "bridge": {
    "name": "RaspberryPi",
    "username": "08:61:6E:E3:2D:7A",
    "port": 51826,
    "pin": "031-45-170"
    } }
    Но мы рекомендуем скачать нашу версию, с уже прописанными плагинами, чтобы в конечном итоге у вас получилась такая-же система, как и у нас.
  4. Далее делаем homebridge демоном и добавляем его в автозагрузку. Для этого вам необходимо создать файл:
    sudo nano /etc/init.d/homebridge Скачиваем скрипт для автозагрузки и копируем его содержимое в /etc/init.d/homebridge.
    После сохранения, выполняем следующие команды
    chmod 755 /etc/init.d/homebridge
    update-rc.d homebridge defaults
    Теперь при запуске Raspberry Pi у нас homebridge будет запускаться автоматически от имени пользователя root.
 

Установка плагинов Homebridge

Homebridge, посредством плагинов от сотни разработчиков, может управлять GPIO Raspberry Pi на разном уровне, а также IR, Wifi, Bluetooth устройствами. Для нашей сборки необходимо установить следующие плагины:

  1. Устанавливаем cmdswitch2 для вкл/выкл устройств скриптом
    sudo npm install -g homebridge-cmdswitch2
  2. Устанавливаем homebridge-cmd_light_control для вкл/выкл и диммирования света
    sudo npm install -g homebridge-cmd_light_control
  3. Устанавливаем HttpTemphum для получения данных температуры и влажности через HTTP в формате JSON
    sudo npm install -g homebridge-httptemperaturehumidity
  4. Устанавливаем homebridge-hc-sr501 для считывания данных с датчика движения HC-SR501
    sudo npm install -g homebridge-hc-sr501
  5. Устанавливаем ps4-waker для вкл/выкл PlayStation 4
    sudo npm install -g ps4-waker

Данный набор плагинов достаточен для нашей сборки, их конфигурации вы можете найти и изменить в config.json, который скачали ранее.

 

Подключение устройств

Далее вам необходимо подключить все необходимые устройства в пины Raspberry Pi, как это указано на фотографии.
БУДЬТЕ ОСТОРОЖНЫ при работе с реле и высоким напряжением! Если вы чего-то не знаете точно, лучше не трогать!

Подключение реле к Raspberry Pi

После подключения, скатайте архив со скриптами, разархивируйте и загрузите в директорию /home/pi/.
Обратите внимание: все файлы должны иметь права 0777.
Для этого вы можете выполнять команду для всех файлов по отдельности следующим образом:
chmod 0777 /home/pi/light_bathroom_off.py
...
Выполните данную команду для всех файлов, которые вы скачали и загрузили в директорию /home/pi/

 

Подключение к PlayStation 4

Homebridge PlayStation 4
  1. Включаем PlayStation 4. Переходим в настройки Settings > [Remote Play Connection Settings] > [Add Device]
  2. В терминале RaspberryPi пишем
    ps4-waker
  3. Система попросит вас открыть приложение PS4 на мобильном телефоне и подключиться к ps4-waker.
  4. Далее вас попросит указать пин-код с экрана монитора, куда подключен PS4. После ввода создастся связь и в RaspberryPi будут сохранены ключи и сертификаты для дальнейшего подключения.
Обратите ванилинам: PlayStation 4 и RaspberryPi должны находиться в одной WiFi сети.
 

Настройка термометра на Arduino

  1. Подключаем NodeMCU к компьютеру и открываем официальный программатор.
    Для NodeMCU необходимо установить драйвер, в нашем случае он построен на чипе CH340G. Для этого необходимо зайти в File > Preferences, далее в поле Additional Boards Manager URLs указать ссылку для скачивания альтернативных плат http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажать OK. После, переходим в раздел Tools > Boards > Boards Manager, в строке поиска пишем esp8266, находим esp8266 by ESP8266 Community и устанавливаем.
  2. Устанавливаем модуль для управления датчиком DHT и модуль Adafruit Sensor master.
  3. Скачиваем скетч для создания HTTP сервера и вывода данных с датчика температуры и влажности DHT21.
    В скетче смените IP адрес и данные для подключения к WiFi на ваши. Заливаем скетч и идем дальше.
  4. NodeMCU подключение DHT21
    Подключаем датчик, как показано на фотографии. В нашем случае подключение идет на ножку D5, GDN и 3.3V.
    Обратите внимание Датчик работает именно на 3.3V, при подключении на 5V он может сгореть.
  5. На данный момент установка статичного IP адреса в NodeMCU работает некорректно. А это очень важно для нас. Мы пошли другим путем. Зарезервировали в роутере IP адрес 192.168.1.190 под MAC адрес нашего NodeMCU. Теперь при подключении к сети, NodeMCU всегда получает IP 192.168.1.190. Этот же адрес нужно указать в /home/pi/.homebridge/config.json на RaspberryPi для модуля HttpTemphum.
 

Запускаемся!

  1. Очищаем кеш аксессуаров и persist на Raspberry Pi следующими командами:
    sudo -i
    rm -r /root/.homebridge/accessories
    rm -r /root/.homebridge/persist
    Перезагружаемся:
    reboot
  2. Включаем Arduino к USB 5V/1A и ставим в нужное место в комнате.
  3. Открываем iPad, iPhone и заходим в приложение Home (Дом). Нажимаем добавить аксессуар и ваш планшет или смартфон должен увидеть устройство с названием RaspberryPi. Добавляем его и радуемся!

Вуаля! Теперь мы можем управлять светом на кухне, в ванной, управлять PlayStation 4, получать данные от датчика движения, узнавать температуру и влажность. Мы также можем автоматизировать некоторые действия в Apple Home. Например, чтобы все устройства автоматически выключались, когда вы уходите из дома. Или, чтобы при достижении определенной температуры, реле включало не свет, а вентилятор. Надеемся, данная статья была полезной для вас и на основе нее вы сможете автоматизировать и другие, необходимые вам устройства.

Like

Понравилась статья? Подпишись!

Умный дом на Raspberry Pi и Arduino
Понравилось? Поделись с друзьями!
Подпишись
Следи за новыми постами в сфере веб-технологий
Комментарии: 0
Прочитали: 36,130
Дата: 20 Авг 2017

Выберите язык