DiyУмный дом

Руководство по домашней автоматизации с Raspberry Pi и Arduino

Руководство по домашней автоматизации с Raspberry Pi и Arduino

Мы уже говорили об относительных достоинствах Arduino и Raspberry Pi — у каждого из них есть свои сильные стороны. Они не должны быть ни тем, ни другим — комбинируйте их, чтобы получить лучшее из обоих миров. Домашняя автоматизация — идеальный кандидат для этого. Рынок домашней автоматизации наводнен дорогими потребительскими системами, несовместимыми друг с другом и дорогостоящими в установке. Если у вас есть Raspberry Pi и Arduino, вы можете в основном добиться того же за доли цены, если вы готовы потратить время и усилия.

Обновление: с тех пор, как была написана эта статья, я обнаружил OpenHAB, бесплатную платформу домашней автоматизации с открытым исходным кодом, которая работает на Raspberry Pi и может быть интегрирована с огромным набором готовых комплектов умного дома, а также с Arduino. Посмотрите видео ниже, чтобы узнать о пике возможностей, а затем перейдите к разделу Начало работы с OpenHAB для Raspberry Pi руководства, чтобы узнать больше.

Heimcontrol.js — это приложение Node.js, созданное для работы на Raspberry Pi. В сочетании с Arduino и некоторыми стандартными розетками для дистанционного управления это упрощает управление устройствами переменного тока. Вы можете добавить температурные датчики и даже управлять своим телевизором — но сегодня мы будем придерживаться основных принципов и расширим проект в следующем уроке.

Вот разбивка проекта:

  • Raspberry Pi будет действовать как мозг и шлюз операций — он будет запускать приложение Node, привязанное к базе данных Mongo, и предоставлять интерфейсный интерфейс для любого веб-браузера.
  • Arduino, работающий от Pi, будет взаимодействовать между электроникой — переключателями питания радиоуправления.

Для этого вам понадобится:

  • Ардуино и малиновый пи
  • Некоторые розетки и контроллер с дистанционным управлением (я использовал их )
  • USB-концентратор с питанием

RC-сокеты

Прежде чем мы начнем, вот демонстрационное видео от самого создателя проекта.

Начать заново

Мы собираемся использовать Raspian для этого проекта. , и я настоятельно рекомендую начать с новой установки, если вы ранее выполняли другие хаки и тому подобное. Загрузите последний образ Raspian , скопируйте его на SD-карту и обязательно расширьте файловую систему и включите SSH. В оставшейся части этого руководства предполагается, что вы это сделали и подключаетесь через SSH, используя пользователя по умолчанию.

Если вы еще этого не сделали, в этом видео объясняется процесс подготовки вашей SD-карты в OS X:

И этот для пользователей Windows:

подготовка

Процесс установки довольно трудоемкий, и вытекает из инструкций здесь . К сожалению, они были устаревшими или не предназначены для Raspian, поэтому я значительно скорректировал их ниже. Приведенные ниже коды в основном можно вставлять в блоки — вам не нужно вставлять один за другим. Поскольку мы собираем несколько вещей на самом Pi, имейте в виду, что весь этот процесс займет много времени. Я бы сказал, иди, сделай себе чашку чая — но когда я говорю «долго», я имею в виду лучшую часть дня — так что 178 чашек будет более подходящим.

Все команды должны быть введены в Терминал, и вам может понадобиться нажать Enter в некоторых точках. Эти первые несколько команд обновят систему и установят предварительные требования:

sudo apt-get update sudo apt-get upgrade sudo apt-get install git-core git scons build-essential scons libpcre++-dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev 

Далее нам нужно установить Node:

 sudo mkdir /opt/node wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz tar xvzf node-v0.10.2-linux-arm-pi.tar.gz sudo cp -r node-v0.10.2-linux-arm-pi/* /opt/node sudo ln -s /opt/node/bin/node /usr/local/bin/node sudo ln -s /opt/node/bin/npm /usr/local/bin/npm 

Добавьте переменную PATH в свой профиль, чтобы ОС знала, где находится Node. Используйте текстовый редактор nano следующим образом:

 sudo nano /etc/profile 

Найдите строку с надписью export PATH и замените ее на:

 NODE_JS_HOME="/opt/node" PATH="$PATH:$NODE_JS_HOME/bin" export PATH 

Нажмите Ctrl-X, чтобы выйти, и Y, чтобы сохранить.

Возможно, вам придется выйти и снова войти, чтобы изменения пути вступили в силу, но вы можете проверить с помощью команды:

 which node 

Если вы не получили никакого вывода, указывающего на двоичный файл Node, что-то пошло не так.

Монго

Следующая работа — установить Mongo . Mongo — это база данных No-SQL на основе документов, которая все чаще используется веб-приложениями. К сожалению, это займет целую вечность, так как мы должны скомпилировать ее. При выполнении следующих команд вы получите много ошибок, таких как:

 {standard input}:13085: Warning: swp{b} use is deprecated for this architecture 

Не беспокойся об этом. Итак, запустите эти команды для установки Mongo:

 git clone git://github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix=/opt/mongo install scons -c 

Когда все будет готово, нам нужно немного больше настроить, чтобы исправить проблемы с разрешениями и убедиться, что он запускается при запуске.

 sudo useradd mongodb sudo mkdir /data/dbb sudo chown $USER /data/db cd /etc/init.d sudo wget -O mongodb https://gist.github.com/ni-c/fd4df404bda6e87fb718/raw/36d45897cd943fbd6d071c096eb4b71b37d0fcbb/mongodb.sh sudo chmod +x mongodb sudo update-rc.d mongodb defaults mongod 

Эта последняя команда запустит сервер Mongo, и вам нужно будет открыть новый терминал, чтобы продолжить работу с другими командами. Я не совсем уверен в этом шаге, поэтому, если кто-то сможет исправить это в комментариях о том, как автоматически запускать mongod при запуске, это было бы очень полезно. Пока это работает, но не элегантно.

 sudo shutdown -r now 

Наконец, пришло время установить приложение Heimcontrol.js Node.

 cd ~pi git clone git://github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm install 

Вы можете запустить приложение, набрав

 node heimcontrol.js 

На этом этапе вы должны иметь доступ к интерфейсу управления с помощью http: // localhost: 8080 от Pi или заменить localhost на IP-адрес, если вы обращаетесь к нему с другого компьютера (и вы также можете настроить порт Переадресация чтобы получить к нему доступ из любой точки мира), поэтому я бы посоветовал вам поискать и проверить все работа с базой данных перед подключением Arduino.

аппаратные средства

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

Я использовал несколько недорогих наборов стоимостью 20 фунтов стерлингов от Maplin, которые поставляются с 3 разъемами, и открыл пульт дистанционного управления, чтобы я мог напрямую взаимодействовать с микросхемой 433 МГц внутри. Я нашел инструкции для этого здесь .

RC-контроллер-обходной

Вы также можете приобрести отдельные передатчики 433 МГц, готовые к использованию на eBay или у поставщиков электроники для хобби. Все, что вам нужно, это подключить VCC к 5 В на Arduino, GND и один управляющий контакт — помните, какой из них вы использовали. (Схема Вилли Тиля)

Arduino-rcswitch

Плагин работает, отправляя «трехсторонние коды», но они будут различаться в зависимости от производителя. Обратитесь к документации RCSwitch, чтобы найти ваши точные коды. Это руководство вики может также помочь.

Связь с Arduino осуществляется с помощью библиотеки Node под названием duino . Остановите приложение Heimcontrol, если оно запущено, и установите мост Arduino с помощью следующей команды.

 npm install duino 

Arduino должен загрузить этот код — я предлагаю вам скопировать и вставить его, чтобы установить его с другого компьютера. По сути, это программа-слушатель, которая реагирует на последовательные команды от Pi, но ничто не помешает вам расширить ее своими собственными функциями.

Радиоуправляемые настройки

Запустив веб-приложение, перейдите в меню « Настройки» > « Arduino» .

heimcontrol-меню-настройка

Оттуда вы можете добавить новый элемент, выбрав метод RCSwitch, контакт вашего передатчика и адресный код Tristate. Не забудьте сохранить, а затем вернитесь к экрану основного экрана для новой кнопки.

rcswitch-настройка

ошибки:

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

Я также обнаружил, что плагин Arduino был жестко запрограммирован с неверными конечными битами для кодов с тремя состояниями, которые нужны моим приемникам. Сначала небольшое объяснение: трехсторонние коды состоят из 3 байтов информации. Первый определяет нам номер сети (1-4), а второй предоставляет адрес приемопередатчика (опять же 1-4, создавая максимум 16 адресуемых сокетов). Последний байт состоит из двух битов заполнения, плюс 2 бита для включения / выключения. К сожалению, последний байт жестко запрограммирован в плагине Arduino — и в моем случае код включения / выключения был неверным.

Мне пришлось вручную редактировать плагины / arduino / index.js, чтобы использовать правильные коды. Если вы используете те же разъемы для пульта дистанционного управления, что и у меня, измените строки 80 и далее на:

 // Send RC code if (item.value) { return that.pins[item.pin].triState(item.code + "FFFF");//change from FF0F } else { return that.pins[item.pin].triState(item.code + "FFF0");//change from FF00 } 

Вот демонстрационное видео о том, как все работает:

Я собираюсь оставить это здесь, но показания датчиков и ИК-пультов также поддерживаются . Я, вероятно, вернусь к ним позже с некоторыми дополнительными улучшениями. Если все это было слишком сложно для вас, возможно, ознакомьтесь с этими дружественными проектами Arduino

Похожие посты
Умный дом

Что такое «Эхо Амазонки Авто»?

Умный дом

Что такое умный туалет и стоит ли его покупать?

Как сделатьУмный дом

Как добавить Alexa в ваше умное зеркало

Tech новостиКак сделатьУмный дом

Как контролировать свои потолочные вентиляторы в SmartHome