Advertentie

We hebben eerder gesproken over de relatieve verdiensten van Arduino en Raspberry Pi - ze hebben elk hun sterke punten. Ze hoeven echter geen keuze of keuze te zijn - combineer ze om het beste van twee werelden te krijgen. Domotica is hiervoor de perfecte kandidaat. De markt voor domotica wordt overspoeld met dure consumentensystemen, onderling onverenigbaar en kostbaar om te installeren. Als je een Raspberry Pi hebt Raspberry Pi: The Unofficial TutorialOf je nu een huidige Pi-eigenaar bent die meer wil leren of een potentiële eigenaar van dit apparaat op creditcardformaat, dit is geen gids die je wilt missen. Lees verder en een Arduino, je kunt in principe hetzelfde bereiken voor een fractie van de prijs, ervan uitgaande dat je bereid bent om tijd en moeite te steken.

Update: sinds dit artikel is geschreven, heb ik OpenHAB ontdekt, een gratis en open source domotica-platform die op Raspberry Pi draait en kan worden geïntegreerd met een enorm scala aan kant-en-klare smart home-kits Arduino. Bekijk de onderstaande video voor een sneak peak en ga dan naar onze

instagram viewer
Aan de slag met OpenHAB op Raspberry Pi Aan de slag met OpenHAB Home Automation op Raspberry PiOpenHAB is een volwassen, open source huisautomatiseringsplatform dat op verschillende hardware draait en dat is protocol agnostisch, wat betekent dat het kan worden aangesloten op bijna alle domotica-hardware op de markt vandaag. Lees verder gids voor meer informatie.

Heimcontrol.js is een Node.js-app die is gebouwd om op Raspberry Pi te draaien. Gecombineerd met een Arduino en enkele standaard afstandsbedieningscontactdozen, maakt het de bediening van AC-apparaten eenvoudig. Je kunt temperatuursensoren toevoegen en zelfs je tv bedienen, maar we houden het vandaag eenvoudig en breiden het project uit in een latere tutorial.

Hier is een overzicht van het project:

  • De Raspberry Pi zal fungeren als het brein en de gateway van bewerkingen - het zal een Node-app uitvoeren, gekoppeld aan een Mongo-database en de front-end-interface bedienen voor elke webbrowser.
  • Een Arduino, gevoed door de Pi, zal voorlopig een interface vormen tussen de elektronica - radiobesturingsschakelaars.

Hiervoor heeft u nodig:

  • Arduino en een Raspberry Pi
  • Sommige op afstand bedienbare stopcontacten en controller (ik gebruikte deze)
  • Aangedreven USB-hub
RC-aansluitingen

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

Met een schone lei beginnen

We gaan Raspian gebruiken voor dit project 11 besturingssystemen die op uw Raspberry Pi draaienWat uw Raspberry Pi-project ook is, er is een besturingssysteem voor. We helpen u het beste Raspberry Pi-besturingssysteem te vinden voor uw behoeften. Lees verder , en ik raad je ten zeerste aan te beginnen met een nieuwe installatie als je eerder andere hacks en dergelijke hebt uitgevoerd. Download het laatste Raspian-afbeelding, kopieer het naar uw SD-kaart en zorg ervoor dat u het bestandssysteem uitbreidt en SSH inschakelt. De rest van deze handleiding gaat ervan uit dat je dit hebt gedaan en maakt verbinding via SSH met de standaardgebruiker.

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

En deze voor Windows-gebruikers:

Voorbereiding

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

Alle opdrachten moeten in de terminal worden getypt en het kan zijn dat u op sommige punten op Enter moet drukken. Deze eerste paar opdrachten werken het systeem bij en installeren de vereisten:

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-programma-opties-dev libboost-thread-dev libboost-bestandssysteem-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 / knooppunt. 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 export PATH 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 Y om op te slaan.

Mogelijk moet u zich afmelden en opnieuw aanmelden om de padwijzigingen door te voeren, maar u kunt testen met de opdracht:

welk knooppunt. 

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

Mongo

De volgende taak is installeren Mongo. Mongo is een documentgebaseerde No-SQL-database die in toenemende mate wordt gebruikt door web-apps. Helaas duurt het een eeuwigheid om te installeren omdat we het moeten compileren. Tijdens het uitvoeren van de volgende opdrachten krijg je veel fouten zoals:

{standard input}: 13085: Waarschuwing: swp {b} gebruik is verouderd voor deze architectuur. 

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

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

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

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-standaardinstellingen. Mongod

Deze laatste opdracht start de Mongo-server en je 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 hoe mongod automatisch wordt gestart bij het opstarten, zou het zeer op prijs worden gesteld. Voorlopig 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 installeren. 

U kunt de app starten door te typen


knooppunt heimcontrol.js. 

Op dit punt zou u toegang moeten hebben tot de besturingsinterface http://localhost: 8080 van de Pi, of vervang localhost door het IP-adres als je het vanaf een andere computer gebruikt (en dat zou ook kunnen poort doorsturen instellen Wat is Port Forwarding en hoe kan het mij helpen? [MakeUseOf Explains]Huil je een beetje van binnen als iemand je vertelt dat er een probleem met het doorsturen van poorten is en dat daarom je glanzende nieuwe app niet werkt? Je Xbox laat je geen games spelen, je torrent-downloads weigeren ... Lees verder om er overal ter wereld toegang toe te hebben), dus ik raad u aan rond te snuffelen en te controleren of alles werkt met de database voordat u de Arduino aansluit.

Hardware

Uiteindelijk zou ik graag een bedraad relais willen, maar voorlopig gebruik ik de veiligere optie van radiogestuurde schakelaars.

Ik heb een aantal redelijk goedkope sets van £ 20 van Maplin gebruikt, die worden geleverd met drie stopcontacten, en ik heb de afstandsbediening geopend zodat ik rechtstreeks kon communiceren met de 433 MHz-chip erin. Ik heb de instructies hiervoor gevonden hier.

rc-controller-hack

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

arduino-rcswitch

De plug-in werkt door het verzenden van "tristate codes", maar deze verschillen per fabrikant. Verwijs naar 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 zogenaamde Node-bibliotheek duino. Stop de Heimcontrol-app als deze actief is en installeer de Arduino-brug met de volgende opdracht.

npm installeer duino. 

De Arduino moet hebben deze code 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 opdrachten van de Pi, maar er is niets dat je ervan weerhoudt het uit te breiden met je eigen functies.

rc-instellingen

Ga naar de Instellingen menu> Arduino.

heimcontrol-menu-instellingen

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

rcswitch-instelling

Bugs:

Na vele uren debuggen van de code, ontdekte ik dat pincodes met één cijfer niet werkten - zorg ervoor dat uw zender op de pin is geplaatst 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. Eerst een kleine uitleg: tristate codes bestaan ​​uit 3 bytes aan informatie. De eerste bepaalt ons het netwerknummer (1-4) en de tweede geeft het zendontvangeradres (opnieuw 1-4, met een maximum van 16 adresseerbare sockets). De laatste byte bestaat uit twee stukjes opvulling, plus twee 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 het handmatig bewerken plugins / arduino / index.js om de juiste codes te gebruiken. Als je dezelfde afstandsbedieningscontactdozen gebruikt als ik, wijzig dan regel 80 verder in:

// Stuur RC-code. if (item.value) {retourneer that.pins [item.pin] .triState (item.code + "FFFF"); // verandering van FF0F. } anders {retourneer that.pins [item.pin] .triState (item.code + "FFF0"); // wijziging van FF00. }

Hier is een demovideo van alles wat werkt:

Ik laat het hier op dit punt achter, maar sensorwaarden en IR-afstandsbedieningen zijn dat wel ook ondersteund. Ik zal deze waarschijnlijk op een later tijdstip opnieuw bekijken met wat meer verbeteringen. Als dit allemaal iets te ingewikkeld voor je is geweest, kijk dan eens naar deze beginnersvriendelijke Arduino-projecten 15 geweldige Arduino-projecten voor beginnersGeïnteresseerd in Arduino-projecten maar weet u niet waar u moet beginnen? Deze beginnersprojecten leren je hoe je aan de slag kunt. Lees verder .

James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt al pc's sinds hij een kind was.