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 av verken eller et valg - kombiner dem for å få det beste fra begge verdener. Hjemmeautomatisering er den perfekte kandidaten for dette. Hjemmeautomatiseringsmarkedet er oversvømmet av dyre forbrukssystemer, uforenlige med hverandre og kostbare å installere. Hvis du har en Raspberry Pi Raspberry Pi: Den uoffisielle opplæringenEnten du er en nåværende Pi-eier som vil lære mer eller potensiell eier av denne enheten med kredittkortstørrelse, er dette ikke en guide du vil gå glipp av. Les mer og en Arduino, kan du i utgangspunktet oppnå det samme til en brøkdel av prisen, forutsatt at du er villig til å sette av tid og krefter.
Oppdatering: Siden denne artikkelen ble skrevet, har jeg oppdaget OpenHAB, en gratis og åpen kildekode-hjemme-automatiseringsplattform som kjører på Raspberry Pi og kan integreres med et stort utvalg av smart-hemmesett utenfor hylla så vel som Arduino. Sjekk ut videoen nedenfor for en sniktopp, og fortsett videre til vår Komme i gang med OpenHAB på Raspberry Pi Komme i gang med OpenHAB Home Automation på Raspberry PiOpenHAB er en moden, åpen kildekode-hjemme-automatiseringsplattform som kjører på en rekke maskinvare og er protokoll agnostisk, noe som betyr at den kan koble seg til nesten all hjemmeautomatiseringsmaskinvare 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 stikkontakter utenfor fjernkontrollen, gjør det kontroller av vekselstrømapparater enkelt. Du kan legge til temperatursensorer og til og med kontrollere TV-en din - men vi holder ting på grunnleggende i dag og utvider prosjektet i en senere opplæring.
Her er en oversikt over prosjektet:
- Raspberry Pi vil fungere som hjernen og inngangsporten til operasjoner - den vil kjøre en Node-app, bundet til en Mongo-database, og tjene grensesnittet til alle nettlesere.
- En Arduino, drevet fra Pi, vil grensesnitt mellom elektronikk - radiokontroll strømbrytere, for nå.
For å gjøre dette, trenger du:
- Arduino og en bringebærpi
- Noen fjernkontrollerte stikkontakter og kontroller (jeg brukte disse)
- Drevet USB-hub

Før vi begynner, er her en demovideo fra prosjektskaperen selv.
Start Afresh
Vi kommer til å bruke Raspian til dette prosjektet 11 operativsystemer som kjører på Raspberry PiUansett Raspberry Pi-prosjekt, det er et operativsystem for det. Vi hjelper deg med å finne det beste Raspberry Pi OS for dine behov. Les mer , og jeg vil sterkt anbefale å starte fra en ny installasjon hvis du tidligere har utført andre hacks og slikt. Last ned det siste Raspian-bilde, kopier det til SD-kortet ditt, og sørg for å utvide filsystemet og aktiver SSH. Resten av denne guiden vil anta at du har gjort det, og kobler over SSH ved å bruke standardbrukeren.
Hvis du ikke har gjort dette før, forklarer denne videoen prosessen med å klargjøre SD-kortet ditt i OS X:
Og denne for Windows-brukere:
Forberedelse
Installasjonsprosessen er ganske arbeidskrevende, og avledet fra instruksjoner her. Dessverre var disse utdaterte eller ikke designet for Raspian, så jeg har justert dem sterkt nedenfor. Kodene nedenfor kan stort sett limes inn i blokker - du trenger ikke lime inn én etter én. Siden vi sammenstiller noen få ting på selve Pi-en, blir du advart om at hele prosessen vil ta lang tid. Jeg vil si gå, lag deg en kopp te - men når jeg sier "lang tid", mener jeg den beste delen av en dag - så 178 kopper ville være mer passende.
Alle kommandoer skal skrives inn i terminalen, og du må kanskje trykke Enter på noen punkter. Disse første kommandoene vil oppdatere systemet og installere forutsetninger:
sudo apt-get-oppdatering sudo apt-get-oppgradering. 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 Node befinner seg. Bruk nano teksteditoren 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" eksport PATH.
Trykk Ctrl-X for å avslutte, og Y for å lagre.
Det kan hende du må logge av og på nytt for at banen skal endre seg, men du kan teste med kommandoen:
hvilken node.
Hvis du ikke får noen output som peker til Node-binæren, gikk noe galt.
Mongo
Neste jobb er å installere Mongo. Mongo er en dokumentbasert No-SQL-database som i økende grad brukes av webapper. Dessverre vil dette ta evig tid å installere ettersom vi må kompilere det. Når du kjører følgende kommandoer, får du mange feil som:
{standardinngang}: 13085: Advarsel: swp {b} bruk er utdatert for denne arkitekturen.
Ikke bekymre deg for disse. Så kjør disse kommandoene for å installere Mongo:
git klone git: //github.com/RickP/mongopi.git. cd mongopi. scons. sudo scons --prefix = / opt / mongo installere scons -c.
Når det er ferdig, trenger vi først litt mer oppsett for å fikse tillatelsesproblemer og sikre 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. standard for sudo update-rc.d mongodb. mongod
Denne siste kommandoen starter 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 rette dette i kommentarene til hvordan mongod skal lanseres automatisk ved oppstart, vil det bli satt stor pris på. Foreløpig fungerer det, bare ikke elegant.
sudo shutdown -r nå
Endelig er det på tide å installere Heimcontrol.js node-applikasjonen.
cd ~ pi. git klone git: //github.com/ni-c/heimcontrol.js.git. cd heimcontrol.js. npm installasjon.
Du kan begynne å kjøre appen ved å skrive
node heimcontrol.js.
På dette tidspunktet skal du kunne få tilgang til kontrollgrensesnittet med http://localhost: 8080 fra Pi, eller erstatt localhost med IP-adressen hvis du har tilgang til den fra en annen datamaskin (og du kan også sette opp portvideresending Hva er portvideresending og hvordan kan det hjelpe meg? [MakeUseOf Explains]Gråter du litt inne når noen forteller deg at det er et portvideresendingsproblem, og det er grunnen til at den skinnende nye appen din ikke fungerer? Xbox-enheten din lar deg ikke spille spill, torrentnedlastningene dine nekter ... Les mer for å få tilgang til den hvor som helst i verden), så jeg vil oppmuntre deg til å pirke rundt og sjekke at alt fungerer med databasen før du legger ved Arduino.
maskinvare
Etter hvert vil jeg ha et fastkoblet stafett, men for nå skal jeg bruke det tryggere alternativet med radiostyrte brytere.
Jeg har brukt noen rimelig billige £ 20 sett fra Maplin som leveres med 3 stikkontakter, og åpnet fjernkontrollen slik at jeg kunne grensesnitt direkte med 433 MHz-brikken inni. Jeg fant instruksjonene for dette her.

Du kan også kjøpe individuelle 433 MHz sendere klare til bruk på eBay eller fra hobbyelektronikkleverandører. Alt du trenger å gjøre er å koble VCC til 5 V på Arduino, GND-ene og en enkelt kontrollnål - husk hvilken du brukte. (Skjematisk av Willi Thiel)

Plugin fungerer ved å sende “tristate codes”, men disse vil variere fra produsent. Referere til RCSwitch-dokumentasjon for å finne dine eksakte koder. Dette wiki guide kan hjelpe også.
Kommunikasjon med Arduino skjer ved hjelp av et Node-bibliotek som heter Duino. Stopp Heimcontrol-appen hvis den kjører, og installer Arduino-broen ved hjelp av følgende kommando.
npm installer duino.
Det må Arduino ha denne koden lastet opp - Jeg foreslår at du kopierer og limer inn for å installere dette fra en annen datamaskin. Det er egentlig et lytterprogram som svarer på seriekommandoer fra Pi, men det er ingenting som hindrer deg i å utvide det med dine egne funksjoner.

Med web-appen lansert, gå til innstillinger meny> Arduino.

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

bugs:
Etter mange timer med feilsøking av koden, fant jeg at tosifrede pin-numre ikke fungerer - sørg for at senderen din er plassert på pin 10 for å være sikker.
Jeg fant også ut at Arduino-pluginen var hardkodet med uriktige 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 mottakeradressen (igjen, 1-4, og produserer maksimalt 16 adresserbare stikkontakter). Den endelige byten består av to polstringbiter, pluss 2 bit for av / på. Dessverre er den endelige byten hardkodet til Arduino-pluginen - og i mitt tilfelle var av / på-koden feil.
Jeg måtte redigere manuelt plugg / arduino / index.js for å bruke riktige koder. Hvis du bruker de samme fjernkontrollkontaktene som jeg er, bytter du linjer 80 og utover til:
// Send RC-kode. if (item.value) {return that.pins [item.pin] .triState (item.code + "FFFF"); // endre fra FF0F. } annet {return that.pins [item.pin] .triState (item.code + "FFF0"); // endre fra FF00. }
Her er en demovideo av alt som fungerer:
Jeg kommer til å la det ligge her på dette tidspunktet, men sensoravlesninger og IR-fjernkontroller er det støttet også. Jeg vil sannsynligvis se 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 nybegynnervennlige Arduino-prosjekter 15 store Arduino-prosjekter for nybegynnereInteressert i Arduino-prosjekter, men ikke sikker på hvor du skal begynne? Disse nybegynningsprosjektene vil lære deg hvordan du kommer i gang. Les mer .
James har en BSc i kunstig intelligens, og er CompTIA A + og Network + sertifisert. Han er hovedutvikler av MakeUseOf, og bruker fritiden sin på å spille VR paintball og brettspill. Han har bygd pc-er siden han var liten.