Cuprins:

Sună pe web !: 4 pași
Sună pe web !: 4 pași

Video: Sună pe web !: 4 pași

Video: Sună pe web !: 4 pași
Video: Cum Conectez Mi Smart Band 4 la Telefon 2024, Iulie
Anonim
Image
Image
Buton către Arduino
Buton către Arduino

Ring the Web este destinat afectării site-urilor web din locuri locale / reale.

Mai multe informații despre asta:

makker.hu/RingTheWeb/

O să ai nevoie:

  • 1 buton
  • Rezistor de 10k
  • Arduino (orice tip)
  • cabluri
  • computer mic, de mică putere - în acest caz un RPi
  • acces la un server sau computer cu IP public cu node.js
  • site-ul web

Pași:

  1. Buton pentru arduino
  2. Arduino la Zmeură
  3. Raspberry la server
  4. Site-ul către server

Pasul 1: Apăsați butonul către Arduino

Mai întâi ai nevoie de un Arduino și de un buton!

Orice tip de ele este posibil, depinde de dvs. să alegeți.

Pentru a le conecta, urmați tutorialul oficial al butonului Arduino.

Iată codul Arduino:

// Cod Arduino pentru citirea unui pin digital și trimiterea valorii către portul serial

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // deschideți portul serial pinMode (8, INPUT); // conectați butonul la Pinul 8} contor int = 0; // ceva folosit ulterior void loop () {if (digitalRead (8) == 1) {// verificați starea pinului 8 Serial.write ("8"); } întârziere (100); contor ++; if (contor = 20) {// fiecare 20x100 = 2000ms -> contor = 0; Serial.write („0”); // trimite un mesaj „exist” la server}} // atât!

Pasul 2: Arduino la Zmeură

Arduino la Zmeură
Arduino la Zmeură

Acum putem conecta Arduino la un computer. În acest caz, folosim un Raspberry, datorită consumului său redus de energie.

Conectați-l prin USB sau direct cu pinii RX-TX, descriși aici.

Apoi instalați node.js și npm așa cum este descris aici. Cuvintele cheie sunt:

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

și apoi

sudo apt-get install -y nodejs

Npm (managerul de pachete Node.js) are nevoie de module socket.io-client și serialport, deci instalați-le:

npm instalați socket.io-client

npm instala serialport

Deschideți și salvați un fișier something.js cu următorul cod:

// inițializați conexiunea socket.io:

var soclu; var io = require ('socket.io-client'); socket = io ("https://yourserver.com:port"); // dacă conexiunea la server are succes: socket.on ('connect', function () {socket.send ("sunt aici!"); console.log ("conectat la server");}); // inițializați comunicația portului serial, NB / dev = ttyACM0 poate fi modificat: var SerialPort = require ('serialport'); var serialPort = new SerialPort ('/ dev / ttyACM0', {baudRate: 9600}); // Dacă ceva vine de la Arduino, trimite mesaje diferite // către server în conformitate cu serialPort.on ('date', funcție (date) {console.log ('Date:', data.toString ('ascii')); if (data.indexOf ('8')! == - 1) {socket.send ('/ RingTheBell 1');} if (data.indexOf ('0')! == - 1) {socket. send ('/ client1 1');}}); // Citiți datele disponibile - cred că nu este necesar serialPort.on ('lizibil', funcție () {console.log ('Date:', port.read ());});

Acum ar trebui să configurați și codul server node.js, până când puteți începe și testa scriptul până la

nod./ceva.js

Dacă ceva nu este în regulă, vă rog să-mi spuneți!

Pasul 3: Cod partea serverului

Cod partea serverului
Cod partea serverului

Pe partea de server, avem nevoie de node.js cu server socket.io.

Deci, adăugați-l cu:

npm instalați socket-io

Apoi, veți avea nevoie de un script similar cu codul din pasul 2, cu diferența, că așteaptă conexiunile și, dacă acestea sunt prezente, va transmite orice mesaj trimis de la client tuturor clienților, în acest caz, utilizatorilor site-ului …

Deci, deschideți un serverscript.js cu următoarele:

var http = require ('http'), io = require ('socket.io'); // deschideți un server http minim. socket.io are nevoie de el. var server = http.createServer (funcție (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hello');}); // pornește soclul tcp - setează-ți portul! server.listen (7004, function () {console.log ("Server TCP care rulează pe portul 7004");}); // analizează mesajele tcp var socket = io.listen (server); socket.on ('conexiune', funcție (client, rinfo) {client.broadcast.emit ('sistem', 'cineva conectat …'); client.on ('mesaj', funcție (eveniment)) {console.log (eveniment); // difuzați orice mesaj către fiecare utilizator conectat! socket.emit („mesaj”, eveniment);}); client.on („toată lumea”, funcție (eveniment) {}); client.on („deconectați” function () {socket.emit ('mesaj', 'cineva deconectat …');});});

Încercați să-l testați cu

nod./serverscript.js

Dacă și clientul rulează, ar trebui să vedeți comunicarea lor pe ambele console. Cel puțin acestea:

Date: 0

- spune periodic sistemului că comunicarea Arduino-> Raspberry-> server funcționează.

și

Date: 8

- spune că butonul este pornit.

Pasul 4: Configurați site-ul web

Configurați site-ul web
Configurați site-ul web

Acum suntem gata cu 75%!

Finalizați munca grea cu includerea codului pentru site-ul web.

Este ușor.

mai întâi, includeți clientul socket.io:

apoi creați sistemul de analiză a mesajelor:

soclu var;

socket = io ("yourserver.com:port"); socket.on ('connect', function () {socket.send ('client anonim - un utilizator al site-ului web - este conectat!'); socket.on ('message', function (msg) {// if You want to see fiecare mesaj, pur și simplu decomentați-l: // console.log (msg); if (msg == "/ RingTheBell 1") // aici vine codul de utilizat pentru exprimarea evenimentului pushbutton: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; if (msg == "/ client1 1") {// aici puteți plasa ceva care reacționează la starea clientului conectat};});

Voilá!

gata.

Recomandat: