Spisu treści:

ESP32 Xiaomi Hack - Uzyskaj dane bezprzewodowo: 6 kroków (ze zdjęciami)
ESP32 Xiaomi Hack - Uzyskaj dane bezprzewodowo: 6 kroków (ze zdjęciami)

Wideo: ESP32 Xiaomi Hack - Uzyskaj dane bezprzewodowo: 6 kroków (ze zdjęciami)

Wideo: ESP32 Xiaomi Hack - Uzyskaj dane bezprzewodowo: 6 kroków (ze zdjęciami)
Wideo: #policja ❤️ #kia #randka 2024, Listopad
Anonim
Image
Image
ESP32 Xiaomi Hack - Uzyskaj dane bezprzewodowo
ESP32 Xiaomi Hack - Uzyskaj dane bezprzewodowo

Drodzy przyjaciele, witajcie w innym Instruktażowym! Dzisiaj dowiemy się, jak uzyskać dane przesyłane przez ten monitor temperatury i wilgotności Xiaomi za pomocą funkcji Bluetooth na płycie ESP32.

Jak widać, używam płytki ESP32 i kolorowego wyświetlacza TFT 2,8”. Na wyświetlaczu wyświetlamy temperaturę i wilgotność. Fajne jest to, że do płytki ESP32 nie podłączyłem żadnych czujników. Temperaturę i wilgotność pobieram bezprzewodowo z tego komercyjnego monitora temperatury i wilgotności Xiaomi. Jakie to jest świetne! Wyświetlacz w urządzeniu Xiaomi jest aktualizowany co sekundę, ale co 10 sekund aktualizuję wyświetlacz, który jest podłączony do płyty ESP32, aby oszczędzać energię w urządzeniu Xiaomi.

Ten fajny czujnik temperatury i wilgotności Xiaomi wyświetla temperaturę i wilgotność na wyświetlaczu LCD, a także może przesyłać dane do innych urządzeń lub aplikacji Xiaomi za pomocą protokołu Bluetooth. Urządzenia wykorzystują jedną baterię AAA, a ponieważ jest to produkt komercyjny, żywotność baterii urządzenia jest doskonała. Może działać na jednej baterii AAA przez wiele miesięcy, czego nie możemy osiągnąć w naszych projektach DIY. Kilka tygodni temu odkryłem, że kilku sprytnym facetom udało się odtworzyć protokół, którego używa Xiaomi do przesyłania danych z czujnika i udało się uzyskać te dane za pomocą płytki ESP32. Więc spróbowałem i jak widać działa!

Krok 1: Zdobądź wszystkie części

Zdobądź wszystkie części
Zdobądź wszystkie części

Zobaczmy teraz, jak zbudować ten projekt. Potrzebujemy płytki ESP32, wyświetlacza 2,8” ILI9341, czujnika temperatury i wilgotności Xiaomi, płytki stykowej i kilku przewodów.

Oto kilka linków do części, których zamierzam użyć w tej instrukcji.

  • ESP32 ▶
  • Wyświetlacz 2,8" ▶
  • Czujnik Xiaomi ▶
  • Breadboard ▶
  • Przewody ▶
  • Miernik USB ▶
  • Powerbank ▶

Krok 2: Płytka ESP32

Image
Image
Płyta ESP32
Płyta ESP32

Jeśli go nie znasz, układ ESP32 jest następcą popularnego układu ESP8266, którego używaliśmy wiele razy w przeszłości. ESP32 to bestia! Oferuje dwa 32 rdzenie przetwarzające, które działają z częstotliwością 160 MHz, ogromną ilość pamięci, WiFi, Bluetooth i wiele innych funkcji za około 7 $! Niesamowite rzeczy!

Proszę obejrzeć szczegółową recenzję, którą przygotowałem dla tej płyty. Załączyłem wideo do tego Instruktażu. Pomoże zrozumieć, dlaczego ten chip na zawsze zmieni sposób, w jaki robimy rzeczy! Jedną z najbardziej ekscytujących rzeczy w ESP32 jest to, że chociaż jest tak potężny, oferuje tryb głębokiego uśpienia, który wymaga tylko 10 μs prądu. To sprawia, że ESP32 jest idealnym chipem do zastosowań o niskim poborze mocy.

Krok 3: Wyświetlacz TFT 2,8" dla Arduino i ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Wyświetlacz jest duży i oferuje rozdzielczość 320x240 pikseli. W porównaniu z jednym z moich ulubionych wyświetlaczy, kolorowy wyświetlacz TFT o przekątnej 1,8 cala jest znacznie większy. Ekran oferuje również funkcję dotykową, która jest dodatkowym bonusem, oraz gniazdo kart SD z tyłu. Wykorzystuje interfejs SPI, dzięki czemu połączenie z płytą Arduino lub ESP32 jest bardzo proste. Koszt wyświetlacza jest stosunkowo niski; kosztuje około 11 $, co moim zdaniem jest uczciwą ceną za to, co oferuje ten wyświetlacz.

Inną rzeczą związaną z tym wyświetlaczem jest to, że nie jest on osłoną, jak wyświetlacz dotykowy, którego używaliśmy do tej pory. W ten sposób możemy podłączyć wyświetlacz do dowolnej płytki, Arduino Pro mini, STM32, ESP8266 i ESP32. Jest to bardzo ważne, ponieważ mamy teraz tani wyświetlacz, którego możemy używać z każdą tablicą. Do tej pory jedynym wyświetlaczem dotykowym, którego mogliśmy używać z tymi tablicami, były wyświetlacze Nextion, które są droższe i szczerze mówiąc, chociaż używam ich od czasu do czasu, tak naprawdę ich nie lubię.

Krok 4: Podłączanie wyświetlacza

Podłączanie wyświetlacza
Podłączanie wyświetlacza
Podłączanie wyświetlacza
Podłączanie wyświetlacza
Podłączanie wyświetlacza
Podłączanie wyświetlacza
Podłączanie wyświetlacza
Podłączanie wyświetlacza

Najpierw musimy podłączyć płytkę ESP32 do wyświetlacza 2,8”. Możesz znaleźć schemat dołączony do Instructable. Używam płyty DOIT ESP32, która została wydana około dwa lata temu. Ta wersja płytki nie jest już dostępna, ponieważ jest teraz dostępna nowsza wersja, która oferuje więcej pinów, ta. Jedynym powodem, dla którego używam starej wersji płytki, jest to, że pin GND płytki znajduje się obok styków SPI, po tej samej stronie płytki, co czyni ją przyjazną dla płytki stykowej.

Po podłączeniu wyświetlacza do płytki możemy zasilić projekt. Po kilku sekundach otrzymujemy dane na żywo z pobliskiego Urządzenia Xiaomi. Ponieważ urządzenie korzysta z Bluetooth 4, jego zasięg jest całkiem niezły. Możemy łatwo uzyskać dane przesyłane przez to urządzenie z odległości do 10 metrów lub więcej! Możemy również otrzymać poziom naładowania baterii Urządzenia Xiaomi, ale nie wyświetlam tej wartości na ekranie.

Jeśli użyjemy tego miernika USB, możemy zobaczyć, że prąd pobierany przez ten projekt wynosi około 120-150 mA przy użyciu tego dużego wyświetlacza. Jeśli użyjemy wyświetlacza e-papierowego, przełączymy płytkę ESP32 w tryb głębokiego uśpienia i co kilka minut pobieramy dane z czujnika, możemy sprawić, że ten projekt będzie przyjazny dla baterii. Spróbuję tego w przyszłym filmie. Ten projekt to tylko demonstracja, że możemy bezprzewodowo pobierać dane z tego urządzenia.

Krok 5: Kodeks Projektu

Kodeks Projektu
Kodeks Projektu

Zobaczmy teraz stronę programową projektu.

Kod projektu oparty jest na tym projekcie:

Użyłem kodu, który pobiera te dane z urządzenia Xiaomi i zbudowałem z nim samodzielny projekt.

W tej zmiennej deklarujemy, że co 10 sekund musimy otrzymywać świeże dane.

#define SCAN_TIME 10 // sekund

Tutaj deklarujemy, że chcemy wyświetlać temperaturę w stopniach Celsjusza. Jeśli chcesz używać systemu imperialnego, ustaw tę zmienną na false.

wartość logiczna METRYKA = prawda; //Ustaw true dla systemu metrycznego; fałszywe dla imperialnych

W funkcji setup inicjujemy wyświetlacz i moduł Bluetooth płyty ESP32, a następnie rysujemy interfejs użytkownika na ekranie.

pusta konfiguracja () {

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //wyłącz detektor brownout

tft.początek();

Serial.początek(115200);

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

rysujUI();

}

Następnie co 10 sekund wyszukujemy znajdujące się w pobliżu urządzenia Bluetooth. Nie nawiązujemy połączenia z urządzeniem Xiaomi, ponieważ nie jest to potrzebne. Skanujemy tylko w poszukiwaniu pobliskich urządzeń peryferyjnych Bluetooth o niskim zużyciu energii i sprawdzamy pakiety reklamowe.

void loop() { char printLog[256]; Serial.printf("Rozpocznij skanowanie BLE przez %d sekund…\n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan->start(SCAN_TIME); int count = foundDevices.getCount(); printf("Liczba znalezionych urządzeń: %d\n", liczba);

opóźnienie (100);

}

W tych pakietach przechowywane są wartości wilgotności i temperatury, więc wystarczy je odczytać. Po odczytaniu wartości wyświetlamy je na ekranie. Jak zawsze możesz znaleźć link do kodu tego projektu w opisie dołączonym do tej instrukcji.

Krok 6: Ostatnie przemyślenia i ulepszenia

Ostatnie myśli i ulepszenia
Ostatnie myśli i ulepszenia
Ostatnie myśli i ulepszenia
Ostatnie myśli i ulepszenia

Teraz, gdy wiemy, jak bezprzewodowo pozyskiwać dane z tego czujnika, możemy zbudować kompletną stację pogodową zasilaną bateryjnie. Ponieważ to urządzenie Xiaomi jest produktem komercyjnym, oferuje świetną żywotność baterii. Niestety, nie możemy jeszcze osiągnąć podobnego zużycia baterii w naszych projektach. Tak więc planuję użyć tego czujnika jako czujnika zewnętrznego do projektu stacji pogodowej, która będzie wykorzystywać duży wyświetlacz e-papierowy. Będzie fajnie. Poszukam też innych urządzeń obsługujących Bluetooth Xiaomi, które możemy zhakować w podobny sposób. Czekać na dalsze informacje.

Chętnie poznam Twoją opinię na temat tego projektu. Czy uważasz za przydatne, że możemy pobierać dane z niektórych komercyjnych urządzeń Bluetooth? Co zamierzasz zbudować, korzystając z tej funkcjonalności? Chciałbym zapoznać się z Waszymi pomysłami, więc proszę zamieść je w komentarzach poniżej. Dziękuję!

Zalecana: