Рекламное объявление

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

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

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

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

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

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

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

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

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

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

Мы собираемся использовать Raspian для этого проекта 11 операционных систем, которые работают на вашем Raspberry PiКаким бы ни был ваш проект Raspberry Pi, для него есть операционная система. Мы поможем вам найти лучшую ОС Raspberry Pi для ваших нужд. Подробнее и я настоятельно рекомендую начать с новой установки, если вы ранее выполняли другие хаки и тому подобное. Скачать последнюю версию Изображение Raspianскопируйте его на SD-карту и обязательно расширьте файловую систему и включите SSH. В оставшейся части этого руководства предполагается, что вы это сделали и подключаетесь через SSH, используя пользователя по умолчанию.

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

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

подготовка

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

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

Обновление sudo apt-get Обновление sudo apt-get. sudo apt-get установить git-core git scons необходимые для сборки scon libpcre ++ - dev xulrunner-dev libboost-dev libboost-опции-программ-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. 

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

NODE_JS_HOME = "/ Opt / узел" PATH = "$ PATH: $ NODE_JS_HOME / бен" экспортный путь

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

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

какой узел. 

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

Монго

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

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

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

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

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

sudo useradd mongodb. sudo mkdir / data / dbb. Судо Чоун $ 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 по умолчанию. mongod

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

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

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

cd ~ pi. git clone git: //github.com/ni-c/heimcontrol.js.git. cd heimcontrol.js. npm установить. 

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


узел heimcontrol.js. 

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

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

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

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

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

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

Arduino-rcswitch

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

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

Npm установить Duino. 

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

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

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

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

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

rcswitch-настройка

ошибки:

После многих часов отладки кода я обнаружил, что однозначные номера выводов не работают - убедитесь, что ваш передатчик установлен на выводе 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 для начинающихЗаинтересованы в проектах Arduino, но не знаете, с чего начать? Эти начинающие проекты научат вас, как начать. Подробнее .

Джеймс имеет степень бакалавра в области искусственного интеллекта и сертифицирован CompTIA A + и Network +. Он является ведущим разработчиком MakeUseOf и проводит свое свободное время за игрой в VR-пейнтбол и настольные игры. Он строит компьютеры с детства.