Hemautomatiseringsguide med Raspberry Pi och Arduino
Vi har pratat om de relativa fördelarna med Arduino och Raspberry Pi tidigare - de har sina styrkor. De behöver inte vara ett eller annat val men - kombinera dem för att få det bästa av båda världarna. Hemautomation är den perfekta kandidaten för detta. Hemautomatiseringsmarknaden översvämmas med dyra konsumentsystem, inkompatibla med varandra och kostsamt att installera. Om du har en Raspberry Pi Raspberry Pi: Den Inofficiella Tutorial Raspberry Pi: Den Inofficiella Tutorial Om du är en nuvarande Pi ägare som vill lära sig mer eller en potentiell ägare av denna kreditkortstorlek enhet, det här är inte en guide du vill sakna. Läs mer och en Arduino, du kan i princip uppnå samma sak till en bråkdel av priset, förutsatt att du är villig att lägga in tiden och ansträngningen.
Uppdatering: Sedan den här artikeln skrevs, har jag upptäckt OpenHAB, en gratis och öppen källans hemautomatiseringsplattform som körs på Raspberry Pi och kan integreras med ett stort utbud av hemmabiosystem och Arduino. Kolla in videoklippet nedan för en snyggtopp och gå vidare till vår Komma igång med OpenHAB på Raspberry Pi Komma igång med OpenHAB Hemautomation på Raspberry Pi Komma igång med OpenHAB Hemautomation på Raspberry Pi OpenHAB är en mogen, öppen källkodsautomatisering plattform som körs på en mängd olika hårdvaror och är protokoll agnostic, vilket innebär att den kan anslutas till nästan vilken hemautomatiseringsutrustning som helst på marknaden idag. Läs mer guide för att lära dig mer.
Heimcontrol.js är en Node.js app byggd för att köra på Raspberry Pi. Kombinerad med en Arduino och några avlägsna fjärrkontakter, gör det enkelt att styra AC-apparater. Du kan lägga till temperatursensorer, och även styra din TV - men vi kommer att hålla sakerna grundläggande idag och förlänga projektet i en senare handledning.
Här är en sammanfattning av projektet:
- Raspberry Pi kommer att fungera som hjärnor och ingångsporten - det kommer att köra en nod-app, kopplad till en Mongo-databas och betjäna gränssnittet till en webbläsare.
- En Arduino, som drivs från Pi, kommer att koppla mellan elektronik - radiostyrd strömbrytare, för nu.
För att göra detta behöver du:
- Arduino och en hallon Pi
- Några fjärrstyrda uttag och kontroller (jag använde dessa)
- Drivs USB-hubb
Innan vi börjar, här är en demovideo från projektskaparen själv.
Börja Afresh
Vi kommer att använda Raspian för detta projekt 11 Operativsystem du kan köra på hallon Pi 11 operativsystem du kan köra på hallon Pi Raspberry Pi-hårdvaran är bara ena sidan av myntet. Här är några olika Raspberry Pi operativsystem som du kan installera. Läs mer, och jag rekommenderar starkt att du startar från en ny installation om du tidigare har utfört andra hackar och liknande. Ladda ner den senaste Raspian-bilden, kopiera den till ditt SD-kort, och se till att expandera filsystemet och aktivera SSH. Resten av den här guiden antar att du har gjort det och kopplar över SSH med standardanvändaren.
Om du inte har gjort det här förklarar den här videon processen att förbereda ditt SD-kort i OS X:
Och den här för Windows-användare:
Förberedelse
Installationsprocessen är ganska mödosam och härledd av instruktionerna här. Tyvärr var dessa föråldrade eller inte designade för Raspian, så jag har justerat dem kraftigt nedanför. Koderna nedan kan för det mesta klistras in i block - du behöver inte klistra in en efter en. Eftersom vi sammanställer några saker på Pi själv, varnas att hela processen kommer att ta lång tid. Jag skulle säga att du ska göra dig en kopp te - men när jag säger a “länge sedan”, Jag menar den bästa delen av en dag - så 178 koppar skulle vara mer lämpliga.
Alla kommandon ska skrivas in i terminalen, och du kan behöva trycka på Enter vid vissa punkter. Dessa första kommandon uppdaterar systemet och installerar förutbeställningar:
sudo apt-get uppdatering sudo apt-få uppgradering sudo apt-get installera git-core git scons build-essential scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev
Nästa behöver vi installera 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 / nod sudo ln -s / opt / nod / bin / npm / usr / local / bin / npm
Lägg till en PATH-variabel i din profil så att operatören vet var noden finns. Använd nano-textredigeraren enligt följande:
sudo nano / etc / profil
Hitta linjen som säger exportera PATH och ersätt det med:
NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" export PATH
Tryck Ctrl-X för att avsluta och Y för att spara.
Du kan behöva logga ut och in igen för att sökvägen ändras för att träda i kraft, men du kan testa med kommandot:
vilken nod
Om du inte får någon utmatning som pekar på binärnoden, gick något fel.
mongo
Nästa jobb är att installera Mongo. Mongo är en dokumentbaserad No-SQL-databas som används alltmer av webapps. Tyvärr tar det för evigt att installera, eftersom vi måste sammanställa det. Medan du kör följande kommandon får du många fel som:
standardinmatning: 13085: Varning: swp b användningen avlägsnas för denna arkitektur
Oroa dig inte för dessa. Så kör dessa kommandon för att installera Mongo:
git klon git: //github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix = / opt / mongo installera scons -c
När det är klart, behöver vi lite mer setup först för att lösa tillståndsproblem och se till att det körs vid uppstart.
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 uppdatering-rc.d mongodb standard mongod
Det här kommandot startar Mongo-servern, och du måste öppna en ny terminal för att fortsätta med de andra kommandona. Jag är inte helt säker på det här steget, så om någon kan korrigera detta i kommentarerna om hur man ska starta mongod automatiskt vid starten, skulle det mycket uppskattas. För nu fungerar det, inte bara elegant.
sudo shutdown -r nu
Slutligen är det dags att installera Heimcontrol.js Node-applikationen.
cd ~ pi git klon git: //github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm installera
Du kan börja köra appen genom att skriva
nod homecontrol.js
Vid denna punkt bör du kunna komma åt kontrollgränssnittet med http: // localhost: 8080 från Pi, eller ersätt localhost med IP-adressen om du använder den från en annan dator (och du kan också ställa in port vidarebefordran Vad är port vidarebefordran och hur kan det hjälpa mig? [MakeUseOf Förklarar] Vad är port vidarebefordran & Hur kan det hjälpa mig? [MakeUseOf Explains] Skriker du lite inuti när någon berättar att det finns ett portförmedlingsproblem och det är därför att din glänsande nya app inte fungerar? Din Xbox låter dig inte spela spel, dina torrentladdningar vägra ... Läs mer för att få tillgång till den från var som helst i världen), så jag skulle vilja uppmuntra dig att poke runt och kontrollera att allt fungerar med databasen innan du bifogar Arduino.
Hårdvara
Så småningom skulle jag vilja ha ett hårddiskrelä, men för tillfället använder jag det säkrare alternativet för radiostyrda omkopplare.
Jag har använt några rimligt billiga 20 pundssatser från Maplin som levereras med 3 uttag, och öppnade fjärrkontrollen så att jag kunde gränssnitt direkt med 433 MHz-chipet inuti. Jag hittade instruktionerna för detta här.
Du kan även köpa enskilda 433 MHz sändare redo för användning på eBay eller från hobbyelektronikleverantörer. Allt du behöver är att ansluta VCC till 5 V på Arduino, GNDs och en enda styrstift - kom ihåg vilken du använde. (Schematisk av Willi Thiel)
Pluggen fungerar genom att skicka “tristatkoder”, men dessa kommer att variera per tillverkare. Se RCSwitch-dokumentationen för att hitta exakta koder. Den här wikihandboken kan också hjälpa till.
Kommunikation med Arduino görs med ett Node-bibliotek som heter Duino. Stoppa Heimcontrol-appen om den körs och installera Arduino-broen med följande kommando.
npm installera duino
Arduino måste ha denna kod uppladdad - jag föreslår att du kopierar och klistrar för att installera den här från en annan dator. Det är i grunden ett lyssnarprogram som svarar på seriella kommandon från Pi, men det finns inget som hindrar dig att förlänga det med dina egna funktioner.
När webbprogrammet lanserades, gå till inställningar meny> Arduino.
Därifrån kan du lägga till ett nytt objekt, välja RCSwitch-metod, sändarens stift och tristateadresskoden. Kom ihåg att spara, sedan gå tillbaka till huvudskärmen för din nya knapp.
Bugs:
Efter många timmars avkodning av koden fann jag att enstaka stiftnummer inte fungerade - se till att sändaren är placerad på stiftet 10 För att vara säker.
Jag fann också att Arduino plugin var hårdkodad med felaktiga slutliga bitar för de tristatkoder som mina mottagare behövde. En liten förklaring först: Tristatkoder består av 3 byte information. Den första bestämmer oss nätverksnumret (1-4), och det andra tillhandahåller transceiveradressen (igen 1-4, vilket ger max 16 adresserbara uttag). Den sista byten består av två bitar polstring, plus 2 bitar för på / av. Tyvärr är den sista byten hårdkodad till Arduino-plugin - och i mitt fall var on / off-koden felaktig.
Jag var tvungen att manuellt redigera insticksmoduler / arduino / index.js att använda rätt koder. Om du använder samma fjärrkontakter som jag är, byt linje 80 vidare till:
// Skicka RC-kod om (item.value) return that.pins [item.pin] .triState (item.code + "FFFF"); // ändra från FF0F else return that.pins [item.pin] .triState (item.code + "FFF0"); // ändra från FF00
Här är en demovideo av allt som fungerar:
Jag kommer att lämna den här här, men sensoravläsningar och IR-fjärrkontroller stöds också. Jag kommer noga återkomma till dessa senare, med några fler förbättringar. Om det här har varit lite för komplicerat för dig, kolla kanske dessa nybörjarevänliga Arduino-projekt 15 Great Arduino-projekt för nybörjare 15 Great Arduino-projekt för nybörjare Intresserad av Arduino men inte säker på var du ska börja? Här är några av våra bästa Arduino-projekt för nybörjare att komma igång med! Läs mer .
.