Mündəricat:

ESP32 Xiaomi Hack - Kabelsiz Məlumat Alın: 6 Addım (Şəkillərlə)
ESP32 Xiaomi Hack - Kabelsiz Məlumat Alın: 6 Addım (Şəkillərlə)

Video: ESP32 Xiaomi Hack - Kabelsiz Məlumat Alın: 6 Addım (Şəkillərlə)

Video: ESP32 Xiaomi Hack - Kabelsiz Məlumat Alın: 6 Addım (Şəkillərlə)
Video: Добавление градусника XIaomi lywsd03mmc в ESPHome и в Home Assistant через ESP32 2024, Iyul
Anonim
Image
Image
ESP32 Xiaomi Hack - Kabelsiz Məlumat Alın
ESP32 Xiaomi Hack - Kabelsiz Məlumat Alın

Əziz dostlar, başqa bir təlimata xoş gəldiniz! Bu gün bu Xiaomi Temperatur və Nəmlik monitorunun ESP32 lövhəsinin Bluetooth funksiyasından istifadə edərək ötürdüyü məlumatları necə əldə edəcəyimizi öyrənəcəyik.

Gördüyünüz kimi, bir ESP32 lövhəsi və 2.8 rəngli TFT ekranı istifadə edirəm. Ekranda temperatur və rütubəti göstəririk. Ən maraqlısı odur ki, heç bir sensoru ESP32 lövhəsinə qoşmamışam. İstilik və rütubəti bu kommersiya Xiaomi Temperatur və Nəmlik monitorundan kabelsiz alıram. Bu necə də gözəldir! Xiaomi cihazındakı ekran hər saniyədə yenilənir, ancaq Xiaomi cihazında gücə qənaət etmək üçün hər 10 saniyədə ESP32 lövhəsinə qoşulan ekranı yeniləyirəm.

Bu sərin Xiaomi temperatur və rütubət sensoru LCD displeyində temperatur və rütubəti göstərir və eyni zamanda məlumatları Bluetooth protokolundan istifadə edərək digər Xiaomi Cihazlarına və ya tətbiqlərinə ötürə bilər. Cihazlar tək bir AAA batareya istifadə edir və kommersiya məhsulu olduğu üçün cihazın batareya ömrü əladır. Tək bir AAA batareyasında aylarla davam edə bilər, DIY layihələrimizdə əldə edə bilməyəcəyimiz bir şey. Bir neçə həftə əvvəl, bəzi ağıllı adamların Xiaomi -nin məlumatları sensordan ötürmək üçün istifadə etdiyi protokolu tərsinə çevirməyi bacardıqlarını və ESP32 lövhəsindən istifadə edərək bu məlumatları əldə edə bildiklərini kəşf etdim. Buna görə sınadım və gördüyünüz kimi işləyir!

Addım 1: Bütün hissələri alın

Bütün hissələri alın
Bütün hissələri alın

İndi bu layihənin necə qurulacağına baxaq. ESP32 lövhəsi, 2,8 düymlük ILI9341 ekranı, Xiaomi temperatur və rütubət sensoru, çörək taxtası və bəzi tellərə ehtiyacımız var.

Bu Təlimat kitabında istifadə edəcəyim hissələrə bəzi bağlantılar.

  • ESP32 ▶
  • 2.8 "Ekran ▶
  • Xiaomi Sensoru ▶
  • Çörək paneli ▶
  • Tellər ▶
  • USB Meter ▶
  • Powerbank ▶

Addım 2: ESP32 lövhəsi

Image
Image
ESP32 lövhəsi
ESP32 lövhəsi

Əgər tanış deyilsinizsə, ESP32 çipi keçmişdə dəfələrlə istifadə etdiyimiz məşhur ESP8266 çipinin varisidir. ESP32 bir heyvandır! 160MHz -də işləyən iki 32 işləmə nüvəsi, çoxlu miqdarda yaddaş, WiFi, Bluetooth və təxminən 7 dollar dəyərində bir çox xüsusiyyət təqdim edir! İnanılmaz şeylər!

Zəhmət olmasa bu lövhə üçün hazırladığım ətraflı araşdırmanı izləyin. Videonu bu Təlimata əlavə etdim. Bu çipin hər şeyi əbədi olaraq necə dəyişdirəcəyimizi anlamağa kömək edəcək! ESP32 haqqında ən maraqlı şeylərdən biri, çox güclü olmasına baxmayaraq, cəmi 10μΑs cərəyan tələb edən dərin yuxu rejimi təklif etməsidir. Bu, ESP32 -ni aşağı güc tətbiqləri üçün ideal çip halına gətirir.

Addım 3: Arduino və ESP32 üçün 2.8 "TFT Ekran

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Ekran böyükdür və 320x240 piksel qətnamə təklif edir. Sevdiyim ekranlardan biri ilə müqayisədə 1.8 Rəngli TFT ekranı daha böyük görə bilərsiniz. Ekran, əlavə bir bonus və arxada bir SD kart yuvası olan toxunma funksiyasını da təklif edir. SPI interfeysindən istifadə edir, buna görə Arduino və ya ESP32 lövhəsi ilə əlaqə çox sadədir. Ekranın qiyməti nisbətən aşağıdır; təxminən 11 dollara başa gəlir, bu fikrimcə bu ekranın təklif etdiyi şeylər üçün ədalətli bir qiymətdir.

Bu ekranla əlaqəli başqa bir şey, indiyə qədər istifadə etdiyimiz toxunma ekranı kimi bir qalxan kimi gəlməməsidir. Beləliklə, ekranı istənilən lövhəyə, Arduino Pro mini, STM32, ESP8266 və ESP32 -ə qoşa bilərik. Bu çox vacibdir, çünki indi hər lövhədə istifadə edə biləcəyimiz aşağı qiymətli bir ekrana sahibik. İndiyə qədər bu lövhələrdə istifadə edə biləcəyimiz yeganə toxunma ekranı daha bahalı Nextion ekranları idi və düzünü desəm, bəzən istifadə etsəm də, bəyənmirəm.

Addım 4: Ekranı bağlayın

Ekranı birləşdirmək
Ekranı birləşdirmək
Ekranı birləşdirmək
Ekranı birləşdirmək
Ekranı birləşdirmək
Ekranı birləşdirmək
Ekranı birləşdirmək
Ekranı birləşdirmək

Əvvəlcə ESP32 lövhəsini 2.8 düymlük ekrana bağlamalıyıq. Instructable -a əlavə edilmiş sxemlə tanış ola bilərsiniz. Təxminən iki il əvvəl buraxılan bu DOIT ESP32 lövhəsindən istifadə edirəm. Lövhənin bu versiyası artıq mövcud deyil, çünki indi daha çox sancaq təklif edən daha yeni bir versiyası var. Lövhənin köhnə versiyasını istifadə etməyimin yeganə səbəbi, taxtanın eyni tərəfində, SPI sancaqlarının yanında yerləşdirilən lövhənin GND pininin olmasıdır ki, bu da onu çörək taxtası dostu edir.

Ekranı lövhəyə bağladıqdan sonra layihəni gücləndirə bilərik. Bir neçə saniyədən sonra yaxınlıqdakı Xiaomi Cihazından canlı məlumatlar alırıq. Cihaz Bluetooth 4 -dən istifadə etdiyi üçün onun diapazonu olduqca yaxşıdır. Bu cihazın 10 metr və ya daha çox məsafələrə ötürdüyü məlumatları asanlıqla əldə edə bilərik! Xiaomi Cihazının batareya səviyyəsini də ala bilərik, amma bu dəyəri ekranda göstərmirəm.

Bu USB sayğacdan istifadə etsək, bu böyük ekrandan istifadə edərək bu layihənin cari çəkilişinin 120-150 mA ətrafında olduğunu görə bilərik. Bir e-kağız ekranı istifadə etsək, ESP32 lövhəsini dərin yuxu rejiminə keçirək və bir neçə dəqiqədən bir sensordan məlumat alsaq, bu layihəni batareyaya dost edə bilərik. Gələcək bir videoda bunu sınayacağam. Bu layihə, simsiz olaraq bu cihazdan məlumat əldə edə biləcəyimizin bir nümayişidir.

Addım 5: Layihənin Məcəlləsi

Layihənin Məcəlləsi
Layihənin Məcəlləsi

İndi layihənin proqram tərəfinə baxaq.

Layihənin kodu bu layihəyə əsaslanır:

Xiaomi cihazından bu məlumatları alan kodu istifadə etdim və onunla müstəqil bir layihə hazırladım.

Bu dəyişkən olaraq hər 10 saniyədə bir təzə məlumat almalı olduğumuzu bəyan edirik.

#SCAN_TIME 10 // saniyəni təyin edin

Burada, temperaturu Selsi dərəcəsi ilə göstərmək istədiyimizi bəyan edirik. İmperator sistemindən istifadə etmək istəyirsinizsə, bu dəyişəni yanlış olaraq təyin edin.

boolean METRİK = doğru; // Metrik sistem üçün doğru olaraq təyin edin; imperiya üçün yalan

Quraşdırma funksiyasında ESP32 lövhəsinin ekranını və Bluetooth modulunu işə salırıq və sonra istifadəçi interfeysini ekrana çəkirik.

boş quraşdırma () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // qəhvəyi detektoru deaktiv edin

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Sonra, hər 10 saniyədə bir yaxınlıqdakı Bluetooth cihazlarını axtarırıq. Xiaomi Cihazı ilə əlaqə qurmuruq, çünki ehtiyac yoxdur. Yalnız yaxınlıqdakı aşağı enerjili Bluetooth cihazlarını axtarırıq və yayım reklam paketlərini yoxlayırıq.

void loop () {char printLog [256]; Serial.printf (" %d saniyə BLE taramasına başla… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int sayı = foundDevices.getCount (); printf ("Tapılan cihaz sayı: %d / n", say);

gecikmə (100);

}

Rütubət və temperatur dəyərləri bu paketlərdə saxlanılır, buna görə də onları oxumaq lazımdır. Dəyərləri oxuduqdan sonra onları ekranda göstəririk. Həmişə olduğu kimi bu Təlimata əlavə edilmiş təsvirdə bu layihənin koduna bir bağlantı tapa bilərsiniz.

Addım 6: Final Baxışları və Təkmilləşdirmələr

Final Baxışları və Təkmilləşdirmələr
Final Baxışları və Təkmilləşdirmələr
Final Baxışları və Təkmilləşdirmələr
Final Baxışları və Təkmilləşdirmələr

Bu sensordan məlumatları simsiz olaraq necə əldə edəcəyimizi bildiyimizə görə, batareya ilə işləyən tam bir hava stansiyası qura bilərik. Bu Xiaomi Cihazı kommersiya məhsulu olduğu üçün əla batareya ömrü təqdim edir. Təəssüf ki, hələ də layihələrimizdə oxşar batareya istehlakına nail ola bilmirik. Beləliklə, böyük bir e-kağız ekranı istifadə edəcək bir hava stansiyası layihəsi üçün bu sensoru açıq havada bir sensor olaraq istifadə etməyi planlaşdırıram. Sərin olacaq. Ayrıca, oxşar bir şəkildə hack edə biləcəyimiz digər Xiaomi Bluetooth effektiv cihazlarını da axtaracağam. İzləmədə qalın.

Bu layihə haqqında fikirlərinizi bilmək istərdim. Bəzi kommersiya Bluetooth cihazlarından məlumat əldə etməyimizi faydalı hesab edirsinizmi? Bu funksiyadan istifadə edərək nələr quracaqsınız? Fikirlərinizi oxumaq istərdim, buna görə də bunları aşağıdakı şərh bölməsində yerləşdirin. Təşəkkürlər!

Tövsiyə: