İçindekiler:

Web'i Çalın!: 4 Adım
Web'i Çalın!: 4 Adım

Video: Web'i Çalın!: 4 Adım

Video: Web'i Çalın!: 4 Adım
Video: EN İYİ TARAYICIYI BULDUK 2024, Kasım
Anonim
Image
Image
Arduino'ya buton
Arduino'ya buton

Ring the Web, yerel/gerçek yerlerden web sitelerini etkilemek içindir.

Bununla ilgili daha fazla bilgi:

makker.hu/RingTheWeb/

İhtiyacın olacak:

  • 1 buton
  • 10k direnç
  • Arduino (herhangi bir tür)
  • kablolar
  • küçük, düşük güçlü bilgisayar - bu durumda bir RPI
  • node.js ile genel IP'ye sahip bir sunucuya veya bilgisayara erişim
  • İnternet sitesi

Adımlar:

  1. Arduino'ya buton
  2. Arduino'dan Ahududuya
  3. Ahududu sunucuya
  4. Web sitesi sunucuya

Adım 1: Arduino'ya Buton

İlk önce bir Arduino'ya ve bir düğmeye ihtiyacınız var!

Her türlüsü mümkün, seçim size kalmış.

Bunları bağlamak için lütfen Arduino'nun resmi düğme eğitimini takip edin.

İşte Arduino kodu:

// Dijital pini okumak ve seri porta değer göndermek için Arduino kodu

// Balázs Kovács, 2018. void setup () { Serial.begin(9600); // seri portu aç pinMode(8, INPUT); // butonunu Pin 8'e bağla } int counter = 0; // daha sonra kullanılan bir şey void loop() { if(digitalRead(8) == 1) { // pin 8 durumunu kontrol edin Serial.write("8"); } gecikme(100); sayaç++; if(counter=20) { // her 20x100=2000ms -> sayaç = 0; Serial.write("0"); // sunucuya "ben varım" mesajı gönderir } } // hepsi bu!

Adım 2: Arduino'dan Ahududuya

Arduino'dan Ahududuya
Arduino'dan Ahududuya

Artık Arduino'yu bir bilgisayara bağlayabiliriz. Bu durumda, düşük güç tüketimi nedeniyle bir Ahududu kullanıyoruz.

USB aracılığıyla veya doğrudan burada açıklanan RX-TX pinleriyle bağlayın.

Ardından node.js ve npm'yi burada açıklandığı gibi kurun. Anahtar kelimeler:

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

ve daha sonra

sudo apt-get install -y düğümleri

Npm (Node.js'nin paket yöneticisi) socket.io-client ve serialport modüllerine ihtiyaç duyar, bu yüzden bunları kurun:

npm socket.io-client'ı kurun

npm seri bağlantı noktasını kurun

Aşağıdaki kodla birthing.js dosyasını açın ve kaydedin:

// socket.io bağlantısını başlat:

var soket; var io = require('socket.io-client'); soket = io("https://server.com:port"); // sunucuya bağlantı başarılıysa: socket.on('connect', function(){ socket.send("buradayım!"); console.log("sunucuya bağlı"); }); // seri port iletişimini başlat, NB /dev=ttyACM0 değiştirilebilir: var SerialPort = require('serialport'); var serialPort = new SerialPort('/dev/ttyACM0', { baudRate: 9600 }); // Arduino'dan bir şey gelirse, sunucuya buna göre farklı mesajlar // gönderir serialPort.on('data', function (data) { console.log('Data:', data.toString('ascii')); if(data.indexOf('8')!==-1){ socket.send('/RingTheBell 1'); } if(data.indexOf('0')!==-1){ soket. send('/client1 1'); } }); // Mevcut verileri oku - bence gerekli değil serialPort.on('readable', function () { console.log('Data:', port.read()); });

Şimdi sunucu tarafı node.js kodunu da ayarlamalısınız, o zamana kadar betiği başlatabilir ve test edebilirsiniz.

düğüm./bir şey.js

Bir şey yanlışsa, lütfen bana bildirin!

3. Adım: Sunucu Tarafı Kodu

Sunucu Tarafı Kodu
Sunucu Tarafı Kodu

Sunucu tarafında ise socket.io sunucusu ile node.js'ye ihtiyacımız var.

Öyleyse şununla ekleyin:

npm soket-io'yu kurun

Ardından, 2. adımdaki koda benzer bir komut dosyasına ihtiyacınız olacak, farkı, bağlantıları beklemesi ve eğer varsa, istemciden tüm istemcilere gönderilen herhangi bir mesajı yayınlayacak olmasıdır. durumda, web sitesi kullanıcılarına…

Bu nedenle, aşağıdakilerle bir serverscript.js açın:

var http = gerektirir('http'), io = require('socket.io'); // minimal bir http sunucusu açın. socket.io'nun buna ihtiyacı var. var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('merhaba'); }); // tcp soketini açın - portunuzu ayarlayın! server.listen(7004, function() { console.log("7004 portunda çalışan TCP sunucusu"); }); // tcp mesajlarını analiz et var socket=io.listen(server); socket.on('bağlantı', işlev(istemci, rinfo) { client.broadcast.emit('system', 'bağlı biri…'); client.on('message', function(event){ console.log(event)); // her bağlı kullanıcıya herhangi bir mesajı yayınla! socket.emit('message', event); }); client.on('herkes', function(event){ }); client.on('bağlantıyı kes', function(){ socket.emit('message', 'birisi bağlantısı kesildi…'); }); });

ile test etmeyi deneyin

düğüm./serverscript.js

İstemci de çalışıyorsa, iletişimlerini her iki konsolda da görmelisiniz. En azından bunlar:

Veri: 0

- periyodik olarak sisteme Arduino->Raspberry->sunucu iletişiminin çalıştığını söyler.

ve

Veri: 8

- düğmenin açık olduğunu söyler.

4. Adım: Web Sitesini Yapılandırın

Web Sitesini Yapılandır
Web Sitesini Yapılandır

Şimdi %75 ile hazırız!

Web sitesinin kodunu dahil ederek zor işi bitirin.

Bu kolay.

ilk olarak, socket.io istemcisini dahil edin:

daha sonra mesaj analizörü sistemini oluşturun:

var soket;

soket = io("server.com:port"); socket.on('connect', function () { socket.send('anonim istemci - bir web sitesi kullanıcısı - bağlı!'); socket.on('message', function (msg) { // görmek isterseniz her mesaj, sadece yorumunu kaldırın: // console.log(msg); if (msg == "/RingTheBell 1") // işte buton olayını ifade etmek için kullanılacak kod geliyor: {document.body.style.background = "#ccc"; setTimeout(function() { document.body.style.background = "#000"; }, 1000); }; if (msg == "/client1 1") { // buraya bir şeyler yerleştirebilirsiniz bağlı istemci durumuna tepki veren }; });

İşte!

hazır.

Önerilen: