Innholdsfortegnelse:

Ring på nettet !: 4 trinn
Ring på nettet !: 4 trinn

Video: Ring på nettet !: 4 trinn

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

Ring the Web er for å påvirke nettsteder fra lokale/virkelige steder.

Mer informasjon om det:

makker.hu/RingTheWeb/

Du vil trenge:

  • 1 trykknapp
  • 10k motstand
  • Arduino (hvilken som helst type)
  • kabler
  • liten datamaskin med lav effekt - i dette tilfellet en RPi
  • tilgang til en server eller datamaskin med offentlig IP med node.js
  • nettsted

Trinn:

  1. Trykknapp til arduino
  2. Arduino til bringebær
  3. Bringebær til server
  4. Nettsted til server

Trinn 1: Trykknapp til Arduino

Først trenger du en Arduino og en trykknapp!

Enhver type dem er mulig, det er opp til deg å velge.

For å koble dem til, vennligst følg den offisielle knappelæringen til Arduino.

Her er Arduino -koden:

// Arduino -kode for å lese en digital pin og sende verdi til serieporten

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // åpne seriell port pinMode (8, INPUT); // koble trykknappen til Pin 8} int counter = 0; // noe brukt senere void loop () {if (digitalRead (8) == 1) {// sjekk pin 8 status Serial.write ("8"); } forsinkelse (100); teller ++; hvis (teller = 20) {// hver 20x100 = 2000ms -> teller = 0; Serial.write ("0"); // sender en "jeg er eksisterende" melding til serveren}} // det er alt!

Trinn 2: Arduino til bringebær

Arduino til bringebær
Arduino til bringebær

Nå kan vi koble Arduino til en datamaskin. I dette tilfellet bruker vi en bringebær på grunn av det lave strømforbruket.

Koble den til via USB eller direkte med RX-TX-pinnene, beskrevet her.

Installer deretter node.js og npm som beskrevet her. Stikkordene 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 pakkebehandler) trenger socket.io-klient og serialport-moduler, så installer dem:

npm installer socket.io-klient

npm installer serieport

Åpne og lagre en something.js -fil med følgende kode:

// initialiser socket.io -tilkoblingen:

var socket; var io = require ('socket.io-klient'); socket = io ("https://yourserver.com:port"); // hvis tilkoblingen til serveren er vellykket: socket.on ('koble til', funksjon () {socket.send ("jeg er her!"); console.log ("koblet til serveren");}); // initialiser den serielle portkommunikasjonen, NB /dev = ttyACM0 kan endres: var SerialPort = require ('serialport'); var serialPort = ny SerialPort ('/dev/ttyACM0', {baudRate: 9600}); // Hvis noe kommer fra Arduino, sender forskjellige meldinger // til serveren i henhold til det serialPort.on ('data', funksjon (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');}}); // Les data som er tilgjengelig - jeg tror det ikke er nødvendig serialPort.on ('lesbar', funksjon () {console.log ('Data:', port.read ());});

Nå bør du også sette opp node.js -koden på serversiden, inntil du kan starte og teste skriptet etter

node./something.js

Gi meg beskjed hvis noe er galt!

Trinn 3: Kode på serversiden

Kode på serversiden
Kode på serversiden

På serversiden trenger vi node.js med socket.io -server.

Så legg det til med:

npm installer socket-io

Deretter trenger du et lignende skript som koden på det andre trinnet, med den forskjellen at den venter på tilkoblinger, og hvis de er tilstede, vil den kringkaste en melding sendt fra klienten til alle klientene, i dette saken, til nettstedets brukere …

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

var http = require ('http'), io = require ('socket.io'); // åpne en minimal http -server. socket.io trenger det. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text/html'}); res.end ('hallo');}); // slå på tcp -kontakten - sett porten din! server.listen (7004, function () {console.log ("TCP -server kjører på port 7004");}); // analyser tcp -meldinger var socket = io.listen (server); socket.on ('tilkobling', funksjon (klient, rinfo) {client.broadcast.emit ('system', 'noen tilkoblet …'); client.on ('melding', funksjon (hendelse) {console.log (hendelse); // kringkaste en melding til alle tilkoblede brukere! socket.emit ('melding', hendelse);}); client.on ('alle', funksjon (hendelse) {}); client.on ('koble fra', function () {socket.emit ('melding', 'noen koblet fra …');});});

Prøv å test det med

node./serverscript.js

Hvis klienten også kjører, bør du se kommunikasjonen på begge konsollene. I hvert fall disse:

Data: 0

-forteller systemet med jevne mellomrom at Arduino-> Bringebær-> serverkommunikasjon fungerer.

og

Data: 8

- forteller at knappen er på.

Trinn 4: Konfigurer nettsted

Konfigurer nettsted
Konfigurer nettsted

Nå er vi klare med 75%!

Fullfør det harde arbeidet med å inkludere koden for nettstedet.

Det er lett.

inkluder først socket.io -klienten:

opprett deretter meldingsanalysatorsystemet:

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 hver melding, bare kommenter den: // console.log (msg); hvis (msg == "/RingTheBell 1") // her kommer koden som skal brukes for å uttrykke trykknapphendelsen: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "#000";}, 1000);}; hvis (msg == "/client1 1") {// her kan du plassere noe som reagerer på den tilkoblede klientstatusen};});

Voilá!

klar.

Anbefalt: