Sisukord:

ESP32 Xiaomi Hack - andmete hankimine juhtmevabalt: 6 sammu (piltidega)
ESP32 Xiaomi Hack - andmete hankimine juhtmevabalt: 6 sammu (piltidega)

Video: ESP32 Xiaomi Hack - andmete hankimine juhtmevabalt: 6 sammu (piltidega)

Video: ESP32 Xiaomi Hack - andmete hankimine juhtmevabalt: 6 sammu (piltidega)
Video: Чтение ID 0B6 шины CAN CONFORT c помощью ESP32 на автомобиле Citroen C5 X7 2024, Juuli
Anonim
Image
Image
ESP32 Xiaomi Hack - hankige andmeid juhtmevabalt
ESP32 Xiaomi Hack - hankige andmeid juhtmevabalt

Kallid sõbrad, tere tulemast teise Instructable'i! Täna õpime, kuidas saada andmeid, mida see Xiaomi temperatuuri ja niiskuse monitor edastab, kasutades ESP32 plaadi Bluetooth -funktsioone.

Nagu näete, kasutan ESP32 plaati ja 2,8 -tollist värvilist TFT -ekraani. Ekraanil kuvame temperatuuri ja niiskust. Lahe on see, et ma pole ESP32 plaadiga ühtegi andurit ühendanud. Temperatuuri ja niiskust saan juhtmevabalt sellest kaubanduslikust Xiaomi temperatuuri ja niiskuse monitorist. Kui lahe see on! Xiaomi seadme ekraani uuendatakse iga sekund, kuid värskendan ESP32 -plaadiga ühendatud ekraani iga 10 sekundi järel, et säästa Xiaomi seadme energiat.

See jahe Xiaomi temperatuuri- ja niiskusandur kuvab oma LCD -ekraanil temperatuuri ja niiskuse ning saab Bluetooth -protokolli abil andmeid edastada ka teistele Xiaomi seadmetele või rakendustele. Seadmed kasutavad ühte AAA patareid ja kuna see on kaubanduslik toode, on seadme aku kasutusaeg suurepärane. See võib kesta ühe AAA patareiga mitu kuud, mida me ei saa oma isetegevusprojektidega saavutada. Mõni nädal tagasi avastasin, et mõned nutikad poisid suutsid ümber kujundada protokolli, mida Xiaomi kasutab andurilt andmete edastamiseks, ja õnnestus need andmed ESP32 plaadi abil hankida. Nii et ma proovisin seda ja nagu näete, see töötab!

Samm: hankige kõik osad

Hankige kõik osad
Hankige kõik osad

Vaatame nüüd, kuidas seda projekti üles ehitada. Vajame ESP32 plaati, 2,8 -tollist ILI9341 ekraani, Xiaomi temperatuuri- ja niiskusandurit, leivaplaati ja mõningaid juhtmeid.

Siin on mõned lingid osadele, mida kavatsen selles juhendis kasutada.

  • ESP32 ▶
  • 2.8 "Ekraan ▶
  • Xiaomi andur ▶
  • Leivalaud ▶
  • Juhtmed ▶
  • USB -arvesti ▶
  • Powerbank ▶

Samm: ESP32 juhatus

Image
Image
ESP32 juhatus
ESP32 juhatus

Kui te pole sellega tuttav, on ESP32 kiip järg populaarsele ESP8266 kiibile, mida oleme varem mitu korda kasutanud. ESP32 on metsaline! See pakub kahte 32 töötlemissüdamikku, mis töötavad sagedusel 160 MHz, tohutul hulgal mälu, WiFi, Bluetooth ja palju muid funktsioone, mille maksumus on umbes 7 dollarit! Hämmastav värk!

Palun vaadake üksikasjalikku ülevaadet, mille olen selle plaadi jaoks ette valmistanud. Lisasin video selle juhendi juurde. See aitab mõista, miks see kiip muudab igaveseks viisi, kuidas me asju teeme! Üks põnevamaid asju ESP32 puhul on see, et kuigi see on nii võimas, pakub see sügava une režiimi, mis nõuab vaid 10 μs voolu. See muudab ESP32 ideaalseks kiibiks väikese energiatarbega rakenduste jaoks.

Samm: 2,8 -tolline TFT -ekraan Arduino ja ESP32 jaoks

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Ekraan on suur ja eraldusvõime 320x240 pikslit. Võrreldes ühe minu lemmikkuvaga, näete seda 1,8 -tollise värvilise TFT -ekraaniga palju suuremana. Ekraan pakub ka puutefunktsioone, mis on lisaboonus ja tagaküljel SD -kaardi pesa. See kasutab SPI liidest, seega on ühendus Arduino või ESP32 plaadiga väga lihtne. Ekraani maksumus on suhteliselt madal; see maksab umbes 11 dollarit, mis on minu arvates selle ekraani pakutava hinna eest õiglane.

Veel üks asi selle ekraani kohta on see, et see ei tule nii kaitsekilbina kui puuteekraan, mida me seni kasutasime. Nii saame ekraani ühendada mis tahes plaadiga, Arduino Pro mini, STM32, ESP8266 ja ESP32. See on väga oluline, sest meil on nüüd odav ekraan, mida saame kasutada iga tahvliga. Siiani oli ainus puutetundlik ekraan, mida nende plaatide puhul kasutada saime, Nextioni kuvarid, mis on kallimad, ja ausalt öeldes, kuigi ma neid aeg -ajalt kasutan, ei meeldi need mulle.

Samm: ekraani ühendamine

Ekraani ühendamine
Ekraani ühendamine
Ekraani ühendamine
Ekraani ühendamine
Ekraani ühendamine
Ekraani ühendamine
Ekraani ühendamine
Ekraani ühendamine

Esiteks peame ühendama ESP32 plaadi 2,8 -tollise ekraaniga. Skeemi leiate Instructable'i lisast. Ma kasutan seda DOIT ESP32 plaati, mis ilmus umbes kaks aastat tagasi. See plaadi versioon pole enam saadaval, kuna nüüd on saadaval selle uuem versioon, mis pakub rohkem nööpnõelu. Ainus põhjus, miks ma tahvli vana versiooni kasutan, on see, et tahvli GND -tihvt on paigutatud SPI -tihvtide kõrvale, plaadi samale küljele, mis muudab selle leivaplaadisõbralikuks.

Pärast ekraani ühendamist plaadiga saame projekti käivitada. Mõne sekundi pärast saame reaalajas andmeid läheduses asuvast Xiaomi seadmest. Kuna seade kasutab Bluetooth 4, on selle ulatus üsna hea. Me saame hõlpsasti andmeid, mida see seade edastab kuni 10 meetri või kaugemale! Samuti võime vastu võtta Xiaomi seadme aku taset, kuid ma ei kuva seda väärtust ekraanil.

Kui kasutame seda USB-meetrit, näeme selle suure ekraani abil, et selle projekti praegune voolutugevus on umbes 120–150 mA. Kui kasutame e-paberiekraani, paneme ESP32 plaadi sügava unerežiimi ja saame andurilt iga paari minuti tagant andmeid, et saaksime selle projekti aku sõbralikuks muuta. Proovin seda tulevases videos. See projekt on lihtsalt demonstratsioon selle kohta, et saame selle seadme andmeid juhtmevabalt hankida.

Samm: projekti kood

Projekti kood
Projekti kood

Vaatame nüüd projekti tarkvara poolt.

Projekti kood põhineb sellel projektil:

Kasutasin koodi, mis saab need andmed Xiaomi seadmest, ja ehitasin sellega iseseisva projekti.

Selle muutujaga deklareerime, et peame iga 10 sekundi tagant hankima värskeid andmeid.

#define SCAN_TIME 10 // sekundit

Siin deklareerime, et soovime kuvada temperatuuri Celsiuse kraadides. Kui soovite kasutada Imperiali süsteemi, määrake see muutuja väärtusele false.

boolean METRIC = tõene; // Määra meetrise süsteemi jaoks tõene; keiserliku jaoks vale

Seadistusfunktsioonil lähtestame ESP32 plaadi ekraani ja Bluetooth -mooduli ning seejärel joonistame ekraanile kasutajaliidese.

tühine seadistus () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // keelab väljalülitusdetektori

tft.begin ();

Seriaalne algus (115200);

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

drawUI ();

}

Järgmisena otsime iga 10 sekundi tagant läheduses asuvaid Bluetooth -seadmeid. Me ei loo ühendust Xiaomi seadmega, kuna seda pole vaja. Otsime ainult läheduses asuvaid Bluetoothi madala energiatarbega välisseadmeid ja kontrollime ülekande reklaamipakette.

void loop () {char printLog [256]; Serial.printf ("Alusta BLE skannimist %d sekundit… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Leitud seadmete arv: %d / n", count);

viivitus (100);

}

Niiskuse ja temperatuuri väärtused salvestatakse nendesse pakenditesse, seega peame neid ainult lugema. Pärast väärtuste lugemist kuvame need ekraanil. Nagu alati, leiate selle projekti koodi lingi juhendile lisatud kirjeldusest.

6. samm: lõplikud mõtted ja täiustused

Lõplikud mõtted ja täiustused
Lõplikud mõtted ja täiustused
Lõplikud mõtted ja täiustused
Lõplikud mõtted ja täiustused

Nüüd, kui me teame, kuidas selle anduri kaudu juhtmevabalt andmeid saada, saame ehitada täieliku patareitoitega ilmajaama. Kuna see Xiaomi seade on kaubanduslik toode, pakub see suurepärast aku kasutusaega. Kahjuks ei saa me oma projektides veel sarnast akutarbimist saavutada. Niisiis, ma kavatsen seda andurit kasutada ilmajaamaprojekti väljas andurina, mis kasutab suurt e-paberi ekraani. See saab lahe olema. Samuti otsin teisi Xiaomi Bluetooth -toega seadmeid, mida saame sarnasel viisil häkkida. Püsige lainel.

Tahaksin teada teie arvamust selle projekti kohta. Kas leiate, et on kasulik, et saame andmeid mõnest kaubanduslikust Bluetooth -seadmest? Mida kavatsete selle funktsiooni abil ehitada? Tahaksin teie ideid lugeda, nii et palun postitage need allpool olevasse kommentaaride sektsiooni. Tänan!

Soovitan: