Indholdsfortegnelse:

Ring på nettet !: 4 trin
Ring på nettet !: 4 trin

Video: Ring på nettet !: 4 trin

Video: Ring på nettet !: 4 trin
Video: КОНЕЦ МУЧЕНИЯМ. Трава больше не проблема! 2024, Juli
Anonim
Image
Image
Trykknap til Arduino
Trykknap til Arduino

Ring the Web er til at påvirke websteder fra lokale/rigtige steder.

Mere info om det:

makker.hu/RingTheWeb/

Du skal bruge:

  • 1 trykknap
  • 10k modstand
  • Arduino (enhver type)
  • kabler
  • lille computer med lav effekt - i dette tilfælde en RPi
  • adgang til en server eller computer med offentlig IP med node.js
  • internet side

Trin:

  1. Trykknap til arduino
  2. Arduino til hindbær
  3. Hindbær til server
  4. Websted til server

Trin 1: Tryk på knappen til Arduino

Først skal du bruge en Arduino og en trykknap!

Enhver type af dem er mulig, det er op til dig at vælge.

For at forbinde dem, følg venligst den officielle knap -tutorial til Arduino.

Her er Arduino -koden:

// Arduino -kode til læsning af en digital pin og sende værdi til den serielle port

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // åbne seriel port pinMode (8, INPUT); // tilslut trykknap til Pin 8} int -tæller = 0; // noget brugt senere tomrumsløjfe () {if (digitalRead (8) == 1) {// tjek pin 8 -status Serial.write ("8"); } forsinkelse (100); tæller ++; hvis (tæller = 20) {// hver 20x100 = 2000ms -> tæller = 0; Serial.write ("0"); // sender en "jeg er eksisterende" -meddelelse til serveren}} // det er alt!

Trin 2: Arduino til hindbær

Arduino til hindbær
Arduino til hindbær

Nu kan vi slutte Arduino til en computer. I dette tilfælde bruger vi en hindbær på grund af dets lave strømforbrug.

Tilslut det via USB eller direkte med RX-TX benene, beskrevet her.

Installer derefter node.js og npm som beskrevet her. Nøgleordene er:

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

og så

sudo apt -get install -y nodejs

Npm (Node.js's pakkehåndtering) har brug for socket.io-klient- og serielportmoduler, så installer dem:

npm installer socket.io-klient

npm installer serieport

Åbn og gem en something.js -fil med følgende kode:

// initialiser socket.io -forbindelsen:

var socket; var io = require ('socket.io-klient'); socket = io ("https://yourserver.com:port"); // hvis forbindelsen til serveren er vellykket: socket.on ('connect', function () {socket.send ("jeg er her!"); console.log ("forbundet til serveren");}); // initialiser den serielle portkommunikation, NB /dev = ttyACM0 kan ændres: var SerialPort = require ('serialport'); var serialPort = ny SerialPort ('/dev/ttyACM0', {baudRate: 9600}); // Hvis noget kommer fra Arduino, sender forskellige meddelelser // til serveren i henhold til det serialPort.on ('data', funktion (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');}}); // Læs tilgængelige data - jeg tror, det ikke er nødvendigt serialPort.on ('læsbar', funktion () {console.log ('Data:', port.read ());});

Nu skal du også konfigurere serversiden node.js -kode, indtil du kan starte og teste scriptet ved

node./something.js

Hvis der er noget galt, så lad mig det vide!

Trin 3: Kode på serversiden

Kode på serversiden
Kode på serversiden

På serversiden har vi brug for node.js med socket.io -server.

Så tilføj det med:

npm installer socket-io

Derefter har du brug for et lignende script til koden på 2. trin, med den forskel, at den venter på forbindelser, og hvis de er til stede, sender den enhver besked sendt fra klienten til alle klienter, i dette sag, til webstedsbrugere …

Så åbn en serverscript.js med følgende:

var http = require ('http'), io = require ('socket.io'); // åbne en minimal http -server. socket.io har brug for det. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text/html'}); res.end ('hej');}); // Tænd TCP -stikket - sæt din port! server.listen (7004, function () {console.log ("TCP -server kører på port 7004");}); // analyser tcp -meddelelser var socket = io.listen (server); socket.on ('forbindelse', funktion (klient, rinfo) {client.broadcast.emit ('system', 'nogen tilsluttet …'); client.on ('meddelelse', funktion (hændelse) {console.log (hændelse); // udsende enhver meddelelse til alle tilsluttede brugere! socket.emit ('besked', begivenhed);}); klient.on ('alle', funktion (begivenhed) {}); klient.on ('afbryd', function () {socket.emit ('meddelelse', 'nogen afbrudt …');});});

Prøv at teste det med

node./serverscript.js

Hvis klienten også kører, skal du se deres kommunikation på begge konsoller. I hvert fald disse:

Data: 0

-fortæller periodisk systemet, at Arduino-> Hindbær-> serverkommunikation fungerer.

og

Data: 8

- fortæller, at knappen er tændt.

Trin 4: Konfigurer websted

Konfigurer websted
Konfigurer websted

Nu er vi klar med de 75%!

Afslut det hårde arbejde med inkluder koden til webstedet.

Det er nemt.

Først skal du inkludere socket.io -klienten:

opret derefter meddelelsesanalysatorsystemet:

var socket;

socket = io ("din server.com:port"); socket.on ('connect', function () {socket.send ('anonym klient - en webstedsbruger - er tilsluttet!'); socket.on ('meddelelse', funktion (msg) {// hvis du vil se hver besked, bare kommenter det: // console.log (msg); hvis (msg == "/RingTheBell 1") // her kommer koden, der skal bruges til at udtrykke trykknaphændelsen: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "#000";}, 1000);}; hvis (msg == "/client1 1") {// her kan du placere noget som reagerer på den tilsluttede klientstatus};});

Voilá!

parat.

Anbefalede: