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

Hack Your Garage Door: 5 Βήματα
Hack Your Garage Door: 5 Βήματα

Βίντεο: Hack Your Garage Door: 5 Βήματα

Βίντεο: Hack Your Garage Door: 5 Βήματα
Βίντεο: Гениальные Лайфхаки, Которые Действительно Работают ▶3 2024, Ιούλιος
Anonim
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door

Ποιος δεν έχει ποτέ ονειρευτεί να πάει σπίτι μόνο με μια εφαρμογή τηλεφώνου ή να μπορεί να ακούει και να αντιγράφει τραμ δεδομένων; Είμαι χαρούμενος που μπορώ να μοιραστώ μαζί σας αυτό που συνειδητοποίησα και πώς προχώρησα. Ξεκίνησα αυτό το έργο μετά τη δεύτερη φορά που ξέχασα τα κλειδιά μου…

Φυσικά, η κωδικοποίηση, ο τύπος διαμόρφωσης, η συχνότητα του φορέα, οι πληροφορίες σύνδεσης bluetooth και τα δεδομένα που πρόκειται να δείξω στο παράδειγμα δεν είναι τα πρωτότυπα, προτιμώ να μην έχω επισκέπτες;-).

Αυτή η εφαρμογή ισχύει για κάθε αντικείμενο ικανό να λαμβάνει ψηφιακές πληροφορίες με ηλεκτρομαγνητικά κύματα (γκαραζόπορτα, αυτοκίνητο, μερικά ρολά…). Ολόκληρο το σύστημα αποτελείται από ένα αντικείμενο που συνδέεται μέσω bluetooth σε ένα τηλέφωνο, το οποίο μπορεί να στείλει τα ίδια καρέ με το τηλεχειριστήριο που σχετίζεται με αυτό που θέλουμε να χακάρουμε. Τοποθέτησα αυτό το αντικείμενο στο γκαράζ μου και μπορώ να συνδεθώ με αυτό από έξω.

Βήμα 1: Εξοπλισμός

Εξοπλισμός
Εξοπλισμός
Εξοπλισμός
Εξοπλισμός

Γλώσσες που χρησιμοποιούνται: C ++, MATLAB, Typescript, C, html.

Βασικές γνώσεις σε ψηφιακά ηλεκτρονικά και τηλεπικοινωνίες/επεξεργασία σήματος.

Κόστος: λιγότερο από $ 35.

Απαιτήσεις υλικού:

- NooELEC NESDR: για τη λήψη δεδομένων. Αυτή η πολύ φθηνή μονάδα εκτελεί ψηφιακή αποδιαμόρφωση, εξ ου και η υψηλή φορητότητά της. Αυτό το μοντέλο είναι συμβατό με το MATLAB. ($ 18,95)

www.nooelec.com/store/sdr/sdr-receivers/nes…

- Wemos Lolin32 lite: αυτό το esp32 είναι ένας φθηνός μικροελεγκτής, εξοπλισμένος με Wifi και Bluetooth. Δεν θα χρησιμοποιήσουμε το Wifi σε αυτήν την εφαρμογή, αλλά αυτό είναι σε μεγάλο βαθμό πιθανό. ($ 4,74)

wiki.wemos.cc/products:lolin32:lolin32_lit…

- CDSENET cc1101: αυτός ο πομπός ραδιοφώνου μας προσφέρει εξαιρετική ευελιξία, από την επιλεγμένη συχνότητα φορέα έως τον τύπο διαμόρφωσης. ($ 2,63)

www.aliexpress.com/item/2PC-Lot-E07-868MS1…

- Σύρματα, επικεφαλίδες, εξοπλισμός συγκόλλησης, μπαταρία λιπό 3.7V για αυτονομία, πιθανώς παλμογράφος ή/και λογικός αναλυτής για εντοπισμό σφαλμάτων και παρεμπιπτόντως, smartphone…

Απαιτήσεις λογισμικού:

- MATLAB/Simulink: για τη λήψη δεδομένων. Μπορούν να χρησιμοποιηθούν και άλλα δωρεάν εναλλακτικά λογισμικά, όπως το Audacity για οπτικοποίηση δεδομένων. (άδεια)

fr.mathworks.com/products.html?s_tid=gn_ps

- Εργαλειοθήκη εργαλείων esp-idf: αυτή θα χρησιμοποιηθεί για τον προγραμματισμό του esp32. Η ιδέα του Arduino μπορεί επίσης να χρησιμοποιηθεί, αλλά δεν επιτρέπει τόσο μεγάλη ελευθερία όσο αυτό που θα χρησιμοποιήσουμε. (Ελεύθερος)

esp-idf.readthedocs.io/el/latest/get-starte…

- TI SmartRF Studio: αυτό θα μας βοηθήσει να διαμορφώσουμε τους καταχωρητές cc1101, σύμφωνα με τις προδιαγραφές μας. (Ελεύθερος)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: για την κατασκευή της εφαρμογής. Μπορείτε να κάνετε την επιλογή δημιουργίας εγγενών εφαρμογών, αλλά το Ionic μας επιτρέπει να εκτελέσουμε την εφαρμογή μας σε συσκευές Android και IOS, με έναν μόνο κωδικό. Η παράσταση δεν αναζητείται στην περίπτωσή μας. (Ελεύθερος)

ionicframework.com/

- Η αγαπημένη σου ιδέα…

Βήμα 2: Κατασκοπεία του τηλεχειριστηρίου

Κατασκοπεία του τηλεχειριστηρίου
Κατασκοπεία του τηλεχειριστηρίου
Κατασκοπεία του τηλεχειριστηρίου
Κατασκοπεία του τηλεχειριστηρίου
Κατασκοπεία του τηλεχειριστηρίου
Κατασκοπεία του τηλεχειριστηρίου

Θα ξεκινήσουμε παρατηρώντας τα δεδομένα που παράγουν οι εντολές του τηλεχειριστηρίου. Για να το κάνετε αυτό, θα χρησιμοποιήσουμε ένα dngle rtl-sdr και μια κεραία:

fr.mathworks.com/hardware-support/rtl-sdr….

Ακολουθώντας αυτόν τον σύνδεσμο, θα βρείτε το πακέτο MATLAB, καθώς και ένα δωρεάν βιβλίο που εξηγεί όλες τις τιμές με την εξήγησή τους. Για να συνοψίσουμε αυτό που μας απασχολεί, τα δεδομένα διαμετακόμισης έχουν τη μορφή σήματος IQ: ένα σε φάση δεδομένα "I", σε συνδυασμό με δεδομένα τετραγωνισμού "Q". Αυτή η μέθοδος διευκολύνει τις τηλεπικοινωνίες. Θα μας ενδιαφέρει μόνο η λήψη του σήματος σε φάση. Τώρα θα συγκεντρώσουμε τις φυσικές και ψηφιακές πληροφορίες στο τηλεχειριστήριο. Εάν μπορείτε να βρείτε κάποια τεκμηρίωση σε αυτό, θα είναι ευκολότερο. Δεν βρήκα κανένα. Για να μπορέσουμε να παρατηρήσουμε χρονικά το σήμα, πρέπει πρώτα να γνωρίζουμε ποιος είναι ο φορέας συχνοτήτων του εκπεμπόμενου σήματος. Θα χρησιμοποιήσουμε το παράδειγμα που παρέχεται με το πακέτο τεκμηρίωσης "Spectral Analysis with RTL-SDR Radio", για να γνωρίζουμε ακριβώς σε ποια συχνότητα παρατηρούμε μια μέγιστη ισχύ όταν στέλνουμε μια εντολή. Στην περίπτωσή μου είναι 868,22 MHz. Οι "τυπικές" συχνότητες για τέτοιου είδους εφαρμογές είναι περίπου 868 MHz.

Με αυτές τις ενδείξεις, θα είμαστε σε θέση να γράψουμε έναν κωδικό MATLAB για να ανακτήσουμε τα δεδομένα. Αυτό επισυνάπτεται στη φωτογραφία και σχολιάζεται. Το αποτέλεσμα μας επιτρέπει να βρούμε τον τύπο της διαμόρφωσης: ανακτώντας τις ακατέργαστες πληροφορίες, εμφανίζοντας το αποτέλεσμα αμέσως μετά την ανάκτηση του πραγματικού μέρους του σήματος, μπορούμε να συμπεράνουμε ότι πρόκειται για ASK / OOK διαμόρφωση. Πράγματι, παρατηρούμε ότι η συχνότητα είναι αμετάβλητη, ωστόσο, το σήμα έχει μόνο δύο πλάτη: ένα μηδενικό και ένα σταθερό. Ο υπόλοιπος κώδικας μας επιτρέπει να ανακτήσουμε το φάκελο του λαμβανόμενου σήματος, που διευκολύνεται στην ανάγνωση για να γνωρίζουμε το τραμ. Μόλις εμφανιστεί, μπορούμε να καθορίσουμε τη διαμόρφωση της ζώνης βάσης: πρόκειται για κωδικοποίηση του Μάντσεστερ (δείτε τη συνημμένη φωτογραφία). Μπορούμε επίσης να συμπεράνουμε το ρυθμό baud (σύμβολα ανά δευτερόλεπτο). Όλες αυτές οι πληροφορίες που συλλέγονται, μπορούμε να γνωρίζουμε το πλαίσιο δεδομένων. Στην περίπτωσή μου, τα byte που βρέθηκαν είναι: 249, 39, 75, 178, 45, 200 και επαναλήφθηκαν πολλές φορές, για να διασφαλιστεί ότι η εντολή είναι καλά δεκτή. Ευτυχώς, ο κώδικας δεν κυλά, το πλαίσιο δεδομένων είναι πάντα το ίδιο.

Βήμα 3: Στείλτε τα ίδια πλαίσια δεδομένων

Στείλτε τα ίδια πλαίσια δεδομένων
Στείλτε τα ίδια πλαίσια δεδομένων
Αποστολή των ίδιων πλαισίων δεδομένων
Αποστολή των ίδιων πλαισίων δεδομένων
Στείλτε τα ίδια πλαίσια δεδομένων
Στείλτε τα ίδια πλαίσια δεδομένων

Το Texas Instruments cc1101 είναι τόσο ευέλικτο που θα επιτύχετε ακόμα τον στόχο σας, ακόμη και αν οι ρυθμίσεις που βρήκατε στο προηγούμενο βήμα είναι εντελώς διαφορετικές από τις δικές μου. Πράγματι, θα δείτε στην τεκμηρίωση, σελίδα 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) ότι σας επιτρέπει να εκτελέσετε διαμόρφωση NRZ, Manchester, FSK, ASK/OOK, οι συχνότητες γύρω στα 433 MHz ή 868 MHz, και πολλά άλλα πράγματα. Σας συμβουλεύω να διαβάσετε την τεκμηρίωση για να εξοικειωθείτε με αυτήν την ενότητα.

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

github.com/loboris/ESP32_CC1101/tree/maste…

Θα γράψουμε τον κωδικό μας για το esp32 με την εργαλειοθήκη esp-idf (δείτε συνδέσμους του πρώτου βήματος). Μπορείτε να προσθέσετε τα αρχεία του συνδέσμου στον υποκατάλογο στοιχείων του έργου σας. Για να διαμορφώσουμε σωστά το cc1101, θα χρειαστεί να διορθώσουμε τους καταχωρητές του. Το Texas Instruments μας παρέχει λογισμικό που μας δίνει την αξία των καταχωρητών σύμφωνα με τη διαμόρφωσή μας: SmartRF Studio.

Όσον αφορά εμένα, υποδεικνύω στο λογισμικό ότι επιθυμώ κωδικοποίηση στο Μάντσεστερ, ότι η συχνότητα του φορέα μου είναι 868,22 MHz, ότι ο τύπος διαμόρφωσής μου είναι ASK / OOK… Σας αφήνω να εισαγάγετε τις παραμέτρους σας. Στην περίπτωση που η κωδικοποίηση ζώνης βάσης δεν είναι διαθέσιμη, μπορείτε να εξετάσετε την κωδικοποίηση NRZ, αυξάνοντας σωστά το ρυθμό baud και προσαρμόζοντας τα δεδομένα.

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

Καθώς το τσιπ cc1101 επικοινωνεί μέσω SPI, θα βρείτε στο σύνδεσμο του παραδείγματος κώδικα το αρχείο κεφαλίδας "spi_master_lobo.h", το οποίο περιέχει πιο εύκολες λειτουργίες για τη χρήση του SPI από ό, τι αν έπρεπε να το χρησιμοποιήσετε μόνο με την αλυσίδα εργαλείων. Συμμετέχω στη φωτογραφία το σχήμα της επικοινωνίας CC1101 σε SPI, φωτογραφία που λαμβάνεται από τη σελίδα 30 του φύλλου δεδομένων CC1101. Τα τέσσερα καλώδια που παρουσιάζονται είναι: CS (Chip Select, ή SS: Slave Select, ή εδώ CSn), CLK (ή SCLK, το ρολόι, παρέχεται από τον κύριο), MISO (ή SO, Master In Slave Out) και MOSI (ή SI, Master Out Slave In). Στην περίπτωσή μας, ο κύριος είναι το ESP32 και ο υποτελής είναι ο CC1101. Οι επικοινωνίες ξεκινούν όταν η ακίδα CS είναι χαμηλή, γενικά.

Μην ξεχάσετε να ενεργοποιήσετε στις επιλογές μεταγλωττιστή του menuconfig τις εξαιρέσεις C ++ για μεταγλώττιση.

Βήμα 4: Συνδεθείτε στο σύστημα

Συνδεθείτε στο Σύστημα
Συνδεθείτε στο Σύστημα
Συνδεθείτε στο Σύστημα
Συνδεθείτε στο Σύστημα
Συνδεθείτε στο Σύστημα
Συνδεθείτε στο Σύστημα

Εάν ο κωδικός σας λειτουργεί, έχετε κάνει το βασικό. Σε αυτό το μέρος, θα επικεντρωθούμε στον τρόπο δημιουργίας μιας εφαρμογής τηλεφώνου συνδεδεμένης στο σύστημα. Η πιο ενδιαφέρουσα λύση είναι η σύνδεση μέσω bluetooth, επειδή επιτρέπει τη χρήση πρωτοκόλλου χαμηλής ισχύος: Bluetooth Low Energy (BLE). Το προφίλ ιεραρχίας εμφανίζεται στο συνημμένο σχέδιο: θα διαβάσουμε και θα γράψουμε την εντολή σε ένα χαρακτηριστικό μιας υπηρεσίας. Και φυσικά, το esp32 και το smartphone μας είναι εξοπλισμένα με bluetooth.

Αυτό το βήμα χωρίζεται σε δύο μέρη: το μέρος esp32 και το τμήμα εφαρμογής. Η συνημμένη φωτογραφία δείχνει και εξηγεί τα κύρια μέρη των κωδικών.

Μπορείτε να δημιουργήσετε τα UUID σας ακολουθώντας αυτόν τον σύνδεσμο:

www.uuidgenerator.net/

Αυτά είναι τα αναγνωριστικά που θα παρέχουν πρόσβαση στις υπηρεσίες και τις δυνατότητες του προφίλ μας BLE.

Σχετικά με τον κωδικό esp32 BLE, ο Kolban έκανε εξαιρετική δουλειά καθιστώντας όλες αυτές τις υψηλού επιπέδου λειτουργίες C ++ συμβατές:

github.com/nkolban/esp32-snippets/tree/mas…

Μπορείτε να βάλετε αυτά τα αρχεία στον υποκατάλογο στοιχείων. Διαφορετικά, θα χρειαστείτε περισσότερο χρόνο για να καταλάβετε πώς να χρησιμοποιήσετε το BLE με την εργαλειοθήκη esp-idf.

Συνοψίζοντας τι θα δείτε στον κώδικα, δημιουργούμε έναν διακομιστή, μια υπηρεσία και ένα χαρακτηριστικό, με τα συσχετιζόμενα UUID και προσθέτουμε μια επανακαθορισμένη κλάση επανάκλησης, με μια σχετική μέθοδο εγγραφής: όταν λαμβάνουμε το "O" χαρακτήρα, στέλνουμε μια εντολή εγγραφής στο cc1101.

Φυσικά, μην ξεχάσετε να ενεργοποιήσετε το Bluetooth στη διαμόρφωση Component του Menuconfig.

Σχετικά με το μέρος της εφαρμογής, θα χρησιμοποιήσουμε το Framework Ionic. Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτό στο σύνδεσμο που παρουσιάζεται στο πρώτο βήμα και για περισσότερες λεπτομέρειες σχετικά με τον τρόπο χρήσης του BLE με το Ionic:

ionicframework.com/docs/native/ble/

Και παραδείγματα, γραμμένα από τον don:

github.com/don/ionic-ble-examples/tree/mas…

Μπορείτε να επεξεργαστείτε για παράδειγμα το παράδειγμα "Σύνδεση". Σαρώνουμε συσκευές σε μια πρώτη σελίδα και φτάνουμε σε μια δεύτερη σελίδα αν επιλέξουμε τη συσκευή μας. Στη συνέχεια, έχουμε πρόσβαση σε μια διεπαφή όπου μπορείτε να προσθέσετε ένα κουμπί με τη μέθοδο που παρουσιάζεται στη φωτογραφία: στέλνει την εντολή μας "O" με τα κατάλληλα UUID. Μπορείτε επίσης να προσθέσετε στον κατασκευαστή της πρώτης σελίδας τη μέθοδο "ενεργοποίηση", ζητώντας να ενεργοποιήσετε το bluetooth στην αρχή της εφαρμογής.

Σας συνιστώ ανεπιφύλακτα να εξερευνήσετε τον ιστότοπο Ionic και να ανακαλύψετε όλα τα εξαρτήματα (κουμπιά, ειδοποιήσεις, πλαίσια ελέγχου…) για να βελτιώσετε την εφαρμογή σας:

ionicframework.com/docs/components/#overvi…

Βήμα 5: Βελτιστοποιήστε την κατανάλωση ενέργειας

Βελτιστοποιήστε την κατανάλωση ενέργειας
Βελτιστοποιήστε την κατανάλωση ενέργειας
Βελτιστοποιήστε την κατανάλωση ενέργειας
Βελτιστοποιήστε την κατανάλωση ενέργειας

Αρχίσαμε να δουλεύουμε με χαμηλή κατανάλωση, οπότε ας συνεχίσουμε.

Η εργαλειοθήκη esp-idf μας επιτρέπει να χρησιμοποιήσουμε ένα GUI διαμόρφωσης, το menuconfig: πολλές παράμετροι μπορούν να μειώσουν την κατανάλωση esp32. Πρώτα απ 'όλα, καθώς δεν χρειαζόμαστε Wifi, μπορούμε να το απενεργοποιήσουμε στη διαμόρφωση Component. Στον ίδιο φάκελο, στο FreeRTOS, μπορείτε να επιλέξετε "Εκτέλεση του FreeRTOS μόνο στον πρώτο πυρήνα. Στη συνέχεια, σε συγκεκριμένο ESP, μπορείτε να μειώσετε τη συχνότητα της CPU στα 80 MHz. Όλες οι λειτουργίες εξακολουθούν να λειτουργούν με αυτήν την ταχύτητα ρολογιού. Τέλος, μπορείτε ελέγξτε "Ενεργοποίηση συμπαραγωγού εξαιρετικά χαμηλής ισχύος (ULP). Αυτή η διαμόρφωση κάνει την τρέχουσα κατανάλωση να πάει από περίπου εκατό mA σε περίπου τριάντα mA. Αυτό είναι ακόμα πάρα πολύ…

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

Δείτε τον παρακάτω σύνδεσμο για περισσότερες λεπτομέρειες:

esp-idf.readthedocs.io/en/latest/api-refere…

Δυστυχώς, στην τελευταία διαθέσιμη έκδοση της εργαλειοθήκης esp-idf (3.0), τα μόνα διαθέσιμα ξυπνήματα είναι με χρονοδιακόπτες και διαταραχές GPIO. Ευτυχώς, η Espressif μας υπόσχεται BLE ξύπνημα στην επόμενη έκδοση (3.1).

Μπορείτε επίσης να βάλετε το CC1101 σε κατάσταση αδράνειας, στέλνοντας στο SPI την κατάλληλη εντολή για να απενεργοποιήσετε τη συσκευή (βλ. Φύλλο δεδομένων cc1101, εντολή SPWD, σελίδα 51). Για να θέσετε τη συσκευή σε κατάσταση αναστολής λειτουργίας ή για να την ξυπνήσετε, μπορείτε να βάλετε χαμηλά και ψηλά τον πείρο επιλογής τσιπ των καρφιτσών SPI (περισσότερες πληροφορίες στο φύλλο δεδομένων).

Αυτές οι τελευταίες διαμορφώσεις θα πρέπει να μπορούν να κάνουν την κατανάλωση του συστήματος να περνά κάτω από τα χιλιοστά του αμπέρ…

Τέλος, για να διατηρήσετε το σύστημα όσο το δυνατόν περισσότερο χωρίς επαναφόρτιση ή ακόμη και να φτάσετε σε ένα μήνα αυτονομίας, επιλέξτε την μπαταρία 3,7V με τα περισσότερα milli-ampere την ώρα. Μετρώντας την κατανάλωση ισχύος του συστήματός σας, με την οθόνη μιας γεννήτριας ή ενός αμπερόμετρου συνδεδεμένου σε σειρά πριν από τον + πόλο του συστήματός σας, μπορείτε να υπολογίσετε τον χρόνο που θα διαρκέσει το σύστημά σας!

Συνιστάται: