Ghid de automatizare acasă cu Raspberry Pi și Arduino

Ghid de automatizare acasă cu Raspberry Pi și Arduino / Smart Home

Am vorbit despre meritele relative ale Arduino și Raspberry Pi înainte - fiecare are punctele forte. Ei nu trebuie să fie nici unul sau alegerea deși - combinați-le pentru a obține cele mai bune din ambele lumi. Tehnologia automată este perfectă pentru acest lucru. Piața de automatizare a locuințelor este inundată de sisteme scumpe de consum, incompatibile una cu cealaltă și costisitoare de instalat. Dacă aveți o Zmeură Pi Zmeura Pi: Tutorial neoficial Zmeura Pi: Tutorial neoficiale Fie că sunteți un proprietar actual Pi care vrea să învețe mai mult sau un potențial proprietar al acestui dispozitiv de mărimea cărții de credit, acest lucru nu este un ghid doriti sa doriti. Citiți mai mult și un Arduino, puteți realiza practic același lucru la o fracțiune din preț, presupunând că sunteți dispus să puneți timpul și efortul.

Actualizare: De când a fost scris acest articol, am descoperit OpenHAB, o platformă de automatizare gratuită și open source, care rulează pe Raspberry Pi și poate fi integrată cu o gamă imensă de kit-uri inteligente de acasă, precum și de Arduino. Verificați videoclipul de mai jos pentru un vârf de sneak, apoi mergeți mai departe pentru a începe să începem cu OpenHAB pe Raspberry Pi Noțiuni de bază cu OpenHAB Home Automation pe Raspberry Pi Noțiuni de bază cu OpenHAB Home Automation pe Raspberry Pi OpenHAB este o matura, platformă care rulează pe o varietate de hardware și este protocol agnostic, adică se poate conecta la aproape orice hardware de automatizare de acasă de pe piață astăzi. Citiți mai multe ghiduri pentru a afla mai multe.

Heimcontrol.js este o aplicație Node.js construită pentru a rula pe Raspberry Pi. Combinat cu un arduino și niște socluri de control de la distanță, acest lucru face ca aparatele de comandă să poată fi ușor controlate. Puteți adăuga senzori de temperatură și chiar puteți controla televizorul dvs., dar vom păstra lucrurile de bază astăzi și vom extinde proiectul într-un tutorial ulterior.

Iată o defalcare a proiectului:

  • Raspberry Pi va actiona ca creierul si gateway-ul operatiunilor - va rula o aplicatie Nod, legata de o baza de date Mongo, si va servi interfata front-end la orice browser web.
  • Un Arduino, alimentat de la Pi, va interfața între întrerupătoarele electronice de control radio, pentru moment.

Pentru aceasta, veți avea nevoie de:

  • Arduino și o Zmeură Pi
  • Unele prize controlate de la distanță și controler (le-am folosit aceste)
  • Hub USB alimentat

Înainte de a începe, iată un videoclip demo de la creatorul proiectului însuși.

Începeți din nou

Vom folosi Raspian pentru acest proiect 11 Sisteme de operare pe care le poti rula pe Raspberry Pi 11 Sisteme de operare pe care le poti rula pe Raspberry Pi Hardware-ul Raspberry Pi este doar o parte a monedei. Iată câteva sisteme de operare Raspberry Pi diferite pe care le puteți instala. Citiți mai multe și aș sugera cu fermitate începerea unei instalări proaspete dacă ați efectuat anterior alte hack-uri și altele asemenea. Descărcați cea mai recentă imagine Raspian, copiați-o pe cardul SD și asigurați-vă că extindeți sistemul de fișiere și activați SSH. Restul acestui ghid va presupune că ați făcut acest lucru și vă conectați la SSH utilizând utilizatorul implicit.

Dacă nu ați făcut acest lucru înainte, acest videoclip explică procesul de pregătire a cardului dvs. SD în OS X:

Și aceasta pentru utilizatorii Windows:

preparare

Procesul de instalare este destul de laborios și derivă din instrucțiunile de aici. Din păcate, acestea erau depășite sau nu au fost concepute pentru Raspian, așa că le-am adaptat mult mai jos. Codurile de mai jos pot fi lipite în blocuri - nu trebuie să lipiți una câte una. Din moment ce compilam câteva lucruri pe Pi însăși, trebuie avertizat că întregul proces va dura mult timp. Aș spune să mergeți să faceți o ceasca de ceai - dar când o spun a “perioadă lungă de timp”, Vreau să spun cea mai bună parte a unei zile - deci 178 de cești ar fi mai potrivite.

Toate comenzile trebuie introduse în Terminal și este posibil să fie nevoie să apăsați pe Enter în unele puncte. Primele câteva comenzi vor actualiza sistemul și vor instala pre-cerințe:

sudo apt-get actualizare sudo apt-get upgrade sudo apt-get instalare sud-apt-get instalare git-core git scon-build sessions libpost-dev libboost-dev libboost-dev libboost-dev 

Apoi trebuie să instalați Node:

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

Adăugați o variabilă PATH la profilul dvs., astfel încât OS să știe unde este localizat Nodul. Utilizați editorul de text nano după cum urmează:

sudo nano / etc / profil 

Localizați linia care spune export PATH și înlocuiți-l cu:

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

Apăsați Ctrl-X pentru a ieși și Y pentru a salva.

Este posibil să trebuiască să vă deconectați din nou pentru ca modificările căii să aibă efect, dar puteți testa cu ajutorul comenzii:

care nod 

Dacă nu obțineți nicio ieșire care să indice binarul nodului, ceva a mers prost.

Mongo

