Índice:

Ligue para a Web !: 4 etapas
Ligue para a Web !: 4 etapas

Vídeo: Ligue para a Web !: 4 etapas

Vídeo: Ligue para a Web !: 4 etapas
Vídeo: Curtain Call Charge The Generators - Marvel's Spider-Man: Miles Morales PS5 2024, Julho
Anonim
Image
Image
Botão para Arduino
Botão para Arduino

Ring the Web é para afetar sites de lugares locais / reais.

Mais informações sobre isso:

makker.hu/RingTheWeb/

Você precisará:

  • 1 botão de pressão
  • Resistor de 10k
  • Arduino (qualquer tipo)
  • cabos
  • computador pequeno e de baixo consumo - neste caso, um RPi
  • acesso a um servidor ou computador com IP público com node.js
  • local na rede Internet

Passos:

  1. Botão para arduino
  2. Arduino para Framboesa
  3. Framboesa para o servidor
  4. Site para servidor

Etapa 1: Botão para Arduino

Primeiro você precisa de um Arduino e um botão!

Qualquer tipo deles é possível, cabe a Você escolher.

Para conectá-los, siga o tutorial do botão oficial do Arduino.

Aqui está o código do Arduino:

// Código Arduino para ler um pino digital e enviar valor para a porta serial

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // abre a porta serial pinMode (8, INPUT); // conecta o botão ao pino 8} int counter = 0; // algo usado posteriormente void loop () {if (digitalRead (8) == 1) {// verificar o status do pino 8 Serial.write ("8"); } atraso (100); contador ++; if (contador = 20) {// a cada 20x100 = 2.000 ms -> contador = 0; Serial.write ("0"); // envia uma mensagem "eu sou existente" para o servidor}} // isso é tudo!

Etapa 2: Arduino para framboesa

Arduino para Framboesa
Arduino para Framboesa

Agora podemos conectar o Arduino a um computador. Neste caso utilizamos um Raspberry, devido ao seu baixo consumo de energia.

Conecte-o via USB ou diretamente com os pinos RX-TX, descritos aqui.

Em seguida, instale node.js e npm conforme descrito aqui. As palavras-chave são:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

e então

sudo apt-get install -y nodejs

O Npm (gerenciador de pacotes do Node.js) precisa dos módulos socket.io-client e serialport, então instale-os:

npm install socket.io-client

npm install serialport

Abra e salve um arquivo something.js com o seguinte código:

// inicializa a conexão socket.io:

var socket; var io = require ('socket.io-client'); socket = io ("https://yourserver.com:port"); // se a conexão com o servidor for bem-sucedida: socket.on ('conectar', function () {socket.send ("estou aqui!"); console.log ("conectado ao servidor");}); // inicializa a comunicação da porta serial, NB / dev = ttyACM0 pode ser alterado: var SerialPort = require ('serialport'); var serialPort = new SerialPort ('/ dev / ttyACM0', {baudRate: 9600}); // Se algo vem do Arduino, envia mensagens diferentes // para o servidor de acordo com serialPort.on ('dados', função (dados) {console.log ('Dados:', dados.toString ('ascii')); if (data.indexOf ('8')! == - 1) {socket.send ('/ RingTheBell 1');} if (data.indexOf ('0')! == - 1) {socket. send ('/ client1 1');}}); // Ler os dados disponíveis - acho que não é necessário serialPort.on ('readable', function () {console.log ('Data:', port.read ());});

Agora você deve configurar o código node.js do lado do servidor também, até que você possa iniciar e testar o script

node./something.js

Se algo estiver errado, por favor me avise!

Etapa 3: Código do lado do servidor

Código do lado do servidor
Código do lado do servidor

No lado do servidor, precisamos do servidor node.js com socket.io.

Portanto, adicione-o com:

npm instalar socket-io

Então, você precisará de um script semelhante ao código da 2ª etapa, com a diferença de que ele aguarda as conexões e, se estiverem presentes, transmitirá qualquer mensagem enviada do cliente para todos os clientes, neste caso, para os usuários do site …

Portanto, abra um serverscript.js com o seguinte:

var http = requer ('http'), io = requer ('socket.io'); // abre um servidor http mínimo. socket.io precisa disso. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hello');}); // liga o soquete tcp - define sua porta! server.listen (7004, function () {console.log ("servidor TCP em execução na porta 7004");}); // analisa mensagens tcp var socket = io.listen (servidor); socket.on ('conexão', função (cliente, rinfo) {cliente.broadcast.emit ('sistema', 'alguém conectado…'); cliente.on ('mensagem', função (evento) {console.log (evento); // transmitir qualquer mensagem para todos os usuários conectados! socket.emit ('mensagem', evento);}); cliente.on ('todos', função (evento) {}); cliente.on ('desconectar', function () {socket.emit ('mensagem', 'alguém desconectou …');});});

Experimente testá-lo com

node./serverscript.js

Se o cliente também estiver em execução, você deverá ver a comunicação em ambos os consoles. Pelo menos estes:

Dados: 0

- informa periodicamente ao sistema que a comunicação do Arduino-> Raspberry-> servidor está funcionando.

e

Dados: 8

- indica que o botão está ativado.

Etapa 4: configurar o site

Configurar site
Configurar site

Agora estamos prontos com os 75%!

Conclua o trabalho árduo com a inclusão do código para o site.

É fácil.

primeiro, inclua o cliente socket.io:

em seguida, crie o sistema analisador de mensagens:

var socket;

socket = io ("yourserver.com:port"); socket.on ('conectar', função () {socket.send ('cliente anônimo - um usuário do site - está conectado!'); socket.on ('mensagem', função (msg) {// se você deseja ver cada mensagem, apenas descomente: // console.log (msg); if (msg == "/ RingTheBell 1") // aqui vem o código a ser usado para expressar o evento de botão: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; if (msg == "/ client1 1") {// aqui você pode colocar algo que reage ao status do cliente conectado};});

Voilá!

pronto.

Recomendado: