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

  • Brian Curtis
  • 0
  • 3996
  • 1079
Реклама

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

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

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

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

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

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

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

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

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

Мы собираемся использовать Raspian для этого проекта 11 Операционные системы Raspberry Pi, которые вы можете попробовать 11 Операционные системы Raspberry Pi, которые вы можете попробовать Каким бы ни был ваш проект Raspberry Pi, для него есть операционная система. Мы поможем вам найти лучшую ОС Raspberry Pi для ваших нужд. , и я настоятельно рекомендую начать с новой установки, если вы ранее выполняли другие хаки и тому подобное. Загрузите последний образ 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-необходимые 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 узел-v0.10.2-linux-arm-pi / * / opt / узел sudo ln -s / opt / узел / bin / узел / usr / локальный / bin / узел sudo ln -s / opt / узел / bin / npm / usr / local / bin / npm 

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

sudo nano / etc / profile 

Найдите строку, которая говорит экспортный путь и заменить его на:

NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" экспортировать PATH 

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

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

какой узел 

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

Монго

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

стандартный ввод: 13085: Предупреждение: использование swp b не рекомендуется для этой архитектуры 

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

git clone git: //github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix = / opt / mongo установить scons -c 

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

sudo useradd mongodb sudo mkdir / data / dbb sudo чоун .sh sudo chmod + x mongodb sudo update-rc.d mongodb по умолчанию mongod

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

отключение sudo -r сейчас

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

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

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

 узел heimcontrol.js 

На этом этапе вы должны иметь доступ к интерфейсу управления с помощью HTTP: // локальный: 8080 от Pi, или замените localhost на IP-адрес, если вы получаете доступ к нему с другого компьютера (и вы также можете настроить переадресацию портов Что такое переадресация портов и как это может мне помочь? [MakeUseOf Объясняет] Что такое переадресация портов и Как это может мне помочь? [MakeUseOf Объясняет] Вы немного плачете, когда кто-то говорит вам, что есть проблема с переадресацией портов, и именно поэтому ваше новое блестящее приложение не будет работать? Ваш Xbox не позволит вам играть в игры, ваши торрент-загрузки откажитесь от… доступа к нему из любой точки мира), поэтому я бы посоветовал вам осмотреться и проверить, все ли работает с базой данных, прежде чем подключать Arduino..

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

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

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

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

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

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

NPM установить Duino 

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

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

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

ошибки:

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

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

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

// Отправить код RC if (item.value) вернуть that.pins [item.pin] .triState (item.code + "FFFF"); // изменить с FF0F else вернуть that.pins [item.pin] .triState (item.code + "FFF0"); // изменить с FF00

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

Я собираюсь оставить это здесь, но показания датчиков и ИК-пультов также поддерживаются. Я, вероятно, вернусь к ним позже с некоторыми дополнительными улучшениями. Если все это было слишком сложно для вас, возможно, посмотрите на эти проекты Arduino для начинающих 15 Великих проектов Arduino для начинающих 15 Отличных проектов Arduino для начинающих Заинтересованы в проектах Arduino, но не знаете, с чего начать? Эти начинающие проекты научат вас, как начать. .




О современных технологиях, просто и доступно.
Ваш гид в мире современных технологий. Узнайте как использовать технологии и гаджеты, которые нас окружают каждый день и научитесь открывать интересные вещи в Интернете.