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

Αισθητήρας πόρτας με μπαταρία με ενσωμάτωση οικιακού αυτοματισμού, WiFi και ESP-NOW: 5 βήματα (με εικόνες)
Αισθητήρας πόρτας με μπαταρία με ενσωμάτωση οικιακού αυτοματισμού, WiFi και ESP-NOW: 5 βήματα (με εικόνες)

Βίντεο: Αισθητήρας πόρτας με μπαταρία με ενσωμάτωση οικιακού αυτοματισμού, WiFi και ESP-NOW: 5 βήματα (με εικόνες)

Βίντεο: Αισθητήρας πόρτας με μπαταρία με ενσωμάτωση οικιακού αυτοματισμού, WiFi και ESP-NOW: 5 βήματα (με εικόνες)
Βίντεο: Zmodo Pivot Cloud Κάμερα/Συναγερμός με 4 Παγίδες για πόρτες/παράθυρα- Περιστροφή 350° 2024, Ιούλιος
Anonim
Image
Image

Σε αυτό το διδακτικό σας δείχνω πώς έφτιαξα έναν αισθητήρα πόρτας με μπαταρία με ενσωμάτωση αυτοματισμού σπιτιού. Έχω δει κάποιους άλλους καλούς αισθητήρες και συστήματα συναγερμού, αλλά ήθελα να φτιάξω μόνος μου.

Οι στόχοι μου:

  • Αισθητήρας που ανιχνεύει και αναφέρει γρήγορα το άνοιγμα της πόρτας (<5 δευτερόλεπτα)
  • Ένας αισθητήρας που ανιχνεύει το κλείσιμο της πόρτας
  • Ένας αισθητήρας που λειτουργεί με μπαταρία και λειτουργεί για μερικούς μήνες με μπαταρία

Το υλικό και το λογισμικό είναι εμπνευσμένα από

  • Ο πίνακας πινάκων του Kevin Darrah (TPL5111 και TPS73733).
  • Αυτό το βίντεο

Έφτιαξα έναν αισθητήρα για την μπροστινή πόρτα και την πίσω πόρτα μου. Η μόνη διαφορά είναι η θέση led και ο εξωτερικός διακόπτης ισχύος (στον πίσω αισθητήρα).

Έκανα αρκετές βελτιώσεις κατά την ανάπτυξη του υλικού και του λογισμικού, φαίνεται στις φωτογραφίες.

Προμήθειες

Αγόρασα τα ηλεκτρονικά εξαρτήματα από το Aliexpress, τα κύρια μέρη:

  • Μπαταρία LiPo
  • TPS73733 LDO
  • TPL5111
  • Διακόπτης καλαμιού
  • P-channel mosfet: IRLML6401TRPBF
  • Μαγνήτης
  • Πλάκα προσαρμογέα PCB για εξαρτήματα SMD και άλλη.

Βήμα 1: Υλικό - Κύκλωμα

Υλικό - Κύκλωμα
Υλικό - Κύκλωμα
Υλικό - Κύκλωμα
Υλικό - Κύκλωμα
Υλικό - Κύκλωμα
Υλικό - Κύκλωμα

Δείτε τα συνημμένα σχήματα για το κύκλωμα. Συγκόλλησα τα εξαρτήματα SMD σε μια πλάκα προσαρμογέα PCB και συγκολλήσα όλα τα εξαρτήματα σε μια πλακέτα perf διπλής όψης. Συνδέσα το ESP-01 μέσω γυναικείων κεφαλίδων, ώστε να μπορώ να το αφαιρέσω για να το προγραμματίσω μέσω του προσαρμογέα που φαίνεται στο βήμα 3 αυτού του Οδηγού.

Το κύκλωμα λειτουργεί ως εξής:

  • Όταν ανοίξει η πόρτα, το TPL5111 λαμβάνει μια λήψη στον πείρο DELAY/M_DRV και ενεργοποιεί το TPS73733 LDO που τροφοδοτεί το ESP-01. Για αυτήν τη λειτουργία, το EN/ONE_SHOT πρέπει να τραβηχτεί χαμηλά. Δείτε το φύλλο δεδομένων του TPL5111.
  • Μετά την εκτέλεση του προγράμματος (βλέπε βήμα λογισμικού), το ESP-01 στέλνει ένα σήμα Done στο TPL5111 το οποίο στη συνέχεια απενεργοποιεί το TPS73733 με αποτέλεσμα μια κατάσταση πολύ χαμηλής ισχύος για το TPL5111 και το TPS73733.

Χρησιμοποιώ διακόπτες καλαμιών με συνδέσεις NO και NC. Συνδέω το καλώδιο NC, καθώς ο διακόπτης καλαμιών πρέπει να κλείνει το κύκλωμα όταν αφαιρείται ο μαγνήτης (ανοίγει η πόρτα) και ανοίγει όταν ο μαγνήτης είναι κοντά (η πόρτα είναι κλειστή).

Για τον αισθητήρα πίσω πόρτας πρόσθεσα μερικούς συμπυκνωτές και αντιστάσεις όταν ανακάλυψα κάποιες αστάθειες, ωστόσο η αστάθεια προκλήθηκε από το λογισμικό (esp_now_init) όπως ανακάλυψα αργότερα.

Βήμα 2: Υλικό - περίβλημα

Υλικό - περίβλημα
Υλικό - περίβλημα
Υλικό - περίβλημα
Υλικό - περίβλημα
Υλικό - περίβλημα
Υλικό - περίβλημα

Σχεδίασα το περίβλημα στο Autodesk Fusion360, εμπνευσμένο από αυτό το βίντεο από τον «τύπο με την ελβετική προφορά».

Τα αρχεία STL των τριών τμημάτων:

  • Κουτί
  • Καπάκι
  • Στήριγμα μαγνήτη

δημοσιεύονται στη σελίδα μου στο Thingiverse.

Βήμα 3: Λογισμικό

Λογισμικό
Λογισμικό

Το πρόγραμμα βρίσκεται στο Github μου.

Η ροή του προγράμματος φαίνεται στην εικόνα. Δείτε το άλλο Εγχειρίδιο μου για την εξήγηση του τρόπου χρήσης του ESP-NOW.

Όταν η μονάδα είναι ενεργοποιημένη, προσπαθεί πρώτα να στείλει το μήνυμα "OPEN" μέσω ESP-NOW. Εάν αυτό δεν επιτύχει, μεταβαίνει σε σύνδεση WiFi και MQTT.

Διαπίστωσα ότι, τουλάχιστον στη ρύθμισή μου, το μήνυμα «ΚΛΕΙΣΤΟ» δεν στάλθηκε επιτυχώς μέσω ESP-NOW, οπότε το αφαίρεσα από το πρόγραμμα και χρησιμοποιώ μόνο WiFi και MQTT.

Κατά το χρονικό διάστημα που ανοίγει η πόρτα και η μονάδα περιμένει να κλείσει η πόρτα, χρησιμοποιεί αυτόν τον χρόνο για να συνδεθεί σε WiFi και MQTT, οπότε όταν η πόρτα είναι κλειστή, πρέπει μόνο να στείλει τη μετρημένη τάση και ένα ΚΛΕΙΣΤΟ μήνυμα και στη συνέχεια κοιμάται κατευθείαν.

Το πρόγραμμα ελέγχει εάν το κλειστό μήνυμα λαμβάνεται από τον δέκτη μέσω ακρόασης ενός μηνύματος MQTT στο σωστό θέμα.

Βήμα 4: Αυτοματισμός σπιτιού και Telegram

Αυτοματισμός σπιτιού και Telegram
Αυτοματισμός σπιτιού και Telegram
Αυτοματισμός σπιτιού και Telegram
Αυτοματισμός σπιτιού και Telegram
Αυτοματισμός σπιτιού και Telegram
Αυτοματισμός σπιτιού και Telegram

Οι αισθητήρες πόρτας μου επικοινωνούν με το Openhab Home Automation στο Raspberry Pi Zero.

Κύριες εφαρμογές:

  • Διαβάστε την κατάσταση της πόρτας: ΑΝΟΙΓΜΑ ή ΚΛΕΙΣΤΟ.
  • Ειδοποιήστε με μέσω τηλεγραφήματος εάν ανοίξει μια πόρτα (Εάν ο συναγερμός είναι ενεργοποιημένος ή η λειτουργία οθόνης είναι ενεργοποιημένη).
  • Διαβάστε την τελευταία φορά που άνοιξε ή έκλεισε μια πόρτα.
  • Μετρήστε τον αριθμό των ανοιγμάτων που μπορεί να χειριστεί ένας αισθητήρας πόρτας πριν εξαντληθεί η μπαταρία.

Για παράδειγμα, αν είμαστε διακοπές και ο γείτονας μπαίνει να ποτίζει τα φυτά, παίρνω ένα μήνυμα. Δείτε το βίντεο στην εισαγωγή.

Τα στοιχεία Openhab, οι κανόνες και τα αρχεία χάρτη ιστότοπου βρίσκονται στο Github μου. Σε αυτά τα αρχεία μπορείτε επίσης να δείτε τον αισθητήρα πόρτας μου στο υπόστεγο, ο οποίος χρησιμοποιεί έναν κανονικό ενσύρματο διακόπτη καλαμιών και έναν μικρό διακόπτη επαφής (τερματισμού) από έναν εκτυπωτή 3D στο άνοιγμα της κλειδαριάς (δείτε τις εικόνες).

Ο τρόπος χρήσης της ενέργειας Telegram στο Openhab περιγράφεται εδώ.

Βήμα 5: Βελτιώσεις και περαιτέρω βελτιώσεις

Βελτιώσεις και περαιτέρω βελτιώσεις
Βελτιώσεις και περαιτέρω βελτιώσεις
Βελτιώσεις και περαιτέρω βελτιώσεις
Βελτιώσεις και περαιτέρω βελτιώσεις

Τους προηγούμενους μήνες έκανα την ακόλουθη βελτίωση.

Χειριστείτε τα μεγάλα ανοίγματα της πόρτας μέσω ενός αυτο-εναλλασσόμενου σήματος παλμού

Το καλοκαίρι, αφήνουμε την πίσω πόρτα ανοιχτή για μερικές ώρες όταν είμαστε στο σπίτι. Το τρέχον ESP-01 με σύνδεση WiFi θα άδειαζε άσκοπα την μπαταρία. Επομένως, συμπεριέλαβα έναν διακόπτη on/off για να μπορώ να απενεργοποιήσω τη μονάδα σε αυτές τις περιπτώσεις.

Ωστόσο, αυτό μερικές φορές είχε ως αποτέλεσμα μια μονάδα μόνιμα απενεργοποιημένη (όταν ξέχασα να την ενεργοποιήσω) και μια εξαντλημένη μπαταρία μετά από μερικά απογεύματα μιας ανοιχτής πόρτας και μιας μονάδας λειτουργίας (Όταν ξέχασα να την απενεργοποιήσω).

Ως εκ τούτου, ήθελα να μπορώ να απενεργοποιήσω τη μονάδα μέσω του λογισμικού αφού η μονάδα ήταν ενεργοποιημένη για προκαθορισμένο χρόνο (1 λεπτό).

Ωστόσο, όπου ο παλμός ‘DONE’ του ESP-01 απενεργοποίησε το TPL5111 όταν η πόρτα ήταν κλειστή, διαπίστωσα ότι το TPL5111 δεν ενεργοποιήθηκε από έναν παλμό ‘DONEE’ ενώ ο πείρος DELAY/M_DRV ήταν Υ HIGHΟΣ. Αυτό το σήμα Υ HIGHΗΛΗΣ στον πείρο DELAY/M_DRV προκλήθηκε από την ανοιχτή πόρτα και την επαφή NC του διακόπτη καλαμιών που συνδέθηκε στην τάση της μπαταρίας.

Επομένως, το σήμα προς τον πείρο DELAY/M_DRV δεν πρέπει να είναι συνεχώς Υ HIGHΗΛΟ, αλλά πρέπει να είναι παλμικό. Στο φύλλο δεδομένων TPL5111 μπορείτε να βρείτε ότι πρέπει να είναι παλμός> 20 ms. Έκανα αυτό το σήμα αυτόματης αλλαγής μέσω ενός mosfet καναλιού P, ενός πυκνωτή και μιας αντίστασης 10K και 300K, δείτε το σχήμα που περιλαμβάνεται.

Λειτουργεί ως εξής:

  • Εάν η επαφή NC του διακόπτη καλαμιών είναι κλειστή, η Πύλη είναι ΧΑΜΗΛΗ και το Mosfet είναι ενεργοποιημένο, με αποτέλεσμα ένα σήμα Υ HIGHΗΛΟΥ στον πείρο DELAY/M_DRV που ενεργοποιεί τη μονάδα.
  • Ο πυκνωτής φορτίζεται γρήγορα, με αποτέλεσμα την αύξηση της τάσης στην Πύλη.
  • Μετά από περίπου 20 ms, η τάση στην Πύλη είναι 97% της τάσης της μπαταρίας (300K/(300K+10K) η οποία είναι Υ HIGHΗΛΗ και το Mosfet απενεργοποιείται, με αποτέλεσμα ένα χαμηλό σήμα στον πείρο DELAY/M_DRV.
  • Όταν ο πείρος DELAY/M_DRV είναι ΧΑΜΗΛΟΣ, το σήμα ΕΓΓΡΑΦΗΣ του ESP-01 οδηγεί σε διακοπή λειτουργίας της μονάδας.

Αυτό υλοποιείται στο λογισμικό. Ο βρόχος while όχι μόνο ελέγχει αν η πόρτα είναι ακόμα ανοιχτή, αλλά επίσης ελέγχει εάν η μονάδα δεν είναι ενεργοποιημένη για πολύ. Εάν είναι πολύ ενεργοποιημένο, δημοσιεύει μια τιμή NULL (απροσδιόριστη κατάσταση της πόρτας). Σε αυτήν την περίπτωση δεν ξέρω αν η πόρτα είναι ανοιχτή ή κλειστή και δεν επιτυγχάνω όλους τους στόχους που αναφέρονται στην εισαγωγή, αλλά η διάρκεια ζωής της μπαταρίας είναι πιο σημαντική και τις περισσότερες φορές ανοίγουμε ξανά την πόρτα αργότερα εκείνη την ημέρα, με αποτέλεσμα μια επιβεβαιωμένη κλειστή κατάσταση της πόρτας.

Είναι σημαντικό να χρησιμοποιήσετε ένα Mosfet καναλιού P που είναι κατάλληλο για το εύρος τάσης που χρησιμοποιείται εδώ. Το Mosfet πρέπει να είναι εντελώς ενεργοποιημένο σε VGS περίπου - 3,8V και εντελώς απενεργοποιημένο σε VGS περίπου -0,2 V. Δοκίμασα πολλά Mosfets και ανακάλυψα ότι ένα IRLML6401TRPBF λειτουργεί καλά για αυτόν τον στόχο σε συνδυασμό με τις αντιστάσεις 10K και 300K Το Ένας πυκνωτής 1 uF λειτουργεί καλά για να πάρει ένα μήκος παλμού περίπου 20 ms. Ένας μεγαλύτερος πυκνωτής οδηγεί σε μεγαλύτερο παλμό, ο οποίος δεν είναι απαραίτητος, αφού ενεργοποιήθηκε το TPL5111. Χρησιμοποίησα τον παλμογράφο DSO150 για να ελέγξω τις τάσεις και το μήκος παλμού.

Προγραμματισμένη βελτίωση: Ενημέρωση OTA

Σκοπεύω να ενσωματώσω μια ενημέρωση OTA μέσω της ακόλουθης διαδικασίας, η οποία περιλαμβάνεται ήδη εν μέρει στο τρέχον λογισμικό

  • Μέσω του Openhab του NodeRed δημοσιεύω ένα διατηρημένο μήνυμα «ενημέρωσης» ως «θέμα ενημέρωσης».
  • Εάν η μονάδα είναι ενεργοποιημένη και συνδεδεμένη στον διακομιστή MQTT και εγγραφεί στο «θέμα ενημέρωσης», λαμβάνει το μήνυμα ενημέρωσης.
  • Το μήνυμα ενημέρωσης θα αποτρέψει την απενεργοποίηση της μονάδας και θα ξεκινήσει ο διακομιστής
  • Μέσω του ιστότοπου του HTTPUpdateServer, μπορείτε να ενημερώσετε το λογισμικό.
  • Μέσω του Openhab του NodeRed δημοσιεύω ένα διατηρημένο «κενό» μήνυμα ως «θέμα ενημέρωσης».

Προγραμματισμένη βελτίωση: κλείσιμο υλικού μετά από προκαθορισμένο χρόνο

Στο τρέχον σχήμα, χρησιμοποιώ μια αντίσταση 200K μεταξύ του DELAY/M_DRV και του GND του TPL5111. Αυτό ενεργοποιεί τη μονάδα για περισσότερες από 2 ώρες (βλ. 7.5.3. Του φύλλου δεδομένων TPL5111). Ωστόσο, δεν θέλω η μονάδα να είναι ενεργοποιημένη τόσο πολύ, επειδή η μπαταρία στη συνέχεια αδειάζει. Εάν η λύση λογισμικού (βλ. Παραπάνω) δεν καταφέρει να απενεργοποιήσει τη μονάδα ή εάν το μήνυμα ενημέρωσης ακούσια θέσει τη μονάδα στη λειτουργία ενημέρωσης, η μονάδα παραμένει ενεργοποιημένη για μεγάλο χρονικό διάστημα.

Ως εκ τούτου, είναι καλύτερο να χρησιμοποιήσετε μια μικρότερη αντίσταση μεταξύ του DELAY/M_DRV και του GND του TPL5111, οπότε η μονάδα απενεργοποιείται μετά από σύντομο χρονικό διάστημα, για παράδειγμα μια αντίσταση 50K με αποτέλεσμα ένα χρόνο ενεργοποίησης 7 λεπτών.

Συνιστάται: