Turinys:
- 1 žingsnis: Gaukite visas dalis
- 2 žingsnis: ESP32 lenta
- 3 žingsnis: 2,8 colio TFT ekranas, skirtas „Arduino“ir ESP32
- 4 veiksmas: ekrano prijungimas
- 5 žingsnis: projekto kodas
- 6 žingsnis: paskutinės mintys ir patobulinimai
Video: „ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu: 6 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
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
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
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
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
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
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
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:
Darbo su belaidžiu belaidžiu temperatūros ir vibracijos jutikliu pradžia: 7 žingsniai
Darbo su belaidžiu belaidžiu temperatūros ir vibracijos jutikliu pradžia: kartais vibracija sukelia rimtų problemų daugelyje programų. Nuo mašinos velenų ir guolių iki kietojo disko veikimo vibracija sukelia mašinos pažeidimus, ankstyvą pakeitimą, mažą našumą ir daro didelę įtaką tikslumui. Stebima
Belaidžiu būdu pasiekiamas „Pi“per 5 minutes: 3 žingsniai
Belaidis ryšys „Pi“per 5 minutes: Sveiki visi! Štai kaip padaryti, kad „Raspberry Pi“būtų pasiekiamas belaidžiu ryšiu iš telefono ar planšetinio kompiuterio. Atkreipkite dėmesį, kad mano apskaičiuota, kad 5 minutės yra skirtos asmeniui, turinčiam tam tikrų žinių apie kompiuterį, ir tikrai gali užtrukti ilgiau. Pakanka tų dalykų, eikime prie jo
RC servo valdymas belaidžiu būdu per UDP: 3 žingsniai
RC servo valdymas belaidžiu ryšiu per UDP: Šiame projekte aš noriu naudoti savo „iPhone“valdyti RC servo. Aš naudosiu akselerometrą, kad valdyčiau du servo per UDP ryšį. Tai yra „Proof Of Concept“projektas, skirtas patikrinti, ar ryšys tarp „iPhone“ir išorinio įrenginio gali pasiekti aukštą lygį
Belaidžiu būdu valdykite kompiuterį, mirksėdami akimis;): 9 žingsniai (su nuotraukomis)
Belaidžiu būdu valdykite kompiuterį, mirksėdami akimis;): O kaip peržengti savo įpročius? Ką apie išbandyti ką nors naujo ?? !!!! O kaip valdyti kompiuterį ir daryti viską, ko norite be klaviatūros ir pelės! Hmm … Bet kaip tai įmanoma ??? Tik akies mirksniu !! Nereikia
Keletas būdų paslėpti duomenis kompiuteryje: 9 žingsniai
Keletas būdų, kaip paslėpti duomenis kompiuteryje: Jei jus domina kodavimas ar paketinis scenarijus, peržiūrėkite mano naujausią „Ible“čia. Daugelis žmonių su kompiuteriu negali nuveikti daugiau nei įvesti „Word“dokumento arba sukurti „paveikslėlio“, vadinamojo „Paint“. Žinoma, dauguma žmonių, skaitančių šią instrukciją