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

ESP32 Xiaomi Hack - Λήψη δεδομένων ασύρματα: 6 βήματα (με εικόνες)
ESP32 Xiaomi Hack - Λήψη δεδομένων ασύρματα: 6 βήματα (με εικόνες)

Βίντεο: ESP32 Xiaomi Hack - Λήψη δεδομένων ασύρματα: 6 βήματα (με εικόνες)

Βίντεο: ESP32 Xiaomi Hack - Λήψη δεδομένων ασύρματα: 6 βήματα (με εικόνες)
Βίντεο: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Ιούλιος
Anonim
Image
Image
ESP32 Xiaomi Hack - Λάβετε δεδομένα ασύρματα
ESP32 Xiaomi Hack - Λάβετε δεδομένα ασύρματα

Αγαπητοί φίλοι καλώς ήλθατε σε ένα άλλο εκπαιδευτικό! Σήμερα θα μάθουμε πώς να λαμβάνουμε τα δεδομένα που μεταδίδει αυτή η οθόνη θερμοκρασίας και υγρασίας της Xiaomi χρησιμοποιώντας τη λειτουργικότητα Bluetooth της πλακέτας ESP32.

Όπως μπορείτε να δείτε, χρησιμοποιώ έναν πίνακα ESP32 και μια έγχρωμη οθόνη TFT 2,8”. Στην οθόνη, εμφανίζουμε τη θερμοκρασία και την υγρασία. Το ωραίο είναι ότι δεν έχω συνδέσει αισθητήρες στην πλακέτα ESP32. Λαμβάνω τη θερμοκρασία και την υγρασία ασύρματα από αυτήν την εμπορική οθόνη θερμοκρασίας και υγρασίας της Xiaomi. Τι ωραίο που είναι! Η οθόνη στη συσκευή Xiaomi ενημερώνεται κάθε δευτερόλεπτο, αλλά ενημερώνω την οθόνη που είναι συνδεδεμένη στην πλακέτα ESP32 κάθε 10 δευτερόλεπτα για εξοικονόμηση ενέργειας στη συσκευή Xiaomi.

Αυτός ο δροσερός αισθητήρας θερμοκρασίας και υγρασίας Xiaomi εμφανίζει τη θερμοκρασία και την υγρασία στην οθόνη LCD και μπορεί επίσης να μεταφέρει τα δεδομένα σε άλλες συσκευές ή εφαρμογές Xiaomi χρησιμοποιώντας το πρωτόκολλο Bluetooth. Οι συσκευές χρησιμοποιούν μία μπαταρία AAA και δεδομένου ότι είναι εμπορικό προϊόν, η διάρκεια ζωής της μπαταρίας είναι εξαιρετική. Μπορεί να διαρκέσει με μία μπαταρία AAA για μήνες, κάτι που δεν μπορούμε να επιτύχουμε στα DIY έργα μας. Πριν από μερικές εβδομάδες, ανακάλυψα ότι μερικοί έξυπνοι τύποι κατάφεραν να αντιστρέψουν το πρωτόκολλο που χρησιμοποιεί η Xiaomi για τη μετάδοση των δεδομένων από τον αισθητήρα και κατάφεραν να λάβουν αυτά τα δεδομένα χρησιμοποιώντας έναν πίνακα ESP32. Το δοκίμασα λοιπόν και όπως βλέπετε λειτουργεί!

Βήμα 1: Αποκτήστε όλα τα μέρη

Πάρτε όλα τα μέρη
Πάρτε όλα τα μέρη

Ας δούμε τώρα πώς να φτιάξουμε αυτό το έργο. Χρειαζόμαστε έναν πίνακα ESP32, μια οθόνη ILI9341 2,8”, τον αισθητήρα θερμοκρασίας και υγρασίας της Xiaomi, μια σανίδα ψωμιού και μερικά καλώδια.

Ακολουθούν ορισμένοι σύνδεσμοι για τα μέρη που πρόκειται να χρησιμοποιήσω σε αυτό το Instructable.

  • ESP32 ▶
  • 2,8 "Οθόνη ▶
  • Αισθητήρας Xiaomi ▶
  • Breadboard ▶
  • Καλώδια ▶
  • Μετρητής USB ▶
  • Powerbank ▶

Βήμα 2: Ο πίνακας ESP32

Image
Image
Ο πίνακας ESP32
Ο πίνακας ESP32

Εάν δεν είστε εξοικειωμένοι με αυτό, το τσιπ ESP32 είναι ο διάδοχος του δημοφιλούς τσιπ ESP8266 που έχουμε χρησιμοποιήσει πολλές φορές στο παρελθόν. Το ESP32 είναι κτήνος! Προσφέρει δύο 32 πυρήνες επεξεργασίας που λειτουργούν στα 160MHz, τεράστιο όγκο μνήμης, WiFi, Bluetooth και πολλές άλλες δυνατότητες με κόστος περίπου 7 $! Καταπληκτικά πράγματα!

Παρακαλούμε δείτε τη λεπτομερή κριτική που έχω ετοιμάσει για αυτόν τον πίνακα. Επισυνάπτω το βίντεο σε αυτό το Instructable. Θα σας βοηθήσει να καταλάβετε γιατί αυτό το τσιπ θα αλλάξει τον τρόπο που φτιάχνουμε τα πράγματα για πάντα! Ένα από τα πιο συναρπαστικά πράγματα σχετικά με το ESP32 είναι ότι παρόλο που είναι τόσο ισχυρό, προσφέρει μια λειτουργία ύπνου που απαιτεί μόνο 10μΑ ρεύματος. Αυτό καθιστά το ESP32 το ιδανικό τσιπ για εφαρμογές χαμηλής ισχύος.

Βήμα 3: Οθόνη TFT 2,8 "για Arduino και ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Η οθόνη είναι μεγάλη και προσφέρει ανάλυση 320x240 pixel. Σε σύγκριση με μία από τις αγαπημένες μου οθόνες, την έγχρωμη οθόνη TFT 1,8”μπορείτε να την δείτε πολύ μεγαλύτερη. Η οθόνη προσφέρει επίσης λειτουργικότητα αφής που είναι ένα επιπλέον μπόνους και μια υποδοχή κάρτας SD στο πίσω μέρος. Χρησιμοποιεί τη διασύνδεση SPI, οπότε η σύνδεση με το Arduino ή την πλακέτα ESP32 είναι πολύ απλή. Το κόστος της οθόνης είναι σχετικά χαμηλό. κοστίζει περίπου 11 $ που κατά τη γνώμη μου είναι μια δίκαιη τιμή για αυτό που προσφέρει αυτή η οθόνη.

Ένα άλλο πράγμα όπως σε αυτήν την οθόνη είναι ότι δεν έρχεται ως ασπίδα όπως η οθόνη αφής που χρησιμοποιούσαμε μέχρι τώρα. Με αυτόν τον τρόπο, μπορούμε να συνδέσουμε την οθόνη σε οποιαδήποτε πλακέτα, το Arduino Pro mini, το STM32, το ESP8266 και το ESP32. Αυτό είναι πολύ σημαντικό γιατί έχουμε τώρα μια οθόνη χαμηλού κόστους που μπορούμε να χρησιμοποιήσουμε με κάθε πίνακα. Μέχρι τώρα, η μόνη οθόνη αφής που μπορούσαμε να χρησιμοποιήσουμε με αυτούς τους πίνακες ήταν οι οθόνες Nextion που είναι πιο ακριβές και για να είμαι ειλικρινής παρόλο που τις χρησιμοποιώ κατά καιρούς, δεν μου αρέσουν πολύ.

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

Σύνδεση της οθόνης
Σύνδεση της οθόνης
Σύνδεση της οθόνης
Σύνδεση της οθόνης
Σύνδεση της οθόνης
Σύνδεση της οθόνης
Σύνδεση της οθόνης
Σύνδεση της οθόνης

Πρώτον, πρέπει να συνδέσουμε την πλακέτα ESP32 στην οθόνη 2,8”. Μπορείτε να βρείτε το σχηματικό που επισυνάπτεται στο Instructable. Χρησιμοποιώ αυτόν τον πίνακα DOIT ESP32 που κυκλοφόρησε πριν από περίπου δύο χρόνια. Αυτή η έκδοση του πίνακα δεν είναι πλέον διαθέσιμη, δεδομένου ότι τώρα υπάρχει μια νεότερη έκδοση του που προσφέρει περισσότερες καρφίτσες, αυτή. Ο μόνος λόγος που χρησιμοποιώ την παλιά έκδοση του πίνακα είναι ότι ο πείρος GND του πίνακα τοποθετείται δίπλα στις καρφίτσες SPI, στην ίδια πλευρά του πίνακα, γεγονός που το καθιστά φιλικό προς το ψωμί.

Αφού συνδέσουμε την οθόνη στην πλακέτα, μπορούμε να ενεργοποιήσουμε το έργο. Μετά από μερικά δευτερόλεπτα, λαμβάνουμε ζωντανά δεδομένα από την κοντινή συσκευή Xiaomi. Δεδομένου ότι η συσκευή χρησιμοποιεί Bluetooth 4, το εύρος της είναι αρκετά καλό. Μπορούμε εύκολα να πάρουμε τα δεδομένα που μεταδίδει αυτή η συσκευή από αποστάσεις έως και 10 μέτρα ή περισσότερο! Μπορούμε επίσης να λάβουμε το επίπεδο μπαταρίας της συσκευής Xiaomi, αλλά δεν εμφανίζω αυτήν την τιμή στην οθόνη.

Εάν χρησιμοποιούμε αυτόν τον μετρητή USB, μπορούμε να δούμε ότι η τρέχουσα κλήρωση αυτού του έργου είναι περίπου 120-150 mA χρησιμοποιώντας αυτήν τη μεγάλη οθόνη. Εάν χρησιμοποιούμε οθόνη ηλεκτρονικού χαρτιού, θέτουμε την πλακέτα ESP32 σε κατάσταση βαθιάς αναστολής λειτουργίας και λαμβάνουμε δεδομένα από τον αισθητήρα κάθε λίγα λεπτά, ώστε να κάνουμε αυτό το έργο φιλικό προς την μπαταρία. Θα το δοκιμάσω σε μελλοντικό βίντεο. Αυτό το έργο είναι απλώς μια επίδειξη ότι μπορούμε να λάβουμε δεδομένα από αυτήν τη συσκευή ασύρματα.

Βήμα 5: Ο Κώδικας του Έργου

Ο Κώδικας του Έργου
Ο Κώδικας του Έργου

Ας δούμε τώρα την πλευρά του λογισμικού του έργου.

Ο κώδικας του έργου βασίζεται σε αυτό το έργο:

Χρησιμοποίησα τον κώδικα που λαμβάνει αυτά τα δεδομένα από τη συσκευή Xiaomi και έχτισα ένα αυτόνομο έργο με αυτήν.

Σε αυτήν τη μεταβλητή, δηλώνουμε ότι πρέπει να λαμβάνουμε νέα δεδομένα κάθε 10 δευτερόλεπτα.

#define SCAN_TIME 10 // δευτερόλεπτα

Εδώ, δηλώνουμε ότι θέλουμε να εμφανίσουμε τη θερμοκρασία σε βαθμούς Κελσίου. Εάν θέλετε να χρησιμοποιήσετε το Imperial σύστημα, απλώς ορίστε αυτήν τη μεταβλητή σε false.

boolean METRIC = true? // Ορισμός true για μετρικό σύστημα. ψευδές για αυτοκρατορικό

Στη λειτουργία ρύθμισης αρχικοποιούμε την οθόνη και τη μονάδα Bluetooth της πλακέτας ESP32 και στη συνέχεια σχεδιάζουμε τη διεπαφή χρήστη στην οθόνη.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // απενεργοποίηση ανιχνευτή brownout

tft.begin ();

Serial.begin (115200);

Serial.println ("ESP32 XIAOMI DISPLAY"); initBluetooth ();

drawUI ();

}

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

void loop () {char printLog [256]; Serial.printf ("Έναρξη σάρωσης BLE για %d δευτερόλεπτα… / n", SCAN_TIME); BLEScanΑποτελέσματα βρέθηκανΣυσκευές = pBLEScan-> έναρξη (SCAN_TIME); int count = foundDevices.getCount (); printf ("Βρέθηκε αριθμός συσκευών: %d / n", αριθμός);

καθυστέρηση (100)?

}

Οι τιμές υγρασίας και θερμοκρασίας αποθηκεύονται σε αυτά τα πακέτα, οπότε πρέπει μόνο να τα διαβάσουμε. Αφού διαβάσουμε τις τιμές τις εμφανίζουμε στην οθόνη. Όπως πάντα, μπορείτε να βρείτε έναν σύνδεσμο προς τον κώδικα αυτού του έργου στην περιγραφή που επισυνάπτεται σε αυτό το Instructable.

Βήμα 6: Τελικά αν και βελτιώσεις

Τελικά αν και βελτιώσεις
Τελικά αν και βελτιώσεις
Τελικά αν και βελτιώσεις
Τελικά αν και βελτιώσεις

Τώρα που γνωρίζουμε πώς να λαμβάνουμε δεδομένα ασύρματα από αυτόν τον αισθητήρα, μπορούμε να δημιουργήσουμε έναν πλήρη μετεωρολογικό σταθμό με μπαταρία. Δεδομένου ότι αυτή η συσκευή Xiaomi είναι εμπορικό προϊόν, προσφέρει μεγάλη διάρκεια ζωής της μπαταρίας. Δυστυχώς, δεν μπορούμε ακόμη να επιτύχουμε παρόμοια κατανάλωση μπαταρίας στα έργα μας. Έτσι, σχεδιάζω να χρησιμοποιήσω αυτόν τον αισθητήρα ως εξωτερικό αισθητήρα για ένα έργο μετεωρολογικού σταθμού που θα χρησιμοποιεί μια μεγάλη οθόνη ηλεκτρονικού χαρτιού. Θα είναι δροσερό. Επίσης, θα ψάξω για άλλες συσκευές με δυνατότητα Xiaomi Bluetooth που μπορούμε να χακάρουμε με παρόμοιο τρόπο. Μείνετε συντονισμένοι.

Θα ήθελα πολύ να μάθω τη γνώμη σας για αυτό το έργο. Θεωρείτε χρήσιμο το ότι μπορούμε να λαμβάνουμε δεδομένα από ορισμένες εμπορικές συσκευές Bluetooth; Τι πρόκειται να δημιουργήσετε χρησιμοποιώντας αυτήν τη λειτουργικότητα; Θα ήθελα να διαβάσω τις ιδέες σας, γι 'αυτό δημοσιεύστε τις στην παρακάτω ενότητα σχολίων. Ευχαριστώ!

Συνιστάται: