Home Automation Guide Med Raspberry Pi og Arduino

Hjemmautomatiseringsmarkedet er oversvømmet med dyre forbrukssystemer, inkompatible med hverandre og kostbare å installere. Hvis du har en Raspberry Pi og en Arduino, kan du i utgangspunktet oppnå det samme til en brøkdel av prisen, forutsatt at du er villig til å sette inn tid og innsats.

Hjemmautomatiseringsmarkedet er oversvømmet med dyre forbrukssystemer, inkompatible med hverandre og kostbare å installere.  Hvis du har en Raspberry Pi og en Arduino, kan du i utgangspunktet oppnå det samme til en brøkdel av prisen, forutsatt at du er villig til å sette inn tid og innsats.
Annonse

Vi har snakket om de relative fordelene til Arduino og Raspberry Pi før - de har hver sin styrke. De trenger ikke å være et eller annet valg skjønt - kombinere dem for å få det beste fra begge verdener. Hjemmeautomatisering er den perfekte kandidaten til dette. Hjemmautomatiseringsmarkedet er oversvømmet med dyre forbrukssystemer, inkompatible med hverandre og kostbare å installere. Hvis du har en Raspberry Pi Raspberry Pi: Den uoffisielle opplæringen Raspberry Pi: Den uoffisielle opplæringen Uansett om du er en nåværende Pi-eier som ønsker å lære mer eller en potensiell eier av denne kredittkortstørrelsesenheten, er dette ikke en veiledning du vil savne. Les mer og en Arduino, du kan i utgangspunktet oppnå det samme til en brøkdel av prisen, forutsatt at du er villig til å sette inn tid og innsats.

Oppdatering: Siden denne artikkelen ble skrevet, har jeg oppdaget OpenHAB, en gratis og åpen kildekode-hjemmeautomatiseringsplattform som kjører på Raspberry Pi, og kan integreres med et stort utvalg av hemmelig smart hjemmeutstyr samt Arduino. Ta en titt på videoen nedenfor for en sneak peak, og fortsett med å komme i gang med OpenHAB på Raspberry Pi Komme i gang med OpenHAB Hjem Automation på Raspberry Pi Komme i gang med OpenHAB Hjem Automation på Raspberry Pi OpenHAB er en moden, åpen kildekode-hjemmeautomatisering plattform som kjører på en rekke maskinvare og er protokoll agnostisk, noe som betyr at den kan koble til nesten hvilken som helst hjemmevirksomhets maskinvare på markedet i dag. Les mer guide for å lære mer.

Heimcontrol.js er en Node.js app bygget for å kjøre på Raspberry Pi. Kombinert med en Arduino og noen fjernkontrollkontakter, som gjør det enkelt å kontrollere AC-apparater. Du kan legge til temperatursensorer, og til og med kontrollere TV-en, men vi vil holde ting grunnleggende i dag og utvide prosjektet i en senere opplæring.

Her er en oversikt over prosjektet:

  • Raspberry Pi vil fungere som hjernen og inngangsporten - den vil kjøre en Node-app, knyttet til en Mongo-database, og servere grensesnittet til fronten til en hvilken som helst nettleser.
  • En Arduino, drevet av Pi, vil grensesnittet mellom elektronikk - radiostyring, for nå.

For å gjøre dette må du:

  • Arduino og en Raspberry Pi
  • Noen fjernstyrte kontakter og kontroller (jeg brukte disse)
  • Drevet USB-hub

RC-stikkontakter

Før vi begynner, er det en demonstrasjonsvideo fra prosjektopphaveren selv.

Start på nytt

Vi skal bruke Raspian for dette prosjektet 10 Operativsystemer du kan kjøre med Raspberry Pi 10 Operativsystemer du kan kjøre med Raspberry Pi Hardwaren av Raspberry Pi alene er bare en side av historien: I dag undersøker jeg 10 forskjellige operativsystemer du kan installere. Les mer, og jeg anbefaler på det sterkeste å starte fra en fersk installasjon hvis du tidligere har utført andre hack og så videre. Last ned det nyeste Raspian-bildet, kopier det til SD-kortet ditt, og vær sikker på å utvide filsystemet og aktivere SSH. Resten av denne guiden vil anta at du har gjort det, og kobler over SSH ved hjelp av standardbrukeren.

Hvis du ikke har gjort dette før, forklarer denne videoen prosessen med å forberede SD-kortet ditt i OS X:

Og denne for Windows-brukere:

Forberedelse

Installasjonsprosessen er ganske arbeidskrevende, og avledet av instruksjonene her. Dessverre, disse var utdaterte eller ikke designet for Raspian, så jeg har justert dem tungt under. Kodene under kan for det meste limes inn i blokker - du trenger ikke lime inn en etter en. Siden vi samler noen ting på Pi selv, bli advart om at hele prosessen tar lang tid. Jeg vil si gå lage deg en kopp te - men når jeg sier en "lang tid", mener jeg den beste delen av dagen - så 178 kopper ville være mer hensiktsmessige.

Alle kommandoer skal skrives inn i Terminal, og du må kanskje trykke Enter på noen punkter. Disse første kommandoene vil oppdatere systemet og installere forutsetninger:

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 

Neste må vi installere 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 

Legg til en PATH-variabel i profilen din, slik at operativsystemet vet hvor noden er plassert. Bruk nano tekstredigeringsprogrammet som følger:

 sudo nano /etc/profile 

Finn linjen som sier eksport PATH, og erstatt den med:

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

Trykk Ctrl-X for å avslutte, og Y for å lagre.

Det kan hende du må logge deg ut og inn igjen, for banen endrer seg for å fungere, men du kan teste med kommandoen:

 which node 

Hvis du ikke får noen utdata som peker på Node-binæret, gikk noe feil.

Mongo

Den neste jobben er å installere Mongo. Mongo er en dokumentbasert No-SQL-database som brukes av webappsjer. Dessverre vil dette ta for alltid å installere da vi må kompilere det. Mens du kjører følgende kommandoer, får du mange feil som:

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

Ikke bekymre deg for disse. Så, kjør disse kommandoene for å installere Mongo:

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

Når det er ferdig, trenger vi litt mer oppsett først for å fikse tillatelsesproblemer og sørge for at det kjører ved oppstart.

 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 

Denne siste kommandoen vil starte Mongo-serveren, og du må åpne en ny terminal for å fortsette med de andre kommandoene. Jeg er ikke helt sikker på dette trinnet, så hvis noen kan korrigere dette i kommentarene om hvordan man skal starte mongod automatisk ved oppstart, ville det bli mye verdsatt. For nå virker det, bare ikke elegant.

 sudo shutdown -r now 

Endelig er det på tide å installere Heimcontrol.js Knuteprogrammet.

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

Du kan begynne å kjøre appen ved å skrive

 node heimcontrol.js 

På dette tidspunktet bør du få tilgang til kontrollgrensesnittet med http: // localhost: 8080 fra Pi, eller erstatte lokalhost med IP-adressen hvis du får tilgang til den fra en annen datamaskin (og du kan også sette opp port videresending Hva er port videresending og hvordan kan det hjelpe meg? [MakeUseOf Forklarer] Hva er port videresending og hvordan kan det hjelpe meg? [MakeUseOf Forklarer] Hør du litt innvendig når noen forteller deg at det er et port videresending problem, og det er derfor din skinnende ny app vil ikke fungere? Xboxen din vil ikke la deg spille spill, dine torrent nedlastinger nekte ... Les mer for å få tilgang til den fra hvor som helst i verden), så jeg vil oppfordre deg til å peke rundt og kontrollere at alt er jobber med databasen før du legger til Arduino.

maskinvare

Til slutt vil jeg ha et hardwired relé, men for nå vil jeg bruke det sikrere alternativet til radiostyrte brytere.

Jeg har brukt noen rimelig billige £ 20 sett fra Maplin som kommer med 3 stikkontakter, og åpnet fjernkontrollen slik at jeg kunne grensesnitt direkte med 433 MHz-brikken inni. Jeg fant instruksjonene for dette her.

rc-regulator-Hack

Du kan også kjøpe individuelle 433 MHz sendere klar til bruk på eBay eller fra hobby elektronikk leverandører. Alt du trenger er å koble VCC til 5 V på Arduino, GNDs, og en enkelt kontrollpinne - husk hvilken du brukte. (Skjematisk av Willi Thiel)

Arduino-rcswitch

Pluggen fungerer ved å sende "tristatkoder", men disse vil variere av produsent. Se RCSwitch-dokumentasjonen for å finne nøyaktige koder. Denne wiki-guiden kan også hjelpe.

Kommunikasjon med Arduino er gjort ved hjelp av et Node-bibliotek kalt duino. Stopp Heimcontrol-appen hvis den kjører og installerer Arduino-broen ved å bruke følgende kommando.

 npm install duino 

Arduino må ha denne koden lastet opp - jeg foreslår at du kopierer og limer for å installere denne fra en annen datamaskin. Det er egentlig et lytterprogram som reagerer på serielle kommandoer fra Pi, men det er ingenting som hindrer deg til å forlenge det med dine egne funksjoner.

rc-innstillinger

Når webappen lanseres, går du til Innstillinger- menyen> Arduino .

heimcontrol-meny-innstillinger

Derfra kan du legge til et nytt element, velge RCSwitch-metoden, stiften på senderen din og tristate-adressekoden. Husk å lagre, og deretter gå tilbake til hovedskjermbildet for den nye knappen.

rcswitch-innstilling

bugs:

Etter mange timers feilsøking av koden fant jeg at enkeltsifrede pinnumre ikke virket - pass på at senderen din er plassert på pin 10 for å være sikker.

Jeg fant også at Arduino-pluginet var hardkodet med feildelige sluttbiter for tristatkodene mine mottakere trengte. En liten forklaring først: Tristatkoder består av 3 byte med informasjon. Den første bestemmer oss nettverksnummeret (1-4), og det andre gir transceiveradressen (igjen 1-4, og produserer maksimalt 16 adresserbare kontakter). Endelig byte består av to biter av polstring, pluss 2 biter for på / av. Dessverre er den endelige byte hardcoded inn i Arduino plugin - og i mitt tilfelle var on / off-koden feil.

Jeg måtte manuelt redigere pluginene / arduino / index.js for å bruke de riktige kodene. Hvis du bruker de samme fjernkontrolluttakene som jeg, endrer du linjer 80 og videre til:

 // 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 } 

Her er en demonstrasjonsvideo av alt som fungerer:

Jeg kommer til å forlate det her på dette tidspunktet, men sensoravlesninger og IR-fjernkontroller støttes også. Jeg vil nok få tilbake disse på et senere tidspunkt med noen flere forbedringer. Hvis dette alt har vært litt for komplisert for deg, kan du sjekke ut disse nybegynnerlige Arduino-prosjektene. 10 Great Arduino-prosjekter for nybegynnere. 10 Great Arduino-prosjekter for nybegynnere. Å fullføre et Arduino-prosjekt gir deg en følelse av tilfredshet som ingen andre. De fleste nybegynnere er ikke sikker på hvor du skal begynne, og selv begynnerprosjekter kan virke ganske skremmende. Les mer .

Image Credits: Dørklokke Via Flickr

In this article