¿Puedes encender/apagar los LED desde una página web (javascript) a través de un microcontrolador (arduino)?

Me gustaría usar un microcontrolador Arduino (con el escudo necesario) para controlar los LED. Mi desafío es cómo hacer que los usuarios interactúen con una página web basada en javascript para enviar una señal al microcontrolador para que parpadee un LED.

Esta es una pregunta de arduino, no de electrónica.
@OlinLathrop tal vez sería mucho más feliz si ignorara la etiqueta [arduino].
Dadas las preguntas de arduino no cerradas de 1854 en el sitio, y la postura oficial de que las preguntas de Arduino pertenecen aquí y no en algún Arduino SE hipotético, el mundo de EE está cambiando. Uno podría querer mantenerse al día o ignorar la etiqueta. Esta pregunta pertenece perfectamente aquí, tiene mucho que ver con la electrónica.
Entonces, ¿quieres que los usuarios naveguen hasta Arduino (Arduino sirviendo las páginas), o quieres que un servidor web existente se conecte a un Arduino?
¡Quiere saber cómo lograr que los usuarios interactúen con una página web! La pregunta debe estar cerrada.
@Anindo: No, no se trata de electrónica. Algunas preguntas de arduino pueden ser, pero esta no lo es. Está en un nivel mucho más alto que es puramente software dentro del entorno arduino, que está diseñado específicamente para que las personas no tengan que saber sobre electrónica o microcontroladores. Si estuviera preguntando, por ejemplo, cómo controlar los LED externos dadas las salidas digitales de un microcontrolador o incluso de un arduino, estaría en el tema. Esto simplemente no se trata de electrónica en absoluto.
@Phil: La mayoría de las preguntas de arduino no pertenecen aquí, ya que son desde el punto de vista y sobre el capullo de arduino que lo elimina específicamente de los problemas electrónicos. Los usuarios que solo quieren vivir en ese caparazón tampoco pertenecen aquí. Una vez que realmente quieran aprender sobre el gran mundo exterior y conectar sus propias cosas a los microcontroladores, ya sea usando placas de desarrollo arduino o no, entonces pueden venir aquí. Hasta entonces, debemos evitar que el ruido de arduino arrastre este sitio.
De las preguntas frecuentes: " Hacemos y respondemos preguntas... que incluyen electrónica, computación física y aquellas que trabajan con microcontroladores, Arduinos y sistemas integrados ". No dice " excepto los de software dentro del capullo del entorno ". OP quiere lograr la interacción del usuario con un Arduino .
@OlinLathrop, ¿así que se permiten preguntas de código en AVR pero no en arduino?
@Manishearth Creo que un usuario individual realmente no decide "permitido" v/s "no permitido" en los sitios SE. Dichos comentarios son más un reflejo de las limitaciones de cualquier individuo.
@Manish: Esa pregunta estaba en un nivel mucho más bajo específicamente relacionado con los detalles del microcontrolador. Eso es muy diferente de las preguntas de software de alto nivel sobre un servidor web que realmente podría ejecutarse en cualquier plataforma.
@OlinLathrop: Si observa las respuestas, no, los servidores web no pueden ejecutarse en ninguna plataforma.
@AnindoGhosh: Pensé que estaba apelando a la autoridad.

Respuestas (3)

El software podría combinar los ejemplos de arduino parpadear con el servidor web .

El hardware para ejecutar el servidor web en el arduino sería el escudo Ethernet o WiFi. Alternativamente, es posible que desee ejecutar el servidor en otra máquina y usar el enlace serie USB de esa máquina al arduino para controlar si el LED está encendido.

El servidor web podría establecer una variable cuando se publique una URL, y esa variable podría determinar si se produce el parpadeo o no. Pregunte en el intercambio de pila o en Google por el lado de javascript para usar ajax para publicar un valor en una URL cuando el usuario hace algo, o use un formulario simple con casillas de verificación para comenzar.

solo para estar seguro de que entiendo: puedo tener un sitio web alojado en algún servidor web privado, se puede interactuar con una página web servida por ese servidor (solicitud POST), ¿esa interacción se envía luego al escudo del servidor web Arduino? Entonces, ¿el servidor web arduino solo está escuchando estas solicitudes y puede pasarlas al microcontrolador? (solo quiero aclarar que entiendo el proceso general)
Podría hacer eso, siempre que el cliente que realiza el POST pueda llegar al arduino. Las restricciones de sitios cruzados pueden evitar que envíe POST al arduino desde una página en otro servidor; la respuesta anterior asume que el arduino sería el servidor web. Si tiene otra computadora local que es el servidor web, puede usar la conexión serie USB existente al arduino en lugar de Ethernet.
Si bien esto puede responder teóricamente a la pregunta, sería preferible incluir las partes esenciales de la respuesta aquí y proporcionar los enlaces como referencia.
@CamilStaps, el elemento de hardware está conectando un escudo de ethernet o wifi, y no quería tener una respuesta de software demasiado larga en un sitio de electrónica, así que simplemente vinculé a las páginas relevantes.
No hay absolutamente nada de malo con el software, siempre y cuando esté relacionado con la electrónica;) ¡pero es una buena consideración!
@CamilStaps Como se evidencia en los comentarios sobre la pregunta, creo que Olin Lathrop estaría categóricamente en desacuerdo contigo. :)

página web basada en javascript para enviar una señal al microcontrolador para que parpadee un LED

Suponiendo que desea que el exterior (servidor web) se comunique con su Arduino cuando se produce una interacción con el usuario, y NO solo sondee los cambios de estado como se explica en una respuesta anterior.

Necesita su Arduino y un escudo Ethernet configurado como un "servidor web" para responder a las solicitudes entrantes y hacer parpadear su LED cuando corresponda. También debe vencer su NAT/Firewall local con una DMZ o reenvío de puertos (para que se pueda acceder al Arduino desde el mundo exterior).

En el exterior (sitio web), en su página de interacción (es decir, la página a la que accede el usuario web y debe hacer que su Arduino parpadee), agregue la etiqueta IMG simple con su IP de Arduino y cadena de URL. El navegador del usuario web intentará obtener la IMG y le hará cosquillas a su Arduino, que luego parpadeará. Lo mismo ocurre con javascript agregando documento en línea. Escriba una etiqueta IMG según sea necesario.

Es mucho más eficiente simplemente alojar la página web en el Ardiuno, ya que aceptará el tráfico entrante de todos modos.

Intentaría usar Xively

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

Podría tener el Arduino ejecutándose como un servidor, pero eso requeriría una IP estática y algunos puertos de reenvío para sacar el Arduino en la web para que su página web pueda publicarlo. (Por cierto, encuentro que usar GET es más simple que POST para una pequeña cantidad de datos).

Xively se basa en encuestas, por lo que su Arduino puede estar detrás de un firewall.