реклама

Преди сме говорили за относителните предимства на Arduino и Raspberry Pi - всеки от тях има своите силни страни. Те обаче не трябва да бъдат нито един, нито избор - комбинирайте ги, за да получите най-доброто от двата свята. Домашната автоматизация е идеалният кандидат за това. Пазарът на домашна автоматизация е залят от скъпи потребителски системи, несъвместими помежду си и скъпи за инсталиране. Ако имате Raspberry Pi Raspberry Pi: Неофициалният урокНезависимо дали сте настоящ собственик на Pi, който иска да научи повече, или потенциален собственик на това устройство с размер на кредитна карта, това не е ръководство, което искате да пропуснете. Прочетете още и Arduino, можете по принцип да постигнете едно и също нещо с част от цената, ако приемете, че сте готови да вложите време и усилия.

Актуализация: Тъй като тази статия е написана, открих OpenHAB, безплатна и отворена платформа за домашна автоматизация който работи на Raspberry Pi и може да бъде интегриран с огромен набор от интелигентни домашни комплекти Arduino. Вижте видеото по-долу за върха на промъкване, след което се насочете към нашия

instagram viewer
Първи стъпки с OpenHAB на Raspberry Pi Първи стъпки с OpenHAB Home Automation на Raspberry PiOpenHAB е зряла платформа за домашна автоматизация с отворен код, която работи на различен хардуер и е протокол агностик, което означава, че може да се свърже с почти всеки хардуер за домашна автоматизация на пазара днес. Прочетете още ръководство, за да научите повече.

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

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

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

За да направите това, ще ви трябва:

  • Arduino и Raspberry Pi
  • Някои дистанционно управлявани гнезда и контролер (използвах тези)
  • Захранван USB хъб
RC-гнезда

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

Започнете отново

Ще използваме Raspian за този проект 11 Операционни системи, които работят на вашия Raspberry PiКакъвто и да е вашият проект Raspberry Pi, за него има операционна система. Ние ви помагаме да намерите най-добрите Raspberry Pi OS за вашите нужди. Прочетете още и горещо препоръчвам да започнете от нова инсталация, ако преди това сте изпълнявали други хакове и подобни. Изтеглете най-новото Raspian изображение, копирайте го на SD картата си и не забравяйте да разширите файловата система и да активирате SSH. Останалата част от това ръководство ще предположи, че сте го направили и се свързвате през SSH с помощта на потребител по подразбиране.

Ако не сте правили това преди, това видео обяснява процеса на подготовка на вашата SD карта в OS X:

И това за потребителите на Windows:

подготовка

Процесът на инсталиране е доста трудоемък и произтича от инструкции тук. За съжаление, те са остарели или не са предназначени за Raspian, така че по-долу ги коригирах. Кодовете по-долу могат да се поставят най-вече на блокове - не е необходимо да ги поставяте един по един. Тъй като съставяме няколко неща на самия Pi, бъдете предупредени, че целият този процес ще отнеме много време. Бих казал, че отидете да си направите чаша чай - но когато казвам „дълго време“, имам предвид най-добрата част на ден - така че 178 чаши биха били по-подходящи.

Всички команди трябва да бъдат въведени в терминала и може да се наложи да натиснете Enter в някои точки. Тези първи няколко команди ще актуализират системата и ще инсталират предварителни изисквания:

sudo apt-получи актуализация sudo apt-get upgrade. sudo apt-get install git-core git scons build-basic scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev. 

След това трябва да инсталираме Node:

sudo mkdir / opt / възел. 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. Използвайте нано текстовия редактор, както следва:

sudo nano / etc / профил. 

Намерете реда, който казва износ ПЪТ и го заменете с:

NODE_JS_HOME = "/ изберат / възел" 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 mongopi. scons. sudo scons --prefix = / opt / mongo install scons -c. 

Когато това приключи, първо трябва да направим още малко настройка, за да отстраним проблемите с разрешенията и да се уверим, че се стартира при стартиране.

sudo useradd mongodb. sudo mkdir / data / dbb. sudo chown $ USER / данни / 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 сървъра и ще трябва да отворите нов терминал, за да продължите с останалите команди. Не съм напълно уверен в тази стъпка, така че ако някой може да коригира това в коментарите как да стартира автоматично монгод при стартиране, ще бъде много благодарен. Засега работи, просто не елегантно.

судо изключване -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 MHz чипа вътре. Намерих инструкциите за това тук.

RC-контролер-хак

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

Ардуино-rcswitch

Приставката работи, като изпраща „тристатни кодове“, но те ще варират в зависимост от производителя. Обърнете се към RCSwitch документация за да намерите точните си кодове. Това уики водач може да помогне също.

Комуникацията с Arduino се осъществява с помощта на Node библиотека, наречена Duino. Спрете приложението Heimcontrol, ако то работи и инсталирайте моста Arduino, като използвате следната команда.

npm инсталирайте duino. 

Ардуино трябва да има този код е качен - Предлагам ви да копирате и поставите, за да инсталирате това от друг компютър. По същество това е програма за слушатели, която отговаря на серийни команди от Pi, но няма нищо, което да ви спре да го разширите със собствените си функции.

RC-настройки

Когато стартира уеб приложението, отидете на Настройки меню> Arduino.

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

Оттам можете да добавите нов елемент, като изберете метода RCSwitch, щифта на вашия предавател и tristate адресния код. Не забравяйте да запазите, след това се върнете към основния екран за новия си бутон.

rcswitch-настройка

Бъгс:

След много часове на отстраняване на грешки в кода, открих, че едноцифрените номера на пинове не работят - уверете се, че предавателят ви е поставен на щифт 10 за по-сигурно.

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

Трябваше ръчно да редактирам приставки / Ардуино / index.js за да използвате правилните кодове. Ако използвате същите гнезда за дистанционно управление като мен, променете редовете от 80 на:

// Изпращане на RC код. ако (item.value) {върнете that.pins [item.pin] .triState (item.code + "FFFF"); // промяна от FF0F. } else {върнете that.pins [item.pin] .triState (item.code + "FFF0"); // промяна от FF00. }

Ето демонстративно видео за всичко работещо:

В този момент ще го оставя тук, но показанията на сензорите и IR дистанционните са също се поддържа. Вероятно ще ги прегледам на по-късна дата с още някои подобрения. Ако всичко това е било твърде сложно за вас, може би вижте тези начинаещи проекти на Arduino 15 страхотни Arduino проекта за начинаещиИнтересувате се от проектите на Arduino, но не сте сигурни откъде да започнете? Тези проекти за начинаещи ще ви научат как да започнете. Прочетете още .

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