Πίνακας περιεχομένων:

Ring the Web!: 4 Βήματα
Ring the Web!: 4 Βήματα

Βίντεο: Ring the Web!: 4 Βήματα

Βίντεο: Ring the Web!: 4 Βήματα
Βίντεο: Rhino 3D Tutorial для начинающих # 04 2024, Νοέμβριος
Anonim
Image
Image
Κουμπί προς Arduino
Κουμπί προς Arduino

Το Ring the Web προορίζεται για επηρεασμό ιστότοπων από τοπικά/πραγματικά μέρη.

Περισσότερες πληροφορίες σχετικά με αυτό:

makker.hu/RingTheWeb/

Θα χρειαστείς:

  • 1 κουμπί
  • Αντίσταση 10k
  • Arduino (οποιουδήποτε τύπου)
  • καλώδια
  • μικρός υπολογιστής χαμηλής ισχύος - στην περίπτωση αυτή ένα RPi
  • πρόσβαση σε διακομιστή ή υπολογιστή με δημόσια IP με node.js
  • δικτυακός τόπος

Βήματα:

  1. Πλήκτρο στο arduino
  2. Arduino to Raspberry
  3. Βατόμουρο στο διακομιστή
  4. Ιστότοπος σε διακομιστή

Βήμα 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 to Raspberry
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á!

έτοιμος.

Συνιστάται: