Πίνακας περιεχομένων:
- Βήμα 1: Πηγαίνετε για ψώνια
- Βήμα 2: Ρύθμιση και παρασκήνιο
- Βήμα 3: Το μέρος Arduino - ESP12
- Βήμα 4: Δοκιμή του προγράμματος -πελάτη ESP As Network Network Protocol (NTP)
- Βήμα 5: Δοκιμή του αισθητήρα DHT22
- Βήμα 6: Το συνδυάζουμε…
- Βήμα 7: Η πλευρά των πραγμάτων του διακομιστή
Βίντεο: Αισθητήρας θερμοκρασίας οικιακού δικτύου: 7 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Τι πρέπει να γνωρίζετε για να φτιάξετε αυτό το έργο:
Πρέπει να γνωρίζετε:- Ορισμένες δεξιότητες ηλεκτρονικής (συγκόλληση)
- Linux
- Arduino IDE
(θα χρειαστεί να ενημερώσετε επιπλέον πίνακες στο IDE:
- ενημέρωση/προγραμματισμός μιας πλακέτας ESP μέσω του Arduino IDE.
(υπάρχουν μερικά ωραία μαθήματα διαθέσιμα στον ιστό)
Αυτό μπορεί να γίνει χρησιμοποιώντας Arduino Uno ή χρησιμοποιώντας FTDI (προσαρμογέας usb σε σειριακό).
Χρησιμοποίησα το Uno μου επειδή δεν είχα σειριακή θύρα στον υπολογιστή μου ούτε είχα FTDI
Βήμα 1: Πηγαίνετε για ψώνια
Τι θα χρειαστείτε για να συμβεί αυτό;
Για τον ψηφιακό αισθητήρα θερμοκρασίας και υγρασίας:
- Είτε ένα breadboard είτε μια εναλλακτική λύση όπως το πρωτότυπο pcb, το συγκολλητικό, το συγκολλητικό σίδερο…
- Λίγο σύρμα
- δύο άλτες
- αντίσταση 10k Ohm
- ένα ESP12F (μπορεί να λειτουργήσουν και άλλα μοντέλα…)
- DHT22 (λίγο ακριβότερο από το DHT11 αλλά πιο ακριβές)
- 3 επαναφορτιζόμενες μπαταρίες ΑΑ και υποδοχή μπαταρίας
- ένα μικρό πλαστικό κουτί για να βάλετε το έργο σας
- Σε μεταγενέστερο στάδιο σκοπεύω να προσθέσω ένα HT7333 με δύο πυκνωτές 10uF μεταξύ της μπαταρίας και του ESP
για τη σταθεροποίηση της τάσης εισόδου (VCC) στο συνιστώμενο 3,3V αλλά και για την προστασία του ESP από υπερτάσεις.
Για το τμήμα Δικτύου:
- Το οικιακό σας δίκτυο WiFi
Για το τμήμα διακομιστή:
- Οποιοδήποτε σύστημα βασίζεται σε Linux (πάντα ενεργοποιημένο!)
Χρησιμοποίησα ένα Raspberry Pi (το οποίο επίσης χρησιμοποιώ ως διακομιστή για τις εξωτερικές μου κάμερες IP.)
- μεταγλωττιστής gcc για τη μεταγλώττιση του κώδικα του διακομιστή σας
- πακέτο rrdtool για αποθήκευση δεδομένων και δημιουργία γραφημάτων
- apache (ή άλλος διακομιστής ιστού)
Ο αγαπημένος σας υπολογιστής ή φορητός υπολογιστής με το Arduino IDE σε αυτό.
Βήμα 2: Ρύθμιση και παρασκήνιο
Σε αυτήν την έκδοση ενός WiFi συνδεδεμένου - για να μην πω IOT - αισθητήρα θερμοκρασίας και υγρασίας, χρησιμοποίησα ESP12F, DHT22 και υποδοχή μπαταρίας 3 AA με επαναφορτιζόμενες μπαταρίες.
Κάθε 20 λεπτά το ESP λαμβάνει μια μέτρηση από το DHT22 και το στέλνει σε διακομιστή (ένα Raspberry Pi) μέσω UDP στο δίκτυο WiFi του σπιτιού μου. Μετά την αποστολή των μετρήσεων, το ESP κοιμάται βαθιά. Αυτό σημαίνει ότι μόνο το Ρολόι πραγματικού χρόνου της μονάδας παραμένει σε λειτουργία, με αποτέλεσμα μια απίστευτη εξοικονόμηση ενέργειας. Για περίπου 5 δευτερόλεπτα, η μονάδα απαιτεί περίπου 100mA, στη συνέχεια κατά τη διάρκεια των 20 λεπτών βαθύ ύπνο μόνο 150uA.
Δεν ήθελα να χρησιμοποιήσω καμία υπηρεσία που βασίζεται στο Διαδίκτυο επειδή έχω το Raspberry Pi που είναι πάντα ενεργοποιημένο έτσι κι αλλιώς και με αυτόν τον τρόπο είχα την ευχαρίστηση να γράψω και το διακομιστή.
Στον διακομιστή (ένα Raspberry Pi που εκτελεί Raspbian) έχω γράψει έναν απλό ακροατή UDP (διακομιστή) ο οποίος αποθηκεύει τις τιμές σε ένα απλό RRD. (Στρογγυλή βάση δεδομένων Robin χρησιμοποιώντας RRDtool του Tobias Oetiker.)
Το πλεονέκτημα του RRDtool είναι ότι δημιουργείτε τη βάση δεδομένων σας μία φορά και το μέγεθος παραμένει το ίδιο. Άλλωστε, δεν χρειάζεται να έχετε διακομιστή βάσης δεδομένων (όπως το mySQLd) που λειτουργεί στο παρασκήνιο. Το RRDtool σας δίνει τα εργαλεία για τη δημιουργία της βάσης δεδομένων και τη δημιουργία των γραφημάτων.
Ο διακομιστής μου δημιουργεί τα γραφήματα σε περιοδική βάση και εμφανίζει τα πάντα σε μια πολύ απλή σελίδα http. Μπορώ να συμβουλευτώ τις αναγνώσεις μου με ένα απλό πρόγραμμα περιήγησης συνδέοντας τον διακομιστή ιστού Apache2 στο Raspberry Pi!
Τέλος, δεν είχα FTDI (USB σε Serial), οπότε χρησιμοποίησα το Arduino UNO. Πρέπει να συνδέσετε τα TX's και τα RX's και το GND του ESP και το UNO. (Ξέρω, το ένστικτό σας μπορεί να σας πει να διασταυρώσετε RX και TX … το δοκίμασε επίσης, δεν λειτουργεί.)
Δεν έκανα μετατροπή επιπέδου (UNO: Υψηλό = 5V αλλά το ESP είναι βασικά μια συσκευή 3.3V … Υπάρχουν μερικά ωραία FTDI στην αγορά όπου μπορείτε ακόμη και να επιλέξετε το Υψηλό σας επίπεδο 5 ή 3.3V.
Το κύκλωμά μου τροφοδοτείται από 3 επαναφορτιζόμενες μπαταρίες ΑΑ - στην πραγματικότητα 3 Χ 1,2V. Σε μεταγενέστερη φάση σκοπεύω να βάλω ένα HT7333 μεταξύ της μπαταρίας και του κυκλώματος για ασφάλεια. Οι μπαταρίες που φορτίζονται πρόσφατα θα μπορούσαν να έχουν πάνω από 1,2V και το ESP θα πρέπει να τροφοδοτείται με ελάχιστο. 3V και μέγ. 3,6V Επίσης αν αποφασίσω - σε στιγμή αδυναμίας - να βάλω αλκαλικές μπαταρίες (3 Χ 1.5V = 4.5V) το ESP μου δεν θα τηγανιστεί!
Σκέφτηκα επίσης να χρησιμοποιήσω ένα ηλιακό πάνελ 10cm x 10cm, αλλά δεν άξιζε τον κόπο. Κάνοντας 3 μετρήσεις ανά ώρα (βασικά 3x 5 δευτερόλεπτα @ 100mA max. Και τον υπόλοιπο χρόνο @ 100uA), ελπίζω να τροφοδοτήσω το κύκλωμά μου για 1 χρόνο με τις ίδιες επαναφορτιζόμενες μπαταρίες.
Βήμα 3: Το μέρος Arduino - ESP12
Έκανα αυτό το έργο σε διαφορετικά βήματα.
Υπάρχουν αρκετοί σύνδεσμοι που σας βοηθούν να εισαγάγετε το ESP12 (γνωστό και ως ESP8266) στο Arduino IDE. (Έπρεπε να χρησιμοποιήσω την έκδοση 2.3.0 αντί της τελευταίας λόγω ενός σφάλματος που ενδέχεται να είχε λυθεί εν τω μεταξύ …)
Ξεκίνησα συνδέοντας το ESP, μέσω του Arduino UNO (χρησιμοποιείται μόνο ως γέφυρα μεταξύ του υπολογιστή μου μέσω USB στο Serial) στη σειριακή διεπαφή ESP. Υπάρχουν ξεχωριστές οδηγίες χρήσης που το εξηγούν αυτό.
Στο τελικό έργο μου άφησα τα καλώδια για να συνδεθώ με το Serial σε περίπτωση που χρειαστεί ποτέ να αντιμετωπίσω προβλήματα. RX
Στη συνέχεια, πρέπει να συνδέσετε το ESP12 ως εξής:
Καρφίτσες ESP…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Αρχικά προσπάθησα να τροφοδοτήσω το ESP μου από το 3.3V στο UNO, αλλά προχώρησα γρήγορα στην τροφοδοσία του ESP με τροφοδοτικό πάγκου, αλλά μπορείτε επίσης να χρησιμοποιήσετε την μπαταρία σας.
GPIO0 Συνδέω αυτό με έναν βραχυκυκλωτήρα στο GND για να ενεργοποιήσετε το αναβοσβήσιμο (= προγραμματισμό) του ESP.
Πρώτη δοκιμή: αφήστε το βραχυκυκλωτήρα ανοιχτό και ξεκινήστε μια σειριακή οθόνη στο Arduino IDE (στα 115200 baud!).
Κύκλος τροφοδοσίας το ESP, θα πρέπει να δείτε ορισμένους σκουπιδί χαρακτήρες και στη συνέχεια ένα μήνυμα όπως:
Ai-Thinker Technology Co. Ltd. έτοιμος
Σε αυτήν τη λειτουργία, το ESP λειτουργεί λίγο σαν παλιό μοντέλο. Πρέπει να χρησιμοποιήσετε εντολές AT.
Δοκιμάστε τις ακόλουθες εντολές:
AT+RST
και τις ακόλουθες δύο εντολές
AT+CWMODE = 3
Εντάξει
AT+CWLAP
Αυτό θα σας δώσει μια λίστα με όλα τα δίκτυα WiFi στην περιοχή.
Εάν αυτό λειτουργεί, είστε έτοιμοι για το επόμενο βήμα.
Βήμα 4: Δοκιμή του προγράμματος -πελάτη ESP As Network Network Protocol (NTP)
Στο Arduino IDE, στην ενότητα Αρχείο, Παραδείγματα, ESP8266WiFi, φορτώστε το NTPClient.
Μικρές τροποποιήσεις χρειάζονται για να λειτουργήσει. πρέπει να εισαγάγετε το SSID και τον κωδικό πρόσβασης του δικτύου WiFi.
Τώρα τοποθετήστε το βραχυκυκλωτήρα, βραχυκυκλώνοντας το GPIO0 στο GND.
Κυκλώστε το ESP και ανεβάστε το σκίτσο στο ESP.
Μετά τη μεταγλώττιση, θα πρέπει να ξεκινήσει η μεταφόρτωση στο ESP. Το μπλε LED στο ESP θα αναβοσβήνει γρήγορα καθώς γίνεται λήψη του κωδικού.
Παρατήρησα ότι έπρεπε να παίξω λίγο με την επανεκκίνηση του IDE, επανεκκίνηση του ESP πριν λειτουργήσει η μεταφόρτωση.
Πριν ξεκινήσετε τη σύνταξη/μεταφόρτωση του σκίτσου, φροντίστε να κλείσετε τη σειριακή κονσόλα (= σειριακή οθόνη) γιατί αυτό θα σας εμποδίσει να κάνετε τη μεταφόρτωση.
Μόλις η μεταφόρτωση επιτύχει, μπορείτε να ανοίξετε ξανά τη σειριακή οθόνη για να δείτε το ESP να παίρνει αποτελεσματικά χρόνο από το Διαδίκτυο.
Τέλεια, έχετε προγραμματίσει το ESP, έχετε συνδεθεί στο WiFi και έχετε χρόνο από το Διαδίκτυο.
Επόμενο βήμα θα δοκιμάσουμε το DHT22.
Βήμα 5: Δοκιμή του αισθητήρα DHT22
Τώρα απαιτείται κάποια επιπλέον καλωδίωση.
Πείροι DHT… Συνδέστε τον πείρο 1 (στα αριστερά) του αισθητήρα στο VCC (3.3V)
Συνδέστε τον ακροδέκτη 2 ESP GPIO5 (DHTPIN στο σκίτσο)
Συνδέστε τον ακροδέκτη 4 (στα δεξιά) του αισθητήρα στο GROUND
Συνδέστε μια αντίσταση 10K από την ακίδα 2 (δεδομένα) στην ακίδα 1 (ισχύ) του αισθητήρα.
Παρόμοια με τη δοκιμή NTP, βρείτε το σκίτσο DHTtester και προσαρμόστε το με τον ακόλουθο τρόπο:
#define DHTPIN 5 // επιλέξαμε GPIO5 για σύνδεση με τον αισθητήρα#define DHTTYPE DHT22 // αφού χρησιμοποιούμε DHT22 αλλά αυτός ο κωδικός/βιβλιοθήκη είναι κατάλληλος και για DHT11
Και πάλι, κλείστε τη σειριακή οθόνη, ενεργοποιήστε τον κύκλο ESP και μεταγλωττίστε και αναβοσβήστε το ESP.
Εάν όλα πάνε καλά θα πρέπει να δείτε τις μετρήσεις να εμφανίζονται στη σειριακή οθόνη.
Μπορείτε να παίξετε λίγο με τον αισθητήρα. Αν αναπνέετε, θα δείτε την υγρασία να ανεβαίνει.
Εάν έχετε μια λάμπα γραφείου (χωρίς LED), μπορείτε να λάμψετε στον αισθητήρα για να ζεσταθεί λίγο.
Μεγάλος! Δύο μεγάλα τμήματα του αισθητήρα λειτουργούν τώρα.
Στο επόμενο βήμα θα σχολιάσω τον τελικό κώδικα.
Βήμα 6: Το συνδυάζουμε…
Και πάλι κάποια επιπλέον καλωδίωση… αυτό είναι για να καταστήσει δυνατή τη λειτουργία DeepSleep.
Θυμηθείτε, το DeepSleep είναι μια απίστευτη λειτουργία για συσκευές IoT.
Ωστόσο, εάν ο αισθητήρας σας είναι συνδεδεμένος για DeepSleep, μπορεί να είναι δύσκολο να επαναπρογραμματίσετε το ESP, ώστε να πραγματοποιήσουμε μια άλλη σύνδεση jumper μεταξύ
GPIO16-RST.
Ναι, ΠΡΕΠΕΙ να είναι GPIO16, επειδή αυτό είναι το GPIO που είναι συνδεδεμένο για να ξυπνήσει τη συσκευή όταν το Ρολόι πραγματικού χρόνου σβήσει μετά το DeepSleep!
Ενώ κάνετε δοκιμές, μπορείτε να αποφασίσετε να κάνετε DeepSleep 15 δευτερολέπτων.
Όταν έκανα εντοπισμό σφαλμάτων, μετακινούσα το βραχυκυκλωτήρα στο GPIO0 για να μπορώ να αναβοσβήνω το πρόγραμμά μου.
Με την ολοκλήρωση της λήψης, θα μετέφερα το βραχυκυκλωτήρα στο GPIO16, ώστε να λειτουργήσει το DeepSleep.
Ο κωδικός για το ESP ονομάζεται TnHclient.c
Πρέπει να αλλάξετε το SSID, τον κωδικό πρόσβασης και τη διεύθυνση IP του διακομιστή σας.
Υπάρχουν επιπλέον γραμμές κώδικα που μπορείτε να χρησιμοποιήσετε για την αντιμετώπιση προβλημάτων ή τη δοκιμή της ρύθμισής σας.
Βήμα 7: Η πλευρά των πραγμάτων του διακομιστή
Είναι μια κοινή παρεξήγηση ότι το UDP είναι αναξιόπιστο και το TCP είναι…
Είναι εξίσου ανόητο με το να πεις ότι ένα σφυρί είναι πιο χρήσιμο από ένα κατσαβίδι. Είναι απλά διαφορετικά πολύ χρήσιμα εργαλεία και τα δύο έχουν τις χρήσεις τους.
Παρεμπιπτόντως, χωρίς UDP το Διαδίκτυο δεν θα λειτουργούσε… Το DNS βασίζεται στο UDP.
Έτσι, επέλεξα το UDP επειδή είναι πολύ ελαφρύ, εύκολο και γρήγορο.
Έχω την τάση να πιστεύω ότι το WiFi μου είναι πολύ αξιόπιστο, οπότε ο πελάτης θα στείλει το πολύ 3 πακέτα UDP εάν η επιβεβαίωση "ΟΚ!" δεν λαμβάνεται.
Ο κωδικός C για το TnHserver βρίσκεται στο αρχείο TnHServer.c.
Υπάρχουν πολλά σχόλια στον κώδικα που το εξηγούν.
Θα χρειαστούμε κάποια επιπλέον εργαλεία στον διακομιστή: rrdtool, apache και ίσως tcpdump.
Για να εγκαταστήσετε το rrdtool στο Raspbian, μπορείτε απλά να εγκαταστήσετε το πακέτο όπως αυτό: apt-get install rrdtool
Εάν πρέπει να διορθώσετε την επισκεψιμότητα δικτύου, το tcpdump είναι χρήσιμο apt-get install tcpdump
Χρειαζόμουν έναν διακομιστή ιστού για να μπορώ να χρησιμοποιήσω ένα πρόγραμμα περιήγησης για να συμβουλευτώ τα γραφήματα: apt-get install apache2
Χρησιμοποίησα αυτό το εργαλείο: https://rrdwizard.appspot.com/index.php για να λάβω την εντολή για τη δημιουργία της βάσης δεδομένων Round Robin. Χρειάζεται μόνο να το εκτελέσετε μία φορά (αν το κάνετε σωστά την πρώτη φορά).
rrdtool δημιουργία TnHdatabase.rrd-ξεκινήστε τώρα-10s
-βήμα «1200»
'DS: Θερμοκρασία: GAUGE: 1200: -20.5: 45.5'
'DS: Υγρασία: GAUGE: 1200: 0: 100.0'
'RRA: ΜΕΣΟΣ: 0,5: 1: 720'
'RRA: ΜΕΣΟΣ: 0,5: 3: 960'
'RRA: ΜΕΣΟΣ: 0,5: 18: 1600'
Τέλος, χρησιμοποιώ μια καταχώρηση crontab για επανεκκίνηση του TnHserver μου κάθε μέρα τα μεσάνυχτα. Εκτελώ το TnHserver ως κανονικός χρήστης (δηλ. ΟΧΙ root) ως προληπτικό μέτρο ασφαλείας.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Μπορείτε να ελέγξετε ότι λειτουργεί ο TnHserver κάνοντας
$ ps -elf | grep TnHserver
και μπορείτε να επαληθεύσετε ότι ακούει πακέτα στη θύρα 7777 κάνοντας
$ netstat -anu
Ενεργές συνδέσεις Διαδικτύου (διακομιστές και εγκατεστημένοι)
Proto Recv-Q Send-Q Τοπική διεύθυνση Κατάσταση εξωτερικής διεύθυνσης
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Τέλος, το CreateTnH_Graphs.sh.txt είναι ένα παράδειγμα σεναρίου για τη δημιουργία των γραφημάτων. (Δημιουργώ τα σενάρια ως root, ίσως να μην θέλετε να το κάνετε αυτό.)
Χρησιμοποιώντας μια πολύ απλή ιστοσελίδα μπορείτε να παρακολουθήσετε τα γραφήματα από οποιοδήποτε πρόγραμμα περιήγησης στο οικιακό σας δίκτυο.
Συνιστάται:
Αισθητήρας πόρτας με μπαταρία με ενσωμάτωση οικιακού αυτοματισμού, WiFi και ESP-NOW: 5 βήματα (με εικόνες)
Αισθητήρας πόρτας με μπαταρία με ενσωμάτωση αυτοματισμού σπιτιού, WiFi και ESP-NOW: Σε αυτό το διδακτικό σας δείχνω πώς έφτιαξα έναν αισθητήρα πόρτας με μπαταρία με ενσωμάτωση αυτοματισμού σπιτιού. Έχω δει κάποιους άλλους καλούς αισθητήρες και συστήματα συναγερμού, αλλά ήθελα να φτιάξω μόνος μου. Οι στόχοι μου: Ένας αισθητήρας που ανιχνεύει και αναφέρει ένα doo
ESP32 NTP Θερμόμετρο μαγειρέματος θερμοκρασίας ανιχνευτή θερμοκρασίας με διόρθωση και συναγερμό θερμοκρασίας Steinhart-Hart .: 7 βήματα (με εικόνες)
ESP32 NTP Θερμόμετρο Θερμόμετρο μαγειρέματος με διόρθωση και συναγερμό θερμοκρασίας Steinhart-Hart .: Ακόμα στο ταξίδι για να ολοκληρώσετε ένα «επερχόμενο έργο», ", ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm " είναι ένας οδηγός που δείχνει πώς προσθέτω έναν αισθητήρα θερμοκρασίας NTP, piezo b
IOT123 - ΣΥΝΔΕΣΜΟΣ ΑΙΣΘΗΤΗΡΑΣ ΑΙΣΘΗΤΗΡΑΣ: ΙΣΤΟΣΕΛΙΔΑ ΠΡΟΣΑΡΜΟΓΗΣ ICOS10: 11 Βήματα
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 CUSTOMIZATION WEBSEREVER: The ASSIMILATE SENSOR/ACTOR Slaves ενσωματώνουν μεταδεδομένα που χρησιμοποιούνται για τον καθορισμό των απεικονίσεων στο Crouton. Αυτή η κατασκευή προσθέτει έναν διακομιστή ιστού στο ESP8266 Master, εξυπηρετεί ορισμένα αρχεία διαμόρφωσης που μπορούν να τροποποιηθούν από τον χρήστη και στη συνέχεια χρησιμοποιεί αυτά τα αρχεία για επαναπροσδιορισμό
Ελεγκτής δικτύου αισθητήρα θερμοκρασίας ανθεκτικής σε σφάλματα: 8 βήματα
Fault-Tolerant Temperature Sensor Network Controller: Αυτό το Instructable σάς δείχνει πώς να μετατρέψετε μια πλακέτα Arduino Uno σε χειριστήριο μίας χρήσης για ένα σύνολο αισθητήρων θερμοκρασίας DS18B20 που μπορούν να αυτοματοποιήσουν την απομόνωση ελαττωματικών αισθητήρων. Ο ελεγκτής μπορεί να διαχειριστεί έως 8 αισθητήρες με το Arduino ΟΗΕ. (ΕΝΑ
Αισθητήρας αφής & Αισθητήρας ήχου Έλεγχος φώτων AC/DC: 5 βήματα
Αισθητήρας αφής & Αισθητήρας ήχου Έλεγχος φώτων AC/DC: Αυτό είναι το πρώτο μου έργο και αυτό λειτουργεί με βάση δύο βασικούς αισθητήρες, ένας είναι ο αισθητήρας αφής και ο δεύτερος είναι ο αισθητήρας ήχου, όταν πατάτε την επιφάνεια αφής στον αισθητήρα αφής το φως AC θα αλλάξει ΕΝΕΡΓΟΠΟΙΗΜΕΝΟ, αν το αφήσετε, το Φως θα είναι Σβηστό και το ίδιο