Inhoudsopgave:

Bel het web!: 4 stappen
Bel het web!: 4 stappen

Video: Bel het web!: 4 stappen

Video: Bel het web!: 4 stappen
Video: Zoldervloer isoleren met PIR-platen in 4 stappen | GAMMA België 2024, Juli-
Anonim
Image
Image
Drukknop naar Arduino
Drukknop naar Arduino

Ring the Web is bedoeld voor het beïnvloeden van websites van lokale/echte plaatsen.

Meer info erover:

makker.hu/RingTheWeb/

Je hebt nodig:

  • 1 drukknop
  • 10k weerstand
  • Arduino (elk type)
  • kabels
  • kleine, energiezuinige computer - in dit geval een RPi
  • toegang tot een server of computer met een openbaar IP-adres met node.js
  • website

Stappen:

  1. Drukknop naar arduino
  2. Arduino naar framboos
  3. Framboos naar server
  4. Website naar server

Stap 1: Drukknop naar Arduino

Eerst heb je een Arduino en een drukknop nodig!

Elk type van hen is mogelijk, het is aan jou om te kiezen.

Volg de officiële knop-tutorial van Arduino om ze aan te sluiten.

Hier is de Arduino-code:

// Arduino-code voor het lezen van een digitale pin en het verzenden van waarde naar de seriële poort

// Balázs Kovács, 2018. void setup () { Serial.begin (9600); // open de seriële poort pinMode (8, INPUT); // sluit de drukknop aan op Pin 8 } int counter = 0; // iets gebruikt later void loop () {if (digitalRead (8) == 1) { // controleer pin 8 status Serial.write ("8"); } vertraging(100); teller++; if(counter=20) {// elke 20x100=2000ms -> counter = 0; Serieel.schrijven("0"); // stuurt een "ik ben bestaand" bericht naar de server } } // dat is alles!

Stap 2: Arduino naar Raspberry

Arduino naar framboos
Arduino naar framboos

Nu kunnen we Arduino op een computer aansluiten. In dit geval gebruiken we een Raspberry, vanwege het lage stroomverbruik.

Sluit hem aan via USB of rechtstreeks met de RX-TX-pinnen, zoals hier beschreven.

Installeer vervolgens node.js en npm zoals hier beschreven. De trefwoorden zijn:

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

en dan

sudo apt-get install -y nodejs

Npm (de pakketbeheerder van Node.js) heeft socket.io-client en serialport-modules nodig, dus installeer ze:

npm install socket.io-client

npm seriële poort installeren

Open en bewaar een something.js-bestand met de volgende code:

// initialiseer de socket.io-verbinding:

var-aansluiting; var io = vereisen('socket.io-client'); socket = io("https://uwserver.com:poort"); // als de verbinding met de server succesvol is: socket.on('connect', function(){ socket.send("ik ben hier!"); console.log("verbonden met de server");}); // initialiseer de seriële poortcommunicatie, NB /dev=ttyACM0 kan worden gewijzigd: var SerialPort = required('serialport'); var serialPort = nieuwe SerialPort('/dev/ttyACM0', {baudRate: 9600}); // Als iets van de Arduino komt, stuurt het verschillende berichten // naar de server volgens het 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){ socket. send('/client1 1'); } }); // Lees gegevens die beschikbaar zijn - ik denk dat het niet nodig is serialPort.on('readable', function () { console.log('Data:', port.read());});

Nu moet u ook de server-side node.js-code instellen, totdat u het script kunt starten en testen door:

knooppunt./iets.js

Als er iets mis is, laat het me weten!

Stap 3: Server-side code

Server-side code
Server-side code

Aan de serverkant hebben we node.js nodig met socket.io-server.

Dus voeg het toe met:

npm socket-io installeren

Dan heb je een soortgelijk script nodig als de code in de 2e stap, met het verschil dat het wacht op verbindingen, en als ze aanwezig zijn, zal het elk bericht uitzenden dat van de client naar alle clients wordt verzonden, in deze geval, aan de gebruikers van de website…

Open dus een serverscript.js met het volgende:

var http = vereisen('http'), io = vereisen('socket.io'); // open een minimale http-server. socket.io heeft het nodig. var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('hallo'); }); // zet tcp-socket aan - stel je poort in! server.listen(7004, function() { console.log("TCP-server draait op poort 7004"); }); // analyseer tcp-berichten var socket=io.listen(server); socket.on('connection', function(client, rinfo) { client.broadcast.emit('system', 'somebody connected…'); client.on('message', function(event){ console.log(event); // zend elk bericht uit naar alle verbonden gebruikers! socket.emit('message', event); }); client.on('everybody', function(event){ }); client.on('disconnect', function(){ socket.emit('message', 'iemand heeft de verbinding verbroken…'); }); });

Probeer het eens met

node./serverscript.js

Als de client ook actief is, zou u hun communicatie op beide consoles moeten zien. Deze tenminste:

Gegevens: 0

- vertelt het systeem periodiek dat de Arduino->Raspberry->servercommunicatie werkt.

en

Gegevens: 8

- geeft aan dat de knop is ingeschakeld.

Stap 4: Website configureren

Website configureren
Website configureren

Nu zijn we klaar met de 75%!

Rond het harde werk af met de code voor de website.

Het is makkelijk.

neem eerst de socket.io-client op:

maak vervolgens het systeem voor het analyseren van berichten:

var-aansluiting;

socket = io("uwserver.com:poort"); socket.on('connect', function () { socket.send('anonym client - a website user - is connected!'); socket.on('message', function (msg) { // if You want to see elk bericht, verwijder het commentaar: // console.log(msg); if (msg == "/RingTheBell 1") // hier komt de code die moet worden gebruikt voor het uitdrukken van de drukknopgebeurtenis: { document.body.style.background = "#ccc"; setTimeout(function() { document.body.style.background = "#000"; }, 1000); }; if (msg == "/client1 1") { // hier kun je iets plaatsen die reageert op de status van de verbonden client }; });

Voila!

klaar.

Aanbevolen: