Turinys:

Skambinkite žiniatinklyje !: 4 žingsniai
Skambinkite žiniatinklyje !: 4 žingsniai

Video: Skambinkite žiniatinklyje !: 4 žingsniai

Video: Skambinkite žiniatinklyje !: 4 žingsniai
Video: Подлая манипуляция. Двойные послания. Газлайтинг. Доведение до шизофрении. НЛП подкаст #3 2024, Liepa
Anonim
Image
Image
Paspauskite mygtuką „Arduino“
Paspauskite mygtuką „Arduino“

„Ring the Web“skirtas paveikti svetaines iš vietinių/tikrų vietų.

Daugiau informacijos apie tai:

makker.hu/RingTheWeb/

Jums reikės:

  • 1 mygtukas
  • 10k rezistorius
  • Arduino (bet kokio tipo)
  • kabeliai
  • mažas, mažos galios kompiuteris - šiuo atveju RPi
  • prieiga prie serverio ar kompiuterio su viešu IP su node.js
  • Interneto svetainė

Žingsniai:

  1. Mygtukas į arduino
  2. Arduino į avietę
  3. Avietė į serverį
  4. Svetainė į serverį

1 žingsnis: paspauskite mygtuką „Arduino“

Pirmiausia jums reikia „Arduino“ir mygtuko!

Bet koks jų tipas yra įmanomas, jūs turite pasirinkti.

Norėdami juos sujungti, vadovaukitės oficialia „Arduino“mygtukų pamoka.

Čia yra „Arduino“kodas:

// „Arduino“kodas, skirtas skaitmeniniam kaiščiui skaityti ir reikšmei siųsti į nuoseklųjį prievadą

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // atidaryti nuoseklųjį prievadą pinMode (8, INPUT); // prijungti mygtuką prie kaiščio 8} int counter = 0; // kažkas naudojamas vėliau void loop () {if (digitalRead (8) == 1) {// patikrinkite 8 kaiščio būseną Serial.write ("8"); } uždelsimas (100); skaitiklis ++; if (skaitiklis = 20) {// kas 20x100 = 2000ms -> skaitiklis = 0; Serial.write („0“); // siunčia serveriui pranešimą „aš esu“}} // tai viskas!

2 žingsnis: Arduino į avietę

Arduino į avietę
Arduino į avietę

Dabar galime prijungti „Arduino“prie kompiuterio. Šiuo atveju mes naudojame avietę dėl mažos energijos sąnaudos.

Prijunkite jį per USB arba tiesiogiai su čia aprašytais RX-TX kaiščiais.

Tada įdiekite node.js ir npm, kaip aprašyta čia. Raktiniai žodžiai yra šie:

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

ir tada

sudo apt -get install -y nodejs

Npm („Node.js“paketų tvarkytojui) reikia „socket.io-client“ir „serialport“modulių, todėl įdiekite juos:

npm įdiegti socket.io-client

npm įdiegti serijinį prievadą

Atidarykite ir išsaugokite failą something.js naudodami šį kodą:

// inicijuoti socket.io ryšį:

var lizdas; var io = reikalauti ('socket.io-client'); lizdas = io ("https://yourserver.com:port"); // jei ryšys su serveriu sėkmingas: socket.on ('connect', function () {socket.send ("aš čia!"); console.log ("prijungtas prie serverio");}); // inicijuoti serijinio prievado ryšį, NB /dev = ttyACM0 galima pakeisti: var SerialPort = reikalauja ('serialport'); var serialPort = naujas SerialPort ('/dev/ttyACM0', {baudRate: 9600}); // Jei kažkas ateina iš „Arduino“, siunčia skirtingus pranešimus // į serverį pagal tai serialPort.on ('duomenys', funkcija (duomenys) {console.log ('Duomenys:', data.toString ('ascii')); if (data.indexOf ('8')! ==-1) {socket.send ('/RingTheBell 1');} if (data.indexOf ('0')! ==-1) {socket. siųsti ('/client1 1');}}); // Skaityti turimus duomenis - manau, kad tai nėra būtina serialPort.on ('readable', function () {console.log ('Data:', port.read ());});

Dabar taip pat turėtumėte nustatyti serverio pusės node.js kodą, kol galėsite pradėti ir išbandyti scenarijų

mazgas./kažkas.js

Jei kažkas negerai, praneškite man!

3 veiksmas: serverio pusės kodas

Serverio pusės kodas
Serverio pusės kodas

Serverio pusėje mums reikia node.js su socket.io serveriu.

Taigi pridėkite jį:

npm įdiegti „socket-io“

Tada jums reikės panašaus scenarijaus į kodą antrame žingsnyje, tik tuo atveju, kai jis laukia prisijungimo, o jei jie bus, tai transliuos bet kokį iš kliento išsiųstą pranešimą visiems klientams. atveju, svetainės vartotojams …

Taigi, atidarykite servercript.js, atlikdami šiuos veiksmus:

var http = reikalauti ('http'), io = reikalauti ('socket.io'); // atidaryti minimalų http serverį. lizdas.io to reikia. var serveris = http.createServer (funkcija (req, res) {res.writeHead (200, {'Content-Type': 'text/html'}); res.end ('labas');}); // įjunkite tcp lizdą - nustatykite savo prievadą! server.listen (7004, function () {console.log ("TCP serveris, veikiantis 7004 prievade");}); // analizuoti tcp pranešimus var socket = io.listen (serveris); socket.on („ryšys“, funkcija (klientas, rinfo) {client.broadcast.emit („sistema“, „kažkas prijungtas …“); client.on („pranešimas“, funkcija (įvykis) {console.log (įvykis); // transliuokite bet kokį pranešimą visiems prijungtiems vartotojams! socket.emit ('pranešimas', įvykis);}); client.on ('visiems', funkcija (įvykis) {}); client.on ('atsijungti', function () {socket.emit ('pranešimas', 'kažkas atjungtas …');});});

Pabandykite tai išbandyti

mazgas./serverscript.js

Jei klientas taip pat veikia, turėtumėte matyti jo bendravimą abiejose konsolėse. Bent jau šie:

Duomenys: 0

-periodiškai praneša sistemai, kad „Arduino“-> „Raspberry“-> serverio ryšys veikia.

ir

Duomenys: 8

- sako, kad mygtukas įjungtas.

4 veiksmas: sukonfigūruokite svetainę

Konfigūruoti svetainę
Konfigūruoti svetainę

Dabar mes pasiruošę 75%!

Užbaikite sunkų darbą įtraukdami svetainės kodą.

Tai lengva.

pirmiausia įtraukite „socket.io“klientą:

tada sukurkite pranešimų analizatoriaus sistemą:

var lizdas;

lizdas = io ("tavo serveris.com: uostas"); socket.on ('connect', function () {socket.send ('anoniminis klientas - svetainės vartotojas - prijungtas!'); socket.on ('message', function (msg) {// jei norite pamatyti kiekvieną pranešimą, tiesiog nekomentuokite jo: // console.log (msg); if (msg == "/RingTheBell 1") // čia pateikiamas kodas, naudojamas norint išreikšti mygtuko įvykį: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "#000";}, 1000);}; if (msg == "/client1 1") {// čia galite ką nors įdėti kuri reaguoja į prijungto kliento būseną};});

Voilá!

pasiruošę.

Rekomenduojamas: