Home Automation Guide met Raspberry Pi en Arduino

Home Automation Guide met Raspberry Pi en Arduino / Slimme woning

We hebben eerder gesproken over de relatieve verdiensten van Arduino en Raspberry Pi - ze hebben elk hun sterke punten. Ze hoeven echter ook geen keuze te zijn - combineer ze om het beste van beide werelden te krijgen. Huisautomatisering is hier de perfecte kandidaat voor. De markt voor domotica wordt overspoeld met dure consumentensystemen, die incompatibel zijn met elkaar en kostbaar zijn om te installeren. Als je een Raspberry Pi Raspberry Pi hebt: De onofficiële zelfstudie Raspberry Pi: de onofficiële zelfstudie Of je nu een pi-eigenaar bent die meer wil leren of een potentiële eigenaar van dit apparaat voor creditcardformaat, dit is geen gids voor jou wil missen. Read More en een Arduino, je kunt in principe hetzelfde bereiken tegen een fractie van de prijs, ervan uitgaande dat je bereid bent om de tijd en moeite in te zetten.

Update: Sinds dit artikel is geschreven, heb ik OpenHAB ontdekt, een gratis en open source huisautomatiseringsplatform dat op Raspberry Pi draait en kan worden geïntegreerd met een enorm aanbod van de standaard slimme huiskit en Arduino. Bekijk de onderstaande video voor een sneak peak en ga dan naar onze Aan de slag met OpenHAB op Raspberry Pi Aan de slag met OpenHAB Home Automation op Raspberry Pi Aan de slag met OpenHAB Home Automation op Raspberry Pi OpenHAB is een volwassen, open source domotica platform dat op verschillende hardware draait en protocol-agnostisch is, wat betekent dat het verbinding kan maken met bijna elke huisautomatiseringshardware die tegenwoordig op de markt is. Lees meer gids voor meer informatie.

Heimcontrol.js is een Node.js-app gebouwd om te draaien op Raspberry Pi. Gecombineerd met een Arduino en een aantal standaard afstandsbedieningscontactdozen, maakt dit het besturen van AC-apparaten gemakkelijk. U kunt temperatuursensoren toevoegen en zelfs uw tv besturen, maar we houden de zaken vandaag nog steeds en breiden het project uit in een later zelfstudie.

Hier is een overzicht van het project:

  • De Raspberry Pi zal fungeren als de hersenen en de gateway van operaties - het zal een Node-app draaien, gekoppeld aan een Mongo-database, en de front-end-interface bedienen met elke webbrowser.
  • Een Arduino, gevoed vanuit de Pi, zal voortaan een interface vormen tussen de elektronica - schakelaars voor radiobesturing.

Om dit te doen, hebt u nodig:

  • Arduino en een Raspberry Pi
  • Sommige op afstand bediende sockets en controller (ik gebruikte deze)
  • Aangedreven USB-hub

Voordat we beginnen, hier is een demovideo van de maker van het project zelf.

Met een schone lei beginnen

We gaan Raspian voor dit project gebruiken 11 Besturingssystemen die u op Raspberry Pi 11 kunt gebruiken Besturingssystemen die u op Raspberry Pi kunt gebruiken De hardware van de Raspberry Pi is slechts één kant van de medaille. Hier zijn enkele verschillende Raspberry Pi-besturingssystemen die u kunt installeren. Meer lezen en ik raad ten stelligste aan te beginnen met een nieuwe installatie als u eerder andere hacks en dergelijke hebt uitgevoerd. Download de nieuwste Raspian-afbeelding, kopieer deze naar je SD-kaart en zorg ervoor dat je het bestandssysteem uitbreidt en SSH inschakelt. De rest van deze handleiding gaat ervan uit dat u dit hebt gedaan en verbindt via SSH met de standaardgebruiker.

Als je dit nog niet eerder hebt gedaan, wordt in deze video het proces uitgelegd van het voorbereiden van je SD-kaart in OS X:

