Wie verwende ich Arduino und node.js?

9

Ich bin neu bei Arduino, habe jedoch Erfahrung in der Webentwicklung. In letzter Zeit habe ich Meteor Js und den Mean Stack für verschiedene Projekte verwendet. Ich bin jedoch offen dafür, jede Sprache für die Entwicklung auszuprobieren.

Ich versuche, eine einfache Anwendung zu erstellen, um die LED auf dem Arduino über das Web zu steuern.

Ich arbeite mit einer anderen Person zusammen und der Arduino befindet sich hinter einer Firewall, sodass ich nicht sicher bin, wie ich über das Internet darauf zugreifen soll. Ich habe Zugriff auf ein Arduino Uun, das ich zum Testen zu Hause verwenden kann, bei dem Linio über eine Brücke verbunden ist, was ich nicht ganz verstehe.

Ich habe auch gehört dies , möchte aber bleiben weg von Dritten so weit wie möglich baut , wenn ich es selbst tun kann.

Was ist der übliche Weg, dies mit einem Arduino hinter einer Firewall zu tun? Wie mache ich das mit einem Arduino Yun? Ist es einfacher mit einem Yun?

Anders Kitson
quelle

Antworten:

9

Ich arbeite an einem ähnlichen Projekt, das das Internet verwendet, um mit einem externen Gerät (mobil) zu kommunizieren. Ich lese Daten von Sensoren und leite sie mit Web-Sockets über das Internet. Ich benutze Arduino Yun für dieses Projekt und Spacebrew (für die Kommunikation mit Web-Sockets). Es ist ein sehr interessanter Ansatz, aber in einigen Fällen eine ziemliche Herausforderung. Sie werden wahrscheinlich auf ein asynchrones / synchrones Problem stoßen, das in meinem Fall dazu führte, dass ich einige Python-Skripte auf Yun ausführte, die durch die Verarbeitung von Code ausgelöst wurden. Ich verwende derzeit einen Spacebrew-Server in meinem VPN, sodass ich mein zu Hause gelassenes Yun verbinden und mein iPhone von überall aus verwenden kann, um die Messwerte abzurufen.

Erwähnenswert ist auch, dass Yun mit einer vorinstallierten Temboo-Bibliothek geliefert wird, die ein guter Ausgangspunkt für die Webkommunikation ist. Die Konfiguration ist sehr einfach und schnell. Sie finden auch offizielle Unterlagen sehr praktisch und leicht verständlich. Es ist wirklich ein guter Ausgangspunkt, um mit webähnlichen Anwendungen zu experimentieren, die in Arduino Yun integriert sind.

Spacebrew

  • http://docs.spacebrew.cc/

    Spacebrew ist ein offenes, dynamisch umleitbares Software-Toolkit zum Choreografieren interaktiver Räume. Oder mit anderen Worten, eine einfache Möglichkeit, interaktive Dinge miteinander zu verbinden. Jedes Element, das Sie an das System anschließen, kann Datenfeeds abonnieren und veröffentlichen.

  • http://github.com/Spacebrew/pySpacebrew

    Dieses Repo enthält die Spacebrew-Bibliothek für Python sowie Dokumentation und Beispiel-Apps.

  • http://github.com/julioterra/yunSpacebrew

    Die Spacebrew Yun-Bibliothek enthält zwei Hauptkomponenten - eine Reihe von Python-Skripten, die auf dem Linino ausgeführt werden, und eine Bibliothek, die auf dem Athel-Chip ausgeführt wird. Dort finden Sie Informationen zum Installieren dieser beiden Komponenten, damit Sie über eine Arduino-Skizze eine Verbindung zu Spacebrew herstellen können.

Temboo

Yun hat auch eine Temboo-Bibliothek eingebaut. Dies ist eine großartige Möglichkeit, um mit dem Experimentieren zu beginnen. Sobald Sie das Konzept bewiesen haben, können Sie Ihre Umgebung einschränken und wegziehen, wenn Sie keine Software von Drittanbietern verwenden möchten.

  • http://www.temboo.com/arduino

    Mit der Temboo-Bibliothek können Sie mit Processing auf einfache Weise eine Verbindung zu über 100 webbasierten Ressourcen und Diensten herstellen. Derzeit finden Sie Bibliotheken für Android, Arduino, iOS, Java, Node.js, PHP, Verarbeitung, Python, REST-API, Ruby, Twyla

Node.js

Sie können node.js auch auf dem Yun selbst ausführen. Hier ist ein guter Artikel und einige Pakete, die zur Installation bereit sind:

Was ist die Brückenbibliothek für Arduino Yun?

Sie haben auch nach der Bridge-Bibliothek gefragt. Wie Sie wissen, hat Yun zwei Prozessoren an Bord, einer führt Ihren Verarbeitungscode aus, der andere hat Linux (Linino). Bridge vereinfacht im Grunde die Kommunikation zwischen ihnen, so dass sie miteinander "sprechen" können. Weitere Informationen finden Sie hier:

  • http://arduino.cc/en/Reference/YunBridgeLibrary

    (Entnommen aus der arduino.cc Dokumentation :)

    Die Arduino Yún hat zwei Prozessoren an Bord. Einer ist ein ATmega32U4 wie beim Arduino Leonardo. Das andere ist ein Atheros 9331, auf dem Linux und der OpenWRT-WLAN-Stack ausgeführt werden, mit dem die Karte eine Verbindung zu WLAN- und Ethernet-Netzwerken herstellen kann. Es ist möglich, Programme oder benutzerdefinierte Skripte auf dem Linux-System über das Arduino aufzurufen, um eine Verbindung mit verschiedenen Internetdiensten herzustellen.

    Die Bridge-Bibliothek vereinfacht die Kommunikation zwischen dem ATmega32U4 und dem AR9331. Es erbt von Stream, und viele der Methoden sollten aus Serial und anderen Derivaten von Stream bekannt sein.

    Bridge-Befehle vom 32U4 werden von Python auf dem AR9331 interpretiert. Seine Aufgabe besteht darin, Programme auf der GNU / Linux-Seite auszuführen, wenn sie von Arduino dazu aufgefordert werden, einen gemeinsam genutzten Speicherplatz für den Austausch von Daten wie Sensorablesungen zwischen dem Arduino und dem Internet bereitzustellen und Befehle aus dem Internet zu empfangen und direkt an das Arduino weiterzuleiten.

    Bridge ermöglicht die Kommunikation in beide Richtungen und fungiert als Schnittstelle zur Linino-Befehlszeile.

Wo soll man anfangen?

Ich würde mit Temboo beginnen, wenn ich Sie wäre. Es ist eine großartige Lernkurve und ein recht einfacher Schritt, um zu beginnen. Sie werden auch lernen und verstehen, wie das Board funktioniert und wie Sie mit der "Außenwelt" kommunizieren können. Sobald Sie einen Proof of Concept haben, experimentieren Sie mit verschiedenen Bibliotheken und verbessern Sie den Ansatz. Vielleicht finden Sie Spacebrew später praktischer oder entdecken sogar verschiedene Lösungen.

Loker
quelle
Willkommen bei Arduino Stack Exchange! Können Sie Ihrer Antwort bitte weitere Einzelheiten hinzufügen? Antworten, bei denen es sich ausschließlich um Links handelt, sind in Stack Exchange nicht akzeptabel, da die Antwort unbrauchbar ist, wenn die Site ausfällt. Die Links zu Bibliotheken sind in Ordnung, da die Bibliothek unbrauchbar ist, wenn die Site ausfällt. Artikel und Tutorials sollten umschrieben werden. Vielleicht zitieren Sie einfach ein paar Sätze und fügen einen Beispielcode hinzu? Vielen Dank!
Anonymer Pinguin
1

Zunächst müssen Sie klar haben, was Sie tun müssen. Arduino UNO ist nur ein Mikrocontroller mit einer seriellen (über USB) Verbindung. Um Ihr Arduino über das Internet zugänglich zu machen, muss es mit dem Internet verbunden sein oder über etwas verfügen, das wie eine Brücke wirkt. Sie können ein Ethernet-Schild, ein WLAN-Shiled oder eine YUN-Hexe verwenden, die ein Arduino UNO + ein Micro-Linux mit Ethernet und WLAN ist (programmierbar in Phyton, oder der Chip kann den Linux-Sendebefehl an die Bash-Shell mithilfe der speziellen Bridge-Bibliothek befehlen ) Sie können Arduin sogar über USB auf dem PC verbinden und ein Bridge-Programm erstellen. Wenn Ihre Firewall / Ihr Router ein entsperrtes Linux / ähnliches ist, können Sie es verwenden.

Wie viele Optionen, und wir beginnen zu entscheiden, wie wir damit sprechen. Da Sie node.sj verwenden möchten, können Sie Socket oder get / post verwenden. Die Verwendung von Socket ist schneller, leichter und kann eine Pull-Verbindung herstellen. Dies ist eine Voraussetzung. Mit get / post brauchst du nicht einmal js, reine HTML-Form reicht aus.

Nachdem Sie sich für ein System entschieden haben, das Ihnen gefällt (Arduino als http-Server oder einfacher Socket), können Sie den entsprechenden Port auf der Firewall / nat öffnen. ist aber nur der letzte teil

Lesto
quelle
Ich habe ein Yun, also werde ich das benutzen. Ich habe mich über WLAN und SSH mit dem Yun verbunden. Wie richte ich den Linux-Server ein und wie öffne ich dann einen Port?
Anders Kitson
siehe offizielles Tutorial, es hat bereits einen Webv-Server, Sie müssen nur Ihre eigene Seite hinzufügen :) scuola.arduino.cc/lesson/b4EoRkV/…
Lesto