Home Automation Guide Med Raspberry Pi og Arduino

Home Automation Guide Med Raspberry Pi og Arduino / Smart Hjem

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 tiden og innsatsen.

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 holder ting 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 - 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

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

Start på nytt

Vi skal bruke Raspian til dette prosjektet 11 Operativsystemer du kan kjøre på Raspberry Pi 11 Operativsystemer du kan kjøre på Raspberry Pi Raspberry Pi-maskinvaren er bare den ene siden av mynten. Her er noen forskjellige Raspberry Pi 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 a “lang tid”, Jeg mener 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 oppdatering sudo apt-get oppgradering sudo apt-get install git-core git scons bygge-essensielle scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-alternativer-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 / lokal / 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 / profil 

Finn linjen som sier eksporter 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 deg ut og inn igjen, for banen endrer seg for å fungere, men du kan teste med kommandoen:

hvilken knutepunkt 

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:

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 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 $ BRUKER / 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 oppdatering-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 nå

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

cd ~ pi git klon 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 bør du kunne få tilgang til kontrollgrensesnittet med http: // localhost: 8080 fra Pi, eller erstatt 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 & Hvordan kan det hjelpe meg? [MakeUseOf Forklarer] Skriver du litt innvendig når noen forteller deg at det er et portoverføringsproblem, og derfor vil din skinnende nye app ikke virke? Din Xbox 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 se at alt fungerer 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.

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)

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 installere 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 å stoppe deg med å forlenge det med dine egne funksjoner.

Når webappen lanseres, går du til innstillinger meny> Arduino.

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.

bugs:

Etter mange timers feilsøking av koden fant jeg at enkeltsifrede pinnumre ikke virket - sørg for at senderen er plassert på pinnen 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 på / av-koden feil.

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

// Send RC-kode hvis (item.value) return that.pins [item.pin] .triState (item.code + "FFFF"); // endre fra FF0F else return that.pins [item.pin] .triState (item.code + "FFF0"); // endre fra 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. 15 Great Arduino-prosjekter for nybegynnere 15 Great Arduino-prosjekter for nybegynnere Interessert i Arduino, men ikke sikker på hvor du skal begynne? Her er noen av våre beste Arduino-prosjekter for nybegynnere å komme i gang med! Les mer .

.