Werbung
Wir haben bereits über die relativen Vorzüge von Arduino und Raspberry Pi gesprochen - sie haben jeweils ihre Stärken. Sie müssen jedoch weder eine noch eine Wahl sein - kombinieren Sie sie, um das Beste aus beiden Welten zu erhalten. Die Hausautomation ist dafür der perfekte Kandidat. Der Markt für Hausautomation ist mit teuren Verbrauchersystemen überflutet, die nicht miteinander kompatibel und teuer in der Installation sind. Wenn Sie einen Himbeer-Pi haben Raspberry Pi: Das inoffizielle TutorialEgal, ob Sie ein aktueller Pi-Besitzer sind, der mehr erfahren möchte, oder ein potenzieller Besitzer dieses Geräts in Kreditkartengröße, dies ist kein Leitfaden, den Sie verpassen sollten. Weiterlesen und mit einem Arduino können Sie im Grunde das Gleiche zu einem Bruchteil des Preises erreichen, vorausgesetzt, Sie sind bereit, Zeit und Mühe zu investieren.
Update: Seit dieser Artikel geschrieben wurde, habe ich OpenHAB entdeckt, eine kostenlose Open Source-Plattform für die Hausautomation Das läuft auf Raspberry Pi und kann auch in eine große Auswahl an handelsüblichen Smart-Home-Kits integriert werden Arduino. Schauen Sie sich das Video unten an, um einen kleinen Einblick zu erhalten, und gehen Sie dann zu unserem Erste Schritte mit OpenHAB auf Raspberry Pi Erste Schritte mit OpenHAB Home Automation auf Raspberry PiOpenHAB ist eine ausgereifte Open-Source-Plattform für die Hausautomation, die auf einer Vielzahl von Hardware ausgeführt wird Protokollunabhängig, dh es kann eine Verbindung zu nahezu jeder Hausautomationshardware auf dem Markt hergestellt werden heute. Weiterlesen Anleitung, um mehr zu erfahren.
Heimcontrol.js ist eine Node.js-App, die auf Raspberry Pi ausgeführt werden kann. In Kombination mit einem Arduino und einigen handelsüblichen Fernbedienungsbuchsen erleichtert dies die Steuerung von Wechselstromgeräten. Sie können Temperatursensoren hinzufügen und sogar Ihren Fernseher steuern - aber wir werden die Dinge heute grundlegend halten und das Projekt in einem späteren Tutorial erweitern.
Hier ist eine Aufschlüsselung des Projekts:
- Der Raspberry Pi fungiert als Gehirn und Gateway für Operationen. Er führt eine Node-App aus, die an eine Mongo-Datenbank gebunden ist, und dient als Front-End-Oberfläche für jeden Webbrowser.
- Ein vom Pi gespeistes Arduino wird vorerst eine Schnittstelle zwischen den elektronischen Leistungsschaltern der Funksteuerung bilden.
Dazu benötigen Sie:
- Arduino und ein Himbeer-Pi
- Einige ferngesteuerte Steckdosen und Controller (ich habe verwendet diese)
- Angetriebener USB-Hub
Bevor wir beginnen, finden Sie hier ein Demo-Video des Projekterstellers.
Neu anfangen
Wir werden Raspian für dieses Projekt verwenden 11 Betriebssysteme, die auf Ihrem Raspberry Pi ausgeführt werdenUnabhängig von Ihrem Raspberry Pi-Projekt gibt es ein Betriebssystem dafür. Wir helfen Ihnen, das beste Raspberry Pi-Betriebssystem für Ihre Anforderungen zu finden. Weiterlesen und ich würde dringend empfehlen, mit einer Neuinstallation zu beginnen, wenn Sie zuvor andere Hacks und dergleichen durchgeführt haben. Laden Sie die neueste Version herunter Raspian BildKopieren Sie es auf Ihre SD-Karte, und erweitern Sie das Dateisystem, und aktivieren Sie SSH. Im Rest dieses Handbuchs wird davon ausgegangen, dass Sie dies getan haben und mit dem Standardbenutzer eine Verbindung über SSH herstellen.
Wenn Sie dies noch nicht getan haben, wird in diesem Video die Vorbereitung Ihrer SD-Karte in OS X erläutert:
Und dieses für Windows-Benutzer:
Vorbereitung
Der Installationsprozess ist ziemlich mühsam und leitet sich aus dem Anweisungen hier. Leider waren diese veraltet oder nicht für Raspian konzipiert, daher habe ich sie unten stark angepasst. Die folgenden Codes können meistens in Blöcken eingefügt werden - Sie müssen sie nicht einzeln einfügen. Da wir einige Dinge auf dem Pi selbst kompilieren, sollten Sie gewarnt sein, dass dieser gesamte Vorgang lange dauern wird. Ich würde sagen, mach dir eine Tasse Tee - aber wenn ich „lange Zeit“ sage, meine ich den besten Teil eines Tages - also wären 178 Tassen besser geeignet.
Alle Befehle sollten in das Terminal eingegeben werden, und Sie müssen möglicherweise an einigen Stellen die Eingabetaste drücken. Diese ersten Befehle aktualisieren das System und installieren die Voraussetzungen:
sudo apt-get update sudo apt-get upgrade. sudo apt-get install git-core git scons Build-wesentliche Scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-Programmoptionen-dev libboost-thread-dev libboost-Dateisystem-dev.
Als nächstes müssen wir Node installieren:
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 knoten-v0.10.2-linux-arm-pi / * / opt / knoten. sudo ln -s / opt / knoten / bin / knoten / usr / lokal / bin / knoten. sudo ln -s / opt / knoten / bin / npm / usr / lokal / bin / npm.
Fügen Sie Ihrem Profil eine PATH-Variable hinzu, damit das Betriebssystem weiß, wo sich der Knoten befindet. Verwenden Sie den Nano-Texteditor wie folgt:
sudo nano / etc / profile.
Suchen Sie die Zeile mit der Aufschrift PATH exportieren und ersetzen Sie es durch:
NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" PATH exportieren.
Drücken Sie Strg-X zum Beenden und Y zum Speichern.
Möglicherweise müssen Sie sich abmelden und erneut anmelden, damit die Pfadänderungen wirksam werden. Sie können jedoch Folgendes testen:
welcher Knoten.
Wenn Sie keine Ausgabe erhalten, die auf die Node-Binärdatei verweist, ist ein Fehler aufgetreten.
Mongo
Der nächste Job ist die Installation Mongo. Mongo ist eine dokumentbasierte No-SQL-Datenbank, die zunehmend von Webanwendungen verwendet wird. Leider wird die Installation ewig dauern, da wir sie kompilieren müssen. Beim Ausführen der folgenden Befehle werden viele Fehler angezeigt:
{Standardeingabe}: 13085: Warnung: Die Verwendung von swp {b} ist für diese Architektur veraltet.
Mach dir darüber keine Sorgen. Führen Sie die folgenden Befehle aus, um Mongo zu installieren:
Git-Klon Git: //github.com/RickP/mongopi.git. CD Mongopi. Scons. sudo scons --prefix = / opt / mongo installiere scons -c.
Wenn dies abgeschlossen ist, benötigen wir zunächst etwas mehr Setup, um Berechtigungsprobleme zu beheben und sicherzustellen, dass es beim Start ausgeführt wird.
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 Standardeinstellungen. Mongod
Dieser letzte Befehl startet den Mongo-Server und Sie müssen ein neues Terminal öffnen, um mit den anderen Befehlen fortzufahren. Ich bin von diesem Schritt nicht ganz überzeugt. Wenn also jemand dies in den Kommentaren darüber korrigieren kann, wie Mongod beim Start automatisch gestartet wird, wäre er sehr dankbar. Im Moment funktioniert es nur nicht elegant.
sudo shutdown -r jetzt
Schließlich ist es Zeit, die Heimcontrol.js Node-Anwendung zu installieren.
cd ~ pi. Git-Klon Git: //github.com/ni-c/heimcontrol.js.git. cd heimcontrol.js. npm installieren.
Sie können die App durch Eingabe starten
Knoten heimcontrol.js.
Zu diesem Zeitpunkt sollten Sie in der Lage sein, auf die Steuerungsschnittstelle mit zuzugreifen http://localhost: 8080 oder ersetzen Sie localhost durch die IP-Adresse, wenn Sie von einem anderen Computer aus darauf zugreifen (und Sie könnten es auch Portweiterleitung einrichten Was ist Port Forwarding und wie kann es mir helfen? [MakeUseOf erklärt]Weinen Sie innerlich ein wenig, wenn Ihnen jemand sagt, dass ein Problem mit der Portweiterleitung vorliegt und Ihre glänzende neue App deshalb nicht funktioniert? Auf deiner Xbox kannst du keine Spiele spielen, deine Torrent-Downloads lehnen ab ... Weiterlesen Ich empfehle Ihnen daher, sich umzuschauen und zu überprüfen, ob alles mit der Datenbank funktioniert, bevor Sie das Arduino anhängen.
Hardware
Irgendwann hätte ich gerne ein festverdrahtetes Relais, aber jetzt verwende ich die sicherere Option für funkgesteuerte Schalter.
Ich habe einige recht günstige 20-Pfund-Sets von Maplin verwendet, die mit 3 Sockeln geliefert werden, und die Fernbedienung geöffnet, damit ich direkt mit dem 433-MHz-Chip im Inneren kommunizieren kann. Ich habe die Anleitung dazu gefunden Hier.
Sie können auch einzelne 433-MHz-Sender kaufen, die bei eBay oder bei Anbietern von Hobbyelektronik einsatzbereit sind. Alles, was Sie brauchen, ist das Anschließen des VCC an 5 V am Arduino, die GNDs und einen einzelnen Steuerstift - denken Sie daran, welchen Sie verwendet haben. (Schema von Willi Thiel)
Das Plugin sendet "Tristate-Codes", diese variieren jedoch je nach Hersteller. Siehe die RCSwitch-Dokumentation um Ihre genauen Codes zu finden. Diese Wiki-Guide kann auch helfen.
Die Kommunikation mit dem Arduino erfolgt über eine aufgerufene Knotenbibliothek duino. Stoppen Sie die Heimcontrol-App, wenn sie ausgeführt wird, und installieren Sie die Arduino-Bridge mit dem folgenden Befehl.
npm duino installieren.
Der Arduino muss haben Dieser Code wurde hochgeladen - Ich schlage vor, Sie kopieren und einfügen, um dies von einem anderen Computer zu installieren. Es handelt sich im Wesentlichen um ein Listener-Programm, das auf serielle Befehle vom Pi reagiert, aber nichts hindert Sie daran, es mit Ihren eigenen Funktionen zu erweitern.
Gehen Sie mit der gestarteten Web-App zu die Einstellungen Menü> Arduino.
Von dort aus können Sie ein neues Element hinzufügen, indem Sie die RCSwitch-Methode, den Pin Ihres Senders und den Tristate-Adresscode auswählen. Denken Sie daran, zu speichern, und kehren Sie dann zum Hauptbildschirm für Ihre neue Schaltfläche zurück.
Bugs:
Nach vielen Stunden des Debuggens des Codes stellte ich fest, dass einstellige PIN-Nummern nicht funktionierten. Stellen Sie sicher, dass Ihr Sender auf PIN platziert ist 10 um sicher zu sein.
Ich fand auch heraus, dass das Arduino-Plugin mit falschen Endbits für die Tristate-Codes, die meine Empfänger benötigten, fest codiert war. Eine kleine Erklärung zuerst: Tristate-Codes bestehen aus 3 Informationsbytes. Der erste bestimmt die Netzwerknummer (1-4) und der zweite die Transceiver-Adresse (wiederum 1-4, wodurch maximal 16 adressierbare Sockets erzeugt werden). Das letzte Byte besteht aus zwei Auffüllbits plus 2 Bits für Ein / Aus. Leider ist das letzte Byte fest in das Arduino-Plugin codiert - und in meinem Fall war der Ein / Aus-Code falsch.
Ich musste das manuell bearbeiten plugins / arduino / index.js um die richtigen Codes zu verwenden. Wenn Sie dieselben Fernbedienungsbuchsen wie ich verwenden, ändern Sie die Zeilen ab 80 in:
// RC-Code senden. if (item.value) {return that.pins [item.pin] .triState (item.code + "FFFF"); // von FF0F ändern. } else {return that.pins [item.pin] .triState (item.code + "FFF0"); // von FF00 ändern. }
Hier ist ein Demo-Video von allem, was funktioniert:
Ich werde es an dieser Stelle hier belassen, aber Sensorwerte und IR-Fernbedienungen sind es auch unterstützt. Ich werde diese wahrscheinlich zu einem späteren Zeitpunkt mit einigen weiteren Verbesserungen erneut prüfen. Wenn Ihnen das alles etwas zu komplex war, schauen Sie sich diese vielleicht an Anfängerfreundliche Arduino-Projekte 15 großartige Arduino-Projekte für AnfängerSie interessieren sich für Arduino-Projekte, sind sich aber nicht sicher, wo Sie anfangen sollen? In diesen Anfängerprojekten lernen Sie, wie Sie beginnen. Weiterlesen .
James hat einen BSc in künstlicher Intelligenz und ist CompTIA A + und Network + zertifiziert. Er ist der Hauptentwickler von MakeUseOf und verbringt seine Freizeit mit VR-Paintball und Brettspielen. Er baut seit seiner Kindheit PCs.