Sisällysluettelo:

ESP32 Xiaomi Hack - Hanki tietoja langattomasti: 6 vaihetta (kuvilla)
ESP32 Xiaomi Hack - Hanki tietoja langattomasti: 6 vaihetta (kuvilla)

Video: ESP32 Xiaomi Hack - Hanki tietoja langattomasti: 6 vaihetta (kuvilla)

Video: ESP32 Xiaomi Hack - Hanki tietoja langattomasti: 6 vaihetta (kuvilla)
Video: Знакомство с платой разработки Heltec LoRa CubeCell HTCC-AB01 2024, Heinäkuu
Anonim
Image
Image
ESP32 Xiaomi Hack - Hanki tietoja langattomasti
ESP32 Xiaomi Hack - Hanki tietoja langattomasti

Hyvät ystävät, tervetuloa toiseen Instructableen! Tänään aiomme oppia hankkimaan tiedot, jotka tämä Xiaomi -lämpötila- ja kosteusmonitori lähettää ESP32 -kortin Bluetooth -toiminnon avulla.

Kuten huomaat, käytän ESP32 -korttia ja 2,8 tuuman TFT -näyttöä. Näytössä näytämme lämpötilan ja kosteuden. Hieno asia on, että en ole yhdistänyt mitään antureita ESP32 -korttiin. Saan lämpötilan ja kosteuden langattomasti tästä kaupallisesta Xiaomi -lämpötila- ja kosteusmonitorista. Kuinka siistiä! Xiaomi -laitteen näyttö päivitetään joka sekunti, mutta päivitän ESP32 -korttiin liitetyn näytön 10 sekunnin välein säästääksesi Xiaomi -laitteen virtaa.

Tämä viileä Xiaomi -lämpötila- ja kosteusanturi näyttää lämpötilan ja kosteuden nestekidenäytöltä ja voi myös lähettää tiedot muille Xiaomi -laitteille tai -sovelluksille Bluetooth -protokollan avulla. Laitteet käyttävät yhtä AAA -paristoa, ja koska se on kaupallinen tuote, laitteen akunkesto on erinomainen. Se voi kestää yhdellä AAA -paristolla kuukausia, mitä emme voi saavuttaa DIY -projekteissamme. Muutama viikko sitten huomasin, että jotkut fiksut kaverit onnistuivat muuttamaan protokollan, jota Xiaomi käyttää tiedonsiirtoon anturista, ja onnistuivat saamaan tiedot ESP32 -kortin avulla. Joten kokeilin sitä, ja kuten näet, se toimii!

Vaihe 1: Hanki kaikki osat

Hanki kaikki osat
Hanki kaikki osat

Katsotaan nyt, miten tämä projekti rakennetaan. Tarvitsemme ESP32 -kortin, 2,8 tuuman ILI9341 -näytön, Xiaomin lämpötila- ja kosteusanturin, leipälevyn ja johdot.

Tässä on joitain linkkejä osiin, joita aion käyttää tässä oppaassa.

  • ESP32 ▶
  • 2,8 "Näyttö ▶
  • Xiaomi -anturi ▶
  • Leipälauta ▶
  • Johdot ▶
  • USB -mittari ▶
  • Powerbank ▶

Vaihe 2: ESP32 -kortti

Image
Image
ESP32 -levy
ESP32 -levy

Jos et tunne sitä, ESP32 -siru on suositun ESP8266 -sirun seuraaja, jota olemme käyttäneet monta kertaa aiemmin. ESP32 on peto! Se tarjoaa kaksi 32 prosessointiytintä, jotka toimivat 160 MHz: llä, valtava määrä muistia, WiFi, Bluetooth ja monia muita ominaisuuksia, joiden hinta on noin 7 dollaria! Ihmeellistä tavaraa!

Katso yksityiskohtainen katsaus, jonka olen valmistellut tälle levylle. Olen liittänyt videon tähän oppaaseen. Se auttaa ymmärtämään, miksi tämä siru muuttaa tapaamme tehdä asioita ikuisesti! Yksi ESP32: n jännittävimmistä asioista on, että vaikka se on niin voimakas, se tarjoaa syvän lepotilan, joka vaatii vain 10μΑs virtaa. Tämä tekee ESP32: sta ihanteellisen sirun pienitehoisiin sovelluksiin.

Vaihe 3: 2,8 tuuman TFT -näyttö Arduinolle ja ESP32: lle

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Näyttö on suuri ja sen resoluutio on 320x240 pikseliä. Verrattuna yhteen suosikkinäyttöihini, 1,8 tuuman värilliseen TFT -näyttöön näet sen paljon suurempana. Näytössä on myös kosketustoiminto, joka on lisäbonus ja SD -korttipaikka takana. Se käyttää SPI -rajapintaa, joten yhteys Arduinoon tai ESP32 -korttiin on erittäin suoraviivainen. Näytön hinta on suhteellisen alhainen; se maksaa noin 11 dollaria, mikä on mielestäni kohtuullinen hinta siitä, mitä tämä näyttö tarjoaa.

Toinen asia tässä näytössä on, että se ei tule suojaksi, kuten kosketusnäyttö, jota käytimme tähän mennessä. Tällä tavalla voimme liittää näytön mihin tahansa korttiin, Arduino Pro mini, STM32, ESP8266 ja ESP32. Tämä on erittäin tärkeää, koska meillä on nyt edullinen näyttö, jota voimme käyttää jokaisen levyn kanssa. Toistaiseksi ainoa kosketusnäyttö, jota voimme käyttää näiden levyjen kanssa, olivat Nextion -näytöt, jotka ovat kalliimpia, ja rehellisesti sanottuna, vaikka käytän niitä aika ajoin, en todellakaan pidä niistä.

Vaihe 4: Näytön liittäminen

Näytön kytkeminen
Näytön kytkeminen
Näytön kytkeminen
Näytön kytkeminen
Näytön kytkeminen
Näytön kytkeminen
Näytön kytkeminen
Näytön kytkeminen

Ensinnäkin meidän on liitettävä ESP32 -kortti 2,8 tuuman näyttöön. Löydät kaavion Instructable -ohjelman liitteenä. Käytän tätä DOIT ESP32 -levyä, joka julkaistiin noin kaksi vuotta sitten. Tämä kortin versio ei ole enää saatavilla, koska siitä on nyt saatavana uudempi versio, joka tarjoaa enemmän nastoja, tämä. Ainoa syy, miksi käytän levyn vanhaa versiota, on se, että levyn GND -tappi on sijoitettu SPI -nastojen viereen levyn samalle puolelle, mikä tekee siitä leipälautaystävällisen.

Kun näyttö on liitetty levyyn, voimme käynnistää projektin. Muutaman sekunnin kuluttua vastaanotamme reaaliaikaista tietoa läheiseltä Xiaomi -laitteelta. Koska laite käyttää Bluetooth 4: tä, sen kantama on melko hyvä. Saamme helposti laitteen lähettämät tiedot jopa 10 metrin etäisyydeltä tai kauemmas! Voimme myös vastaanottaa Xiaomi -laitteen akun varaustason, mutta en näytä tätä arvoa näytöllä.

Jos käytämme tätä USB-mittaria, voimme nähdä, että tämän projektin nykyinen kulutus on noin 120-150 mA tämän suuren näytön avulla. Jos käytämme sähköistä paperinäyttöä, laitamme ESP32-levyn syvään lepotilaan ja saamme tietoja anturista muutaman minuutin välein, jotta voimme tehdä projektista akun säästävän. Kokeilen tätä tulevassa videossa. Tämä projekti on vain osoitus siitä, että voimme saada tietoja tästä laitteesta langattomasti.

Vaihe 5: Projektin koodi

Projektin koodi
Projektin koodi

Katsotaan nyt projektin ohjelmistopuolta.

Projektin koodi perustuu tähän projektiin:

Käytin koodia, joka saa nämä tiedot Xiaomi -laitteesta, ja rakensin sen kanssa itsenäisen projektin.

Tässä muuttujassa ilmoitamme, että meidän on saatava uusia tietoja 10 sekunnin välein.

#define SCAN_TIME 10 // sekuntia

Ilmoitamme täällä, että haluamme näyttää lämpötilan celsiusasteina. Jos haluat käyttää Imperial -järjestelmää, aseta tämä muuttuja arvoon false.

boolean METRIC = tosi; // Aseta tosi metrijärjestelmälle; väärä imperialille

Asetustoiminnossa alustamme ESP32 -kortin näytön ja Bluetooth -moduulin ja piirrämme sitten käyttöliittymän näytölle.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // poista brownout -ilmaisin käytöstä

tft.begin ();

Sarja.alku (115200);

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

drawUI ();

}

Seuraavaksi etsimme lähellä olevia Bluetooth -laitteita 10 sekunnin välein. Emme muodosta yhteyttä Xiaomi -laitteeseen, koska sitä ei tarvita. Etsimme vain lähellä olevia vähäenergisia Bluetooth -oheislaitteita ja tarkistamme yleisradiomainospaketit.

void loop () {char printLog [256]; Serial.printf ("Aloita BLE -skannaus %d sekunnin ajan… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Löytyneiden laitteiden määrä: %d / n", count);

viive (100);

}

Kosteus- ja lämpötila -arvot tallennetaan näihin paketteihin, joten meidän tarvitsee vain lukea ne. Kun olemme lukeneet arvot, näytämme ne näytöllä. Kuten aina, löydät linkin tämän projektin koodiin tämän ohjeen liitteenä olevasta kuvauksesta.

Vaihe 6: Viimeiset ajatukset ja parannukset

Viimeiset ajatukset ja parannukset
Viimeiset ajatukset ja parannukset
Viimeiset ajatukset ja parannukset
Viimeiset ajatukset ja parannukset

Nyt kun tiedämme kuinka saada tietoja langattomasti tästä anturista, voimme rakentaa täydellisen paristokäyttöisen sääaseman. Koska tämä Xiaomi -laite on kaupallinen tuote, se tarjoaa erinomaisen akunkeston. Valitettavasti emme voi vielä saavuttaa samanlaista akun kulutusta projekteissamme. Joten aion käyttää tätä anturia ulkoanturina sääasemaprojektissa, joka käyttää suurta sähköistä paperinäyttöä. Siitä tulee siistiä. Aion myös etsiä muita Xiaomi Bluetooth -yhteensopivia laitteita, joita voimme hakata samalla tavalla. Pysy kanavalla.

Haluaisin tietää mielipiteenne tästä projektista. Onko mielestäsi hyödyllistä, että voimme saada tietoja joistakin kaupallisista Bluetooth -laitteista? Mitä aiot rakentaa käyttämällä tätä toimintoa? Haluaisin lukea ideasi, joten lähetä ne alla olevaan kommenttiosaan. Kiitos!

Suositeltava: