Können Sie LEDs von einer Webseite (Javascript) über einen Mikrocontroller (Arduino) ein- und ausschalten?

Ich möchte einen Arduino-Mikrocontroller (mit der erforderlichen Abschirmung) verwenden, um LEDs zu steuern. Meine Herausforderung besteht darin, Benutzer dazu zu bringen, mit einer Javascript-gesteuerten Webseite zu interagieren, um ein Signal an den Mikrocontroller zu senden, um eine LED zu blinken.

Dies ist eine Arduino-Frage, nicht über Elektronik.
@OlinLathrop vielleicht wärst du viel glücklicher, wenn du das [arduino]-Tag ignorieren würdest.
Angesichts der nicht geschlossenen Arduino- Fragen von 1854 auf der Website und der offiziellen Haltung, dass Arduino-Fragen hierher gehören und nicht zu einer hypothetischen Arduino SE, verändert sich die EE-Welt. Vielleicht möchten Sie entweder mithalten oder das Tag ignorieren. Diese Frage gehört perfekt hierher, es geht sehr viel um Elektronik.
Möchten Sie also, dass die Benutzer zum Arduino navigieren (Arduino, das die Seiten bereitstellt), oder möchten Sie, dass ein vorhandener Webserver eine Verbindung zu einem Arduino herstellt?
Er möchte wissen, wie man Benutzer dazu bringt, mit einer Webseite zu interagieren! Frage sollte geschlossen werden.
@Anindo: Nein, es geht nicht um Elektronik. Einige Arduino-Fragen können sein, aber diese ist es nicht. Es ist auf einem sehr hohen Niveau, das reine Software innerhalb der Arduino-Umgebung ist, die speziell so konzipiert ist, dass die Leute nichts über Elektronik oder Mikrocontroller wissen müssen. Wenn Sie beispielsweise fragen würden, wie externe LEDs angesichts der digitalen Ausgänge eines Mikrocontrollers oder sogar eines Arduino angesteuert werden können, wäre dies ein Thema. Hier geht es einfach gar nicht um Elektronik.
@Phil: Die meisten Arduino-Fragen gehören nicht hierher, da sie aus der Sicht und über den Arduino-Kokon sind, der Sie speziell von Elektronikproblemen entfernt. Benutzer, die nur in dieser Hülle leben wollen, gehören auch nicht hierher. Wenn sie wirklich etwas über die große Welt draußen lernen und ihre eigenen Sachen an Mikrocontroller anschließen möchten, ob sie nun Arduino-Entwicklungsboards verwenden oder nicht, dann können sie hierher kommen. Bis dahin müssen wir verhindern, dass Arduino-Rauschen diese Seite herunterzieht.
Aus den FAQ: " Wir stellen und beantworten Fragen ... die Elektronik, Physical Computing und diejenigen umfassen, die mit Mikrocontrollern, Arduinos und eingebetteten Systemen arbeiten. ". Sagt nicht " außer Software innerhalb des Kokons der Umgebung ". OP möchte eine Benutzerinteraktion mit einem Arduino erreichen .
@OlinLathrop, also sind Codefragen zu AVR erlaubt , aber nicht zu Arduino?
@Manishearth Ich glaube, dass ein einzelner Benutzer auf SE-Sites nicht wirklich "erlaubt" oder "nicht erlaubt" entscheidet. Solche Kommentare spiegeln eher die Grenzen jedes Einzelnen wider.
@Manish: Diese Frage war auf einer viel niedrigeren Ebene, die sich speziell auf Mikrocontroller-Details bezog. Das unterscheidet sich stark von hochrangigen Softwarefragen zu einem Webserver, der wirklich auf jeder Plattform laufen könnte.
@OlinLathrop: Wenn Sie sich die Antworten ansehen, nein, die Webserver können auf keiner Plattform ausgeführt werden.
@AnindoGhosh: Ich dachte, er appelliert an die Autorität.

Antworten (3)

Die Software könnte die Arduino-Beispiele Blink mit Webserver kombinieren .

Die Hardware zum Ausführen des Webservers auf dem Arduino wäre entweder das Ethernet- oder das WiFi-Schild. Alternativ können Sie den Server auf einem anderen Computer ausführen und die serielle USB-Verbindung von diesem Computer zum Arduino verwenden, um zu steuern, ob die LED eingeschaltet ist.

Der Webserver könnte eine Variable setzen, wenn eine URL gepostet wird, und diese Variable könnte bestimmen, ob das Blinken auftritt oder nicht. Fragen Sie bei Stack Exchange oder Google nach der Javascript-Seite, um Ajax zu verwenden, um einen Wert an eine URL zu senden, wenn der Benutzer etwas tut, oder verwenden Sie zunächst ein einfaches Formular mit Kontrollkästchen.

Nur um sicherzugehen, dass ich es verstehe: Ich kann eine Website haben, die auf einem privaten Webserver gehostet wird, mit einer von diesem Server bereitgestellten Webseite kann interagiert werden (POST-Anforderung), diese Interaktion wird dann an den Arduino-Webserver-Schild gesendet? Der Arduino-Webserver lauscht also nur auf diese Anfragen und kann sie an den Mikrocontroller weiterleiten? (Ich möchte nur klarstellen, dass ich den allgemeinen Prozess verstehe)
Sie könnten das tun, solange der Client, der den POST ausführt, das Arduino erreichen kann. Cross-Site-Einschränkungen können Sie daran hindern, von einer Seite auf einem anderen Server auf das Arduino zu posten; Die obige Antwort geht davon aus, dass das Arduino der Webserver wäre. Wenn Sie einen anderen lokalen Computer als Webserver haben, können Sie anstelle von Ethernet einfach die vorhandene serielle USB-Verbindung zum Arduino verwenden.
Während dies die Frage theoretisch beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und die Links als Referenz bereitzustellen.
@CamilStaps, das Hardwareelement schließt ein Ethernet- oder WLAN-Schild an, und ich wollte nicht zu lange eine Software-Antwort auf einer Elektronik-Site haben, also habe ich nur auf die relevanten Seiten verlinkt.
An Software ist absolut nichts auszusetzen, solange es sich um Elektronik handelt ;) aber es ist eine gute Überlegung!
@CamilStaps Wie aus den Kommentaren zu der Frage hervorgeht, würde Olin Lathrop Ihnen meiner Meinung nach kategorisch widersprechen. :)

Javascript-gesteuerte Webseite, um ein Signal an den Mikrocontroller zu senden, um eine LED zu blinken

Angenommen, Sie möchten, dass die Außenseite (Webserver) Ihren Arduino kontaktiert, wenn eine Benutzerinteraktion auftritt - und NICHT nur nach Zustandsänderungen abfragt, wie eine frühere Antwort erklärt.

Sie benötigen Ihr Arduino und ein Ethernet-Schild, das als "Webserver" konfiguriert ist, um eingehende Anfragen zu beantworten und gegebenenfalls Ihre LED zu blinken. Sie müssen auch Ihre lokale NAT/Firewall mit einer DMZ oder Portweiterleitung besiegen (damit der Arduino von der Außenwelt erreicht werden kann).

Auf der Außenseite (Website), auf Ihrer Interaktionsseite (d. h. der Seite, die der Webbenutzer erreicht und die Ihr Arduino zum Blinken bringen sollte) - fügen Sie das einfache IMG-Tag mit Ihrer Arduino-IP- und URL-Zeichenfolge hinzu. Der Browser des Webbenutzers versucht, das IMG abzurufen und Ihren Arduino zu kitzeln, der dann blinkt. Dito mit Javascript, das bei Bedarf Inline document.write eines IMG-Tags hinzufügt.

Es ist weitaus effizienter, die Webseite einfach auf dem Ardiuno zu hosten, da es sowieso eingehenden Datenverkehr akzeptiert.

Ich würde es mit Xively versuchen

https://xively.com/dev/tutorials/arduino_wi-fi/

Sie könnten den Arduino als Server laufen lassen, aber das würde eine statische IP und eine Portweiterleitung erfordern, um den Arduino ins Web zu bringen, damit Ihre Webseite darauf POSTEN könnte. (Übrigens finde ich, dass die Verwendung von GET für kleine Datenmengen einfacher ist als POST.)

Xively basiert auf Abfragen, sodass sich Ihr Arduino hinter einer Firewall befinden kann.