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

Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλή ισχύς: 5 βήματα
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλή ισχύς: 5 βήματα

Βίντεο: Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλή ισχύς: 5 βήματα

Βίντεο: Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλή ισχύς: 5 βήματα
Βίντεο: 6 πράγματα που δεν ξέρεις για το iPhone! | 2022 Tips 2024, Νοέμβριος
Anonim
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος
Ασύρματος αισθητήρας πόρτας - εξαιρετικά χαμηλής ισχύος

Ακόμα ένας αισθητήρας πόρτας !! Λοιπόν, το κίνητρο για μένα να δημιουργήσω αυτόν τον αισθητήρα ήταν ότι πολλά που είδα στο Διαδίκτυο είχαν τον έναν ή τον άλλο περιορισμό. Μερικοί από τους στόχους του αισθητήρα για μένα είναι:

1. Ο αισθητήρας πρέπει να είναι πολύ γρήγορος - κατά προτίμηση λιγότερο από 5 δευτερόλεπτα

2. Ο αισθητήρας πρέπει να τρέχει από μπαταρία ιόντων λιθίου 3,7V, καθώς έχω δεκάδες από αυτούς ξαπλωμένους

3. Ο αισθητήρας πρέπει να λειτουργεί για πολλούς μήνες με μία μόνο φόρτιση της μπαταρίας. Θα πρέπει να καταναλώνει <10uA σε κατάσταση αναστολής λειτουργίας

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

5. Ο αισθητήρας πρέπει να μεταδίδει δεδομένα σε ένα θέμα MQTT όταν ανοίγει η πόρτα καθώς και όταν η πόρτα είναι κλειστή

6. Ο αισθητήρας πρέπει να καταναλώνει την ίδια ποσότητα ισχύος ανεξάρτητα από την κατάσταση της πόρτας

Λειτουργία του αισθητήρα:

Ο αισθητήρας διαθέτει 2 κύριους ελεγκτές. Το πρώτο είναι μικροσκοπικός μικροελεγκτής ATiny 13A. Το δεύτερο είναι το ESP το οποίο είναι συνήθως σε κατάσταση αναστολής λειτουργίας και ξυπνάει μόνο όταν το επιτρέπει το ATiny. Ολόκληρο το κύκλωμα μπορεί επίσης να γίνει μόνο με το ESP χρησιμοποιώντας το σε κατάσταση αδράνειας, αλλά το ρεύμα που καταναλώνει είναι πολύ μεγαλύτερο από αυτό που χρειάζεται για να διαρκέσει μια μπαταρία για μήνες, ώστε το ATTiny να έρθει στη διάσωση. Εξυπηρετεί μόνο τον σκοπό να ξυπνάτε κάθε Ν δευτερόλεπτο, να αναζητάτε ένα συμβάν πόρτας ή ένα συμβάν υγειονομικού ελέγχου, εάν υπάρχει, κρατάει τον πείρο CH_PD του ESP στο HIGH και στέλνει το κατάλληλο σήμα για τον τύπο του συμβάντος στο ESP Το Ο ρόλος του τελειώνει εκεί.

Το ESP στη συνέχεια αναλαμβάνει, διαβάζει τον τύπο σήματος, συνδέεται στο WiFi/MQTT, δημοσιεύει τα απαιτούμενα μηνύματα, συμπεριλαμβανομένου του επιπέδου της μπαταρίας και, στη συνέχεια, απενεργοποιείται επαναφέροντας τον πείρο EN στο LOW.

Χρησιμοποιώντας αυτά τα τσιπ με αυτόν τον τρόπο εκμεταλλεύομαι το χαμηλό ρεύμα ύπνου του ATtiny και το μηδενικό ρεύμα ρελαντί του ESP όταν το τσιπ είναι απενεργοποιημένο μέσω του πείρου CH_PD.

Προμήθειες

Προαπαιτούμενο:

- Γνώση προγραμματισμού ATTiny & ESP 01

- Γνώση εξαρτημάτων συγκόλλησης σε PCB

ESP-01 (ή οποιοδήποτε ESP)

ATTiny 13A - AVR

LDO 7333 -A - Ρυθμιστής τάσης χαμηλής απόρριψης

Αντιστάσεις - 1Κ, 10Κ, 3Κ3

Πυκνωτές: 100uF, 0.1 uF

Διακόπτης με κουμπί, διακόπτης micro ON/OFF - (και τα δύο προαιρετικά)

Δίοδος - IN4148 (ή οποιοδήποτε ισοδύναμο)

Μπαταρία ιόντων λιθίου

Διακόπτης Reed

Μια θήκη για να τα στεγάσει όλα

Συγκολλητής, PCB κλπ

Βήμα 1: Διαγράμματα και πηγαίος κώδικας

Σχήματα & πηγαίος κώδικας
Σχήματα & πηγαίος κώδικας

Τα σχήματα είναι όπως φαίνεται στο συνημμένο διάγραμμα.

Έχω συμπεριλάβει ένα POS MOSFET για προστασία αντίστροφης πολικότητας. Εάν δεν το χρειάζεστε, μπορείτε να το παραλείψετε. Οποιοδήποτε POS MOSFET με χαμηλό Rds ON θα κάνει.

Προς το παρόν, το ESP δεν έχει τη δυνατότητα OTA, αλλά αυτό είναι για μελλοντική βελτίωση.

Πηγαίος κώδικας smart-door-sensor

Βήμα 2: Λειτουργία του κυκλώματος

ATTiny Ροή εργασίας

Η μαγεία εδώ συμβαίνει στο πώς το ATTiny παρακολουθεί τη θέση του διακόπτη πόρτας.

Η κανονική επιλογή θα ήταν να συνδέσετε μια αντίσταση έλξης στον διακόπτη και να παρακολουθείτε συνεχώς την κατάσταση. Αυτό έχει το μειονέκτημα του σταθερού ρεύματος που καταναλώνεται από την αντίσταση έλξης. Ο τρόπος που αυτό έχει αποφευχθεί εδώ είναι ότι χρησιμοποίησα δύο ακίδες για να παρακολουθώ τον διακόπτη και όχι έναν. Έχω χρησιμοποιήσει PB3 & PB4 εδώ. Το PB3 ορίζεται ως είσοδος και το PB4 ως έξοδος με εσωτερικό INPUT_PULLUP στο PB3. Κανονικά το PB4 διατηρείται Υ HIGHΗΛΟ όταν το ATtiny βρίσκεται σε κατάσταση αναστολής λειτουργίας. Αυτό εξασφαλίζει ότι δεν υπάρχει ροή ρεύματος μέσω της αντίστασης έλξης προς τα πάνω ανεξάρτητα από τη θέση του διακόπτη καλαμιού. δηλ. Εάν ο διακόπτης είναι κλειστός, και τα δύο PB3 & PB4 είναι Υ HIGHΗΛΑ και έτσι δεν ρέει ρεύμα μεταξύ τους. Εάν ο διακόπτης είναι ανοιχτός, τότε δεν υπάρχει διαδρομή μεταξύ τους και έτσι το ρεύμα είναι μηδέν. Όταν το ATtiny ξυπνήσει γράφει LOW στο PB4 και στη συνέχεια ελέγχει την κατάσταση του PB3. Εάν το PB3 είναι Υ HIGHΗΛΟ τότε ο διακόπτης καλαμιού είναι ΑΝΟΙΚΤΟΣ αλλιώς ΚΛΕΙΣΤΟΣ. Στη συνέχεια, γράφει ένα HIGH στο PB4.

Η επικοινωνία μεταξύ του ATtiny & ESP πραγματοποιείται μέσω δύο ακίδων PB1 / PB2 συνδεδεμένων με Tx / RX του ESP. Έχω ορίσει το σήμα ως

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (Έλεγχος υγείας)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== ΧΡΗΣΙΜΟΠΟΙΗΜΕΝΟ

Εκτός από την αποστολή του σήματος στο ESP, στέλνει επίσης έναν υψηλό παλμό στο PB0 ο οποίος είναι συνδεδεμένος με τον πείρο ESP CH_PD. Αυτό ξυπνά το ESP. Το πρώτο πράγμα που κάνει το ESP είναι να κρατάει το GPIO0 HIGH, το οποίο είναι συνδεδεμένο με CH_PD, διασφαλίζοντας έτσι την ισχύ του, ακόμη και αν το ATTiny αφαιρέσει το PB0 HIGH. Ο έλεγχος βρίσκεται τώρα στο ESP για να καθορίσει πότε θέλει να απενεργοποιηθεί.

Στη συνέχεια συνδέεται με WiFi, MQTT, δημοσιεύει το μήνυμα και εξουδετερώνεται γράφοντας LOW στο GPIO0.

ESP 01 Ροή λειτουργίας:

Η ροή ESP είναι ευθεία προς τα εμπρός. Ξυπνάει και διαβάζει τις τιμές των ακίδων Tx/Rx για να καθορίσει τι είδους μήνυμα πρόκειται να δημοσιευτεί. Συνδέεται με WiFi και MQTT, δημοσιεύει το μήνυμα και απενεργοποιείται.

Πριν απενεργοποιηθεί, ελέγχει ξανά τις τιμές των ακίδων εισόδου για να διαπιστώσει εάν έχουν αλλάξει από την τελευταία ανάγνωση. Αυτό γίνεται για να φροντίσουμε για το γρήγορο άνοιγμα και κλείσιμο της πόρτας. Εάν δεν έχετε αυτόν τον έλεγχο, τότε σε ορισμένες περιπτώσεις μπορεί να χάσετε το κλείσιμο της πόρτας εάν κλείσει μέσα σε 5-6 δευτερόλεπτα από το άνοιγμα. Ένα πρακτικό σενάριο ανοίγματος και κλεισίματος της πόρτας μέσα σε 2 δευτερόλεπτα περίπου καταγράφεται καλά από τον βρόχο while που συνεχίζει να δημοσιεύει τα μηνύματα όσο η τρέχουσα κατάσταση της πόρτας είναι διαφορετική από την προηγούμενη. Το μόνο σενάριο που μπορεί να παραλείψει να καταγράψει όλο το συμβάν ανοιχτού/κλεισίματος είναι όταν η πόρτα ανοίγει/κλείνει επανειλημμένα μέσα σε παράθυρο 4-5 δευτερολέπτων, κάτι που είναι πολύ απίθανο - πιθανότατα περίπτωση παιδιού που παίζει με την πόρτα.

Βήμα 3: Έλεγχος υγείας

Χρειαζόμουν επίσης έναν τρόπο για να έχω ένα μήνυμα υγειονομικού ελέγχου από το ESP όπου στέλνει τη στάθμη της μπαταρίας του ESP, καθώς και για να διασφαλίσω ότι ο αισθητήρας λειτουργεί καλά χωρίς χειροκίνητο έλεγχο. Για αυτό το ATTiny στέλνει ένα σήμα WAKE_UP κάθε 12 ώρες. Μπορεί να διαμορφωθεί μέσω της μεταβλητής WAKEUP_COUNT στον κωδικό ATtiny. Αυτό είναι πολύ χρήσιμο για πόρτες ή παράθυρα που σπάνια ανοίγουν και έτσι μπορεί να μην μάθετε αν κάτι δεν πάει καλά με τον αισθητήρα ή την μπαταρία του.

Σε περίπτωση που δεν χρειάζεστε τη λειτουργία υγειονομικού ελέγχου, τότε δεν χρειάζεται όλη η ιδέα της χρήσης του ATTiny. Σε αυτή την περίπτωση μπορείτε να βρείτε άλλα σχέδια που έχουν δημιουργήσει οι άνθρωποι όπου η τροφοδοσία του ESP τροφοδοτείται μέσω ενός MOSFET και έτσι μπορείτε να επιτύχετε μηδενικό ρεύμα όταν η πόρτα δεν λειτουργεί. Υπάρχουν και άλλα πράγματα που πρέπει να προσέξουμε, όπως η τρέχουσα κλήρωση να είναι η ίδια σε πόρτα ανοιχτή και κλειστή πόρτα - γι 'αυτό κάπου είδα ένα σχέδιο που χρησιμοποίησε έναν διακόπτη καλαμιού 3 καταστάσεων αντί της συνηθισμένης 2 κατάστασης.

Βήμα 4: Μετρήσεις ισχύος και διάρκεια ζωής της μπαταρίας

Έχω μετρήσει την τρέχουσα κατανάλωση του κυκλώματος και χρειάζεται u 30uA όταν κοιμάστε και τριγύρω. Ακολουθώντας τα φύλλα δεδομένων του ATTiny, θα πρέπει να είναι περίπου 1-4 uA για ολόκληρο το κύκλωμα, συμπεριλαμβανομένου του ρεύματος ηρεμίας του LDO, αλλά στη συνέχεια οι μετρήσεις μου δείχνουν 30. Το MOSFET και το LDO καταναλώνουν ασήμαντο ρεύμα.

Έτσι, μια μπαταρία 800mAH θα πρέπει να διαρκέσει για μεγάλο χρονικό διάστημα. Δεν έχω ακριβή στατιστικά, αλλά το χρησιμοποιώ σε 2 από τις πόρτες μου για περισσότερο από ένα χρόνο τώρα και κάθε 18650 κελί με περίπου 800mAH που έχουν μείνει σε αυτά διαρκεί για περίπου 5-6 μήνες στην κύρια πόρτα μου που ανοίγει και κλείνει στις τουλάχιστον 30 φορές την ημέρα. Αυτό στην πόρτα της οροφής που ανοίγει μόνο μερικές φορές την εβδομάδα, διαρκεί 7-8 μήνες.

Βήμα 5: Μελλοντικές βελτιώσεις

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

2. Ενημέρωση OTA: Ο κωδικός ESP μπορεί να τροποποιηθεί για να διαβάσει ένα θέμα MQTT για μια ενημέρωση και έτσι να εισέλθει σε μια λειτουργία OTA για να λάβει ένα αρχείο.

3. Το ESP01 μπορεί να αντικατασταθεί με ESP-12 για πρόσβαση σε περισσότερους κωδικούς PIN εισόδου και έτσι μπορεί να συνδέσει περισσότερους αισθητήρες στο ίδιο. Σε αυτή την περίπτωση η επικοινωνία μέσω της μεθόδου 2 bit δεν είναι δυνατή. Αυτό μπορεί στη συνέχεια να βελτιωθεί για την εφαρμογή της επικοινωνίας I2C μεταξύ ATtiny & ESP. Αυτό είναι λίγο περίπλοκο αλλά εφαρμόσιμο. Το έχω σε άλλη ρύθμιση όπου ένα ATTiny στέλνει περιστροφικές τιμές κωδικοποιητή στο ESP μέσω της γραμμής I2C.

4. Το τρέχον κύκλωμα παρακολουθεί το εσωτερικό Vcc του ESP, εάν χρησιμοποιούμε ESP12 τότε αυτό μπορεί να τροποποιηθεί για να διαβάσει το πραγματικό επίπεδο της μπαταρίας μέσω του πείρου ADC.

5. Στο μέλλον θα δημοσιεύσω επίσης μια τροποποίηση σε αυτήν, η οποία μπορεί να χρησιμοποιηθεί ως αυτόνομος αισθητήρας χωρίς την ανάγκη για MQTT ή οποιοδήποτε σύστημα οικιακού αυτοματισμού. Ο αισθητήρας θα λειτουργεί αυτόνομα και μπορεί να κάνει ένα τηλεφώνημα όταν ενεργοποιηθεί - φυσικά χρειάζεται σύνδεση στο Διαδίκτυο για αυτό.

6. Και η λίστα συνεχίζεται…

7. Αντίστροφη προστασία μπαταρίας - ΕΓΙΝΕ (οι πραγματικές φωτογραφίες της συσκευής είναι παλιές και έτσι δεν αντικατοπτρίζουν το MOSFET)

Συνιστάται: