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

ESP32 Smart Home Hub: 11 βήματα
ESP32 Smart Home Hub: 11 βήματα

Βίντεο: ESP32 Smart Home Hub: 11 βήματα

Βίντεο: ESP32 Smart Home Hub: 11 βήματα
Βίντεο: Tasmota #01 | Closet Led Project | From Introduction to Timers in Rules 2024, Νοέμβριος
Anonim
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub

Η δημιουργία ενός συστήματος που μπορεί να χειριστεί μεγάλες ποσότητες δεδομένων αισθητήρων, να έχει πολλαπλές εξόδους και να συνδεθεί στο διαδίκτυο ή σε ένα τοπικό δίκτυο απαιτεί πολύ χρόνο και μεγάλη προσπάθεια. Πολύ συχνά, οι άνθρωποι που θέλουν να κάνουν τα δικά τους έξυπνα οικιακά δίκτυα δυσκολεύονται να βρουν και να συναρμολογήσουν προσαρμοσμένα εξαρτήματα σε ένα μεγαλύτερο σύστημα. Αυτός είναι ο λόγος για τον οποίο ήθελα να δημιουργήσω μια αρθρωτή και πλούσια σε χαρακτηριστικά πλατφόρμα που θα διευκόλυνε την κατασκευή αισθητήρων και εξόδων που συνδέονται με το 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
PCB
PCB
PCB
PCB
PCB
PCB
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

Εξωτερικές ενσωματώσεις IoT
Εξωτερικές ενσωματώσεις IoT
Εξωτερικές ενσωματώσεις IoT
Εξωτερικές ενσωματώσεις IoT
Εξωτερικές ενσωματώσεις IoT
Εξωτερικές ενσωματώσεις 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.

Συνιστάται: