Mục lục:

ESP32 Xiaomi Hack - Lấy dữ liệu không dây: 6 bước (có hình ảnh)
ESP32 Xiaomi Hack - Lấy dữ liệu không dây: 6 bước (có hình ảnh)

Video: ESP32 Xiaomi Hack - Lấy dữ liệu không dây: 6 bước (có hình ảnh)

Video: ESP32 Xiaomi Hack - Lấy dữ liệu không dây: 6 bước (có hình ảnh)
Video: Mở khóa cửa sử dụng nhận dạng khôn mặt với Arduino & ESP32 2024, Tháng mười một
Anonim
Image
Image
ESP32 Xiaomi Hack - Lấy dữ liệu không dây
ESP32 Xiaomi Hack - Lấy dữ liệu không dây

Những người bạn thân mến chào mừng bạn đến với một Có thể hướng dẫn khác! Hôm nay chúng ta sẽ tìm hiểu cách lấy dữ liệu mà màn hình Nhiệt độ và Độ ẩm Xiaomi này truyền bằng chức năng Bluetooth của bo mạch ESP32.

Như bạn có thể thấy, tôi đang sử dụng bảng ESP32 và màn hình TFT màu 2,8”. Trên màn hình, chúng tôi hiển thị nhiệt độ và độ ẩm. Điều thú vị là tôi chưa kết nối bất kỳ cảm biến nào với bo mạch ESP32. Tôi lấy nhiệt độ và độ ẩm không dây từ màn hình Nhiệt độ và Độ ẩm Xiaomi thương mại này. Thật tuyệt làm sao! Màn hình trên thiết bị Xiaomi được cập nhật mỗi giây nhưng tôi cập nhật màn hình được kết nối với bảng ESP32 cứ sau 10 giây để tiết kiệm năng lượng trên thiết bị Xiaomi.

Cảm biến nhiệt độ và độ ẩm Xiaomi mát mẻ này hiển thị nhiệt độ và độ ẩm trên màn hình LCD và nó cũng có thể truyền dữ liệu đến các Thiết bị hoặc ứng dụng Xiaomi khác bằng giao thức Bluetooth. Các thiết bị sử dụng một pin AAA duy nhất và vì nó là một sản phẩm thương mại nên thời lượng pin của thiết bị là tuyệt vời. Nó có thể kéo dài trên một pin AAA duy nhất trong nhiều tháng, điều mà chúng tôi không thể đạt được trong các dự án tự làm của mình. Một vài tuần trước, tôi phát hiện ra rằng một số kẻ thông minh đã quản lý để thiết kế ngược giao thức mà Xiaomi sử dụng để truyền dữ liệu từ cảm biến và quản lý để lấy dữ liệu đó bằng bảng ESP32. Vì vậy, tôi đã thử nó, và như bạn có thể thấy nó hoạt động!

Bước 1: Nhận tất cả các bộ phận

Nhận tất cả các bộ phận
Nhận tất cả các bộ phận

Bây giờ chúng ta hãy xem cách xây dựng dự án này. Chúng tôi cần một bo mạch ESP32, một màn hình 2.8”ILI9341, cảm biến nhiệt độ và độ ẩm Xiaomi, một breadboard và một số dây dẫn.

Đây là một số liên kết đến các phần tôi sẽ sử dụng trong Tài liệu hướng dẫn này.

  • ESP32 ▶
  • Màn hình 2,8 "▶
  • Cảm biến Xiaomi ▶
  • Breadboard ▶
  • Dây ▶
  • Đồng hồ USB ▶
  • Powerbank ▶

Bước 2: Bảng ESP32

Image
Image
Ban ESP32
Ban ESP32

Nếu bạn chưa quen với nó, chip ESP32 là sự kế thừa của chip ESP8266 phổ biến mà chúng ta đã sử dụng nhiều lần trong quá khứ. ESP32 là một con quái vật! Nó cung cấp hai 32 lõi xử lý hoạt động ở tần số 160MHz, một lượng lớn bộ nhớ, WiFi, Bluetooth và nhiều tính năng khác với chi phí khoảng 7 đô la! Công cụ tuyệt vời!

Hãy xem bài đánh giá chi tiết tôi đã chuẩn bị cho bảng này. Tôi đã đính kèm video trên này có thể hướng dẫn. Nó sẽ giúp hiểu tại sao con chip này sẽ thay đổi cách chúng ta tạo ra mọi thứ mãi mãi! Một trong những điều thú vị nhất về ESP32 là mặc dù rất mạnh mẽ nhưng nó cung cấp chế độ ngủ sâu chỉ cần dòng điện 10μΑs. Điều này làm cho ESP32 trở thành chip lý tưởng cho các ứng dụng năng lượng thấp.

Bước 3: Màn hình TFT 2,8 "cho Arduino và ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Màn hình lớn và có độ phân giải 320x240 pixel. So với một trong những màn hình yêu thích của tôi, màn hình TFT 1,8 inch màu mà bạn có thể thấy nó lớn hơn rất nhiều. Màn hình cũng cung cấp chức năng cảm ứng, một phần thưởng bổ sung và một khe cắm thẻ SD ở phía sau. Nó sử dụng giao diện SPI, vì vậy kết nối với Arduino hoặc bo mạch ESP32 rất đơn giản. Chi phí của màn hình tương đối thấp; nó có giá khoảng 11 đô la, theo ý kiến của tôi là một mức giá hợp lý cho những gì màn hình này cung cấp.

Một điều khác về màn hình này là nó không đi kèm như một tấm chắn như màn hình cảm ứng mà chúng ta đang sử dụng cho đến nay. Bằng cách này, chúng tôi có thể kết nối màn hình với bất kỳ bo mạch nào, Arduino Pro mini, STM32, ESP8266 và ESP32. Điều này rất quan trọng bởi vì chúng tôi hiện có màn hình hiển thị giá rẻ mà chúng tôi có thể sử dụng với mọi bảng. Cho đến nay, màn hình cảm ứng duy nhất mà chúng tôi có thể sử dụng với các bảng này là màn hình Nextion đắt hơn và thành thật mà nói, mặc dù thỉnh thoảng tôi sử dụng chúng, nhưng tôi không thực sự thích chúng.

Bước 4: Kết nối màn hình

Kết nối màn hình
Kết nối màn hình
Kết nối màn hình
Kết nối màn hình
Kết nối màn hình
Kết nối màn hình
Kết nối màn hình
Kết nối màn hình

Đầu tiên, chúng ta phải kết nối Bảng mạch ESP32 với màn hình 2,8”. Bạn có thể tìm thấy giản đồ được đính kèm với Có thể hướng dẫn. Tôi đang sử dụng bảng DOIT ESP32 này đã được phát hành khoảng hai năm trước. Phiên bản này của bảng không còn nữa vì hiện đã có phiên bản mới hơn của nó cung cấp nhiều chân hơn, cái này. Lý do duy nhất tôi đang sử dụng phiên bản cũ của bảng là chân GND của bảng được đặt bên cạnh các chân SPI, ở cùng một phía của bảng, điều này làm cho nó trở nên thân thiện với breadboard.

Sau khi kết nối màn hình với bảng, chúng ta có thể khởi động dự án. Sau vài giây, chúng tôi nhận được dữ liệu trực tiếp từ Thiết bị Xiaomi gần đó. Vì thiết bị sử dụng Bluetooth 4 nên phạm vi của nó là khá tốt. Chúng ta có thể dễ dàng nhận được dữ liệu mà thiết bị này truyền từ khoảng cách lên đến 10 mét hoặc hơn! Chúng tôi cũng có thể nhận được mức pin của Thiết bị Xiaomi nhưng tôi không hiển thị giá trị này trên màn hình.

Nếu chúng tôi sử dụng đồng hồ USB này, chúng tôi có thể thấy rằng mức thu hiện tại của dự án này là khoảng 120-150 mA bằng cách sử dụng màn hình lớn này. Nếu chúng tôi sử dụng màn hình e-paper, hãy đặt bo mạch ESP32 ở chế độ ngủ sâu và lấy dữ liệu từ cảm biến vài phút một lần, chúng tôi có thể làm cho pin của dự án này trở nên thân thiện. Tôi sẽ thử điều này trong một video trong tương lai. Dự án này chỉ là một minh chứng rằng chúng ta có thể lấy dữ liệu không dây từ thiết bị này.

Bước 5: Mã của dự án

Bộ luật của dự án
Bộ luật của dự án

Bây giờ chúng ta hãy xem khía cạnh phần mềm của dự án.

Mã của dự án dựa trên dự án này:

Tôi đã sử dụng mã lấy dữ liệu đó từ thiết bị Xiaomi và xây dựng một dự án độc lập với nó.

Trong biến này, chúng tôi tuyên bố rằng chúng tôi cần lấy dữ liệu mới sau mỗi 10 giây.

#define SCAN_TIME 10 // giây

Ở đây, chúng tôi khai báo rằng chúng tôi muốn hiển thị nhiệt độ theo độ C. Nếu bạn muốn sử dụng hệ thống Imperial, chỉ cần đặt biến này thành false.

boolean METRIC = true; // Đặt true cho hệ mét; sai cho đế quốc

Tại chức năng thiết lập, chúng tôi khởi tạo màn hình và mô-đun Bluetooth của bo mạch ESP32 và sau đó chúng tôi vẽ giao diện người dùng trên màn hình.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // vô hiệu hóa trình dò tìm hạnh nhân

tft.begin ();

Serial.begin (115200);

Serial.println ("MÀN HÌNH XIAOMI ESP32"); initBl Bluetooth ();

drawUI ();

}

Tiếp theo, chúng tôi tìm kiếm các thiết bị Bluetooth gần đó cứ sau 10 giây. Chúng tôi không tạo kết nối với Thiết bị Xiaomi vì nó không cần thiết. Chúng tôi chỉ quét các thiết bị ngoại vi Bluetooth năng lượng thấp gần đó và kiểm tra các gói quảng cáo phát sóng.

void loop () {char printLog [256]; Serial.printf ("Bắt đầu quét BLE trong% d giây… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Số lượng thiết bị tìm thấy:% d / n", count);

chậm trễ (100);

}

Các giá trị độ ẩm và nhiệt độ được lưu trữ trong các gói tin đó, vì vậy chúng ta chỉ cần đọc chúng. Sau khi chúng tôi đọc các giá trị, chúng tôi hiển thị chúng trên màn hình. Như mọi khi, bạn có thể tìm thấy một liên kết đến mã của dự án này trong phần mô tả đính kèm với Tài liệu hướng dẫn này.

Bước 6: Mặc dù và cải tiến cuối cùng

Mặc dù & Cải tiến Cuối cùng
Mặc dù & Cải tiến Cuối cùng
Mặc dù & Cải tiến Cuối cùng
Mặc dù & Cải tiến Cuối cùng

Bây giờ chúng ta biết cách lấy dữ liệu không dây từ cảm biến này, chúng ta có thể xây dựng một trạm thời tiết chạy bằng pin hoàn chỉnh. Vì Thiết bị Xiaomi này là một sản phẩm thương mại nên nó cung cấp thời lượng pin tuyệt vời. Rất tiếc, chúng tôi chưa thể đạt được mức tiêu thụ pin tương tự trên các dự án của mình. Vì vậy, tôi dự định sử dụng cảm biến này làm cảm biến ngoài trời cho một dự án trạm thời tiết sẽ sử dụng một màn hình e-paper lớn. Nó sẽ lạnh. Ngoài ra, tôi sẽ tìm kiếm các thiết bị hỗ trợ Bluetooth Xiaomi khác mà chúng tôi có thể hack theo cách tương tự. Giữ nguyên.

Tôi rất muốn biết ý kiến của bạn về dự án này. Bạn có thấy hữu ích khi chúng tôi có thể lấy dữ liệu từ một số thiết bị Bluetooth thương mại không? Bạn sẽ xây dựng cái gì bằng cách sử dụng chức năng này? Tôi muốn đọc ý tưởng của bạn, vì vậy hãy đăng chúng trong phần bình luận bên dưới. Cảm ơn!

Đề xuất: