Sadržaj:

ESP32 Xiaomi Hack - Bežično preuzmite podatke: 6 koraka (sa slikama)
ESP32 Xiaomi Hack - Bežično preuzmite podatke: 6 koraka (sa slikama)

Video: ESP32 Xiaomi Hack - Bežično preuzmite podatke: 6 koraka (sa slikama)

Video: ESP32 Xiaomi Hack - Bežično preuzmite podatke: 6 koraka (sa slikama)
Video: ApaITU I2C? ESP01 I2C Hack (Subtittled) 2024, Srpanj
Anonim
Image
Image
ESP32 Xiaomi Hack - Bežično preuzimajte podatke
ESP32 Xiaomi Hack - Bežično preuzimajte podatke

Dragi prijatelji, dobrodošli na još jedan Instructable! Danas ćemo naučiti kako doći do podataka koje ovaj Xiaomi monitor temperature i vlažnosti odašilje pomoću Bluetooth funkcije ESP32 ploče.

Kao što vidite, koristim ESP32 ploču i 2,8”TFT zaslon u boji. Na zaslonu prikazujemo temperaturu i vlažnost. Zgodno je to što nisam spojio nikakve senzore na ESP32 ploču. Bežično dobivam temperaturu i vlagu iz ovog komercijalnog Xiaomijevog monitora za temperaturu i vlažnost. Kako je to cool! Zaslon na Xiaomi uređaju ažurira se svake sekunde, ali ja ažuriram zaslon koji je spojen na ESP32 ploču svakih 10 sekundi radi uštede energije na Xiaomi uređaju.

Ovaj hladni Xiaomi senzor temperature i vlažnosti prikazuje temperaturu i vlagu na svom LCD zaslonu, a također može prenijeti podatke na druge Xiaomi uređaje ili aplikacije koristeći Bluetooth protokol. Uređaji koriste jednu AAA bateriju, a budući da je riječ o komercijalnom proizvodu, trajanje baterije uređaja je izvrsno. Može raditi na jednoj AAA bateriji mjesecima, što ne možemo postići na našim DIY projektima. Prije nekoliko tjedana otkrio sam da su neki pametni momci uspjeli preokrenuti protokol koji Xiaomi koristi za prijenos podataka sa senzora i uspjeli su doći do tih podataka pomoću ploče ESP32. Pa probao sam, i kao što vidite radi!

Korak 1: Nabavite sve dijelove

Nabavite sve dijelove
Nabavite sve dijelove

Pogledajmo sada kako izgraditi ovaj projekt. Potrebna nam je ploča ESP32, zaslon od 2,8 inča ILI9341, Xiaomijev senzor temperature i vlažnosti, ploča i neke žice.

Evo nekoliko veza na dijelove koje ću koristiti u ovom Instructable.

  • ESP32 ▶
  • 2.8 "Zaslon ▶
  • Xiaomi senzor ▶
  • Oglasna ploča ▶
  • Žice ▶
  • USB mjerač ▶
  • Powerbank ▶

Korak 2: ESP32 ploča

Image
Image
Ploča ESP32
Ploča ESP32

Ako niste upoznati s njim, čip ESP32 je nasljednik popularnog čipa ESP8266 koji smo koristili mnogo puta u prošlosti. ESP32 je zvijer! Nudi dvije 32 procesorske jezgre koje rade na 160MHz, ogromnu količinu memorije, WiFi, Bluetooth i mnoge druge značajke sa cijenom od oko 7 USD! Nevjerojatna stvar!

Molimo pogledajte detaljni pregled koji sam pripremio za ovu ploču. Priložio sam video na ovom Instructable -u. Pomoći će razumjeti zašto će ovaj čip zauvijek promijeniti način na koji stvaramo stvari! Jedna od najuzbudljivijih stvari o ESP32 je ta što, iako je tako moćan, nudi način dubokog sna koji zahtijeva samo 10 μΑs struje. To čini ESP32 idealnim čipom za aplikacije male snage.

Korak 3: 2.8 "TFT zaslon za Arduino i ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Zaslon je velik i nudi rezoluciju 320x240 piksela. U usporedbi s jednim od mojih omiljenih ekrana, 1,8 -inčni TFT zaslon u boji možete ga vidjeti mnogo većim. Zaslon također nudi dodirnu funkciju koja je dodatni bonus i utor za SD karticu straga. Koristi SPI sučelje, pa je veza s Arduino ili ESP32 pločom vrlo jednostavna. Cijena prikaza je relativno niska; košta oko 11 USD što je po mom mišljenju poštena cijena za ono što ovaj zaslon nudi.

Još jedna stvar kod ovog zaslona je ta što ne dolazi kao štit poput zaslona osjetljivog na dodir koji smo do sada koristili. Na ovaj način možemo povezati zaslon s bilo kojom pločom, Arduino Pro mini, STM32, ESP8266 i ESP32. To je vrlo važno jer sada imamo jeftini zaslon koji možemo koristiti sa svakom pločom. Do sada su jedini dodirni zaslon koji smo mogli koristiti s ovim pločama bili Nextion zasloni koji su skuplji, a da budem iskren iako ih povremeno koristim, ne sviđaju mi se.

Korak 4: Povezivanje zaslona

Povezivanje zaslona
Povezivanje zaslona
Povezivanje zaslona
Povezivanje zaslona
Povezivanje zaslona
Povezivanje zaslona
Povezivanje zaslona
Povezivanje zaslona

Prvo moramo povezati ESP32 ploču s ekranom od 2,8”. Shemu možete pronaći u privitku Instructable. Koristim ovu ploču DOIT ESP32 koja je objavljena prije otprilike dvije godine. Ova verzija ploče više nije dostupna jer je sada dostupna njezina novija verzija koja nudi više pinova, ovu. Jedini razlog zašto koristim staru verziju ploče je taj što je GND pin ploče postavljen pored SPI pinova, na istoj strani ploče, što je čini prihvatljivom za matičnu ploču.

Nakon povezivanja zaslona na ploču možemo uključiti projekt. Nakon nekoliko sekundi primamo podatke uživo s obližnjeg Xiaomi uređaja. Budući da uređaj koristi Bluetooth 4, raspon je prilično dobar. Lako možemo doći do podataka koje ovaj uređaj prenosi s udaljenosti do 10 metara ili više! Također možemo primiti razinu napunjenosti Xiaomi uređaja, ali ovu vrijednost ne prikazujem na ekranu.

Upotrijebimo li ovaj USB mjerač, možemo vidjeti da je trenutna potrošnja ovog projekta oko 120-150 mA koristeći ovaj veliki zaslon. Ako koristimo zaslon e-papira, prebacite ESP32 ploču u način dubokog mirovanja i dobivajte podatke od senzora svakih nekoliko minuta kako bismo ovaj projekt učinili prihvatljivijim za baterije. Pokušat ću ovo u budućem videu. Ovaj je projekt samo demonstracija da možemo bežično dobiti podatke s ovog uređaja.

Korak 5: Kôd projekta

Kodeks projekta
Kodeks projekta

Pogledajmo sada softversku stranu projekta.

Kôd projekta temelji se na ovom projektu:

Koristio sam kôd koji te podatke dobiva s Xiaomi uređaja i s njim izgradio samostalni projekt.

U ovoj varijabli izjavljujemo da moramo dobivati svježe podatke svakih 10 sekundi.

#define SCAN_TIME 10 // sekundi

Ovdje izjavljujemo da želimo prikazati temperaturu u stupnjevima Celzijusa. Ako želite koristiti Imperial sustav, samo postavite ovu varijablu na false.

boolean METRIC = true; // Postavite vrijednost za metrički sustav; lažno za carsko

Kod funkcije postavljanja inicijaliziramo zaslon i Bluetooth modul ploče ESP32, a zatim na ekranu iscrtavamo korisničko sučelje.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // onemogućiti detektor smeđe boje

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Zatim svakih 10 sekundi tražimo Bluetooth uređaje u blizini. Ne povezujemo se s Xiaomi uređajem jer nije potreban. Skeniramo samo obližnje Bluetooth niskoenergetske periferne uređaje i provjeravamo pakete oglasa za emitiranje.

void loop () {char printLog [256]; Serial.printf ("Pokreni BLE skeniranje %d sekundi … / n", SCAN_TIME); BLEScanRezultati pronađeniDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Broj pronađenih uređaja: %d / n", broj);

kašnjenje (100);

}

Vrijednosti vlage i temperature pohranjene su u tim paketima pa ih moramo samo pročitati. Nakon što očitamo vrijednosti, prikazujemo ih na ekranu. Kao i uvijek, možete pronaći vezu do koda ovog projekta u opisu priloženom uz ovaj Instructable.

Korak 6: Završna razmišljanja i poboljšanja

Završna razmišljanja i poboljšanja
Završna razmišljanja i poboljšanja
Završna razmišljanja i poboljšanja
Završna razmišljanja i poboljšanja

Sada kada znamo kako bežično doći do podataka s ovog senzora, možemo izgraditi potpunu meteorološku stanicu na baterije. Budući da je ovaj Xiaomi uređaj komercijalni proizvod, nudi veliko trajanje baterije. Nažalost, još ne možemo postići sličnu potrošnju baterije na našim projektima. Dakle, planiram koristiti ovaj senzor kao vanjski senzor za projekt meteorološke postaje koji će koristiti veliki zaslon e-papira. Bit će cool. Također, potražit ću i druge Xiaomi Bluetooth uređaje koje možemo hakirati na sličan način. Ostanite uz nas.

Volio bih znati vaše mišljenje o ovom projektu. Smatrate li korisnim to što možemo dobiti podatke s nekih komercijalnih Bluetooth uređaja? Što ćete izgraditi pomoću ove funkcionalnosti? Volio bih pročitati vaše ideje pa ih objavite u donjem odjeljku komentara. Hvala!

Preporučeni: