Isi kandungan:

ESP32 Xiaomi Hack - Dapatkan Data Tanpa Wayar: 6 Langkah (dengan Gambar)
ESP32 Xiaomi Hack - Dapatkan Data Tanpa Wayar: 6 Langkah (dengan Gambar)

Video: ESP32 Xiaomi Hack - Dapatkan Data Tanpa Wayar: 6 Langkah (dengan Gambar)

Video: ESP32 Xiaomi Hack - Dapatkan Data Tanpa Wayar: 6 Langkah (dengan Gambar)
Video: 3 Bocah Terlindas Truk Saat Selfie Di Atas Motor 2024, November
Anonim
Image
Image
ESP32 Xiaomi Hack - Dapatkan Data Tanpa Wayar
ESP32 Xiaomi Hack - Dapatkan Data Tanpa Wayar

Rakan-rakan yang terhormat selamat datang ke Instructable yang lain! Hari ini kita akan belajar bagaimana mendapatkan data yang dipancarkan oleh monitor Suhu dan Kelembapan Xiaomi ini menggunakan fungsi Bluetooth pada papan ESP32.

Seperti yang anda lihat, saya menggunakan papan ESP32 dan paparan TFT warna 2,8 . Pada paparan, kami memaparkan suhu dan kelembapan. Perkara yang menarik ialah saya tidak menyambungkan sensor ke papan ESP32. Saya mendapat suhu dan kelembapan tanpa wayar dari monitor Suhu dan Kelembapan Xiaomi komersial ini. Betapa hebatnya! Paparan pada peranti Xiaomi dikemas kini setiap saat tetapi saya mengemas kini paparan yang disambungkan ke papan ESP32 setiap 10 saat untuk menjimatkan kuasa pada peranti Xiaomi.

Sensor suhu dan kelembapan Xiaomi yang sejuk ini memperlihatkan suhu dan kelembapan pada paparan LCDnya dan juga dapat mengirimkan data ke Peranti atau aplikasi Xiaomi lain menggunakan protokol Bluetooth. Peranti menggunakan bateri AAA tunggal dan kerana ia adalah produk komersial, jangka hayat bateri peranti sangat baik. Ia boleh bertahan dengan bateri AAA tunggal selama berbulan-bulan, sesuatu yang tidak dapat kita capai pada projek DIY kita. Beberapa minggu yang lalu, saya dapati bahawa beberapa lelaki pintar berjaya membalikkan semula protokol yang digunakan Xiaomi untuk menghantar data dari sensor dan berjaya mendapatkan data tersebut menggunakan papan ESP32. Oleh itu, saya mencubanya, dan seperti yang anda lihat, ia berjaya!

Langkah 1: Dapatkan Semua Bahagian

Dapatkan Semua Bahagian
Dapatkan Semua Bahagian

Mari kita lihat bagaimana membina projek ini. Kami memerlukan papan ESP32, paparan ILI9341 2,8”, sensor suhu dan kelembapan Xiaomi, papan roti dan beberapa wayar.

Berikut adalah beberapa pautan ke bahagian yang akan saya gunakan dalam Instructable ini.

  • ESP32 ▶
  • Paparan 2.8 "ed
  • Sensor Xiaomi ▶
  • Papan Roti ▶
  • Wayar ▶
  • Meter USB ▶
  • Powerbank ▶

Langkah 2: Papan ESP32

Image
Image
Lembaga ESP32
Lembaga ESP32

Sekiranya anda tidak biasa dengannya, cip ESP32 adalah penerus cip ESP8266 yang popular yang telah kami gunakan berkali-kali. ESP32 adalah binatang! Ia menawarkan dua 32 teras pemprosesan yang beroperasi pada 160MHz, sejumlah besar memori, WiFi, Bluetooth dan banyak lagi ciri lain dengan kos sekitar 7 $! Barang yang luar biasa!

Sila lihat ulasan terperinci yang telah saya sediakan untuk papan ini. Saya telah melampirkan video di Instructable ini. Ini akan membantu memahami mengapa cip ini akan mengubah cara kita membuat sesuatu selamanya! Salah satu perkara yang paling menggembirakan mengenai ESP32 ialah walaupun sangat kuat, ia menawarkan mod tidur nyenyak yang hanya memerlukan 10μΑ arus. Ini menjadikan ESP32 cip yang ideal untuk aplikasi kuasa rendah.

Langkah 3: Paparan TFT 2.8 "untuk Arduino dan ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Layarnya besar, dan menawarkan resolusi 320x240 piksel. Berbanding dengan salah satu paparan kegemaran saya, paparan TFT Warna 1.8 anda dapat melihatnya jauh lebih besar. Layar juga menawarkan fungsi sentuhan yang merupakan bonus tambahan dan slot kad SD di bahagian belakang. Ia menggunakan antara muka SPI, jadi hubungan dengan Arduino atau papan ESP32 sangat mudah. Kos paparannya agak rendah; harganya sekitar 11 $ yang pada pendapat saya adalah harga yang berpatutan untuk apa yang ditawarkan paparan ini.

Perkara lain seperti paparan ini adalah bahawa ia tidak menjadi perisai seperti paparan sentuh yang kita gunakan selama ini. Dengan cara ini, kita dapat menyambungkan paparan ke papan apa pun, Arduino Pro mini, STM32, ESP8266, dan ESP32. Ini sangat penting kerana kita sekarang mempunyai paparan kos rendah yang dapat kita gunakan dengan setiap papan. Sehingga kini, satu-satunya paparan sentuhan yang dapat kami gunakan dengan papan ini adalah paparan Nextion yang lebih mahal, dan jujur walaupun saya menggunakannya dari semasa ke semasa, saya tidak begitu menyukainya.

Langkah 4: Menyambungkan Paparan

Menyambungkan Paparan
Menyambungkan Paparan
Menyambungkan Paparan
Menyambungkan Paparan
Menyambungkan Paparan
Menyambungkan Paparan
Menyambungkan Paparan
Menyambungkan Paparan

Pertama, kita harus menyambungkan Papan ESP32 ke paparan 2.8”. Anda boleh mendapatkan skema yang dilampirkan di Instructable. Saya menggunakan papan DOIT ESP32 ini yang dilancarkan kira-kira dua tahun yang lalu. Versi papan ini tidak lagi tersedia kerana kini terdapat versi yang lebih baru yang menawarkan lebih banyak pin, yang satu ini. Satu-satunya sebab saya menggunakan versi papan yang lama adalah bahawa pin GND papan diletakkan di sebelah pin SPI, di sisi papan yang sama, yang menjadikannya papan roti yang mesra.

Setelah menyambungkan paparan ke papan, kami dapat menghidupkan projek. Selepas beberapa saat, kami menerima data langsung dari Peranti Xiaomi yang berdekatan. Oleh kerana peranti menggunakan Bluetooth 4, julatnya cukup bagus. Kami dapat dengan mudah mendapatkan data yang dihantar oleh peranti ini dari jarak hingga 10 meter atau lebih! Kami juga dapat menerima tahap bateri Peranti Xiaomi tetapi saya tidak menunjukkan nilai ini di layar.

Sekiranya kita menggunakan meter USB ini, kita dapat melihat bahawa tarikan semasa projek ini adalah sekitar 120-150 mA menggunakan paparan besar ini. Sekiranya kita menggunakan paparan e-kertas, pasangkan papan ESP32 dalam mod tidur nyenyak, dan dapatkan data dari sensor setiap beberapa minit, kita dapat menjadikan projek ini mesra bateri. Saya akan mencuba ini dalam video yang akan datang. Projek ini hanyalah demonstrasi bahawa kita dapat memperoleh data dari peranti ini secara wayarles.

Langkah 5: Kod Projek

Kod Projek
Kod Projek

Mari kita lihat bahagian perisian projek ini.

Kod projek berdasarkan projek ini:

Saya menggunakan kod yang mendapat data dari peranti Xiaomi dan membina projek yang berdiri sendiri dengannya.

Dalam pemboleh ubah ini, kami menyatakan bahawa kami perlu mendapatkan data baru setiap 10 saat.

#tentukan SCAN_TIME 10 // saat

Di sini, kami menyatakan bahawa kami ingin memaparkan suhu dalam darjah Celsius. Sekiranya anda ingin menggunakan sistem Imperial, tetapkan pemboleh ubah ini ke false.

METRIK boolean = benar; // Tetapkan untuk sistem metrik; palsu untuk imperial

Pada fungsi penyediaan kami menginisialisasi paparan dan modul Bluetooth papan ESP32 dan kemudian kami menarik antara muka pengguna di skrin.

batal persediaan () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // lumpuhkan pengesan brownout

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Seterusnya, kami mencari peranti Bluetooth yang berdekatan setiap 10 saat. Kami tidak membuat sambungan ke Peranti Xiaomi kerana tidak diperlukan. Kami hanya mencari periferal tenaga rendah Bluetooth yang berdekatan dan memeriksa paket iklan siaran.

gelung kosong () {char printLog [256]; Serial.printf ("Mulakan imbasan BLE selama% d saat… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Jumlah peranti yang dijumpai:% d / n", kiraan);

kelewatan (100);

}

Nilai kelembapan dan suhu disimpan dalam paket tersebut, jadi kami hanya perlu membacanya. Selepas kami membaca nilai-nilai kami memaparkannya di skrin. Seperti biasa anda boleh mendapatkan pautan ke kod projek ini dalam keterangan yang dilampirkan di Instructable ini.

Langkah 6: Pemikiran & Penambahbaikan Akhir

Pemikiran & Penambahbaikan Akhir
Pemikiran & Penambahbaikan Akhir
Pemikiran & Penambahbaikan Akhir
Pemikiran & Penambahbaikan Akhir

Setelah mengetahui bagaimana mendapatkan data tanpa wayar dari sensor ini, kita dapat membina stesen cuaca berkuasa bateri yang lengkap. Oleh kerana Peranti Xiaomi ini adalah produk komersial, ia menawarkan jangka hayat bateri yang hebat. Malangnya, kami belum dapat mencapai penggunaan bateri yang serupa pada projek kami. Jadi, saya merancang untuk menggunakan sensor ini sebagai sensor luar untuk projek stesen cuaca yang akan menggunakan paparan e-kertas yang besar. Ia akan menjadi sejuk. Juga, saya akan mencari peranti berkemampuan Bluetooth Xiaomi lain yang boleh kita hack dengan cara yang serupa. Nantikan.

Saya ingin mengetahui pendapat anda mengenai projek ini. Adakah anda merasa berguna bahawa kita dapat memperoleh data dari beberapa peranti Bluetooth komersial? Apa yang akan anda bina menggunakan fungsi ini? Saya ingin membaca idea anda, jadi sila hantarkannya di bahagian komen di bawah. Terima kasih!

Disyorkan: