Wir haben schon einmal über die relativen Vorzüge von Arduino und Raspberry Pi gesprochen - jeder hat seine Stärken. Sie müssen jedoch weder eine noch eine Wahl sein - kombinieren Sie sie, um das Beste aus beiden Welten zu erhalten. Hausautomation ist der perfekte Kandidat dafür. Der Heimautomatisierungsmarkt ist mit teuren Verbrauchersystemen überschwemmt, die miteinander inkompatibel und teuer zu installieren sind. Wenn Sie einen Raspberry Pi Raspberry Pi haben: Das inoffizielle Tutorial Raspberry Pi: Das inoffizielle Tutorial Ob Sie ein aktueller Pi-Besitzer sind, der mehr darüber erfahren möchte oder ein potenzieller Besitzer dieses Kreditkartengeräts ist, dies ist kein Leitfaden für Sie möchte verpassen. Lesen Sie mehr und ein Arduino, können Sie das gleiche zu einem Bruchteil des Preises erreichen, vorausgesetzt, Sie sind bereit, die Zeit und die Mühe zu investieren.
Update: Seit dieser Artikel geschrieben wurde, habe ich OpenHAB entdeckt, eine freie und quelloffene Heimautomatisierungsplattform, die auf Raspberry Pi läuft und mit einer großen Auswahl an Smart Home Kits sowie Arduino integriert werden kann. Sehen Sie sich das Video unten an, um einen kleinen Vorgeschmack zu erhalten. Dann gehen Sie zu unseren ersten Schritten mit OpenHAB auf Raspberry Pi Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi Erste Schritte mit OpenHAB Home Automation auf Raspberry Pi OpenHAB ist eine ausgereifte Open Source Hausautomation Plattform, die auf einer Vielzahl von Hardware läuft und Protokoll-agnostisch ist, was bedeutet, dass sie sich mit fast jeder Hausautomations-Hardware verbinden kann, die derzeit auf dem Markt ist. Lesen Sie mehr Leitfaden, um mehr zu erfahren.
Heimcontrol.js ist eine Node.js App, die auf Raspberry Pi läuft. In Kombination mit einem Arduino und einigen handelsüblichen Fernbedienungsbuchsen erleichtert es 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 wird als Gehirn und Gateway von Operationen fungieren - er wird eine Knoten-App ausführen, die an eine Mongo-Datenbank gebunden ist, und die Front-End-Schnittstelle zu jedem Web-Browser bereitstellen.
- Ein Arduino, angetrieben von dem Pi, wird eine Schnittstelle zwischen den elektronischen Steuerschaltern für die Funksteuerung bilden.
Um dies zu tun, benötigen Sie:
- Arduino und ein Raspberry Pi
- Einige ferngesteuerte Steckdosen und Controller (ich benutzte diese)
- USB-Hub
Bevor wir beginnen, hier ist ein Demo-Video von dem Projekt-Schöpfer selbst.
Neu anfangen
Wir werden Raspian für dieses Projekt verwenden 10 Betriebssysteme, die Sie mit Raspberry Pi 10 betreiben können Betriebssysteme, die Sie mit Raspberry Pi ausführen können Die Hardware des Raspberry Pi allein ist nur eine Seite der Geschichte: Heute erforsche ich 10 verschiedene Betriebssysteme Sie können installieren. Lesen Sie mehr, und ich würde dringend vorschlagen, von einer Neuinstallation zu starten, wenn Sie zuvor andere Hacks und ähnliches ausgeführt haben. Laden Sie das neueste Raspian-Image herunter, kopieren Sie es auf Ihre SD-Karte und stellen Sie sicher, dass Sie das Dateisystem erweitern und SSH aktivieren. Der Rest dieses Handbuchs geht davon aus, dass Sie dies getan haben und verbinden sich über SSH mit dem Standardbenutzer.
Wenn Sie dies noch nicht getan haben, erklärt dieses Video die Vorbereitung Ihrer SD-Karte in OS X:
Und dies für Windows-Benutzer:
Vorbereitung
Der Installationsprozess ist ziemlich mühsam und leitet sich von den Anweisungen hier ab. Leider waren diese veraltet oder nicht für Raspian ausgelegt, daher habe ich sie unten stark angepasst. Die folgenden Codes können meist in Blöcken eingefügt werden - Sie müssen nicht nacheinander einfügen. Da wir einige Dinge auf dem Pi selbst zusammentragen, sei gewarnt, dass dieser gesamte Prozess lange dauern wird. Ich würde sagen, machen Sie sich eine Tasse Tee - aber wenn ich eine "lange Zeit" sage, meine ich den besten Teil eines Tages - also wären 178 Tassen passender.
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 folgenden Voraussetzungen:
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
Als nächstes müssen wir den Knoten 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 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
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, die Export PATH besagt, und ersetzen Sie es durch:
NODE_JS_HOME="/opt/node" PATH="$PATH:$NODE_JS_HOME/bin" export PATH
Drücke Strg-X um zu beenden und Y um zu speichern.
Sie müssen sich möglicherweise abmelden und erneut anmelden, damit die Pfadänderungen wirksam werden. Sie können jedoch mit folgendem Befehl testen:
which node
Wenn Sie keine Ausgabe erhalten, die auf die Node-Binärdatei zeigt, ist etwas falsch gelaufen.
Mongo
Der nächste Job ist die Installation von Mongo. Mongo ist eine dokumentenbasierte No-SQL-Datenbank, die zunehmend von Web-Apps verwendet wird. Leider wird es ewig dauern, es zu installieren, da wir es kompilieren müssen. Während Sie die folgenden Befehle ausführen, erhalten Sie eine Menge Fehler wie:
{standard input}:13085: Warning: swp{b} use is deprecated for this architecture
Mach dir keine Sorgen über diese. Führen Sie diese Befehle aus, um Mongo zu installieren:
git clone git://github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix=/opt/mongo install scons -c
Wenn das erledigt ist, brauchen wir zuerst ein wenig 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 defaults mongod
Dieser letzte Befehl startet den Mongo-Server und Sie müssen ein neues Terminal öffnen, um mit den anderen Befehlen fortzufahren. Ich bin nicht ganz überzeugt von diesem Schritt, also wenn jemand dies in den Kommentaren korrigieren kann, wie man mongod automatisch beim Start startet, würde es sehr geschätzt werden. Im Moment funktioniert es, nur nicht elegant.
sudo shutdown -r now
Schließlich ist es an der Zeit, die Anwendung Heimcontrol.js Node zu installieren.
cd ~pi git clone git://github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm install
Sie können die App starten, indem Sie tippen
node heimcontrol.js
An diesem Punkt sollten Sie in der Lage sein, über das Pi auf die Steuerschnittstelle mit http: // localhost: 8080 zuzugreifen, oder localhost durch die IP-Adresse zu ersetzen, wenn Sie von einem anderen Computer darauf zugreifen (und Sie könnten auch einen Port einrichten) Weiterleitung Was ist Port Forwarding und wie kann es mir helfen? [MakeUseOf Explains] Was ist Port Forwarding und wie kann es mir helfen? [MakeUseOf Explains] Schreien Sie ein wenig drinnen, wenn jemand Ihnen sagt, es gibt ein Port-Forwarding-Problem und deshalb Ihre glänzende neue App wird nicht funktionieren? Ihre Xbox lässt Sie Spiele nicht spielen, Ihre Torrent-Downloads verweigern ... Lesen Sie mehr, um von überall auf der Welt zugreifen), so würde ich Sie ermutigen, herumzustochern und zu überprüfen, alles ist Arbeiten mit der Datenbank vor dem Anbringen des Arduino.
Hardware
Irgendwann möchte ich eine fest verdrahtete Relais, aber im Moment werde ich die sicherere Option der Funkschalter verwenden.
Ich habe einige ziemlich billige £ 20-Sets von Maplin benutzt, die mit 3 Sockeln ausgestattet sind, und die Fernbedienung geöffnet, so dass ich direkt mit dem 433 MHz-Chip im Inneren kommunizieren konnte. Ich habe die Anleitung dazu hier gefunden.
Sie können auch einzelne 433-MHz-Sender kaufen, die für den Einsatz bei eBay oder von Hobby-Elektroniklieferanten bereit sind. Alles, was Sie tun müssen, ist die VCC an 5 V auf dem Arduino, die GNDs und einen einzigen Kontrollstift zu verbinden - denken Sie daran, welche Sie verwendet haben. (Schema von Willi Thiel)
Das Plugin funktioniert mit dem Senden von "Tristate Codes", aber diese variieren je nach Hersteller. In der RCSwitch-Dokumentation finden Sie Ihre genauen Codes. Dieser Wiki-Guide kann auch helfen.
Die Kommunikation mit dem Arduino erfolgt über eine Knotenbibliothek namens duino. Stoppen Sie die Heimcontrol-App, wenn sie ausgeführt wird, und installieren Sie die Arduino-Bridge mit dem folgenden Befehl.
npm install duino
Der Arduino muss diesen Code hochgeladen haben - ich schlage vor, Sie kopieren und einfügen, um dies von einem anderen Computer zu installieren. Es ist im Wesentlichen ein Listener-Programm, das auf serielle Befehle vom Pi reagiert, aber nichts hält Sie davon ab, es mit Ihren eigenen Funktionen zu erweitern.
Mit der Web-App gestartet, gehen Sie zum Menü Einstellungen > Arduino .
Von dort können Sie einen neuen Artikel 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 fand ich, dass einzelne Ziffernnummern nicht funktionierten - stellen Sie sicher, dass Ihr Sender auf Pin 10 platziert ist, um sicher zu gehen.
Ich fand auch, dass das Arduino-Plugin mit falschen letzten Bits für die Tristate-Codes, die meine Empfänger benötigten, fest codiert war. Eine kleine Erklärung zuerst: Tristate-Codes bestehen aus 3 Bytes an Informationen. Der erste bestimmt die Netzwerknummer (1-4) und der zweite gibt die Transceiveradresse an (wiederum 1-4, wodurch maximal 16 adressierbare Sockets erzeugt werden). Das letzte Byte besteht aus zwei Padding-Bits plus zwei Bits für on / off. Leider ist das letzte Byte im Arduino-Plugin fest codiert - und in meinem Fall war der Ein / Aus-Code falsch.
Ich musste die Plugins / arduino / index.js manuell bearbeiten, um die richtigen Codes zu verwenden. Wenn Sie die gleichen Fernbedienungsbuchsen verwenden wie ich bin, ändern Sie die Leitungen 80 zu:
// 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 ist ein Demo-Video von allem, was funktioniert:
Ich werde es hier an dieser Stelle lassen, aber Sensor Lesungen und IR-Fernbedienungen werden ebenfalls unterstützt. Ich werde diese wahrscheinlich zu einem späteren Zeitpunkt mit einigen weiteren Verbesserungen erneut besuchen. Wenn das alles für Sie ein wenig zu komplex war, dann sehen Sie sich diese einsteigerfreundlichen Arduino-Projekte an. 10 Große Arduino-Projekte für Anfänger 10 Große Arduino-Projekte für Anfänger Die Fertigstellung eines Arduino-Projekts gibt Ihnen ein Gefühl der Zufriedenheit wie kein anderer. Die meisten Anfänger sind jedoch nicht sicher, wo sie anfangen sollen, und selbst Anfängerprojekte können ziemlich entmutigend wirken. Weiterlesen .
Bildnachweis: Türklingel via Flickr