Următorul loc de muncă este să instalați Mongo. Mongo este o bază de date No-SQL bazată pe documente din ce în ce mai folosită de aplicațiile web. Din păcate, acest lucru va dura mereu pentru a instala așa cum trebuie să-l compilam. În timp ce rulați următoarele comenzi veți obține o mulțime de erori cum ar fi:

input standard: 13085: Avertisment: utilizarea swp b este depreciată pentru această arhitectură 

Nu vă faceți griji în legătură cu acestea. Deci, rulați aceste comenzi pentru a instala Mongo:

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

După ce sa terminat, avem nevoie de un set mai mic pentru a rezolva problemele de permisiune și pentru a vă asigura că rulează la pornire.

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 actualizare-rc.d mongodb implicit mongod

Această ultimă comandă va lansa serverul Mongo și va trebui să deschideți un Terminal nou pentru a continua cu celelalte comenzi. Nu sunt total încrezător în acest pas, așa că dacă cineva poate corecta acest lucru în comentariile despre cum să lanseze în mod automat mongod la pornire, ar fi foarte apreciat. Pentru moment, funcționează, pur și simplu nu elegant.

sudo shutdown -r acum

În cele din urmă, este timpul să instalați aplicația Nod Heimcontrol.js.

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

Puteți începe să rulați aplicația tastând

 nodul heimcontrol.js 

În acest moment, ar trebui să puteți accesa interfața de control cu http: // localhost: 8080 de la Pi, sau să înlocuiți localhost cu adresa IP dacă îl accesați de pe un alt computer (și ați putea de asemenea să configurați redirecționarea porturilor Ce este portul de expediere și cum mă poate ajuta [MakeUseOf explică] Ce este Port Forwarding & Cum sa ma ajuti? [MakeUseOf explica] Plangeti putin inauntru cand cineva iti spune ca exista o problema de transmitere a porturilor si de aceea noua ta aplicatie lucioasa nu va functiona? Xbox-ul tau nu te va lasa sa joci jocuri, download-urile de torrent refuzați ... Citește mai mult pentru a accesa site-ul de oriunde din lume), așa că te-aș încuraja să încerci și să verifici că totul funcționează cu baza de date înainte de a atașa Arduino.

Hardware

În cele din urmă mi-ar plăcea un releu cu fir, dar deocamdată o să folosesc opțiunea mai sigură de comutatoare cu comandă radio.

Am folosit niște seturi ieftine de 20 de lire sterline de la Maplin care vin cu 3 prize și au deschis telecomanda pentru a putea interfața direct cu cipul de 433 MHz din interior. Am găsit instrucțiunile pentru asta aici.

De asemenea, puteți achiziționa emițătoare individuale de 433 MHz gata de utilizare pe eBay sau de la furnizori de hobby electronice. Tot ce trebuie să faceți este să conectați VCC la 5 V pe Arduino, GND-urile și un singur pin de control - amintiți-vă ce ați folosit. (Schematic de Willi Thiel)

Pluginul funcționează prin trimitere “codurile tristate”, dar acestea vor varia în funcție de producător. Consultați documentația RCSwitch pentru a găsi codurile exacte. Acest ghid wiki poate ajuta de asemenea.

Comunicarea cu Arduino se face folosind o bibliotecă Node numită duino. Opriți aplicația Heimcontrol dacă rulează și instalați podul Arduino utilizând următoarea comandă.

npm install duino 

Arduino trebuie să aibă acest cod încărcat - vă sugerez să copiați și să lipiți pentru a instala acest lucru de la un alt calculator. Este, în esență, un program de ascultători care răspunde comenzilor seriale de la Pi, dar nu există nimic care să vă împiedice să îl extindeți cu propriile caracteristici.

Cu aplicația web lansată, accesați Setări meniu> Arduino.

De acolo puteți adăuga un element nou, selectând metoda RCSwitch, pinul transmițătorului și codul de adresă tristat. Nu uitați să salvați, apoi reveniți la ecranul principal pentru noul dvs. buton.

Gandaci:

După mai multe ore de depanare a codului, am găsit numere de coduri de o singură cifră care nu funcționau - asigurați-vă că emițătorul dvs. este așezat pe pin 10 a fi sigur.

De asemenea, am constatat că pluginul Arduino a fost hardcoded cu biți fini incorect pentru codurile tristate pe care receptoarele mele le-au avut nevoie. O primă explicație mai întâi: codurile tristate constau în 3 octeți de informații. Primul ne determină numărul de rețea (1-4), iar al doilea oferă adresa transmițătorului (din nou, 1-4, producând maximum 16 prize adresabile). Ultimul byte constă din doi biți de umplutură, plus 2 biți pentru pornire / oprire. Din păcate, octetul final este hardcoded în pluginul Arduino - iar în cazul meu, codul pornit / oprit a fost incorect.

Trebuia să editez manual plugins / Arduino / index.js pentru a utiliza codurile corecte. Dacă utilizați aceleași prize de la distanță ca și mine, schimbați liniile 80 spre:

// Trimite cod RC dacă (item.value) return that.pins [item.pin] .triState (item.code + "FFFF"); // modifică din FF0F else return that.pins [item.pin] .triState (element.code + "FFF0"); // schimbare de la FF00

Iată un video demo al tuturor lucrurilor:

O să o las aici în acest moment, dar sunt acceptate și citirile senzorilor și telecomenzile IR. Probabil că le voi revedea mai târziu cu mai multe îmbunătățiri. Dacă acest lucru a fost un pic prea complex pentru dvs., probabil că verificați aceste proiecte arduino pentru începători 15 proiecte arduino pentru începători 15 proiecte arduino mari pentru începători Sunt interesați de Arduino dar nu sunt sigur de unde să înceapă? Iată câteva dintre cele mai bune proiecte Arduino pentru începători pentru a începe! Citeste mai mult .

.