Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Χαρακτηριστικά
- Βήμα 2: PCB
- Βήμα 3: Συναρμολόγηση
- Βήμα 4: Επισκόπηση προγραμματισμού
- Βήμα 5: Είσοδοι
- Βήμα 6: Έξοδοι
- Βήμα 7: Καταγραφή
- Βήμα 8: Buzzer
- Βήμα 9: Εξωτερικές ενοποιήσεις IoT
- Βήμα 10: Χρήση
- Βήμα 11: Μελλοντικά σχέδια
Βίντεο: ESP32 Smart Home Hub: 11 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Η δημιουργία ενός συστήματος που μπορεί να χειριστεί μεγάλες ποσότητες δεδομένων αισθητήρων, να έχει πολλαπλές εξόδους και να συνδεθεί στο διαδίκτυο ή σε ένα τοπικό δίκτυο απαιτεί πολύ χρόνο και μεγάλη προσπάθεια. Πολύ συχνά, οι άνθρωποι που θέλουν να κάνουν τα δικά τους έξυπνα οικιακά δίκτυα δυσκολεύονται να βρουν και να συναρμολογήσουν προσαρμοσμένα εξαρτήματα σε ένα μεγαλύτερο σύστημα. Αυτός είναι ο λόγος για τον οποίο ήθελα να δημιουργήσω μια αρθρωτή και πλούσια σε χαρακτηριστικά πλατφόρμα που θα διευκόλυνε την κατασκευή αισθητήρων και εξόδων που συνδέονται με το IoT.
Ευχαριστούμε το DFRobot και το PCBGOGO.com για τη χορηγία αυτού του έργου!
Για πιο εμπεριστατωμένες πληροφορίες, επισκεφθείτε το repo του Github:
Προμήθειες
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
Αισθητήρας DHT22
www.dfrobot.com/product-1102.html
-
APDS9960 Αισθητήρας φωτός και χειρονομίας
www.dfrobot.com/product-1361.html
-
Μονάδα LCD I2C 20x4
www.dfrobot.com/product-590.html
-
Αναλογική λωρίδα LED RGB
www.dfrobot.com/product-1829.html
- DRV8825 Stepper Motor Drivers
- SD Card Reader
- NEMA17 Stepper Motors
Βήμα 1: Χαρακτηριστικά
Το κύριο χαρακτηριστικό αυτής της πλακέτας είναι ένας πίνακας ανάπτυξης ESP32 FireBeetle που χειρίζεται όλη την επικοινωνία, τις ενδείξεις αισθητήρων και τις εξόδους. Υπάρχουν δύο βηματικοί οδηγοί που ελέγχουν δύο διπολικούς βηματικούς κινητήρες.
Ο δίαυλος I2C είναι επίσης σπασμένος για χρήση με εξαρτήματα όπως το APDS9960 ή μια οθόνη LCD. Για την ανάγνωση της θερμοκρασίας, υπάρχουν ακίδες που έχουν σπάσει για σύνδεση με έναν αισθητήρα DHT22, καθώς και μια φωτοαντίσταση για την ανάγνωση των επιπέδων φωτισμού περιβάλλοντος.
Υπάρχει υποστήριξη για μια αναλογική λωρίδα φωτισμού στον πίνακα, η οποία έχει τρία MOSFET για να οδηγήσει τα φώτα LED.
Βήμα 2: PCB
Ξεκίνησα τη διαδικασία σχεδιασμού PCB δημιουργώντας πρώτα ένα σχηματικό σχήμα στο Eagle. Δεδομένου ότι δεν μπόρεσα να βρω μια βιβλιοθήκη ESP32 FireBeetle, απλώς χρησιμοποίησα δύο κεφαλίδες 1 ακρίνων 1 ακτίνων. Στη συνέχεια, δημιούργησα ένα κύκλωμα διαχείρισης ενέργειας που μπορούσε να δεχτεί 12v μέσω υποδοχής βαρελιού DC και να το μετατρέψω σε 5v για τροφοδοσία των αισθητήρων και ESP32.
Αφού ολοκληρώθηκε το σχηματικό σχήμα, προχώρησα στο σχεδιασμό του ίδιου του PCB.
Iξερα ότι το βύσμα του βαρελιού DC θα πρέπει να βρίσκεται κοντά στο μπροστινό μέρος της πλακέτας και ότι οι πυκνωτές εξομάλυνσης τροφοδοσίας 100uF πρέπει να βρίσκονται κοντά στις εισόδους ισχύος του οδηγού βηματικού κινητήρα. Αφού διαμορφώθηκαν τα πάντα, άρχισα να δρομολογώ ίχνη.
Ενώ το Oshpark παράγει PCB εξαιρετικής ποιότητας, οι τιμές τους είναι αρκετά υψηλές. Ευτυχώς, το PCBGOGO.com παράγει επίσης υπέροχα PCB σε προσιτή τιμή. Wasμουν σε θέση να αγοράσω δέκα PCB για μόλις $ 5, αντί να πληρώσω $ 52 για μόλις τρεις πίνακες από το Oshpark.com.
Βήμα 3: Συναρμολόγηση
Συνολικά, η συναρμολόγηση του σκάφους ήταν αρκετά εύκολη. Ξεκίνησα με συγκόλληση των εξαρτημάτων που έχουν τοποθετηθεί στην επιφάνεια και, στη συνέχεια, στερέωση του συνδέσμου και του ρυθμιστή του γρύλου της κάννης. Στη συνέχεια, κόλλησα στις επικεφαλίδες των ακίδων για εξαρτήματα όπως τα προγράμματα οδήγησης κινητήρα και το FireBeetle.
Αφού ολοκληρώθηκε η συγκόλληση, δοκίμασα την πλακέτα για βραχυκύκλωμα βάζοντας ένα πολύμετρο σε λειτουργία μέτρησης αντίστασης και βλέποντας αν η αντίσταση ήταν πάνω από ένα ορισμένο ποσό. Ο πίνακας πέρασε, οπότε μπόρεσα να συνδέσω κάθε στοιχείο.
Βήμα 4: Επισκόπηση προγραμματισμού
Iθελα ο κωδικός για αυτόν τον πίνακα να είναι αρθρωτός και εύχρηστος. Αυτό σήμαινε να έχουμε αρκετές κλάσεις που χειρίζονται συγκεκριμένες συναρτήσεις, μαζί με μια μεγαλύτερη κλάση περιτυλίγματος που συνδυάζει τις μικρότερες.
Βήμα 5: Είσοδοι
Για τον χειρισμό των εισόδων, δημιούργησα μια κλάση που ονομάζεται "Hub_Inputs", η οποία επιτρέπει στον οικιακό κόμβο να επικοινωνεί με το APDS9960, μαζί με τη δημιουργία και διαχείριση κουμπιών και χωρητικών διεπαφών αφής. Περιέχει τις ακόλουθες λειτουργίες:
Κουμπί Δημιουργία
Λήψη εάν πατηθεί το κουμπί
Λάβετε αριθμό πατημάτων κουμπιών
Λάβετε την πιο πρόσφατη χειρονομία
Λάβετε χωρητική τιμή αφής
Τα κουμπιά αποθηκεύονται ως δομή, με τρία χαρακτηριστικά: is_pressed, numberPresses και pin. Κάθε κουμπί, όταν δημιουργηθεί, είναι προσαρτημένο σε μια διακοπή. Όταν ενεργοποιηθεί αυτή η διακοπή, η ρουτίνα υπηρεσίας διακοπής (ISR) μεταβιβάζεται στον δείκτη του κουμπιού (δίνεται ως διεύθυνση μνήμης στη συστοιχία κουμπιών) και αυξάνει τον αριθμό των πατήσεων κουμπιών, μαζί με την ενημέρωση της is_pressed Boolean τιμής.
Οι χωρητικές τιμές αφής είναι πολύ πιο απλές. Ανακτώνται περνώντας την ακίδα αφής στη λειτουργία touchRead ().
Η πιο πρόσφατη χειρονομία ενημερώνεται με δημοσκόπηση του APDS9960 και ελέγχοντας αν έχει εντοπιστεί κάποια νέα χειρονομία και αν έχει εντοπιστεί, ορίστε την ιδιωτική μεταβλητή χειρονομίας σε αυτήν τη χειρονομία.
Βήμα 6: Έξοδοι
Ο διανομέας έξυπνου σπιτιού διαθέτει διάφορους τρόπους για την έξοδο πληροφοριών και την αλλαγή φώτων. Υπάρχουν ακίδες που ξεσπούν στο δίαυλο I2C, επιτρέποντας στους χρήστες να συνδέσουν μια οθόνη LCD. Μέχρι στιγμής, υποστηρίζεται μόνο ένα μέγεθος LCD: 20 x 4. Χρησιμοποιώντας τη λειτουργία "hub.display_message ()", οι χρήστες μπορούν να εμφανίζουν μηνύματα στην οθόνη LCD περνώντας σε ένα αντικείμενο συμβολοσειράς.
Υπάρχει επίσης μια κεφαλίδα pin για τη σύνδεση μιας σειράς αναλογικών LED. Η κλήση της συνάρτησης "hub.set_led_strip (r, g, b)", ορίζει το χρώμα της λωρίδας.
Οι δύο βηματικοί κινητήρες κινούνται χρησιμοποιώντας ένα ζευγάρι σανίδες οδηγού DRV8825. Αποφάσισα να χρησιμοποιήσω τη βιβλιοθήκη BasicStepper για τον χειρισμό του ελέγχου κινητήρα. Κατά την εκκίνηση της πλακέτας, δημιουργούνται δύο stepper αντικείμενα και ενεργοποιούνται και οι δύο κινητήρες. Για να ανεβάσετε κάθε κινητήρα, χρησιμοποιείται η λειτουργία "hub.step_motor (motor_id, βήματα)", όπου το αναγνωριστικό κινητήρα είναι είτε 0 είτε 1.
Βήμα 7: Καταγραφή
Επειδή ο πίνακας έχει αρκετούς αισθητήρες, ήθελα τη δυνατότητα τοπικής συλλογής και καταγραφής δεδομένων.
Για να ξεκινήσετε την καταγραφή, δημιουργείται ένα νέο αρχείο με "hub.create_log (όνομα αρχείου, κεφαλίδα)", όπου η κεφαλίδα χρησιμοποιείται για τη δημιουργία μιας γραμμής αρχείου CSV που υποδηλώνει στήλες. Η πρώτη στήλη είναι πάντα μια χρονική σήμανση σε Έτος Μήνας Ημέρα ourρα: Ελάχιστη: δευτερόλεπτη μορφή. Για να πάρετε το χρόνο, η συνάρτηση hub.log_to_file () παίρνει το χρόνο με τη συνάρτηση basic_functions.get_time (). Στη συνέχεια, η χρονική δομή tm μεταφέρεται με αναφορά στη συνάρτηση καταγραφής, μαζί με τα δεδομένα και το όνομα αρχείου.
Βήμα 8: Buzzer
Τι ωφελεί ένας πίνακας IoT αν δεν μπορείτε να παίξετε μουσική; Αυτός είναι ο λόγος για τον οποίο συμπεριέλαβα έναν βομβητή με λειτουργία αναπαραγωγής ήχων. Η κλήση "hub.play_sounds (μελωδία, διάρκεια, μήκος)" αρχίζει να παίζει ένα τραγούδι, με τη μελωδία να είναι μια συχνότητα συχνότητας νότες, διάρκεια ως συστοιχία διάρκειας νότες και μήκος ως αριθμός σημειώσεων.
Βήμα 9: Εξωτερικές ενοποιήσεις IoT
Ο κόμβος υποστηρίζει επί του παρόντος διαδικτυακούς γάντζους IFTTT. Μπορούν να ενεργοποιηθούν καλώντας τη λειτουργία Hub_IoT.publish_webhook (url, δεδομένα, συμβάν, κλειδί) ή Hub_IoT.publish_webhook (url, δεδομένα). Αυτό αποστέλλει ένα αίτημα POST στη συγκεκριμένη διεύθυνση URL με τα συνημμένα αυτά δεδομένα, μαζί με ένα όνομα συμβάντος εάν είναι απαραίτητο. Για να ρυθμίσετε ένα παράδειγμα ενσωμάτωσης IFTTT, δημιουργήστε πρώτα μια νέα μικροεφαρμογή. Στη συνέχεια, επιλέξτε την υπηρεσία webhook που ενεργοποιείται όταν λαμβάνεται ένα αίτημα.
Στη συνέχεια, ονομάστε το συμβάν "high_temp" και αποθηκεύστε το. Στη συνέχεια, επιλέξτε την υπηρεσία Gmail για το τμήμα "Αυτό" και επιλέξτε "Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου στον εαυτό μου". Στο πλαίσιο της ρύθμισης για την υπηρεσία, βάλτε "Η θερμοκρασία είναι υψηλή!" για το θέμα και έπειτα έβαλα τη "Μετρημένη θερμοκρασία {{Value1}} στο {{OccurredAt}}", η οποία δείχνει τη μετρημένη θερμοκρασία και τον χρόνο ενεργοποίησης του συμβάντος.
Αφού το ρυθμίσετε, απλά επικολλήστε τη διεύθυνση URL του webhook που δημιουργείται από το IFTTT και τοποθετώντας το "high_temp" στην ενότητα συμβάντων.
Βήμα 10: Χρήση
Για να χρησιμοποιήσετε το Smart Home Hub, απλώς καλέστε τις απαραίτητες λειτουργίες είτε στη ρύθμιση () είτε στον βρόχο (). Έχω ήδη βάλει παραδείγματα κλήσεων λειτουργίας, όπως η εκτύπωση της τρέχουσας ώρας και η κλήση ενός συμβάντος IFTTT.
Βήμα 11: Μελλοντικά σχέδια
Το σύστημα Smart Home Hub λειτουργεί πολύ καλά για απλούς οικιακούς αυτοματισμούς και εργασίες συλλογής δεδομένων. Μπορεί να χρησιμοποιηθεί για σχεδόν οτιδήποτε, όπως ο καθορισμός του χρώματος μιας λωρίδας LED, η παρακολούθηση της θερμοκρασίας ενός δωματίου, ο έλεγχος αν το φως είναι αναμμένο και μια σειρά από άλλα πιθανά έργα. Στο μέλλον, θα ήθελα να επεκτείνω τη λειτουργικότητα ακόμη περισσότερο. Αυτό θα μπορούσε να περιλαμβάνει την προσθήκη ενός πιο ισχυρού διακομιστή ιστού, τοπική φιλοξενία αρχείων, ακόμη και Bluetooth ή mqtt.
Συνιστάται:
Ξεκινώντας με το ESP32 - Εγκατάσταση πλακών ESP32 στο Arduino IDE - ESP32 Blink Code: 3 βήματα
Ξεκινώντας με το ESP32 | Εγκατάσταση πλακών ESP32 στο Arduino IDE | ESP32 Blink Code: Σε αυτά τα εγχειρίδια θα δούμε πώς να ξεκινήσετε να εργάζεστε με το esp32 και πώς να εγκαταστήσετε τους πίνακες esp32 στο Arduino IDE και θα προγραμματίσουμε το esp 32 να εκτελεί κώδικα αναλαμπής χρησιμοποιώντας το arduino ide
Sonoff B1 Firmware Home Automation Openhab Google Home: 3 Βήματα
Homeoff αυτοματοποίηση υλικολογισμικού Sonoff B1 Openhab Google Home: Μου αρέσει πολύ το υλικολογισμικό Tasmota για τους διακόπτες Sonoff. Αλλά δεν ήταν πραγματικά ευχαριστημένος με το υλικολογισμικό Tasmota στο Sonoff-B1 μου. Δεν πέτυχα πλήρως να το ενσωματώσω στο Openhab και να το ελέγξω μέσω του Google Home. Ως εκ τούτου έγραψα τη δική μου εταιρεία
The Raspberry Pi-Arduino-SignalR Home Automation Hub: 11 βήματα (με εικόνες)
The Raspberry Pi-Arduino-SignalR Home Automation Hub: Μετά από μερικά IBLEs του προλογίου μου που δημοσιεύτηκαν εδώ και εδώ, αυτό το έργο κάνει το πρώτο βήμα προς τη δημιουργία μιας βασικής έκδοσης ενός λειτουργικού διανομέα οικιακού αυτοματισμού. Έχω χρησιμοποιήσει πολλές διαφορετικές τεχνολογίες σε ένα προσπάθεια να καταλάβω πώς μπορώ να
Interface Honeywell Vista Alarm With Smart Hub (Wink/Smartthings): 7 βήματα (με εικόνες)
Interface Honeywell Vista Alarm With Smart Hub (Wink/Smartthings): Γεια σας! Wantedθελα να δώσω ένα σύντομο σεμινάριο για το πώς ενσωμάτωσα το σύστημα συναγερμού Honeywell Vista στο έξυπνο μου κόμβο. Χρησιμοποιώ το Wink για αυτό το σεμινάριο, αλλά αυτό θα πρέπει να λειτουργεί με οποιονδήποτε έξυπνο κόμβο (Smartthings/Iris/κ.λπ.) Πριν ξεκινήσουμε, πηγαίνετε
DIY Google Home με ηχείο Bluetooth στο Raspberry Pi Zero Docking Hub: 7 βήματα (με εικόνες)
DIY Google Home Με ηχείο Bluetooth στο Raspberry Pi Zero Docking Hub: Έχουμε έναν οδηγό για DIY Amazon Echo Alexa - Alexa Voice Assistant στο Raspberry Pi Zero Docking Hub. Αυτή τη φορά θέλουμε να σας δείξουμε πώς να φτιάξετε ένα DIY Google Home. Σε αυτό το διδακτικό, θα σας δείξουμε πώς να εγκαταστήσετε και να ρυθμίσετε τον Βοηθό Google