Πίνακας περιεχομένων:
- Βήμα 1: Πλήκτρο στο Arduino
- Βήμα 2: Arduino to Raspberry
- Βήμα 3: Κωδικός από την πλευρά του διακομιστή
- Βήμα 4: Διαμόρφωση ιστότοπου
Βίντεο: Ring the Web!: 4 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Το Ring the Web προορίζεται για επηρεασμό ιστότοπων από τοπικά/πραγματικά μέρη.
Περισσότερες πληροφορίες σχετικά με αυτό:
makker.hu/RingTheWeb/
Θα χρειαστείς:
- 1 κουμπί
- Αντίσταση 10k
- Arduino (οποιουδήποτε τύπου)
- καλώδια
- μικρός υπολογιστής χαμηλής ισχύος - στην περίπτωση αυτή ένα RPi
- πρόσβαση σε διακομιστή ή υπολογιστή με δημόσια IP με node.js
- δικτυακός τόπος
Βήματα:
- Πλήκτρο στο arduino
- Arduino to Raspberry
- Βατόμουρο στο διακομιστή
- Ιστότοπος σε διακομιστή
Βήμα 1: Πλήκτρο στο Arduino
Πρώτα χρειάζεστε ένα Arduino και ένα κουμπί!
Οποιοσδήποτε τύπος είναι δυνατός, εξαρτάται από εσάς να επιλέξετε.
Για τη σύνδεσή τους, ακολουθήστε το επίσημο σεμινάριο κουμπιών του Arduino.
Εδώ είναι ο κώδικας Arduino:
// Κωδικός Arduino για ανάγνωση ψηφιακής ακίδας και αποστολή τιμής στη σειριακή θύρα
// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // άνοιγμα σειριακής θύρας pinMode (8, INPUT); // συνδέστε το κουμπί push στο Pin 8} int counter = 0; // κάτι που χρησιμοποιήθηκε αργότερα void loop () {if (digitalRead (8) == 1) {// ελέγξτε την κατάσταση του pin 8 Serial.write ("8"); } καθυστέρηση (100); μετρητής ++; εάν (μετρητής = 20) {// κάθε 20x100 = 2000ms -> μετρητής = 0; Serial.write ("0"); // στέλνει ένα μήνυμα "είμαι υπάρχων" στον διακομιστή}} // αυτό είναι όλο!
Βήμα 2: Arduino to Raspberry
Τώρα μπορούμε να συνδέσουμε το Arduino σε έναν υπολογιστή. Σε αυτή την περίπτωση χρησιμοποιούμε ένα Βατόμουρο, λόγω της χαμηλής κατανάλωσης ενέργειας.
Συνδέστε το μέσω USB ή απευθείας με τις ακίδες RX-TX, που περιγράφονται εδώ.
Στη συνέχεια, εγκαταστήστε τα node.js και npm όπως περιγράφεται εδώ. Οι λέξεις -κλειδιά είναι:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
και μετά
sudo apt -get install -y nodejs
Το Npm (διαχειριστής πακέτων Node.js) χρειάζεται μονάδες socket.io-client και serialport, οπότε εγκαταστήστε τα:
npm εγκατάσταση socket.io-client
npm εγκατάσταση σειριακής θύρας
Ανοίξτε και αποθηκεύστε ένα αρχείο something.js με τον ακόλουθο κώδικα:
// προετοιμάστε τη σύνδεση socket.io:
πρίζα var? var io = απαιτούν ('socket.io-client'); υποδοχή = io ("https://yourserver.com:port"); // εάν η σύνδεση με τον διακομιστή είναι επιτυχής: ? // αρχικοποίηση της επικοινωνίας σειριακής θύρας, το NB /dev = ttyACM0 μπορεί να αλλάξει: var SerialPort = απαιτεί ('serialport'); var serialPort = νέο SerialPort ('/dev/ttyACM0', {baudRate: 9600}); // Αν κάτι προέρχεται από το Arduino, στέλνει διαφορετικά μηνύματα // στον διακομιστή σύμφωνα με αυτό 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) {υποδοχή send ('/client1 1');}}); // Διαβάστε τα διαθέσιμα δεδομένα - νομίζω ότι δεν είναι απαραίτητο serialPort.on ('readable', function () {console.log ('Data:', port.read ());});
Τώρα θα πρέπει επίσης να ρυθμίσετε τον κώδικα node.js της πλευράς διακομιστή, έως ότου μπορείτε να ξεκινήσετε και να δοκιμάσετε το σενάριο από
κόμβος./κάτι.js
Αν κάτι δεν πάει καλά, ενημερώστε με!
Βήμα 3: Κωδικός από την πλευρά του διακομιστή
Από την πλευρά του διακομιστή, χρειαζόμαστε node.js με διακομιστή socket.io.
Προσθέστε το λοιπόν με:
npm εγκατάσταση socket-io
Στη συνέχεια, θα χρειαστείτε ένα παρόμοιο σενάριο με τον κώδικα στο 2ο βήμα, με τη διαφορά ότι περιμένει τις συνδέσεις και εάν υπάρχουν, θα μεταδώσει οποιοδήποτε μήνυμα αποστέλλεται από τον πελάτη σε όλους τους πελάτες, σε αυτό περίπτωση, στους χρήστες της ιστοσελίδας…
Έτσι, ανοίξτε ένα serverscript.js με τα ακόλουθα:
var http = απαιτεί ('http'), io = απαιτούν ('socket.io'); // ανοίξτε έναν ελάχιστο διακομιστή http. Το socket.io το χρειάζεται. var server = http.createServer (λειτουργία (req, res) {res.writeHead (200, {'Content-Type': 'text/html'}); res.end ('hello');}); // ενεργοποιήστε την υποδοχή tcp - ρυθμίστε τη θύρα σας! server.listen (7004, λειτουργία () {console.log ("Ο διακομιστής TCP τρέχει στη θύρα 7004");}); // ανάλυση μηνυμάτων tcp var socket = io.listen (διακομιστής); socket.on ("σύνδεση", λειτουργία (πελάτης, rinfo) {client.broadcast.emit ("σύστημα", "κάποιος συνδεδεμένος …"); client.on ("μήνυμα", λειτουργία (συμβάν) {console.log (συμβάν); // μετάδοση οποιουδήποτε μηνύματος σε όλους τους συνδεδεμένους χρήστες! λειτουργία () {socket.emit ('μήνυμα', 'κάποιος αποσυνδέθηκε …');});});
Δοκιμάστε να το δοκιμάσετε
κόμβος./serverscript.js
Εάν ο πελάτης λειτουργεί επίσης, θα πρέπει να δείτε την επικοινωνία του και στις δύο κονσόλες. Τουλάχιστον αυτά:
Δεδομένα: 0
-ενημερώνει περιοδικά στο σύστημα ότι η επικοινωνία διακομιστή Arduino-> Raspberry-> λειτουργεί.
και
Δεδομένα: 8
- λέει ότι το κουμπί είναι ενεργοποιημένο.
Βήμα 4: Διαμόρφωση ιστότοπου
Τώρα είμαστε έτοιμοι με το 75%!
Ολοκληρώστε τη σκληρή δουλειά με τον κωδικό για τον ιστότοπο.
Είναι εύκολο.
πρώτα, συμπεριλάβετε τον πελάτη socket.io:
στη συνέχεια, δημιουργήστε το σύστημα ανάλυσης μηνυμάτων:
πρίζα var?
πρίζα = io ("yourserver.com:port"); socket.on ('Connect', function () {socket.send ('anonym client - a website website - is connected!'); socket.on ('message', function (msg) {// αν θέλετε να δείτε κάθε μήνυμα, απλώς μην το σχολιάζετε: // console.log (msg); if (msg == "/RingTheBell 1") // εδώ έρχεται ο κώδικας που θα χρησιμοποιηθεί για την έκφραση του συμβάντος του κουμπιού ώθησης: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "#000";}, 1000);}; if (msg == "/client1 1") {// εδώ μπορείτε να τοποθετήσετε κάτι που αντιδρά στην κατάσταση του συνδεδεμένου πελάτη};});
Voilá!
έτοιμος.
Συνιστάται:
UK Ring Video Doorbell Pro Working With Mechanical Chime: 6 βήματα (με εικόνες)
UK Ring Video Doorbell Pro Working With Mechanical Chime: ************************************* *************** Σημειώστε ότι αυτή η μέθοδος λειτουργεί μόνο με τροφοδοτικό AC αυτή τη στιγμή Θα ενημερώσω εάν/όταν βρω μια λύση για κουδούνια πόρτας χρησιμοποιώντας DC power Εν τω μεταξύ, εάν έχετε τροφοδοσία DC προμήθεια, θα χρειαστείτε
Δείκτης έντασης Neopixel Ws2812 LED Ring & Arduino: 8 Βήματα
Δείκτης έντασης Neopixel Ws2812 LED Ring & Arduino: Σε αυτό το σεμινάριο θα μάθουμε πώς να φτιάχνουμε μια ένδειξη έντασης χρησιμοποιώντας ένα δαχτυλίδι και arduino LED Neopixel Ws2812. Δείτε το βίντεο
DIY MIDI CONTROLLER USB Plug & Play (ΑΝΑΒΑΘΜΙΣΗ NEOPIXEL RING): 12 βήματα
DIY MIDI CONTROLLER USB Plug & Play (UPGRADE NEOPIXEL RING): Παθιασμένος MAO και Ηλεκτρονική Μουσική, αλλά επίσης βλέποντας ότι ήταν δυνατό να δημιουργηθεί μια εξατομικευμένη Midi Interface i made mine6 Potentiometers και 12 κουμπιά (on / off) αλλά να κάνει το σημείο πιο δύσκολο ότι ήδη ήθελα να προσθέσω οπτική ένδειξη
NFC Ring Lock Box: 6 βήματα (με εικόνες)
NFC Ring Lock Box: Γεια σε όλους! Καλώς ορίσατε στο πρώτο μου εκπαιδευτικό! Ζητώ συγγνώμη εκ των προτέρων για το κακό μου επίπεδο στα Αγγλικά. Σε αυτόν τον οδηγό βήμα προς βήμα θα σας διδάξω πώς να φτιάξετε ένα απλό και πολύ φθηνό NFC Ring Lock Box
Ρολόι κινούμενων σχεδίων SMART LED συνδεδεμένο στο Web με πίνακα ελέγχου που βασίζεται στο Web, συγχρονισμένος διακομιστής χρόνου: 11 βήματα (με εικόνες)
Ρολόι κινούμενων σχεδίων SMART LED συνδεδεμένο στο Web με πίνακα ελέγχου Web, συγχρονισμένος διακομιστής χρόνου: Η ιστορία αυτού του ρολογιού πηγαίνει πολύ πίσω-περισσότερα από 30 χρόνια. Ο πατέρας μου πρωτοστάτησε σε αυτή την ιδέα όταν ήμουν μόλις 10 ετών, πολύ πριν από την επανάσταση των LED - πίσω όταν τα LED ήταν 1/1000 της φωτεινότητας της τρέχουσας εκτυφλωτικής λαμπρότητας τους. Μια αληθεια