Inhaltsverzeichnis:

Rufen Sie das Web an!: 4 Schritte
Rufen Sie das Web an!: 4 Schritte

Video: Rufen Sie das Web an!: 4 Schritte

Video: Rufen Sie das Web an!: 4 Schritte
Video: So löst du deinen Zauberwürfel mit nur 2 Schritten 😍 2024, November
Anonim
Image
Image
Taster zu Arduino
Taster zu Arduino

Ring the Web ist für die Beeinflussung von Websites von lokalen/realen Orten.

Mehr Infos dazu:

makker.hu/RingTheWeb/

Du brauchst:

  • 1 Taster
  • 10k Widerstand
  • Arduino (jeder Typ)
  • Kabel
  • kleiner, stromsparender Computer - in diesem Fall ein RPi
  • Zugriff auf einen Server oder Computer mit öffentlicher IP mit node.js
  • Webseite

Schritte:

  1. Drucktaste zu arduino
  2. Arduino zu Himbeere
  3. Himbeere zum Server
  4. Website zum Server

Schritt 1: Drucktaste zu Arduino

Zuerst brauchst du einen Arduino und einen Taster!

Jede Art von ihnen ist möglich, es liegt an Ihnen, zu wählen.

Um sie zu verbinden, folgen Sie bitte dem offiziellen Button-Tutorial von Arduino.

Hier ist der Arduino-Code:

// Arduino-Code zum Lesen eines digitalen Pins und Senden des Werts an den seriellen Port

// Balázs Kovács, 2018. Void setup () { Serial.begin (9600); // seriellen Port öffnen PinMode (8, INPUT); // Taster mit Pin 8 verbinden} Int Counter = 0; // etwas später verwendetes Void loop () {if (digitalRead (8) == 1) {// überprüfe den Status von Pin 8 Serial.write ("8"); } Verzögerung (100); Zähler++; if(counter=20) {// alle 20x100=2000ms -> counter = 0; Serial.write("0"); // sendet eine "i'm exist"-Nachricht an den Server } } // das ist alles!

Schritt 2: Arduino zu Himbeere

Arduino zu Himbeere
Arduino zu Himbeere

Jetzt können wir Arduino mit einem Computer verbinden. In diesem Fall verwenden wir einen Raspberry wegen seines geringen Stromverbrauchs.

Verbinden Sie es über USB oder direkt mit den hier beschriebenen RX-TX-Pins.

Installieren Sie dann node.js und npm wie hier beschrieben. Die Stichworte sind:

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

und dann

sudo apt-get install -y nodejs

Npm (der Paketmanager von Node.js) benötigt die Module socket.io-client und serialport, also installiere sie:

npm install socket.io-client

npm Serialport installieren

Öffnen und speichern Sie eine Datei "thing.js" mit dem folgenden Code:

// initialisiere die socket.io-Verbindung:

Var-Buchse; var io = require('socket.io-client'); socket = io("https://yourserver.com:port"); // wenn die Verbindung zum Server erfolgreich ist: socket.on('connect', function(){ socket.send("i'm here!"); console.log("connected to the server"); }); // Initialisieren der seriellen Port-Kommunikation, NB /dev=ttyACM0 kann geändert werden: var SerialPort = require('serialport'); var serialPort = new SerialPort('/dev/ttyACM0', {baudRate: 9600}); // Wenn etwas vom Arduino kommt, sendet es verschiedene // Nachrichten an den Server 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'); } }); // Daten lesen, die verfügbar sind - ich denke, es ist nicht notwendig serialPort.on('readable', function () { console.log('Data:', port.read()); });

Nun sollten Sie auch den serverseitigen node.js-Code einrichten, bis Sie das Skript starten und testen können

Knoten./etwas.js

Wenn etwas nicht stimmt, lass es mich wissen!

Schritt 3: Serverseitiger Code

Serverseitiger Code
Serverseitiger Code

Auf der Serverseite benötigen wir node.js mit socket.io Server.

Also füge es hinzu mit:

npm install socket-io

Dann benötigen Sie ein ähnliches Skript wie der Code im 2. Schritt, mit dem Unterschied, dass es auf Verbindungen wartet, und wenn diese vorhanden sind, sendet es alle vom Client gesendeten Nachrichten an alle Clients Fall, an die Website-Benutzer…

Öffnen Sie also eine serverscript.js mit den folgenden Elementen:

var http = erfordern('http'), io = erfordern('socket.io'); // einen minimalen http-Server öffnen. socket.io braucht es. var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/html'}); res.end('hello'); }); // schalte den TCP-Socket ein - setze deinen Port! server.listen(7004, function() { console.log("TCP-Server läuft auf Port 7004"); }); // TCP-Nachrichten analysieren 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); // jede Nachricht an alle verbundenen Benutzer senden! socket.emit('message', event); }); client.on('everybody', function(event){ }); client.on('disconnect', function(){ socket.emit('message', 'jemand disconnected…'); }); });

Probieren Sie es aus mit

Knoten./serverscript.js

Wenn auch der Client ausgeführt wird, sollten Sie ihre Kommunikation auf beiden Konsolen sehen. Zumindest diese:

Daten: 0

- teilt dem System regelmäßig mit, dass die Arduino->Raspberry->Server-Kommunikation funktioniert.

und

Daten: 8

- sagt, dass die Schaltfläche eingeschaltet ist.

Schritt 4: Website konfigurieren

Website konfigurieren
Website konfigurieren

Jetzt sind wir mit den 75% fertig!

Beenden Sie die harte Arbeit, indem Sie den Code für die Website einfügen.

Es ist einfach.

Fügen Sie zunächst den socket.io-Client hinzu:

Erstellen Sie dann das Message-Analyzer-System:

Var-Buchse;

socket = io("yourserver.com:port"); socket.on('connect', function () { socket.send('anonymer Client - ein Website-Benutzer - ist verbunden!'); socket.on('message', function (msg) { // if You want to see jede Nachricht auskommentieren, einfach auskommentieren: // console.log(msg); if (msg == "/RingTheBell 1") // hier kommt der Code zum Ausdrücken des Pushbutton-Ereignisses: { document.body.style.background = "#ccc"; setTimeout(function() { document.body.style.background = "#000"; }, 1000); }; if (msg == "/client1 1") { // hier kannst du etwas platzieren die auf den Status des verbundenen Clients reagiert }; });

Voilá!

bereit.

Empfohlen: