Tabla de contenido:
- Paso 1: Botón para Arduino
- Paso 2: Arduino a frambuesa
- Paso 3: Código del lado del servidor
- Paso 4: configurar el sitio web
Video: ¡Ring the Web !: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Ring the Web es para afectar sitios web desde lugares locales / reales.
Más información al respecto:
makker.hu/RingTheWeb/
Necesitarás:
- 1 pulsador
- Resistencia de 10k
- Arduino (cualquier tipo)
- cables
- computadora pequeña de bajo consumo, en este caso un RPi
- acceso a un servidor o computadora con IP pública con node.js
- sitio web
Pasos:
- Pulsador para arduino
- Arduino a frambuesa
- Frambuesa al servidor
- Sitio web al servidor
Paso 1: Botón para Arduino
¡Primero necesitas un Arduino y un botón!
Cualquier tipo de ellos es posible, tú eliges.
Para conectarlos, siga el tutorial oficial de botones de Arduino.
Aquí está el código Arduino:
// Código Arduino para leer un pin digital y enviar valor al puerto serie
// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // abre el puerto serie pinMode (8, INPUT); // conecta el pulsador al pin 8} int contador = 0; // algo usado más tarde void loop () {if (digitalRead (8) == 1) {// verifica el estado del pin 8 Serial.write ("8"); } retraso (100); contador ++; if (contador = 20) {// cada 20x100 = 2000ms -> contador = 0; Serial.write ("0"); // envía un mensaje "existo" al servidor}} // ¡eso es todo!
Paso 2: Arduino a frambuesa
Ahora podemos conectar Arduino a una computadora. En este caso usamos una frambuesa, por su bajo consumo de energía.
Conéctelo a través de USB o directamente con los pines RX-TX, descritos aquí.
Luego instale node.js y npm como se describe aquí. Las palabras clave son:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
y luego
sudo apt-get install -y nodejs
Npm (el administrador de paquetes de Node.js) necesita módulos socket.io-client y serialport, así que instálelos:
npm instalar socket.io-client
npm instalar puerto serie
Abra y guarde un archivo something.js con el siguiente código:
// inicializa la conexión socket.io:
var socket; var io = require ('socket.io-client'); socket = io ("https://yourserver.com:port"); // si la conexión al servidor es exitosa: socket.on ('connect', function () {socket.send ("¡estoy aquí!"); console.log ("conectado al servidor");}); // inicializar la comunicación del puerto serie, NB / dev = ttyACM0 se puede cambiar: var SerialPort = require ('serialport'); var serialPort = new SerialPort ('/ dev / ttyACM0', {baudRate: 9600}); // Si algo viene del Arduino, envía diferentes mensajes // al servidor según sea serialPort.on ('data', function (data) {console.log ('Data:', data.toString ('ascii')); if (data.indexOf ('8')! == - 1) {socket.send ('/ RingTheBell 1');} if (data.indexOf ('0')! == - 1) {socket. enviar ('/ client1 1');}}); // Leer datos que están disponibles - creo que no es necesario serialPort.on ('legible', function () {console.log ('Data:', port.read ());});
Ahora también debe configurar el código node.js del lado del servidor, hasta que pueda iniciar y probar el script por
node./something.js
Si algo anda mal, ¡házmelo saber!
Paso 3: Código del lado del servidor
En el lado del servidor, necesitamos node.js con el servidor socket.io.
Así que agrégalo con:
npm instalar socket-io
Luego, necesitará un script similar al código en el segundo paso, con la diferencia de que espera las conexiones y, si están presentes, transmitirá cualquier mensaje enviado desde el cliente a todos los clientes, en este caso, a los usuarios del sitio web …
Entonces, abra un serverscript.js con lo siguiente:
var http = require ('http'), io = require ('socket.io'); // abre un servidor http mínimo. socket.io lo necesita. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hola');}); // enciende el socket tcp - ¡configura tu puerto! server.listen (7004, function () {console.log ("servidor TCP ejecutándose en el puerto 7004");}); // analizar los mensajes tcp var socket = io.listen (servidor); socket.on ('connection', function (client, rinfo) {client.broadcast.emit ('system', 'somebody connected …'); client.on ('message', function (event) {console.log (event); // difunde cualquier mensaje a todos los usuarios conectados! socket.emit ('mensaje', evento);}); cliente.on ('todos', función (evento) {}); cliente.on ('desconectar', function () {socket.emit ('mensaje', 'alguien desconectado …');});});
Pruébelo para probarlo con
node./serverscript.js
Si el cliente también se está ejecutando, debería ver su comunicación en ambas consolas. Al menos estos:
Datos: 0
- le dice periódicamente al sistema que la comunicación Arduino-> Raspberry-> servidor está funcionando.
y
Datos: 8
- dice que el botón está encendido.
Paso 4: configurar el sitio web
¡Ahora estamos listos con el 75%!
Termine el arduo trabajo con incluir el código del sitio web.
Es fácil.
primero, incluya el cliente socket.io:
luego cree el sistema analizador de mensajes:
var socket;
socket = io ("yourserver.com:port"); socket.on ('conectar', function () {socket.send ('cliente anónimo - un usuario del sitio web - está conectado!'); socket.on ('mensaje', función (msg) {// si quieres ver cada mensaje, simplemente descomentarlo: // console.log (msg); if (msg == "/ RingTheBell 1") // aquí viene el código a usar para expresar el evento pushbutton: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; if (msg == "/ client1 1") {// aquí puedes colocar algo que reacciona al estado del cliente conectado};});
¡Voilá!
Listo.
Recomendado:
UK Ring Video Doorbell Pro trabajando con timbre mecánico: 6 pasos (con imágenes)
UK Ring Video Doorbell Pro Trabajando con timbre mecánico: ************************************* *************** Tenga en cuenta que este método solo funciona con alimentación de CA en este momento. Actualizaré si / cuando encuentre una solución para timbres que utilicen alimentación de CC. Mientras tanto, si tiene una fuente de alimentación de CC. suministro, necesitará t
Indicador de volumen Neopixel Ws2812 LED Ring & Arduino: 8 pasos
Indicador de volumen Neopixel Ws2812 LED Ring & Arduino: En este tutorial aprenderemos cómo hacer un indicador de volumen usando un anillo LED Neopixel Ws2812 y arduino. ¡Mira el video
Reutilice un módulo de cámara web HP WebCam 101 Aka 679257-330 como una cámara web USB genérica: 5 pasos
Reutilice un módulo de cámara web HP WebCam 101 Aka 679257-330 como una cámara web USB genérica: quiero darle vida a mi Panasonic CF-18 de 14 años con una cámara web nueva, pero Panasonic ya no es compatible con esa maravillosa máquina, así que tengo que usa la materia gris para algo más fácil que b & b (cervezas y hamburguesas) .Esta es la primera parte
Reloj de animación LED SMART conectado a la web con panel de control basado en la web, servidor de tiempo sincronizado: 11 pasos (con imágenes)
Reloj de animación LED SMART conectado a la web con panel de control basado en la web, servidor de tiempo sincronizado: la historia de este reloj se remonta a hace mucho tiempo: más de 30 años. Mi padre fue pionero en esta idea cuando yo tenía solo 10 años, mucho antes de la revolución del LED, cuando los LED eran 1/1000 del brillo de su brillo cegador actual. Una verdad
Tutorial de E / S del controlador web utilizando un sitio web en vivo y ejemplos de trabajo: 8 pasos
Tutorial de IO de controlador web usando un sitio web en vivo y ejemplos de trabajo: Tutorial de IO de controlador web usando un sitio web en vivo y ejemplos de trabajo Última actualización: 26/07/2015 (Vuelva a consultar a menudo ya que actualizo este instructivo con más detalles y ejemplos) Antecedentes se me presentó un desafío interesante. Lo necesitaba