Πίνακας περιεχομένων:
- Βήμα 1: Λογική λογισμικού: Αρχιτεκτονική συστήματος
- Βήμα 2: Βήμα 1: Καλωδίωση υλικού
- Βήμα 3: Βήμα 2: Arduino
- Βήμα 4: Βήμα 3: NodeJS
- Βήμα 5: Βήμα 4: Η διεπαφή ιστού
- Βήμα 6: Αποτέλεσμα
Βίντεο: Έργο Arduino: Έλεγχος ηλεκτρονικών μέσω Διαδικτύου χρησιμοποιώντας βάση δεδομένων Nodejs + SQL & ιστότοπος .: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Έργο από: Mahmed.tech
Ημερομηνία κατασκευής: 14 Ιουλίου 2017
Επίπεδο δυσκολίας: Αρχάριος με κάποιες γνώσεις προγραμματισμού.
Απαιτήσεις υλικού:
- Arduino Uno, Nano, Mega (νομίζω ότι τα περισσότερα MCU με τη σειριακή σύνδεση θα λειτουργήσουν)
- Ενιαία αντίσταση περιορισμού LED & ρεύματος. Χρησιμοποιήστε αυτήν την αριθμομηχανή αν δεν είστε σίγουροι: Ohms Law Calculator
- Ποτενσιόμετρο 10Κ.
Απαιτήσεις λογισμικού:
- Arduino IDE
- Node. JS (αυτό είναι ένα λογισμικό σε υπολογιστή, πολύ απλό στην εγκατάσταση)
- MySQL Server (ο ευκολότερος τρόπος που βρήκα είναι να χρησιμοποιήσω μια φθηνή φιλοξενία ιστοσελίδων. Μπορείτε επίσης να λάβετε δωρεάν ονόματα τομέα)
Γλώσσα προγραμματισμού και δέσμης ενεργειών που χρησιμοποιείται:
Arduino (Τροποποιημένο C/C ++), JavaScript (Nodejs), PHP, HTML & CSS
Εισαγωγή Αυτό το έργο με λίγα λόγια: Έλεγχος ενός μικροελεγκτή Arduino από μια διεπαφή ιστού. Επομένως, ελέγξτε οποιαδήποτε ηλεκτρική συσκευή από οπουδήποτε με το Διαδίκτυο. Wantedθελα να διευρύνω την κατανόησή μου για τον προγραμματισμό και την ανάπτυξη ιστού και ποιος καλύτερος τρόπος να το κάνω αυτό από το να κάνω ένα απλό αλλά αποτελεσματικό έργο. Το υλικό διατηρείται στο ελάχιστο, ώστε να μπορώ να επικεντρωθώ περισσότερο στο λογισμικό. Ως εκ τούτου, πήγα με μια απλή ρύθμιση LED, δοχείου. Το δοχείο θα στείλει δεδομένα και το led θα λάβει (φωτεινότητα PWM). Χρησιμοποιώντας το NodeJS, τα σειριακά δεδομένα διαβάστηκαν (τιμή ποτενσιόμετρου) και γράφτηκαν (φωτεινότητα led). Το δύσκολο μέρος αυτού του έργου ήταν η λήψη δεδομένων εισόδου από απομακρυσμένη τοποθεσία (διακομιστής ιστού)
Βήμα 1: Λογική λογισμικού: Αρχιτεκτονική συστήματος
Δεδομένα ποτενσιόμετρου:
Αυτό ξεκινά στο Arduino, η τιμή δοχείου ανάγνωσης είναι σειριακή εκτύπωση. Ωστόσο, αυτή τη φορά θα χρησιμοποιήσουμε το Node. JS για να διαβάσουμε την τιμή. Το NodeJS θα ανοίξει σειριακή επικοινωνία στην ίδια θύρα με την οποία είναι συνδεδεμένο το Arduino και θα διαβάσει την τιμή του εκτυπωμένου δοχείου. Στη συνέχεια, το NodeJS θα ανεβάσει τα δεδομένα σε μια απομακρυσμένη βάση δεδομένων SQL, αυτό θα συμβαίνει κάθε φορά που εκτυπώνεται μια νέα τιμή δοχείου. Μια ιστοσελίδα θα συνδεθεί με το διάστημα συνόλου βάσης δεδομένων SQL και θα ανακτήσει την τιμή του ποτενσιόμετρου. Αυτό στη συνέχεια θα εμφανιστεί στην ιστοσελίδα.
Δεδομένα Led:
Για το led, η φωτεινότητα PWM θα οριστεί από τον χρήστη σε απομακρυσμένη ιστοσελίδα, οπότε το ταξίδι του ξεκινά στο αντίθετο άκρο του φάσματος. Τα δεδομένα εισόδου αποθηκεύονται σε μια βάση δεδομένων SQL, κάθε διάστημα καθορισμού της βάσης δεδομένων ελέγχεται για αλλαγή στο led PWM, αυτό γίνεται από το NodeJS. Εάν η τιμή είναι διαφορετική από την προηγούμενη, τότε η νέα τιμή θα σταλεί στο Arduino μέσω σειριακού διαύλου. Το Arduino αλλάζει την τιμή PWM εξόδου του led για να αλλάξει τη φωτεινότητά του.
Ο υπολογιστής νόμου Ohms χρησιμοποιεί τον τύπο V = IR και P = IV = I²R = V²/R Για αυτό το έργο, θα χρησιμοποιήσω ένα μπλε led. Αυτό είναι σημαντικό γιατί καθώς αυξάνεται η συχνότητα φωτός αυξάνεται και η πτώση τάσης. Δεδομένου ότι το μπλε φως έχει υψηλότερη συχνότητα σε σύγκριση με κάτι σαν κόκκινο led. Αυτό σημαίνει υψηλότερη τάση προς τα εμπρός. Ανάλογα με τη μάρκα, τον τύπο και το μέγεθος, το εύρος εργασίας θα διαφέρει. Για τη ρύθμισή μου, χρησιμοποίησα μια αντίσταση 220 Ω σε σειρά, αρνητική στη γείωση και θετική σε μια ακίδα PWM σε ένα Arduino. Το δοχείο συνδέθηκε με έναν αναλογικό πείρο. Με 5VCC το ένα άκρο GND το άλλο και το μεσαίο πείρο συνδεδεμένο σε έναν αναλογικό πείρο (A0 στην περίπτωσή μου).
Βήμα 2: Βήμα 1: Καλωδίωση υλικού
Αυτό είναι πολύ απλό: Απλώς συνδέστε την τρέχουσα αντίσταση περιορισμού σε σειρά με το LED βεβαιωθείτε ότι έχετε οδηγήσει σωστά. Ένα σημείο θα πάει στο GND ενώ ένα άλλο τέλος θα πάει στο pin Arduino. Για τη ρύθμισή μου, χρησιμοποίησα την καρφίτσα 12 για led και A7 για το Pot. Δεν έχω σχηματικό αφού το πολύ απλό κύκλωμά του. Ωστόσο, το βρήκα στο διαδίκτυο (εικόνα)
Βήμα 3: Βήμα 2: Arduino
Πρώτον, το led και το δοχείο ελέγχθηκαν εάν λειτουργούσαν όπως αναμενόταν. Αυτό οφείλεται σε ένα απλό πρόγραμμα όπου η τιμή του δοχείου ελέγχει το led. Χρησιμοποίησα τη λειτουργία περιορισμού για να αλλάξω το εύρος δοχείων από 0 έως 1023 σε 0 έως 255, αλλά λειτουργεί και ένα απλό /4. Η τιμή του δοχείου εξομαλύθηκε με τη λήψη του μέσου μέσου όρου από 10 συνεχόμενες αναγνώσεις, για να αφαιρέσετε αιχμές. (Ωστόσο, αυτή η εξομάλυνση προκάλεσε προβλήματα με το NodeJS, οπότε αυτό αφαιρέθηκε αργότερα στο έργο - περισσότερα για αυτό)
Κωδικός Arduino
Το επόμενο βήμα είναι να λάβετε την είσοδο χρήστη μέσω των παραθύρων σειριακής οθόνης που παρέχονται από το Arduino ide για να ρυθμίσετε τη φωτεινότητα. Για να γίνει αυτό, χρησιμοποιείται το serial.parseInt () το οποίο παίρνει μια ακέραιη τιμή και αγνοεί τη συμβολοσειρά. Επίσης, στον κωδικό προστίθεται έλεγχος σφάλματος. Το έγκυρο εύρος μιας τιμής PWM είναι 0 - 255, όταν ένας χρήστης εισάγει> 255, τότε εκχωρεί την τιμή 255 και αν ο χρήστης εισάγει τιμή ή <+/- 5 το έχω κάνει για να καταστήσω την ανάγνωση πιο σταθερή από τότε που ήταν διακυμάνσεις Το Γιατί αυτό είναι ένα μεγάλο πρόβλημα που σχετίζεται με την ενημέρωση SQL, περισσότερα για αυτό αργότερα.
Βήμα 4: Βήμα 3: NodeJS
Δεν πρόκειται να σας δείξω πώς να αποκτήσετε ή να ρυθμίσετε και να κάνετε SQL server. Υπάρχουν τόνοι σεμιναρίων εκεί έξω.
Υπάρχουν 3 κύριες πτυχές στο πρόγραμμα NodeJS:
Διαβάστε σειριακά δεδομένα
Γράψτε σειριακά δεδομένα
Ενημέρωση βάσης δεδομένων SQL
Για να πραγματοποιήσετε μια σειριακή σύνδεση στο NodeJS, πρέπει να κάνετε λήψη μιας μονάδας που ονομάζεται σειριακή θύρα, η οποία μπορεί να γίνει χρησιμοποιώντας την εντολή npm. Άνοιγμα CMD στο φάκελο όπου θα διατηρηθεί το πρόγραμμα NodeJS, εγκατάσταση πληκτρολογώντας: npm install serialport Επίσης, η μονάδα SQL πρέπει να εγκατασταθεί για να μπορεί να συνδεθεί με τη βάση δεδομένων sql: npm install mysql NodeJS - Serial Port Το πρώτο μου βήμα με το NodeJS το πρόγραμμα ήταν να διαβάσει τα τυπωμένα δεδομένα και να στείλει φωτεινότητα pwm στο Arduino. Αυτό έγινε με το άνοιγμα σειριακής σύνδεσης στην ίδια θραύση και θύρα. Μόλις δημιουργήθηκε η σύνδεση, διάβασα τα εισερχόμενα μηνύματα και τα εκτύπωσα στο παράθυρο της κονσόλας. Το πρόβλημα εμφανίστηκε όταν προσπάθησα να γράψω την τιμή pwm για να ελέγξω τη φωτεινότητα.
Συνέχισε να ρίχνει σφάλματα: Η θύρα δεν είναι ανοιχτή, η αρχική μου λύση ήταν να καλέσω τη λειτουργία εγγραφής όταν υπάρχουν εισερχόμενα δεδομένα. Ωστόσο, αυτό ήταν μια κακή λύση και ήμουν αρκετά δυσαρεστημένος με τη λύση, παρόλο που λειτούργησε, θα έστελνε μόνο όταν αλλάξει η αξία του δοχείου. Ο κώδικας του παραδείγματος για τη σειριακή μονάδα δεν θα λειτουργούσε ούτε με το ίδιο σφάλμα. Αργότερα ανακάλυψα ότι το πρόγραμμα προσπαθούσε να εκτελέσει τη λειτουργία εγγραφής χωρίς να ανοίξει τη θύρα, πράγμα που οδήγησε σε αυτό το σφάλμα. Αντιμετώπισα αυτό το πρόβλημα χρησιμοποιώντας τη συνάρτηση setInterval ()
NodeJS - MySQLΗ βιβλιοθήκη MySQL χρησιμοποιήθηκε (npm install MySQL) για σύνδεση με τη βάση δεδομένων SQL αφού ο διακομιστής σε απομακρυσμένη τοποθεσία χρησιμοποιήθηκε η διεύθυνση IP του διακομιστή αντί για localhost.
Το var con διατηρεί τις πληροφορίες σύνδεσης σε μορφή JSON, όταν η σύνδεση πραγματοποιηθεί με επιτυχία, η βάση δεδομένων μπορεί να ερωτηθεί. Δημιουργήθηκαν 2 συναρτήσεις, μία για ενημέρωση του πίνακα και άλλη επιλογή με παραμέτρους στο ερώτημα SQL. Ο πίνακας ενημέρωσης καλείται όταν λαμβάνεται μια νέα τιμή δοχείου και το ερώτημα ελέγχου φωτεινότητας θα εκτελείται περιοδικά.
Σύνδεσμος NodeJSCode
Βήμα 5: Βήμα 4: Η διεπαφή ιστού
Διασύνδεση Ιστού
Η κύρια ιστοσελίδα γράφτηκε σε PHP αφού είχα ήδη κάποια εμπειρία από τις βάσεις δεδομένων CO323 και την ενότητα Ιστού στο πανεπιστήμιο. Χρησιμοποιήθηκε πίνακας & φόρμα Html για την εμφάνιση των δεδομένων sql.
Κωδικός πρόσβασης PHP SQL: Σύνδεση Μεταβείτε στην ενότητα διεπαφής ιστού.
HTML & CSS * Javascript Webapage Code: Link Μετακινηθείτε προς τα κάτω
Τελική Ιστοσελίδα
Συνιστάται:
Μετεωρολογικός σταθμός: ESP8266 με βαθύ ύπνο, SQL, γραφική παράσταση κατά φιάλη & συνοπτικά: 3 βήματα
Μετεωρολογικός σταθμός: ESP8266 Με βαθύ ύπνο, SQL, Graphing by Flask & Plotly: Θα ήταν διασκεδαστικό να γνωρίζετε τη θερμοκρασία, την υγρασία ή την ένταση του φωτός στο μπαλκόνι σας; Ξέρω ότι θα το έκανα. Έτσι έφτιαξα έναν απλό μετεωρολογικό σταθμό για να συλλέξω τέτοια δεδομένα. Οι ακόλουθες ενότητες είναι τα βήματα που έκανα για να δημιουργήσω ένα. Ας ξεκινήσουμε