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 met creditcardformaat, dit is geen handleiding 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 de moeite te nemen.
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 huisautomatisering 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 naar elke webbrowser bedienen.
- 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 10 Besturingssystemen die je kunt uitvoeren met Raspberry Pi 10 Besturingssystemen die je kunt uitvoeren met Raspberry Pi De hardware van de Raspberry Pi alleen is slechts een kant van het verhaal: vandaag onderzoek ik 10 verschillende besturingssystemen je 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 een 'lange tijd' zeg, bedoel ik 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-essential 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 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
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 met de instructie PAD exporteren en vervangen 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:
which node
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:
{standard input}:13085: Warning: swp{b} use is deprecated for this architecture
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 defaults 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 now
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
node heimcontrol.js
Op dit punt moet u toegang hebben tot de besturingsinterface met http: // localhost: 8080 vanaf de Pi, of localhost vervangen door het IP-adres als u deze vanaf een andere computer opent (en u kunt ook een poort instellen doorsturen Wat is doorsturen van poorten en hoe kan het mij helpen? [MakeUseOf Explains] Wat is doorsturen van poorten en hoe kan dit mij helpen? [MakeUseOf Explains] Huil je een beetje naar binnen wanneer iemand je vertelt dat er een probleem is met de doorstuurpoorten en daarom is jouw glanzende nieuwe app werkt niet? Je Xbox laat je geen games spelen, je torrent-downloads weigeren ... Lees meer om het overal ter wereld te openen), dus ik zou je willen aanmoedigen om rond te snuffelen en te controleren of alles in orde is werken met de database voordat u 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 afzonderlijke 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 "tristate codes" te verzenden, 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 install 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 functies.
Ga met de web-app gelanceerd naar het menu Instellingen > Arduino .
Van daaruit kun je een nieuw item toevoegen, door de RCSwitch-methode, de pin van je 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 debuggen van de code, vond ik dat pincodes met één cijfer niet werkten - zorg ervoor dat je zender op pin 10 staat 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 plug-ins / arduino / index.js handmatig bewerken om de juiste codes te gebruiken. Als u dezelfde afstandsbedieningscontacten gebruikt als ik, verander regels 80 dan verder naar:
// 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 }
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. 10 Great Arduino Projects for Beginners 10 Great Arduino Projects for Beginners Het voltooien van een Arduino-project geeft je een gevoel van voldoening als geen ander. De meeste beginners weten echter niet waar ze moeten beginnen, en zelfs projecten voor beginners kunnen behoorlijk intimiderend lijken. Lees verder .
Image Credits: Door Bell Via Flickr