Reklame
Vi har talt om de relative fordele ved Arduino og Raspberry Pi før - de har hver deres styrker. De behøver dog ikke være et af enten et valg eller et valg - kombiner dem for at få det bedste fra begge verdener. Hjemmeautomatisering er den perfekte kandidat til dette. Hjemmeautomatiseringsmarkedet er oversvømmet af dyre forbrugersystemer, uforenelige med hinanden og dyre at installere. Hvis du har en Raspberry Pi Raspberry Pi: Den uofficielle tutorialUanset om du er en nuværende Pi-ejer, der vil lære mere eller en potentiel ejer af denne enhed med kreditkortstørrelse, er dette ikke en guide, du vil gå glip af. Læs mere og en Arduino, kan du dybest set opnå den samme ting til en brøkdel af prisen, hvis du antager, at du er villig til at bruge tid og kræfter.
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 hylde smart home kit såvel som Arduino. Se videoen nedenfor for en sneak peak, og fortsæt derefter videre til vores Kom godt i gang med OpenHAB på Raspberry Pi Kom godt i gang med OpenHAB-hjemmeautomatisering på Raspberry PiOpenHAB er en moden, open source hjemmeautomatiseringsplatform, der kører på en række hardware og er protokol agnostic, hvilket betyder, at den kan oprette forbindelse til næsten enhver hjemmeautomatiseringshardware på markedet i dag. Læs mere guide til 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 fjernbetjeninger uden for hylden gør det let at kontrollere vekselstrømsapparater. Du kan tilføje temperatursensorer og endda styre dit tv - men vi holder tingene basale i dag og udvider projektet i en senere tutorial.
Her er en oversigt over projektet:
- Raspberry Pi vil fungere som hjernen og porten til operationer - den kører en Node-app, bundet til en Mongo-database, og serverer front-end interface til enhver webbrowser.
- En Arduino, der er drevet fra Pi, vil grænseflade mellem elektronik - radiokontrol strømafbrydere, indtil videre.
For at gøre dette skal du:
- Arduino og en hindbærpi
- Nogle fjernbetjente stikkontakter og controller (jeg brugte Disse)
- Drevet USB-hub

Før vi begynder, her er en demovideo fra projektets skaber selv.
Start Afresh
Vi vil bruge Raspian til dette projekt 11 Operativsystemer, der kører på din Raspberry PiUanset dit Raspberry Pi-projekt, er der et operativsystem til det. Vi hjælper dig med at finde det bedste Raspberry Pi OS til dine behov. Læs mere , og jeg vil kraftigt foreslå at starte fra en ny installation, hvis du tidligere har udført andre hacks og sådan. 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 antager, at du har gjort det, og opretter forbindelse via 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 temmelig besværlig og afledt af instruktioner her. Desværre var disse forældede eller ikke designet til Raspian, så jeg har justeret dem kraftigt nedenfor. Koderne herunder kan for det meste indsættes i blokke - du behøver ikke indsætte en ad gangen. Da vi samler et par ting på selve Pi, skal du advares om, at hele denne proces vil tage lang tid. Jeg vil sige gå gå selv en kop te - men når jeg siger ”lang tid”, mener jeg den bedste del af en dag - så 178 kopper ville være mere passende.
Alle kommandoer skal indtastes i terminalen, og du skal muligvis trykke på Enter på nogle punkter. Disse første par kommandoer vil opdatere systemet og installere forudsætninger:
sudo apt-get-opdatering sudo apt-get-opgradering. sudo apt-get install git-core git scons build-essential scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-optioner-dev libboost-thread-dev libboost-filesystem-dev.
Derefter 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-knude-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å operativsystemet ved, hvor Node er placeret. Brug nano-teksteditoren som følger:
sudo nano / etc / profile.
Find den linje, der siger eksport PATH og erstatte det med:
NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" eksport PATH.
Tryk på Ctrl-X for at afslutte, og Y for at gemme.
Det kan være nødvendigt at du logger ud og igen for at ændre stien til at træde i kraft, men du kan teste med kommandoen:
hvilken knude.
Hvis du ikke får nogen output, der peger på Node-binæren, gik der noget galt.
Mongo
Det næste job er at installere Mongo. Mongo er en dokumentbaseret No-SQL-database, der i stigende grad bruges af webapps. Desværre tager det evigt at installere, da vi er nødt til at kompilere det. Når du kører følgende kommandoer, får du en masse fejl som:
{standardindgang}: 13085: Advarsel: swp {b} brug udskrives til denne arkitektur.
Må ikke bekymre dig om disse. Så kør disse kommandoer for at installere Mongo:
git klon git: //github.com/RickP/mongopi.git. cd mongopi. scons. sudo scons --prefix = / opt / mongo installere scons -c.
Når det er færdigt, har vi først brug for lidt mere konfiguration for at løse tilladelsesproblemer og sikre, 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. standard for sudo update-rc.d mongodb. mongod
Denne sidste kommando starter 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 til, hvordan man automatisk lancerer mongod ved opstart, ville det være meget værdsat. For tiden fungerer det bare ikke elegant.
sudo nedlukning -r nu
Endelig er det tid til at installere Heimcontrol.js Node-applikationen.
cd ~ pi. git klon git: //github.com/ni-c/heimcontrol.js.git. cd heimcontrol.js. npm installation.
Du kan begynde at køre appen ved at skrive
node heimcontrol.js.
På dette tidspunkt skal du være i stand til at få adgang til kontrolgrænsefladen med http://localhost: 8080 fra Pi, eller erstatt localhost med IP-adressen, hvis du får adgang til den fra en anden computer (og du kunne også opsæt portvideresendelse Hvad er portvideresendelse & hvordan kan det hjælpe mig? [MakeUseOf Explains]Græder du lidt indeni, når nogen fortæller dig, at der er et problem til portvideresendelse, og det er grunden til, at din skinnende nye app ikke fungerer? Din Xbox lader dig ikke spille spil, dine torrent-downloads nægter ... Læs mere for at få adgang til den hvor som helst i verden), så jeg vil opfordre dig til at pirke rundt og tjekke, at alt fungerer med databasen, før du vedhæfter Arduino.
Hardware
Til sidst vil jeg gerne have et fastnet relæ, men i øjeblikket bruger jeg den sikrere mulighed for radiostyrede switches.
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-chippen inde. Jeg fandt instruktionerne til dette her.

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

Plugin fungerer ved at sende “tristate codes”, men disse vil variere fra producent. Henvis til RCSwitch-dokumentation for at finde dine nøjagtige koder. Det her wiki guide kan også hjælpe.
Kommunikation med Arduino sker ved hjælp af et kaldet Node-bibliotek Duino. Stop Heimcontrol-appen, hvis den kører, og installer Arduino-broen ved hjælp af følgende kommando.
npm installere duino.
Det skal Arduino have denne kode uploadet - Jeg foreslår, at du kopierer og indsætter for at installere dette fra en anden computer. Det er i det væsentlige et lytterprogram, der reagerer på serielle kommandoer fra Pi, men der er intet der forhindrer dig i at udvide det med dine egne funktioner.

Gå til webstedet, når web-appen er lanceret Indstillinger menu> Arduino.

Derfra kan du tilføje et nyt element ved at vælge RCSwitch-metode, din senders pin og den tristate adressekode. Husk at gemme, og gå derefter tilbage til hovedskærmen for din nye knap.

Bugs:
Efter mange timers fejlsøgning af koden fandt jeg, at enkeltcifrede pin-numre ikke fungerer - sørg for, at din sender er placeret på pin 10 at være sikker.
Jeg fandt også, at Arduino-pluginet var hardkodet med forkerte endelige bits til de tristate koder, som mine modtagere havde brug for. En lille forklaring først: tristatkoder består af 3 byte af information. Den første bestemmer os netværksnummeret (1-4), og det andet giver transceiveradressen (igen, 1-4, der producerer maksimalt 16 adresserbare stikkontakter). Den endelige byte består af to bit polstring plus 2 bit til / fra. Desværre er den endelige byte hardkodet til Arduino-pluginet - og i mit tilfælde var on / off-koden forkert.
Jeg måtte manuelt redigere plugins / Arduino / index.js at bruge de korrekte koder. Hvis du bruger de samme fjernbetjeningsstik som jeg er, skal du skifte linie 80 og frem til:
// Send RC-kode. if (item.value) {return that.pins [item.pin] .triState (item.code + "FFFF"); // skift fra FF0F. } andet {return that.pins [item.pin] .triState (item.code + "FFF0"); // skift fra FF00. }
Her er en demovideo af alt, hvad der fungerer:
Jeg vil forlade det her på dette tidspunkt, men sensorlæsninger og IR-fjernbetjeninger er det understøttes også. Jeg vil sandsynligvis gennemgå disse på et senere tidspunkt med nogle flere forbedringer. Hvis dette alt sammen har været lidt for kompliceret for dig, kan du tjekke disse begyndervenlige Arduino-projekter 15 store Arduino-projekter for begyndereInteresseret i Arduino-projekter, men ikke sikker på, hvor man skal begynde? Disse nybegynderprojekter vil lære dig, hvordan du kommer i gang. Læs mere .
James har en BSc i kunstig intelligens og er CompTIA A + og Network + certificeret. Han er hovedudvikler af MakeUseOf og bruger sin fritid på at spille VR paintball og brætspil. Han har bygget pc'er siden han var barn.