INHOUDSOPGAWE:

Bel die web !: 4 stappe
Bel die web !: 4 stappe

Video: Bel die web !: 4 stappe

Video: Bel die web !: 4 stappe
Video: 3 мегапикселя камера видеонаблюдения. Стоит ли покупать? На что влияет разрешение? 2024, November
Anonim
Image
Image
Drukknop na Arduino
Drukknop na Arduino

Ring the Web is vir die invloed van webwerwe vanaf plaaslike/regte plekke.

Meer inligting daaroor:

makker.hu/RingTheWeb/

Jy benodig:

  • 1 drukknop
  • 10k weerstand
  • Arduino (enige tipe)
  • kabels
  • klein rekenaar met 'n lae krag - in hierdie geval 'n RPi
  • toegang tot 'n bediener of rekenaar met 'n openbare IP met node.js
  • webwerf

Stappe:

  1. Drukknop na arduino
  2. Arduino tot framboos
  3. Framboos na bediener
  4. Webwerf na bediener

Stap 1: drukknop na Arduino

Eerstens het u 'n Arduino en 'n drukknop nodig!

Elke tipe daarvan is moontlik, dit is aan u om te kies.

Volg die amptelike knoppie -tutoriaal van Arduino om dit aan te sluit.

Hier is die Arduino -kode:

// Arduino -kode om 'n digitale pen te lees en waarde na die seriële poort te stuur

// Balázs Kovács, 2018. leemte -opstelling () {Serial.begin (9600); // maak die seriële poort pinMode (8, INPUT) oop; // koppel die drukknop aan Pin 8} int counter = 0; // iets wat later gebruik word, void loop () {if (digitalRead (8) == 1) {// check pin 8 status Serial.write ("8"); } vertraging (100); toonbank ++; as (teller = 20) {// elke 20x100 = 2000ms -> teller = 0; Serial.write ("0"); // stuur 'n "ek bestaan" -boodskap na die bediener}} // dit is alles!

Stap 2: Arduino tot framboos

Arduino tot framboos
Arduino tot framboos

Nou kan ons Arduino aan 'n rekenaar koppel. In hierdie geval gebruik ons 'n framboos vanweë die lae kragverbruik.

Koppel dit via USB of direk met die RX-TX-penne, wat hier beskryf word.

Installeer dan node.js en npm soos hier beskryf. Die sleutelwoorde is:

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

en dan

sudo apt -get install -y nodejs

Npm (pakketbestuurder van Node.js) benodig socket.io-kliënt- en serialport-modules, dus installeer dit:

npm installeer socket.io-kliënt

npm installeer serialport

Open en stoor 'n something.js -lêer met die volgende kode:

// initialiseer die socket.io -verbinding:

var socket; var io = require ('socket.io-client'); socket = io ("https://yourserver.com:port"); // as die verbinding met die bediener suksesvol is: socket.on ('connect', function () {socket.send ("ek is hier!"); console.log ("gekoppel aan die bediener");}); // initialiseer die seriële poortkommunikasie, NB /dev = ttyACM0 kan verander word: var SerialPort = require ('serialport'); var serialPort = nuwe SerialPort ('/dev/ttyACM0', {baudRate: 9600}); // As daar iets van die Arduino afkomstig is, stuur dit verskillende boodskappe // na die bediener volgens die seriële port.on ('data', funksie (data) {console.log ('Data:', data.toString ('ascii')); if (data.indexOf ('8')! ==-1) {socket.send ('/RingTheBell 1');} if (data.indexOf ('0')! ==-1) {socket. stuur ('/client1 1');}}); // Lees beskikbare data - ek dink dit is nie nodig serialPort.on ('leesbaar', funksie () {console.log ('Data:', port.read ());});

Nou moet u die node.js -kode van die bediener ook instel totdat u die script kan begin en toets

node./something.js

Laat weet my as daar iets fout is!

Stap 3: Kode aan die bediener

Kode aan die bediener
Kode aan die bediener

Aan die bedienerkant het ons node.js nodig met socket.io -bediener.

Voeg dit dus by met:

npm installeer socket-io

Dan benodig u 'n soortgelyke script as die kode op die tweede stap, met die verskil dat dit op verbindings wag, en as dit teenwoordig is, sal dit 'n boodskap wat van die kliënt af gestuur is, na al die kliënte stuur geval, aan die webwerfgebruikers …

Maak dus 'n serverscript.js oop met die volgende:

var http = vereis ('http'), io = vereis ('socket.io'); // maak 'n minimale http -bediener oop. socket.io het dit nodig. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text/html'}); res.end ('hallo');}); // skakel tcp -aansluiting aan - stel u poort in! server.listen (7004, function () {console.log ("TCP -bediener loop op poort 7004");}); // ontleed tcp -boodskappe var socket = io.listen (bediener); socket.on ('verbinding', funksie (kliënt, rinfo) {client.broadcast.emit ('stelsel', 'iemand verbind …'); client.on ('boodskap', funksie (gebeurtenis) {console.log (gebeurtenis); // stuur 'n boodskap uit na elke gekoppelde gebruiker! socket.emit ('boodskap', gebeurtenis);}); client.on ('almal', funksie (gebeurtenis) {}); client.on ('ontkoppel', funksie () {socket.emit ('boodskap', 'iemand ontkoppel …');});});

Probeer om dit te toets

node./serverscript.js

As die kliënt ook werk, moet u hul kommunikasie op beide konsoles sien. Ten minste hierdie:

Data: 0

-vertel gereeld vir die stelsel dat die Arduino-> Framboos-> bedienerkommunikasie werk.

en

Data: 8

- vertel dat die knoppie aan is.

Stap 4: Stel webwerf op

Stel webwerf op
Stel webwerf op

Nou is ons gereed met die 75%!

Sluit die harde werk mee met die kode vir die webwerf in.

Dit is maklik.

Sluit eerstens socket.io -kliënt in:

skep dan die boodskap-ontlederstelsel:

var socket;

socket = io ("yourserver.com:port"); socket.on ('connect', function () {socket.send ('anonym client - a website user - is connected!'); socket.on ('message', function (msg) {// if You want to see elke boodskap, los dit net op: // console.log (msg); as (msg == "/RingTheBell 1") // hier kom die kode wat u kan gebruik om die drukknoppie -gebeurtenis uit te druk: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "#000";}, 1000);}; as (msg == "/client1 1") {// hier kan u iets plaas wat reageer op die gekoppelde kliëntstatus};});

Voilá!

gereed.

Aanbeveel: