Sommario:

Suona il Web!: 4 passaggi
Suona il Web!: 4 passaggi

Video: Suona il Web!: 4 passaggi

Video: Suona il Web!: 4 passaggi
Video: IMPROVVISA JAZZ IN POCHI MINUTI E 4 PASSAGGI! TUTORIAL LEZIONE CHITARRA 2024, Novembre
Anonim
Image
Image
Pulsante per Arduino
Pulsante per Arduino

Ring the Web serve per influenzare i siti Web da luoghi locali/reali.

Maggiori informazioni a riguardo:

makker.hu/RingTheWeb/

Avrai bisogno:

  • 1 pulsante
  • resistore da 10k
  • Arduino (qualsiasi tipo)
  • cavi
  • computer piccolo ea bassa potenza - in questo caso un RPi
  • accesso a un server o computer con IP pubblico con node.js
  • sito web

Passaggi:

  1. Pulsante per arduino
  2. Da Arduino a Raspberry
  3. Dal lampone al server
  4. Dal sito web al server

Passaggio 1: pulsante per Arduino

Per prima cosa hai bisogno di un Arduino e di un pulsante!

Qualsiasi tipo di loro è possibile, sta a te scegliere.

Per collegarli, segui il tutorial sui pulsanti ufficiali di Arduino.

Ecco il codice Arduino:

// Codice Arduino per leggere un pin digitale e inviare valore alla porta seriale

// Balázs Kovács, 2018. void setup () { Serial.begin(9600); // apri la porta seriale pinMode(8, INPUT); // collega il pulsante al Pin 8 } int counter = 0; // qualcosa usato in seguito void loop() { if(digitalRead(8) == 1) { // controlla lo stato del pin 8 Serial.write("8"); } ritardo(100); contatore++; if(counter=20) { // ogni 20x100=2000ms -> counter = 0; Serial.write("0"); // invia un messaggio "io esisto" al server } } // tutto qui!

Passaggio 2: da Arduino a Raspberry

Da Arduino a Raspberry
Da Arduino a Raspberry

Ora possiamo collegare Arduino a un computer. In questo caso utilizziamo un Raspberry, a causa del suo basso consumo energetico.

Collegalo via USB o direttamente con i pin RX-TX, descritti qui.

Quindi installa node.js e npm come descritto qui. Le parole chiave sono:

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

poi

sudo apt-get install -y nodejs

Npm (il gestore di pacchetti di Node.js) necessita dei moduli socket.io-client e serialport, quindi installali:

npm install socket.io-client

npm installa porta seriale

Apri e salva un file Something.js con il seguente codice:

// inizializza la connessione socket.io:

presa var; var io = require('socket.io-client'); socket = io("https://yourserver.com:port"); // se la connessione al server ha esito positivo: socket.on('connect', function(){ socket.send("sono qui!"); console.log("connesso al server"); }); // inizializza la comunicazione della porta seriale, NB /dev=ttyACM0 può essere modificato: var SerialPort = require('serialport'); var serialPort = new SerialPort('/dev/ttyACM0', { baudRate: 9600 }); // Se qualcosa proviene da Arduino, invia messaggi diversi // al server in base ad esso 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. send('/client1 1'); } }); // Leggi i dati disponibili - penso che non sia necessario serialPort.on('readable', function() { console.log('Data:', port.read()); });

Ora dovresti impostare anche il codice node.js lato server, fino a quando non puoi avviare e testare lo script da

nodo./qualcosa.js

Se qualcosa non va, per favore fatemelo sapere!

Passaggio 3: codice lato server

Codice lato server
Codice lato server

Sul lato server, abbiamo bisogno di node.js con il server socket.io.

Quindi aggiungilo con:

npm install socket-io

Quindi avrai bisogno di uno script simile al codice del secondo passaggio, con la differenza che attende le connessioni e, se sono presenti, trasmetterà qualsiasi messaggio inviato dal client a tutti i client, in questo caso, agli utenti del sito web…

Quindi, apri un serverscript.js con quanto segue:

var http = require('http'), io = require('socket.io'); // apre un server http minimo. socket.io ne ha bisogno. var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('hello'); }); // attiva il socket tcp - imposta la tua porta! server.listen(7004, function() { console.log("Server TCP in esecuzione sulla porta 7004"); }); // analizza i messaggi tcp var socket=io.listen(server); socket.on('connection', function(client, rinfo) { client.broadcast.emit('system', 'qualcuno connesso… '); client.on('message', function(event){ console.log(event); // trasmette qualsiasi messaggio a tutti gli utenti connessi! socket.emit('message', event); }); client.on('everybody', function(event){ }); client.on('disconnect', function(){ socket.emit('message', 'qualcuno si è disconnesso…'); }); });

Provalo per testarlo con

nodo./serverscript.js

Se anche il client è in esecuzione, dovresti vedere la loro comunicazione su entrambe le console. Almeno questi:

Dati: 0

- comunica periodicamente al sistema che la comunicazione Arduino->Raspberry->server funziona.

e

Dati: 8

- dice che il pulsante è acceso.

Passaggio 4: configurare il sito Web

Configura sito web
Configura sito web

Ora siamo pronti con il 75%!

Termina il duro lavoro includendo il codice per il sito web.

È facile.

prima, includi il client socket.io:

quindi creare il sistema di analisi dei messaggi:

presa var;

socket = io("yourserver.com:port"); socket.on('connect', function() { socket.send('anonym client - a website - is connected!'); socket.on('message', function (msg) { // se vuoi vedere ogni messaggio, decommentalo: // console.log(msg); if (msg == "/RingTheBell 1") // ecco il codice da usare per esprimere l'evento pulsante: { document.body.style.background = "#ccc"; setTimeout(function() { document.body.style.background = "#000"; }, 1000); }; if (msg == "/client1 1") { // qui puoi inserire qualcosa che reagisce allo stato del client connesso }; });

Ecco!

pronto.

Consigliato: