Innholdsfortegnelse:
- Trinn 1: Trykknapp til Arduino
- Trinn 2: Arduino til bringebær
- Trinn 3: Kode på serversiden
- Trinn 4: Konfigurer nettsted
Video: Ring på nettet !: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Ring the Web er for å påvirke nettsteder fra lokale/virkelige steder.
Mer informasjon om det:
makker.hu/RingTheWeb/
Du vil trenge:
- 1 trykknapp
- 10k motstand
- Arduino (hvilken som helst type)
- kabler
- liten datamaskin med lav effekt - i dette tilfellet en RPi
- tilgang til en server eller datamaskin med offentlig IP med node.js
- nettsted
Trinn:
- Trykknapp til arduino
- Arduino til bringebær
- Bringebær til server
- Nettsted til server
Trinn 1: Trykknapp til Arduino
Først trenger du en Arduino og en trykknapp!
Enhver type dem er mulig, det er opp til deg å velge.
For å koble dem til, vennligst følg den offisielle knappelæringen til Arduino.
Her er Arduino -koden:
// Arduino -kode for å lese en digital pin og sende verdi til serieporten
// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // åpne seriell port pinMode (8, INPUT); // koble trykknappen til Pin 8} int counter = 0; // noe brukt senere void loop () {if (digitalRead (8) == 1) {// sjekk pin 8 status Serial.write ("8"); } forsinkelse (100); teller ++; hvis (teller = 20) {// hver 20x100 = 2000ms -> teller = 0; Serial.write ("0"); // sender en "jeg er eksisterende" melding til serveren}} // det er alt!
Trinn 2: Arduino til bringebær
Nå kan vi koble Arduino til en datamaskin. I dette tilfellet bruker vi en bringebær på grunn av det lave strømforbruket.
Koble den til via USB eller direkte med RX-TX-pinnene, beskrevet her.
Installer deretter node.js og npm som beskrevet her. Stikkordene er:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
og så
sudo apt -get install -y nodejs
Npm (Node.js's pakkebehandler) trenger socket.io-klient og serialport-moduler, så installer dem:
npm installer socket.io-klient
npm installer serieport
Åpne og lagre en something.js -fil med følgende kode:
// initialiser socket.io -tilkoblingen:
var socket; var io = require ('socket.io-klient'); socket = io ("https://yourserver.com:port"); // hvis tilkoblingen til serveren er vellykket: socket.on ('koble til', funksjon () {socket.send ("jeg er her!"); console.log ("koblet til serveren");}); // initialiser den serielle portkommunikasjonen, NB /dev = ttyACM0 kan endres: var SerialPort = require ('serialport'); var serialPort = ny SerialPort ('/dev/ttyACM0', {baudRate: 9600}); // Hvis noe kommer fra Arduino, sender forskjellige meldinger // til serveren i henhold til det serialPort.on ('data', funksjon (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');}}); // Les data som er tilgjengelig - jeg tror det ikke er nødvendig serialPort.on ('lesbar', funksjon () {console.log ('Data:', port.read ());});
Nå bør du også sette opp node.js -koden på serversiden, inntil du kan starte og teste skriptet etter
node./something.js
Gi meg beskjed hvis noe er galt!
Trinn 3: Kode på serversiden
På serversiden trenger vi node.js med socket.io -server.
Så legg det til med:
npm installer socket-io
Deretter trenger du et lignende skript som koden på det andre trinnet, med den forskjellen at den venter på tilkoblinger, og hvis de er tilstede, vil den kringkaste en melding sendt fra klienten til alle klientene, i dette saken, til nettstedets brukere …
Så åpne en serverscript.js med følgende:
var http = require ('http'), io = require ('socket.io'); // åpne en minimal http -server. socket.io trenger det. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text/html'}); res.end ('hallo');}); // slå på tcp -kontakten - sett porten din! server.listen (7004, function () {console.log ("TCP -server kjører på port 7004");}); // analyser tcp -meldinger var socket = io.listen (server); socket.on ('tilkobling', funksjon (klient, rinfo) {client.broadcast.emit ('system', 'noen tilkoblet …'); client.on ('melding', funksjon (hendelse) {console.log (hendelse); // kringkaste en melding til alle tilkoblede brukere! socket.emit ('melding', hendelse);}); client.on ('alle', funksjon (hendelse) {}); client.on ('koble fra', function () {socket.emit ('melding', 'noen koblet fra …');});});
Prøv å test det med
node./serverscript.js
Hvis klienten også kjører, bør du se kommunikasjonen på begge konsollene. I hvert fall disse:
Data: 0
-forteller systemet med jevne mellomrom at Arduino-> Bringebær-> serverkommunikasjon fungerer.
og
Data: 8
- forteller at knappen er på.
Trinn 4: Konfigurer nettsted
Nå er vi klare med 75%!
Fullfør det harde arbeidet med å inkludere koden for nettstedet.
Det er lett.
inkluder først socket.io -klienten:
opprett deretter meldingsanalysatorsystemet:
var socket;
socket = io ("yourserver.com:port"); socket.on ('connect', function () {socket.send ('anonym client - a website user - is connected!'); socket.on ('message', function (msg) {// if You want to see hver melding, bare kommenter den: // console.log (msg); hvis (msg == "/RingTheBell 1") // her kommer koden som skal brukes for å uttrykke trykknapphendelsen: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "#000";}, 1000);}; hvis (msg == "/client1 1") {// her kan du plassere noe som reagerer på den tilkoblede klientstatusen};});
Voilá!
klar.
Anbefalt:
UK Ring Video Doorbell Pro som arbeider med mekanisk klokke: 6 trinn (med bilder)
UK Ring Video Doorbell Pro som arbeider med mekanisk klokke: **************************************** **************** Vær oppmerksom på at denne metoden bare fungerer med vekselstrøm akkurat nå. Jeg oppdaterer hvis/når jeg finner en løsning for dørklokker som bruker likestrøm I mellomtiden hvis du har likestrøm forsyning, trenger du ikke
Volumindikator Neopixel Ws2812 LED -ring og Arduino: 8 trinn
Volumindikator Neopixel Ws2812 LED -ring og Arduino: I denne opplæringen lærer vi hvordan du lager en volumindikator ved hjelp av en Neopixel Ws2812 LED -ring og arduino. Se videoen
DIY MIDI CONTROLLER USB Plug & Play (UPGRADE NEOPIXEL RING): 12 trinn
DIY MIDI CONTROLLER USB Plug & Play (UPGRADE NEOPIXEL RING): Lidenskapelig MAO og elektronisk musikk, men også å se at det var mulig å lage et personlig Midi -grensesnitt jeg laget mine6 Potensiometre og 12 knapper (av / på), men for å gjøre stedet vanskeligere at det allerede var jeg skulle ønske å legge til visuell indikasjon
M5StickC ESP32 & NeoPixels LED Ring Tilfeldig farge: 7 trinn
M5StickC ESP32 & NeoPixels LED Ring Tilfeldig farge: I dette prosjektet lærer vi hvordan du viser en tilfeldig farge på NeoPixels LED Ring ved hjelp av et M5StickC ESP32 -kort. Se videoen
DIY Grid Tied Inverter (gir ikke nettet) UPS -alternativ: 7 trinn (med bilder)
DIY Grid Tied Inverter (ikke feed the Grid) UPS -alternativ: Dette er et oppfølgingsinnlegg fra min andre Instructable om å lage en grid tie inverter som ikke mates tilbake til nettet, siden det nå alltid er mulig å gjøre dette i visse områder som et DIY -prosjekt, og noen steder tillater du ikke å mate det inn