Home Automation Guide Med Raspberry Pi og Arduino

Hjemmeautomatiseringsmarkedet oversvømmes med dyre forbrugersystemer, inkompatible med hinanden og kostbart at installere. Hvis du har en Raspberry Pi og en Arduino, kan du stort set opnå det samme til en brøkdel af prisen, forudsat at du er villig til at sætte tid og indsats.

Hjemmeautomatiseringsmarkedet oversvømmes med dyre forbrugersystemer, inkompatible med hinanden og kostbart at installere.  Hvis du har en Raspberry Pi og en Arduino, kan du stort set opnå det samme til en brøkdel af prisen, forudsat at du er villig til at sætte tid og indsats.
Reklame

Vi har talt om de relative fordele af Arduino og Raspberry Pi før - de har hver deres styrker. De behøver ikke at være et eller andet valg - kombinere dem for at få det bedste fra begge verdener. Home automation er den perfekte kandidat til dette. Hjemmeautomatiseringsmarkedet oversvømmes med dyre forbrugersystemer, inkompatible med hinanden og kostbart at installere. Hvis du har en Raspberry Pi Raspberry Pi: Den uofficielle Tutorial Raspberry Pi: Den uofficielle Tutorial Om du er en nuværende Pi ejer, der ønsker at lære mere eller en potentiel ejer af denne kreditkort størrelse enhed, dette er ikke en guide dig vil savne. Læs mere og en Arduino, du kan stort set opnå det samme til en brøkdel af prisen, forudsat at du er villig til at sætte tid og indsats.

Opdatering: Siden denne artikel blev skrevet, har jeg opdaget OpenHAB, en gratis og open source hjemmeautomatiseringsplatform, der kører på Raspberry Pi og kan integreres med et stort udvalg af off-the-shelf smart home kit samt Arduino. Tjek videoen nedenfor for en sneaktop, og fortsæt videre med vores Kom i gang med OpenHAB på Raspberry Pi Kom i gang med OpenHAB Home Automation på Raspberry Pi Kom i gang med OpenHAB Home Automation on Raspberry Pi OpenHAB er en moden, open source home automation platform, der kører på en række hardware og er protokol agnostic, hvilket betyder, at den kan forbinde til næsten enhver hjemmeautomatisering hardware på markedet i dag. Læs mere vejledning for at lære mere.

Heimcontrol.js er en Node.js app bygget til at køre på Raspberry Pi. Kombineret med en Arduino og nogle fjernbetjeningskontakter, der gør det nemt at styre AC-apparater. Du kan tilføje temperatursensorer, og endda kontrollere dit tv - men vi vil holde tingene grundlæggende i dag og udvide projektet i en senere vejledning.

Her er en oversigt over projektet:

  • Raspberry Pi vil fungere som hjernen og gatewayen til operationer - den vil køre en Node-app, der er bundet til en Mongo-database, og servere front-end-grænsefladen til enhver webbrowser.
  • En Arduino, der er drevet af Pi'en, vil for tiden være grænsefladen mellem elektronik - radiostyringskontakterne.

For at gøre dette skal du:

  • Arduino og en Raspberry Pi
  • Nogle fjernstyrede stikkontakter og controller (jeg brugte disse)
  • Powered USB hub

RC-sokler

Før vi begynder, her er en demo video fra projektskaberen selv.

Start Afresh

Vi vil bruge Raspian til dette projekt 10 Operativsystemer du kan køre med Raspberry Pi 10 Operativsystemer, du kan køre med Raspberry Pi Hardwaren af ​​Raspberry Pi alene er kun den ene side af historien: I dag udforsker jeg 10 forskellige operativsystemer du kan installere. Læs mere, og jeg vil stærkt foreslå at starte fra en frisk installation, hvis du tidligere har udført andre hacks og lignende. Download det nyeste Raspian-billede, kopier det til dit SD-kort, og sørg for at udvide filsystemet og aktivere SSH. Resten af ​​denne vejledning forudsætter, at du har gjort det, og forbinder over SSH ved hjælp af standardbrugeren.

Hvis du ikke har gjort dette før, forklarer denne video processen med at forberede dit SD-kort i OS X:

Og denne til Windows-brugere:

Forberedelse

Installationsprocessen er ret besværlig og afledt af vejledningen her. Desværre var disse forældede eller ikke designet til Raspian, så jeg har justeret dem stærkt under. Kodene nedenfor kan for det meste klistres i blokke - du behøver ikke indsætte en efter en. Da vi samler nogle ting på Pi selv, advares det om, at hele processen vil vare lang tid. Jeg vil sige gå, laver dig en kop te - men når jeg siger en "lang tid", mener jeg den bedste del af dagen - så 178 kopper ville være mere passende.

Alle kommandoer skal indtastes i Terminal, og du skal muligvis trykke på Enter på nogle punkter. Disse første få kommandoer opdaterer systemet og installerer forudsætninger:

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 

Næste skal 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 

Tilføj en PATH-variabel til din profil, så OS'et ved, hvor Node er placeret. Brug nano teksteditoren som følger:

 sudo nano /etc/profile 

Find den linje, der siger eksport PATH, og erstat den med:

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

Tryk Ctrl-X for at afslutte, og Y for at gemme.

Du skal muligvis logge ud og ind igen, for stien ændres for at træde i kraft, men du kan teste med kommandoen:

 which node 

Hvis du ikke får noget output, der peger på node binæret, gik der noget galt.

Mongo

Næste job er at installere Mongo. Mongo er en dokumentbaseret No-SQL-database, som i stigende grad anvendes af webapps. Desværre vil dette tage for evigt at installere, da vi skal kompilere det. Mens du kører følgende kommandoer får du mange fejl som:

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

Bare rolig om disse. Så kør disse kommandoer for at 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 færdigt, har vi brug for lidt mere setup først for at løse tilladelsesproblemer og sørg for, at det kører ved opstart.

 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 sidste kommando vil starte Mongo-serveren, og du skal åbne en ny Terminal for at fortsætte med de andre kommandoer. Jeg er ikke helt sikker på dette trin, så hvis nogen kan rette dette i kommentarerne om, hvordan man starter med at starte mongod automatisk ved opstart, ville det være meget værdsat. For nu fungerer det, bare ikke elegant.

 sudo shutdown -r now 

Endelig er det tid til at installere Heimcontrol.js Node-applikationen.

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

Du kan begynde at køre appen ved at skrive

 node heimcontrol.js 

På dette tidspunkt skal du have adgang til kontrolgrænsefladen med http: // localhost: 8080 fra Pi, eller erstatte lokalhost med IP-adressen, hvis du får adgang til den fra en anden computer (og du kan også konfigurere porten videresendelse Hvad er port videresending og hvordan kan det hjælpe mig? [MakeUseOf Forklarer] Hvad er port videresending & Hvordan kan det hjælpe mig? [MakeUseOf Forklarer] Gør du lidt indeni, når nogen fortæller dig, at der er et port videresending problem, og derfor er din skinnende ny app vil ikke fungere? Din Xbox vil ikke lade dig spille spil, dine torrent downloads nægter ... Læs mere for at få adgang til det fra hvor som helst i verden), så jeg vil opfordre dig til at pikke rundt og tjekke alt er arbejder med databasen, inden du vedhæfter Arduino.

Hardware

Til sidst vil jeg gerne have et hardwired relæ, men for nu bruger jeg den sikrere mulighed for radiostyrede switche.

Jeg har brugt nogle rimeligt billige £ 20 sæt fra Maplin, der leveres med 3 stikkontakter, og åbnede fjernbetjeningen, så jeg kunne interface direkte med 433 MHz chip inde. Jeg fandt instruktionerne herfor her.

rc-controller-hack

Du kan også købe individuelle 433 MHz sendere klar til brug på eBay eller fra hobby elektronik leverandører. Alt du behøver er at forbinde VCC til 5 V på Arduino, GND'erne og en enkelt kontrolpind - husk hvilken du brugte. (Skematisk af Willi Thiel)

Arduino-rcswitch

Plugin fungerer ved at sende "tristatkoder", men disse vil variere efter fabrikant. Se RCSwitch dokumentationen for at finde dine nøjagtige koder. Denne wiki-guide kan også hjælpe.

Kommunikation med Arduino er færdig med et Node-bibliotek kaldet duino. Stop Heimcontrol-appen, hvis den kører og installerer Arduino-broen ved hjælp af følgende kommando.

 npm install duino 

Arduino skal have denne kode uploadet - jeg foreslår at du kopierer og indsætter for at installere denne fra en anden computer. Det er i det væsentlige et lytterprogram, der svarer til serielle kommandoer fra Pi, men der er ikke noget at stoppe med at udvide det med dine egne funktioner.

rc-indstillinger

Når webappen er lanceret, skal du gå til menuen Indstillinger > Arduino .

heimcontrol-menu-indstillinger

Derefter kan du tilføje et nyt emne, vælge RCSwitch-metoden, stiften på din sender og tristate-adressekoden. Husk at gemme, og gå derefter tilbage til hovedskærmbilledet for din nye knap.

rcswitch-indstilling

Bugs:

Efter mange timers debugging af koden fandt jeg encifrede pinnumre ikke fungerede - sørg for, at din sender er placeret på pin 10 for at være sikker.

Jeg fandt også, at Arduino-pluginet var hardkodet med forkerte endelige bits til de tristatkoder, mine modtagere havde brug for. En lille forklaring først: Tristatkoder består af 3 bytes information. Den første bestemmer os netværksnummeret (1-4), og det andet giver transceiver adressen (igen 1-4, der producerer maksimalt 16 adresserbare stikkontakter). Den endelige byte består af to stykker polstring, plus 2 bit til on / off. Desværre er den endelige byte hardcoded ind i Arduino plugin - og i mit tilfælde var on / off-koden forkert.

Jeg måtte manuelt redigere plugins / arduino / index.js for at bruge de korrekte koder. Hvis du bruger de samme fjernbetjeningsstik, som jeg er, skal du ændre linjer 80 og frem 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 demo-video af alt, der virker:

Jeg kommer til at forlade det her på dette tidspunkt, men sensoraflæsninger og IR-fjernbetjeninger understøttes også. Jeg vil nok genoverveje disse på et senere tidspunkt med nogle flere forbedringer. Hvis det hele har været lidt for kompliceret for dig, kan du tjekke disse nybegynderlige Arduino-projekter. 10 Great Arduino-projekter for begyndere. 10 Great Arduino-projekter for begyndere. Gennemførelse af et Arduino-projekt giver dig en følelse af tilfredshed som ingen anden. De fleste begyndere er ikke sikre på, hvor de skal starte, og selv begynderprojekter kan virke temmelig skræmmende. Læs mere .

Billedkreditter: Dørklokke via Flickr

In this article