En deze voor Windows-gebruikers:

Voorbereiding

Het installatieproces is nogal omslachtig en is afgeleid van de instructies hier. Helaas waren deze verouderd of niet ontworpen voor Raspian, dus ik heb ze zwaar hieronder aangepast. De onderstaande codes kunnen meestal in blokken worden geplakt - u hoeft niet één voor één te plakken. Aangezien we een paar dingen aan het samenstellen zijn op de Pi, wees gewaarschuwd dat dit hele proces lang zal duren. Ik zou zeggen dat je een kopje thee gaat maken - maar als ik het zeg “lange tijd”, Ik bedoel het beste deel van een dag - dus 178 kopjes zouden passender zijn.

Alle opdrachten moeten in de Terminal worden ingevoerd en op sommige punten moet u mogelijk op Enter drukken. Deze eerste paar commando's zullen het systeem updaten en de eerste vereisten installeren:

sudo apt-get update sudo apt-get upgrade sudo apt-get install git-core git scons build-essentiële scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev 

Vervolgens moeten we Node installeren:

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 knooppunt-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 

Voeg een PATH-variabele toe aan uw profiel, zodat het besturingssysteem weet waar het knooppunt zich bevindt. Gebruik de nano-teksteditor als volgt:

sudo nano / etc / profile 

Zoek de regel die zegt PAD exporteren en vervang het door:

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

Druk op Ctrl-X om af te sluiten en op Y om op te slaan.

U moet mogelijk opnieuw en opnieuw inloggen om de padwijzigingen door te voeren, maar u kunt testen met de opdracht:

welk knooppunt 

Als er geen uitvoer naar het binaire knooppunt verwijst, is er iets misgegaan.

Mongo

De volgende taak is om Mongo te installeren. Mongo is een op documenten gebaseerde No-SQL-database die steeds meer wordt gebruikt door web-apps. Helaas zal dit een eeuwigheid duren om te installeren aangezien we het moeten compileren. Tijdens het uitvoeren van de volgende opdrachten krijg je veel fouten, zoals:

standaard invoer: 13085: waarschuwing: gebruik van swp b is gedeprecieerd voor deze architectuur 

Maak je daar geen zorgen over. Voer deze opdrachten dus uit om Mongo te installeren:

git clone git: //github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix = / opt / mongo install scons -c 

Wanneer dat is voltooid, hebben we eerst wat meer configuratie nodig om machtigingsproblemen op te lossen en ervoor te zorgen dat het bij het opstarten wordt uitgevoerd.

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 standaard mongod

Deze laatste opdracht start de Mongo-server en u moet een nieuwe terminal openen om door te gaan met de andere opdrachten. Ik ben niet helemaal zeker van deze stap, dus als iemand dit kan corrigeren in de opmerkingen over het automatisch opstarten van mongod bij het opstarten, zou dit zeer gewaardeerd worden. Voor nu werkt het, alleen niet elegant.

sudo shutdown -r nu

Eindelijk is het tijd om de Heimcontrol.js Node-applicatie te installeren.

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

U kunt beginnen met het uitvoeren van de app door te typen

 knoop heimcontrol.js 

Op dit punt zou u toegang moeten hebben tot de controle-interface met http: // localhost: 8080 vanaf de Pi, of vervang localhost door het IP-adres als u deze vanaf een andere computer opent (en u kunt ook poort doorsturen instellen Wat is poort doorsturen en hoe kan het mij helpen? [MakeUseOf Explains] Wat is poortdoorsturing & Hoe kan het me helpen? [MakeUseOf Explains] Huil je een beetje naar binnen als iemand je vertelt dat er een probleem is met de poortdoorsturing en daarom zal je glanzende nieuwe app niet werken? Je Xbox laat je geen games spelen, je torrent-downloads weiger ... Lees meer om het overal ter wereld te openen), dus ik moedig je aan om rond te snuffelen en te controleren of alles werkt met de database voordat je de Arduino bevestigt.

Hardware

Uiteindelijk zou ik een bedrade estafette willen, maar voor nu gebruik ik de veiligere optie van radiogestuurde schakelaars.

Ik heb een paar goedkope £ 20-sets van Maplin met 3 sockets gebruikt en de afstandsbediening geopend, zodat ik rechtstreeks kon interfacen met de 433 MHz-chip erin. Ik heb hier de instructies voor gevonden.

Je kunt ook individuele 433 MHz-zenders kopen die klaar zijn voor gebruik op eBay of bij leveranciers van hobbyelektronica. Het enige dat u nodig hebt, is de VCC verbinden met 5 V op de Arduino, de GND's en een enkele controlepen - onthoud welke u hebt gebruikt. (Schematisch door Willi Thiel)

De plug-in werkt door te verzenden “tristate codes”, maar deze zullen per fabrikant verschillen. Raadpleeg de RCSwitch-documentatie om uw exacte codes te vinden. Deze wiki-gids kan ook helpen.

Communicatie met de Arduino wordt gedaan met behulp van een knooppuntbibliotheek genaamd duino. Stop de Heimcontrol-app als deze wordt uitgevoerd en installeer de Arduino-brug met behulp van de volgende opdracht.

npm installeer duino 

De Arduino moet deze code hebben geüpload - ik stel voor dat je kopieert en plakt om dit vanaf een andere computer te installeren. Het is in wezen een luisterprogramma dat reageert op seriële commando's van de Pi, maar er is niets dat je kunt stoppen om het uit te breiden met je eigen kenmerken.

Ga met de web-app gelanceerd naar de instellingen menu> Arduino.

Van daaruit kunt u een nieuw item toevoegen, door de RCSwitch-methode, de pin van uw zender en de tristate-adrescode te kiezen. Vergeet niet om op te slaan en ga terug naar het hoofdscherm voor je nieuwe knop.

bugs:

Na vele uren foutopsporing van de code, vond ik dat pincodes met één cijfer niet werkten - zorg ervoor dat je zender op pin staat 10 om zeker te zijn.

Ik ontdekte ook dat de Arduino-plug-in hard gecodeerd was met onjuiste laatste bits voor de tristate-codes die mijn ontvangers nodig hadden. Een beetje uitleg eerst: tristate codes bestaan ​​uit 3 bytes aan informatie. De eerste bepaalt ons het netwerknummer (1-4) en de tweede biedt het transceiver-adres (opnieuw, 1-4, met een maximum van 16 adresseerbare sockets). De laatste byte bestaat uit twee stukjes opvulling, plus 2 bits voor aan / uit. Helaas is de laatste byte hard gecodeerd in de Arduino-plug-in - en in mijn geval was de aan / uit-code onjuist.

Ik moest de. Handmatig bewerken plugins / arduino / index.js om de juiste codes te gebruiken. Als je dezelfde afstandsbedieningscontacten gebruikt als ik, verander regels 80 dan verder naar:

// Stuur RC-code als (item.value) return that.pins [item.pin] .triState (item.code + "FFFF"); // wijzig van FF0F else return that.pins [item.pin] .triState (item.code + "FFF0"); // wijzigen van FF00

Hier is een demovideo van alles wat werkt:

Ik laat het hier op dit punt achter, maar sensorwaarden en IR-afstandsbedieningen worden ook ondersteund. Ik zal deze waarschijnlijk op een later tijdstip opnieuw bezoeken met wat meer verbeteringen. Als dit allemaal iets te ingewikkeld voor je is geweest, kijk dan eens naar deze beginnersvriendelijke Arduino-projecten. 15 Great Arduino Projects for Beginners 15 Great Arduino Projects for Beginners Interesse in Arduino, maar niet zeker waar te beginnen? Hier zijn enkele van onze beste Arduino-projecten voor beginners om mee te beginnen! Lees verder .

.