Spisu treści:

Zadzwoń do sieci!: 4 kroki
Zadzwoń do sieci!: 4 kroki

Wideo: Zadzwoń do sieci!: 4 kroki

Wideo: Zadzwoń do sieci!: 4 kroki
Wideo: Zmień bieg zdarzeń. 4 kroki techniki Hawkinsa. Przekrocz swój umysł i uwolnij się od schematów 2024, Lipiec
Anonim
Image
Image
Przycisk do Arduino
Przycisk do Arduino

Ring the Web służy do wpływania na strony internetowe z lokalnych/rzeczywistych miejsc.

Więcej informacji na ten temat:

makker.hu/RingTheWeb/

Będziesz potrzebował:

  • 1 przycisk
  • rezystor 10k
  • Arduino (dowolny typ)
  • kable
  • mały, energooszczędny komputer - w tym przypadku RPi
  • dostęp do serwera lub komputera z publicznym IP z node.js
  • Strona internetowa

Kroki:

  1. Przycisk do arduino
  2. Arduino do Maliny
  3. Raspberry do serwera
  4. Strona do serwera

Krok 1: Przycisk do Arduino

Najpierw potrzebujesz Arduino i przycisku!

Każdy ich rodzaj jest możliwy, wybór należy do Ciebie.

Aby je podłączyć, postępuj zgodnie z oficjalnym samouczkiem dotyczącym przycisków Arduino.

Oto kod Arduino:

// Kod Arduino do odczytu cyfrowego pinu i wysłania wartości do portu szeregowego

// Balázs Kovács, 2018. void setup () { Serial.begin(9600); // otwórz port szeregowy pinMode(8, INPUT); // podłącz przycisk do Pinu 8 } int counter = 0; // coś użytego później void loop() { if(digitalRead(8) == 1) { // sprawdź pin 8 status Serial.write("8"); } opóźnienie(100); licznik++; if(counter=20) { // co 20x100=2000ms -> licznik = 0; Serial.write("0"); // wysyła wiadomość "istnieję" do serwera } } // to wszystko!

Krok 2: Arduino do Raspberry

Arduino do Maliny
Arduino do Maliny

Teraz możemy podłączyć Arduino do komputera. W tym przypadku używamy Raspberry ze względu na niski pobór mocy.

Podłącz go przez USB lub bezpośrednio z pinami RX-TX, opisanymi tutaj.

Następnie zainstaluj node.js i npm zgodnie z opisem tutaj. Słowa kluczowe to:

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

i wtedy

sudo apt-get install -y nodejs

Npm (menedżer pakietów Node.js) wymaga modułów socket.io-client i serialport, więc zainstaluj je:

npm zainstaluj socket.io-client

npm zainstaluj port szeregowy

Otwórz i zapisz plik coś.js z następującym kodem:

// zainicjuj połączenie socket.io:

gniazdo var; var io = require('socket.io-client'); socket = io("https://yourserver.com:port"); // jeśli połączenie z serwerem powiodło się: socket.on('connect', function(){ socket.send("jestem!"); console.log("połączony z serwerem"); }); // zainicjuj komunikację portu szeregowego, NB /dev=ttyACM0 można zmienić: var SerialPort = require('serialport'); var serialPort = new SerialPort('/dev/ttyACM0', { szybkość transmisji: 9600 }); // Jeśli coś pochodzi z Arduino, wysyła różne komunikaty // do serwera zgodnie z tym 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){ gniazdo. wyślij('/klient1 1'); } }); // Odczytaj dostępne dane - myślę, że nie jest to konieczne serialPort.on('readable', function() { console.log('Data:', port.read()); });

Teraz powinieneś również skonfigurować kod node.js po stronie serwera, do tego czasu możesz uruchomić i przetestować skrypt poprzez

węzeł./coś.js

Jeśli coś jest nie tak, daj mi znać!

Krok 3: Kod po stronie serwera

Kod po stronie serwera
Kod po stronie serwera

Po stronie serwera potrzebujemy node.js z serwerem socket.io.

Więc dodaj to z:

npm zainstaluj gniazdo-io

Następnie będziesz potrzebował skryptu podobnego do kodu w kroku 2, z tą różnicą, że czeka na połączenia, a jeśli są obecne, to roześle każdą wiadomość wysłaną od klienta do wszystkich klientów, w tym przypadku, do użytkowników serwisu…

Więc otwórz serverscript.js z następującymi elementami:

var http = wymagaj('http'), io = wymagaj('socket.io'); // otwórz minimalny serwer http. socket.io tego potrzebuje. var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('hello'); }); // włącz gniazdo tcp - ustaw swój port! server.listen(7004, function() { console.log("Serwer TCP uruchomiony na porcie 7004"); }); // analizuj komunikaty tcp var socket=io.listen(server); socket.on('połączenie', function(klient, rinfo) { client.broadcast.emit('system', 'ktoś podłączony…'); client.on('wiadomość', function(event){ console.log(event // rozgłaszaj dowolny komunikat do wszystkich podłączonych użytkowników! socket.emit('wiadomość', zdarzenie); }); client.on('everybody', function(event){ });client.on('disconnect', function(){ socket.emit('wiadomość', 'ktoś odłączony…'); }); });

Spróbuj to przetestować za pomocą

węzeł./serverscript.js

Jeśli klient też działa, powinieneś zobaczyć ich komunikację na obu konsolach. Przynajmniej te:

Dane: 0

- okresowo informuje system, że działa komunikacja Arduino->Raspberry->serwer.

oraz

Dane: 8

- mówi, że przycisk jest włączony.

Krok 4: Skonfiguruj stronę internetową

Skonfiguruj stronę internetową
Skonfiguruj stronę internetową

Teraz jesteśmy gotowi z 75%!

Zakończ ciężką pracę z dołączeniem kodu do strony internetowej.

To jest łatwe.

najpierw dołącz klienta socket.io:

następnie stwórz system analizatora komunikatów:

gniazdo var;

socket = io("yourserver.com:port"); socket.on('connect', function() { socket.send('anonimowy klient - użytkownik serwisu - jest podłączony!'); socket.on('wiadomość', function (msg) { // jeśli chcesz zobaczyć każdą wiadomość, po prostu odkomentuj ją: // console.log(msg);if (msg == "/RingTheBell 1") // oto kod używany do wyrażenia zdarzenia przycisku: { document.body.style.background = "#ccc"; setTimeout(function() { document.body.style.background = "#000"; }, 1000); }; if (msg == "/client1 1") { // tutaj możesz coś umieścić który reaguje na stan podłączonego klienta }; });

Voila!

gotowy.

Zalecana: