Orodha ya maudhui:

Piga wavuti !: 4 Hatua
Piga wavuti !: 4 Hatua

Video: Piga wavuti !: 4 Hatua

Video: Piga wavuti !: 4 Hatua
Video: Piga hatua 2024, Julai
Anonim
Image
Image
Pushbutton kwa Arduino
Pushbutton kwa Arduino

Pigia wavuti ni ya kuathiri wavuti kutoka maeneo ya mahali / halisi.

Maelezo zaidi juu yake:

makker.hu/RingTheWeb/

Utahitaji:

  • 1 kifungo cha kushinikiza
  • Kinzani ya 10k
  • Arduino (aina yoyote)
  • nyaya
  • kompyuta ndogo, yenye nguvu ndogo - katika kesi hii RPi
  • upatikanaji wa seva au kompyuta na IP ya umma na node.js
  • tovuti

Hatua:

  1. Pushbutton kwa arduino
  2. Arduino kwa Raspberry
  3. Raspberry kwa seva
  4. Tovuti ya seva

Hatua ya 1: Pushbutton kwa Arduino

Kwanza Unahitaji Arduino na kitufe cha kusukuma!

Aina yoyote yao inawezekana, ni juu yako kuchagua.

Kwa kuziunganisha, tafadhali fuata mafunzo rasmi ya kitufe cha Arduino.

Hapa kuna nambari ya Arduino:

// Nambari ya Arduino ya kusoma pini ya dijiti na kutuma thamani kwa bandari ya serial

// Balázs Kovács, 2018. kuanzisha batili () {Serial.begin (9600); // kufungua bandari ya siri ya bandari (8, INPUT); // unganisha kifungo cha kushinikiza kwa Pini 8} int counter = 0; // kitu kilichotumika baadaye kitanzi batili () {if (digitalRead (8) == 1) {// check pin 8 status Serial.write ("8"); } kuchelewa (100); kaunta ++; ikiwa (counter = 20) {// kila 20x100 = 2000ms -> counter = 0; Serial.write ("0"); // hutuma ujumbe "nipo" kwa seva}} // ndio tu!

Hatua ya 2: Arduino kwa Raspberry

Arduino kwa Raspberry
Arduino kwa Raspberry

Sasa tunaweza kuunganisha Arduino na kompyuta. Katika kesi hii tunatumia Raspberry, kwa sababu ya matumizi yake ya chini ya nguvu.

Unganisha kupitia USB au moja kwa moja na pini za RX-TX, zilizoelezewa hapa.

Kisha weka node.js na npm kama ilivyoelezewa hapa. Maneno muhimu ni:

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

na kisha

Sudo apt-get install -y nodejs

Npm (msimamizi wa kifurushi cha Node.js) anahitaji moduli za socket.io na serialport, kwa hivyo zisakinishe:

npm kufunga socket.io-mteja

npm kufunga serialport

Fungua na uhifadhi faili ya kitu.js na nambari ifuatayo:

// anzisha unganisho la socket.io:

tundu la var; var io = zinahitaji ('soketi.io-mteja'); tundu = io ("https://yourserver.com:port"); // ikiwa unganisho kwa seva limefanikiwa: socket.on ('unganisha', fanya kazi () {socket.send ("niko hapa!"); console.log ("imeunganishwa na seva");})); // anzisha mawasiliano ya bandari ya serial, NB / dev = ttyACM0 inaweza kubadilishwa: var SerialPort = zinahitaji ('serialport'); var serialPort = mpya SerialPort ('/ dev / ttyACM0', {baudRate: 9600}); // Ikiwa kitu kinatoka kwa Arduino, hutuma ujumbe tofauti // kwa seva kulingana na serialPort.on ('data', kazi (data) {console.log ('Data:', data.toString ('ascii') ikiwa (data.indexOf ('8')! == - 1) {socket.send ('/ RingTheBell 1');} ikiwa (data.indexOf ('0')! == - 1) {tundu. tuma ('/ mteja1 1');}}); // Soma data ambayo inapatikana - nadhani sio lazima serialPort.on ('inasomeka', kazi () {console.log ('Data:', port.read ());});

Sasa unapaswa kusanidi node ya upande wa seva.js pia, mpaka hapo unaweza kuanza na kujaribu hati na

node./something.js

Ikiwa kitu kibaya, tafadhali nijulishe!

Hatua ya 3: Msimbo wa upande wa seva

Msimbo wa upande wa seva
Msimbo wa upande wa seva

Kwa upande wa seva, tunahitaji node.js na seva ya socket.io.

Kwa hivyo ongeza na:

npm kufunga tundu-io

Kisha utahitaji hati sawa na nambari kwenye hatua ya 2, na tofauti, kwamba inasubiri unganisho, na ikiwa wapo, itatangaza ujumbe wowote uliotumwa kutoka kwa mteja kwa wateja wote, katika hii kesi, kwa watumiaji wa wavuti…

Kwa hivyo, fungua servercript.js na yafuatayo:

var http = zinahitaji ('http'), io = kuhitaji ('socket.io'); // kufungua seva ndogo ya http. tundu.io inahitaji. var server = http.createServer (kazi (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hello');}); // washa tcp tundu kwenye - weka bandari yako! sikiliza (7004, kazi () {console.log ("TCP server inayoendesha bandari 7004");}); // chambua ujumbe wa tcp var socket = io. sikiliza (seva); socket.on ('unganisho', kazi (mteja, rinfo) {client.broadcast.emit ('mfumo', 'mtu ameunganishwa…'); mteja.on ('ujumbe', kazi (tukio) {console.log (tukio // matangazo ya ujumbe wowote kwa kila mtumiaji aliyeunganishwa! socket.emit ('message', event);}); mteja.on ('kila mtu', kazi (tukio) {}); kazi () {socket.emit ('message', 'some disconneted…');});});

Jaribu kuijaribu

node./serverscript.js

Ikiwa mteja anaendesha pia, Unapaswa kuona mawasiliano yao kwenye koni zote mbili. Angalau haya:

Takwimu: 0

- mara kwa mara huambia mfumo kwamba mawasiliano ya seva ya Arduino-> Raspberry-> inafanya kazi.

na

Takwimu: 8

- anaelezea kuwa kifungo kimewashwa.

Hatua ya 4: Sanidi Wavuti

Sanidi Tovuti
Sanidi Tovuti

Sasa tuko tayari na 75%!

Maliza kazi ngumu pamoja na nambari ya wavuti.

Ni rahisi.

kwanza, ni pamoja na mteja wa socket.io:

kisha uunda mfumo wa uchambuzi wa ujumbe:

tundu la var;

tundu = io ("yourserver.com:port"); socket.on ('connect', function () {socket.send ('mteja asiyejulikana - mtumiaji wa wavuti - ameunganishwa!'); socket.on ('message', function (msg) {// ikiwa unataka kuona kila ujumbe, ondoa tu: // console.log (msg); ikiwa (msg == "/ RingTheBell 1") // inakuja nambari ya kutumia kuelezea tukio la kitufe: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; ikiwa (msg == "/ client1 1") {// hapa unaweza kuweka kitu ambayo humenyuka kwa hali ya mteja iliyounganishwa};});

Voilá!

tayari.

Ilipendekeza: