Turinys:

„ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu: 6 žingsniai (su nuotraukomis)
„ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu: 6 žingsniai (su nuotraukomis)

Video: „ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu: 6 žingsniai (su nuotraukomis)

Video: „ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu: 6 žingsniai (su nuotraukomis)
Video: Добавление градусника XIaomi lywsd03mmc в ESPHome и в Home Assistant через ESP32 2024, Lapkritis
Anonim
Image
Image
„ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu
„ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu

Mieli draugai, sveiki atvykę į kitą „Instructable“! Šiandien mes mokysimės gauti duomenis, kuriuos šis „Xiaomi“temperatūros ir drėgmės monitorius perduoda naudodamas ESP32 plokštės „Bluetooth“funkciją.

Kaip matote, naudoju ESP32 plokštę ir 2,8 colio spalvotą TFT ekraną. Ekrane rodome temperatūrą ir drėgmę. Šaunus dalykas yra tai, kad prie ESP32 plokštės neprijungiau jokių jutiklių. Temperatūrą ir drėgmę gaunu belaidžiu būdu iš šio komercinio „Xiaomi“temperatūros ir drėgmės monitoriaus. Argi tai ne šaunu! „Xiaomi“įrenginio ekranas atnaujinamas kas sekundę, tačiau aš atnaujinu ekraną, prijungtą prie ESP32 plokštės, kas 10 sekundžių, kad būtų taupoma „Xiaomi“įrenginio energija.

Šis vėsus „Xiaomi“temperatūros ir drėgmės jutiklis LCD ekrane rodo temperatūrą ir drėgmę, taip pat gali perduoti duomenis kitiems „Xiaomi“įrenginiams ar programoms, naudodamas „Bluetooth“protokolą. Įrenginiuose naudojama viena AAA tipo baterija, ir kadangi tai yra komercinis produktas, prietaiso baterijos tarnavimo laikas yra puikus. Tai gali trukti iš vienos AAA baterijos mėnesius, ko mes negalime pasiekti savo „pasidaryk pats“projektuose. Prieš kelias savaites atradau, kad kai kuriems protingiems vaikinams pavyko pakeisti protokolą, kurį „Xiaomi“naudoja perduodant duomenis iš jutiklio, ir pavyko tuos duomenis gauti naudojant ESP32 plokštę. Taigi aš išbandžiau, ir kaip matote, tai veikia!

1 žingsnis: Gaukite visas dalis

Gaukite visas dalis
Gaukite visas dalis

Dabar pažiūrėkime, kaip sukurti šį projektą. Mums reikia ESP32 plokštės, 2,8 colio ILI9341 ekrano, „Xiaomi“temperatūros ir drėgmės jutiklio, duonos lentos ir kai kurių laidų.

Čia yra keletas nuorodų į dalis, kurias ketinu naudoti šioje instrukcijoje.

  • ESP32 ▶
  • 2,8 colio ekranas ▶
  • „Xiaomi“jutiklis ▶
  • Duonos lenta ▶
  • Laidai ▶
  • USB matuoklis ▶
  • „Powerbank“▶

2 žingsnis: ESP32 lenta

Image
Image
ESP32 valdyba
ESP32 valdyba

Jei nesate su juo susipažinę, ESP32 lustas yra populiaraus ESP8266 lusto, kurį mes daug kartų naudojome praeityje, įpėdinis. ESP32 yra žvėris! Jis siūlo du 32 apdorojimo branduolius, kurie veikia 160 MHz dažniu, didžiulį atminties kiekį, „WiFi“, „Bluetooth“ir daugybę kitų funkcijų, kurių kaina yra apie 7 USD! Nuostabūs dalykai!

Prašome žiūrėti išsamią apžvalgą, kurią paruošiau šiai lentai. Pridedu vaizdo įrašą prie šios instrukcijos. Tai padės suprasti, kodėl ši mikroschema amžinai pakeis mūsų kūrimo būdą! Vienas iš įdomiausių ESP32 dalykų yra tai, kad nors jis yra toks galingas, jis siūlo gilaus miego režimą, kuriam reikia tik 10 μΑ srovės. Dėl to ESP32 yra idealus lustas mažos galios programoms.

3 žingsnis: 2,8 colio TFT ekranas, skirtas „Arduino“ir ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Ekranas yra didelis ir siūlo 320x240 pikselių skiriamąją gebą. Palyginti su vienu iš mano mėgstamiausių ekranų, 1,8 colio spalvotu TFT ekranu galite matyti daug didesnį. Ekranas taip pat siūlo jutiklinę funkciją, kuri yra papildoma premija, ir SD kortelės lizdą gale. Jis naudoja SPI sąsają, todėl ryšys su „Arduino“arba ESP32 plokšte yra labai paprastas. Ekrano kaina yra palyginti maža; tai kainuoja apie 11 USD, o tai, mano nuomone, yra tinkama kaina už tai, ką siūlo šis ekranas.

Kitas dalykas, susijęs su šiuo ekranu, yra tai, kad jis nėra toks skydas, kaip iki šiol naudotas jutiklinis ekranas. Tokiu būdu galime prijungti ekraną prie bet kurios plokštės, „Arduino Pro mini“, STM32, ESP8266 ir ESP32. Tai labai svarbu, nes dabar turime nebrangų ekraną, kurį galime naudoti su kiekviena lenta. Iki šiol vienintelis lietimui jautrus ekranas, kurį galėjome naudoti su šiomis plokštėmis, buvo „Nextion“ekranai, kurie yra brangesni, ir, tiesą pasakius, nors aš juos retkarčiais naudoju, jie man nelabai patinka.

4 veiksmas: ekrano prijungimas

Ekrano prijungimas
Ekrano prijungimas
Ekrano prijungimas
Ekrano prijungimas
Ekrano prijungimas
Ekrano prijungimas
Ekrano prijungimas
Ekrano prijungimas

Pirmiausia turime prijungti ESP32 plokštę prie 2,8 colio ekrano. Schemą galite rasti prie „Instructable“. Aš naudoju šią DOIT ESP32 plokštę, kuri buvo išleista maždaug prieš dvejus metus. Šios plokštės versijos nebėra, nes dabar yra naujesnė jos versija, kurioje yra daugiau kaiščių. Vienintelė priežastis, kodėl naudoju seną plokštės versiją, yra ta, kad plokštės GND kaištis yra šalia SPI kaiščių toje pačioje plokštės pusėje, todėl ji yra patogi duonai.

Prijungę ekraną prie plokštės, galime įjungti projektą. Po kelių sekundžių mes gauname tiesioginius duomenis iš netoliese esančio „Xiaomi“įrenginio. Kadangi įrenginys naudoja „Bluetooth 4“, jo diapazonas yra gana geras. Mes galime lengvai gauti duomenis, kuriuos šis prietaisas perduoda iš atstumo iki 10 metrų ar daugiau! Taip pat galime gauti „Xiaomi“įrenginio akumuliatoriaus įkrovos lygį, bet aš nerodau šios vertės ekrane.

Jei naudosime šį USB skaitiklį, matysime, kad naudojant šį didelį ekraną dabartinė šio projekto vertė yra apie 120–150 mA. Jei naudojame el. Popierinį ekraną, įjunkite ESP32 plokštę į gilaus miego režimą ir kas kelias minutes gaukite duomenis iš jutiklio, kad šis projektas tausotų akumuliatorių. Aš tai išbandysiu būsimame vaizdo įraše. Šis projektas yra tik parodymas, kad galime gauti duomenis iš šio įrenginio belaidžiu būdu.

5 žingsnis: projekto kodas

Projekto kodeksas
Projekto kodeksas

Dabar pažvelkime į programinę projekto pusę.

Projekto kodas pagrįstas šiuo projektu:

Aš naudojau kodą, kuris gauna tuos duomenis iš „Xiaomi“įrenginio, ir su juo sukūriau atskirą projektą.

Šiame kintamajame mes deklaruojame, kad turime gauti naujų duomenų kas 10 sekundžių.

#define SCAN_TIME 10 // sek

Čia mes deklaruojame, kad norime parodyti temperatūrą Celsijaus laipsniais. Jei norite naudoti „Imperial“sistemą, tiesiog nustatykite šį kintamąjį į „false“.

loginis METRIC = tiesa; // Nustatyti metrinei sistemai true; imperialui klaidinga

Atliekant sąrankos funkciją, inicijuojamas ESP32 plokštės ekranas ir „Bluetooth“modulis, tada ekrane nupiešiame vartotojo sąsają.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // išjungti išjungimo detektorių

tft.begin ();

Serial.begin (115200);

Serial.println („ESP32 XIAOMI DISPLAY“); „initBluetooth“();

drawUI ();

}

Toliau kas 10 sekundžių ieškome netoliese esančių „Bluetooth“įrenginių. Mes neprisijungiame prie „Xiaomi“įrenginio, nes jis nereikalingas. Mes tik ieškome netoliese esančių „Bluetooth“mažai energijos naudojančių išorinių įrenginių ir tikriname transliuojamus reklamos paketus.

void loop () {char printLog [256]; Serial.printf ("Pradėti BLE nuskaitymą %d sekundės… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Rastų įrenginių skaičius: %d / n", skaičius);

vėlavimas (100);

}

Tose pakuotėse saugomos drėgmės ir temperatūros vertės, todėl mums tereikia jas perskaityti. Perskaitę reikšmes, jas rodome ekrane. Kaip visada, nuorodą į šio projekto kodą rasite aprašyme, pridėtame prie šios instrukcijos.

6 žingsnis: paskutinės mintys ir patobulinimai

Paskutinės mintys ir patobulinimai
Paskutinės mintys ir patobulinimai
Paskutinės mintys ir patobulinimai
Paskutinės mintys ir patobulinimai

Dabar, kai žinome, kaip belaidžiu būdu gauti duomenis iš šio jutiklio, galime sukurti pilną oru veikiančią bateriją. Kadangi šis „Xiaomi“įrenginys yra komercinis produktas, jis pasižymi puikiu baterijos veikimo laiku. Deja, mūsų projektuose kol kas negalime pasiekti panašaus akumuliatoriaus energijos. Taigi, aš planuoju naudoti šį jutiklį kaip lauko jutiklį orų stoties projektui, kuris naudos didelį elektroninio popieriaus ekraną. Bus šaunu. Be to, aš ieškau kitų „Xiaomi Bluetooth“palaikančių įrenginių, kuriuos galime nulaužti panašiu būdu. Sekite naujienas.

Norėčiau sužinoti jūsų nuomonę apie šį projektą. Ar manote, kad naudinga gauti duomenis iš kai kurių komercinių „Bluetooth“įrenginių? Ką ketinate kurti naudodami šią funkciją? Norėčiau perskaityti jūsų idėjas, todėl prašome jas paskelbti žemiau esančiame komentarų skyriuje. Dėkoju!

Rekomenduojamas: