Spisu treści:
- Krok 1: Zdobądź wszystkie części
- Krok 2: Płytka ESP32
- Krok 3: Wyświetlacz TFT 2,8" dla Arduino i ESP32
- Krok 4: Podłączanie wyświetlacza
- Krok 5: Kodeks Projektu
- Krok 6: Ostatnie przemyślenia i ulepszenia
Wideo: ESP32 Xiaomi Hack - Uzyskaj dane bezprzewodowo: 6 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
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
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
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
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
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
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
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:
Bezprzewodowo dostępne Pi w 5 minut: 3 kroki
Bezprzewodowo dostępne Pi w 5 minut: Cześć wszystkim! Oto jak sprawić, by Raspberry Pi było dostępne bezprzewodowo z telefonu lub tabletu. Pamiętaj, że moje oszacowanie 5 minut dotyczy osoby z pewną wiedzą komputerową i na pewno może to potrwać dłużej. Dość tego, przejdźmy do tego
Samodzielny anemometr rejestrujący dane: 11 kroków (ze zdjęciami)
Samodzielny anemometr rejestrujący dane: Uwielbiam zbierać i analizować dane. Uwielbiam też budować gadżety elektroniczne. Rok temu, kiedy odkryłem produkty Arduino, od razu pomyślałem: „chciałbym zbierać dane środowiskowe”. To był wietrzny dzień w Portland w stanie Oregon, więc
Kontroluj Arduino bezprzewodowo za pomocą MATLAB: 11 kroków
Kontroluj Arduino bezprzewodowo za pomocą MATLAB: Widziałem kilka majsterkowiczów, jak nawiązać komunikację między aplikacją MATLAB a Arduino, które jest przewodowo połączone z komputerem. Nie spotkałem jednak niczego, co by bezprzewodowo sterowało Arduino przez MATLAB przy użyciu nakładki Ethernet zgodnej z ENC28J60
Kontroluj komputer bezprzewodowo z mruganiem oczami;): 9 kroków (ze zdjęciami)
Steruj komputerem bezprzewodowo z mruganiem oczami ;): A co z wyjściem poza swoje nawyki? Co powiesz na wypróbowanie czegoś nowego?!!!!A co ze sterowaniem komputerem i robieniem czegokolwiek, co chcesz BEZ używania klawiatury i myszy!Hmm… Ale jak to możliwe???Z mgnieniem oka!! nie b
Jak uruchomić kompozyt wideo i dane sieciowe przez kabel Ethernet: 6 kroków (ze zdjęciami)
Jak uruchomić kompozyt wideo i dane sieciowe za pomocą kabla Ethernet: Musiałem przenieść wideo i audio do innej części mojego domu. Problem polegał na tym, że nie miałem tyle kabla AV, ani czasu i pieniędzy na dobrą instalację. Jednak miałem dużo kabli Ethernet Cat 5 leżących wokół. To właśnie wymyśliłem