Daftar Isi:

ESP32 Xiaomi Hack - Dapatkan Data Secara Nirkabel: 6 Langkah (dengan Gambar)
ESP32 Xiaomi Hack - Dapatkan Data Secara Nirkabel: 6 Langkah (dengan Gambar)

Video: ESP32 Xiaomi Hack - Dapatkan Data Secara Nirkabel: 6 Langkah (dengan Gambar)

Video: ESP32 Xiaomi Hack - Dapatkan Data Secara Nirkabel: 6 Langkah (dengan Gambar)
Video: Cara Jadi Seperti Hacker dalam 5 Detik 2024, Juli
Anonim
Image
Image
ESP32 Xiaomi Hack - Dapatkan Data Secara Nirkabel
ESP32 Xiaomi Hack - Dapatkan Data Secara Nirkabel

Teman-teman terkasih, selamat datang di Instructable lain! Hari ini kita akan belajar cara mendapatkan data yang ditransmisikan oleh monitor Suhu dan Kelembaban Xiaomi ini menggunakan fungsionalitas Bluetooth dari papan ESP32.

Seperti yang Anda lihat, saya menggunakan papan ESP32 dan layar TFT berwarna 2,8”. Di layar, kami menampilkan suhu dan kelembaban. Yang keren adalah saya belum menghubungkan sensor apa pun ke papan ESP32. Saya mendapatkan suhu dan kelembaban secara nirkabel dari monitor Suhu dan Kelembaban Xiaomi komersial ini. Betapa kerennya itu! Tampilan pada perangkat Xiaomi diperbarui setiap detik tetapi saya memperbarui tampilan yang terhubung ke papan ESP32 setiap 10 detik untuk menghemat daya pada perangkat Xiaomi.

Sensor suhu dan kelembaban Xiaomi yang keren ini menampilkan suhu dan kelembaban pada layar LCD-nya dan juga dapat mengirimkan data ke Perangkat atau aplikasi Xiaomi lainnya menggunakan protokol Bluetooth. Perangkat menggunakan baterai AAA tunggal dan karena ini adalah produk komersial, masa pakai baterai perangkat sangat baik. Itu dapat bertahan dengan satu baterai AAA selama berbulan-bulan, sesuatu yang tidak dapat kami capai pada proyek DIY kami. Beberapa minggu yang lalu, saya menemukan bahwa beberapa orang pintar berhasil merekayasa balik protokol yang digunakan Xiaomi untuk mengirimkan data dari sensor dan berhasil mendapatkan data tersebut menggunakan papan ESP32. Jadi saya mencobanya, dan seperti yang Anda lihat itu berhasil!

Langkah 1: Dapatkan Semua Bagian

Dapatkan Semua Bagian
Dapatkan Semua Bagian

Sekarang mari kita lihat bagaimana membangun proyek ini. Kami membutuhkan papan ESP32, layar ILI9341 2,8”, sensor suhu dan kelembaban Xiaomi, papan tempat memotong roti, dan beberapa kabel.

Berikut adalah beberapa tautan ke bagian-bagian yang akan saya gunakan dalam Instructable ini.

  • ESP32
  • 2.8" Tampilan
  • Sensor Xiaomi
  • Papan tempat memotong roti
  • Kabel
  • Pengukur USB
  • Powerbank

Langkah 2: Papan ESP32

Image
Image
Papan ESP32
Papan ESP32

Jika Anda belum mengetahuinya, chip ESP32 adalah penerus chip ESP8266 populer yang telah kami gunakan berkali-kali di masa lalu. ESP32 adalah binatang buas! Ia menawarkan dua 32 inti pemrosesan yang beroperasi pada 160MHz, sejumlah besar memori, WiFi, Bluetooth, dan banyak fitur lainnya dengan biaya sekitar $7! Hal-hal yang menakjubkan!

Silakan tonton ulasan terperinci yang telah saya siapkan untuk forum ini. Saya telah melampirkan video di Instructable ini. Ini akan membantu memahami mengapa chip ini akan mengubah cara kita membuat sesuatu selamanya! Salah satu hal yang paling menarik tentang ESP32 adalah meskipun sangat bertenaga, ia menawarkan mode deep-sleep yang hanya membutuhkan 10μΑs arus. Ini menjadikan ESP32 chip yang ideal untuk aplikasi daya rendah.

Langkah 3: 2.8 "TFT Display 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. Dibandingkan dengan salah satu layar favorit saya, layar TFT Warna 1,8” Anda dapat melihatnya jauh lebih besar. Layar juga menawarkan fungsionalitas sentuh yang merupakan bonus tambahan dan slot kartu SD di bagian belakang. Ini menggunakan antarmuka SPI, sehingga koneksi dengan Arduino atau papan ESP32 sangat mudah. Biaya tampilan relatif rendah; harganya sekitar $ 11 yang menurut saya adalah harga yang wajar untuk apa yang ditawarkan oleh tampilan ini.

Hal lain seperti tentang tampilan ini adalah tidak hadir sebagai pelindung seperti layar sentuh yang kami gunakan selama ini. Dengan cara ini, kita dapat menghubungkan layar ke papan apa pun, Arduino Pro mini, STM32, ESP8266, dan ESP32. Ini sangat penting karena kami sekarang memiliki layar murah yang dapat kami gunakan dengan setiap papan. Sampai sekarang, satu-satunya layar sentuh yang dapat kami gunakan dengan papan ini adalah layar Nextion yang lebih mahal, dan sejujurnya meskipun saya menggunakannya dari waktu ke waktu, saya tidak terlalu menyukainya.

Langkah 4: Menghubungkan Tampilan

Menghubungkan Layar
Menghubungkan Layar
Menghubungkan Layar
Menghubungkan Layar
Menghubungkan Layar
Menghubungkan Layar
Menghubungkan Layar
Menghubungkan Layar

Pertama, kita harus menghubungkan Papan ESP32 ke layar 2,8”. Anda dapat menemukan skema yang dilampirkan ke Instructable. Saya menggunakan papan DOIT ESP32 ini yang dirilis sekitar dua tahun lalu. Versi papan ini tidak lagi tersedia karena sekarang tersedia versi yang lebih baru yang menawarkan lebih banyak pin, yang ini. Satu-satunya alasan saya menggunakan papan versi lama adalah bahwa pin GND papan ditempatkan di sebelah pin SPI, di sisi papan yang sama, yang membuatnya ramah papan tempat memotong roti.

Setelah menghubungkan layar ke papan, kami dapat menghidupkan proyek. Setelah beberapa detik, kami menerima data langsung dari Perangkat Xiaomi terdekat. Karena perangkat ini menggunakan Bluetooth 4 jangkauannya cukup bagus. Kami dapat dengan mudah mendapatkan data yang dikirimkan perangkat ini dari jarak hingga 10 meter atau lebih! Kami juga dapat menerima tingkat baterai Perangkat Xiaomi tetapi saya tidak menampilkan nilai ini di layar.

Jika kita menggunakan USB meter ini, kita dapat melihat bahwa arus yang mengalir dari proyek ini adalah sekitar 120-150 mA menggunakan layar besar ini. Jika kami menggunakan tampilan e-paper, menempatkan papan ESP32 dalam mode tidur nyenyak, dan mendapatkan data dari sensor setiap beberapa menit, kami dapat membuat proyek ini ramah baterai. Saya akan mencoba ini di video mendatang. Proyek ini hanyalah demonstrasi bahwa kita bisa mendapatkan data dari perangkat ini secara nirkabel.

Langkah 5: Kode Proyek

Kode Proyek
Kode Proyek

Sekarang mari kita lihat sisi perangkat lunak dari proyek.

Kode proyek didasarkan pada proyek ini:

Saya menggunakan kode yang mendapatkan data itu dari perangkat Xiaomi dan membangun proyek mandiri dengannya.

Dalam variabel ini, kami menyatakan bahwa kami perlu mendapatkan data baru setiap 10 detik.

#define SCAN_TIME 10 // detik

Di sini, kami menyatakan bahwa kami ingin menampilkan suhu dalam derajat Celcius. Jika Anda ingin menggunakan sistem Imperial cukup atur variabel ini ke false.

boolean METRIC = benar; //Tetapkan true untuk sistem metrik; palsu untuk kekaisaran

Pada fungsi pengaturan kami menginisialisasi tampilan dan modul Bluetooth dari papan ESP32 dan kemudian kami menggambar antarmuka pengguna di layar.

batalkan pengaturan() {

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //nonaktifkan detektor brownout

tft.mulai();

Serial.begin(115200);

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

drawUI();

}

Selanjutnya, kami mencari perangkat Bluetooth terdekat setiap 10 detik. Kami tidak membuat koneksi ke Perangkat Xiaomi karena tidak diperlukan. Kami hanya memindai periferal Bluetooth hemat energi terdekat dan memeriksa paket iklan siaran.

void loop() { char printLog[256]; Serial.printf("Mulai pemindaian BLE selama %d detik…\n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan->start(SCAN_TIME); int hitung = foundDevices.getCount(); printf("Jumlah perangkat yang ditemukan: %d\n", hitung);

penundaan(100);

}

Nilai kelembaban dan suhu disimpan dalam paket tersebut, jadi kita hanya perlu membacanya. Setelah kami membaca nilainya, kami menampilkannya di layar. Seperti biasa, Anda dapat menemukan tautan ke kode proyek ini dalam deskripsi yang dilampirkan pada Instruksi ini.

Langkah 6: Pemikiran & Perbaikan Terakhir

Pemikiran & Perbaikan Akhir
Pemikiran & Perbaikan Akhir
Pemikiran & Perbaikan Akhir
Pemikiran & Perbaikan Akhir

Sekarang setelah kita mengetahui cara mendapatkan data secara nirkabel dari sensor ini, kita dapat membangun stasiun cuaca bertenaga baterai yang lengkap. Karena Perangkat Xiaomi ini adalah produk komersial, ia menawarkan daya tahan baterai yang luar biasa. Sayangnya, kami belum dapat mencapai konsumsi baterai serupa pada proyek kami. Jadi, saya berencana menggunakan sensor ini sebagai sensor luar ruangan untuk proyek stasiun cuaca yang akan menggunakan tampilan e-paper besar. Ini akan menjadi keren. Juga, saya akan mencari perangkat berkemampuan Bluetooth Xiaomi lainnya yang dapat kami retas dengan cara yang sama. Pantau terus.

Saya ingin tahu pendapat Anda tentang proyek ini. Apakah menurut Anda bermanfaat bahwa kami dapat memperoleh data dari beberapa perangkat Bluetooth komersial? Apa yang akan Anda bangun menggunakan fungsi ini? Saya ingin membaca ide-ide Anda jadi silakan posting di bagian komentar di bawah. Terima kasih!

Direkomendasikan: