Innholdsfortegnelse:

ESP32 Xiaomi Hack - Få data trådløst: 6 trinn (med bilder)
ESP32 Xiaomi Hack - Få data trådløst: 6 trinn (med bilder)

Video: ESP32 Xiaomi Hack - Få data trådløst: 6 trinn (med bilder)

Video: ESP32 Xiaomi Hack - Få data trådløst: 6 trinn (med bilder)
Video: Min opgave er at observere skoven, og her sker noget mærkeligt. 2024, Juli
Anonim
Image
Image
ESP32 Xiaomi Hack - Få data trådløst
ESP32 Xiaomi Hack - Få data trådløst

Kjære venner velkommen til en annen Instructable! I dag skal vi lære hvordan vi får dataene som denne Xiaomi temperatur- og fuktighetsmonitoren overfører ved hjelp av Bluetooth -funksjonaliteten til ESP32 -kortet.

Som du ser, bruker jeg et ESP32 -kort og en 2,8”farge TFT -skjerm. På displayet viser vi temperaturen og fuktigheten. Det fine er at jeg ikke har koblet noen sensorer til ESP32 -kortet. Jeg får temperaturen og fuktigheten trådløst fra denne kommersielle Xiaomi temperatur- og fuktighetsmonitoren. Hvor kult er det! Displayet på Xiaomi -enheten oppdateres hvert sekund, men jeg oppdaterer skjermen som er koblet til ESP32 -kortet hvert 10. sekund for å spare strøm på Xiaomi -enheten.

Denne kule Xiaomi temperatur- og fuktighetssensoren viser temperaturen og fuktigheten på LCD -displayet, og den kan også overføre dataene til andre Xiaomi -enheter eller -apper ved hjelp av Bluetooth -protokollen. Enhetene bruker et enkelt AAA -batteri, og siden det er et kommersielt produkt, er batteriets levetid utmerket. Det kan vare på et enkelt AAA -batteri i flere måneder, noe vi ikke kan oppnå på våre DIY -prosjekter. For noen uker siden oppdaget jeg at noen flinke karer klarte å omkonstruere protokollen som Xiaomi bruker for å overføre dataene fra sensoren og klarte å få disse dataene ved hjelp av et ESP32 -kort. Så jeg prøvde det, og som du kan se fungerer det!

Trinn 1: Få alle delene

Få alle delene
Få alle delene

La oss nå se hvordan vi bygger dette prosjektet. Vi trenger et ESP32 -kort, en 2,8”ILI9341 -skjerm, Xiaomi temperatur- og fuktighetssensor, et brødbrett og noen ledninger.

Her er noen lenker til delene jeg skal bruke i denne instruksjonsboken.

  • ESP32 ▶
  • 2,8 "skjerm ▶
  • Xiaomi -sensor ▶
  • Brødbrett ▶
  • Ledninger ▶
  • USB -måler ▶
  • Powerbank ▶

Trinn 2: ESP32 -kortet

Image
Image
ESP32 -styret
ESP32 -styret

Hvis du ikke er kjent med den, er ESP32 -brikken etterfølgeren til den populære ESP8266 -brikken vi har brukt mange ganger tidligere. ESP32 er et dyr! Den tilbyr to 32 prosessorkjerner som opererer ved 160 MHz, en enorm mengde minne, WiFi, Bluetooth og mange andre funksjoner med en kostnad på rundt 7 $! Fantastiske ting!

Se den detaljerte anmeldelsen jeg har utarbeidet for dette brettet. Jeg har lagt ved videoen på denne instruksjonsboken. Det vil hjelpe deg med å forstå hvorfor denne brikken vil endre måten vi lager ting på for alltid! En av de mest spennende tingene med ESP32 er at selv om den er så kraftig, tilbyr den en dvalemodus som krever bare 10μΑs strøm. Dette gjør ESP32 til den ideelle brikken for applikasjoner med lav effekt.

Trinn 3: 2,8 "TFT -skjerm for Arduino og ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Skjermen er stor, og den har en oppløsning på 320x240 piksler. Sammenlignet med en av mine favorittdisplayer, kan du se den 1,8”farge TFT -skjermen mye større. Skjermen tilbyr også berøringsfunksjonalitet som er en ekstra bonus og et SD -kortspor på baksiden. Den bruker SPI -grensesnittet, så forbindelsen med Arduino eller ESP32 -kortet er veldig grei. Kostnaden for displayet er relativt lav; det koster rundt 11 $, noe som etter min mening er en rimelig pris for hva denne skjermen tilbyr.

En annen ting som om denne skjermen er at den ikke kommer som et skjerm som berøringsskjermen vi brukte så langt. På denne måten kan vi koble skjermen til et hvilket som helst brett, Arduino Pro mini, STM32, ESP8266 og ESP32. Dette er veldig viktig fordi vi nå har en rimelig skjerm som vi kan bruke med hvert brett. Frem til nå var den eneste berøringsskjermen vi kunne bruke med disse brettene Nextion -skjermer som er dyrere, og for å være ærlig, selv om jeg bruker dem fra tid til annen, liker jeg dem egentlig ikke.

Trinn 4: Koble til skjermen

Koble til skjermen
Koble til skjermen
Koble til skjermen
Koble til skjermen
Koble til skjermen
Koble til skjermen
Koble til skjermen
Koble til skjermen

Først må vi koble ESP32 -kortet til 2,8”-skjermen. Du finner skjematisk vedlegg til Instructable. Jeg bruker dette DOIT ESP32 -kortet som ble utgitt for omtrent to år siden. Denne versjonen av brettet er ikke lenger tilgjengelig siden det nå er en nyere versjon av det tilgjengelig som tilbyr flere pins, denne. Den eneste grunnen til at jeg bruker den gamle versjonen av brettet er at GND -pinnen på brettet plassert ved siden av SPI -pinnene, på samme side av brettet, noe som gjør det brødbrettvennlig.

Etter at skjermen er koblet til kortet kan vi starte prosjektet. Etter noen sekunder mottar vi live data fra Xiaomi -enheten i nærheten. Siden enheten bruker Bluetooth 4, er rekkevidden av den ganske bra. Vi kan enkelt få dataene denne enheten sender fra avstander opptil 10 meter eller mer! Vi kan også motta batterinivået til Xiaomi -enheten, men jeg viser ikke denne verdien på skjermen.

Hvis vi bruker denne USB-måleren, kan vi se at nåværende tegning av dette prosjektet er rundt 120-150 mA ved hjelp av denne store skjermen. Hvis vi bruker en e-papirskjerm, setter du ESP32-kortet i dyp dvalemodus og får data fra sensoren hvert par minutter, slik at vi kan gjøre dette prosjektet batterivennlig. Jeg skal prøve dette i en fremtidig video. Dette prosjektet er bare en demonstrasjon av at vi kan få data fra denne enheten trådløst.

Trinn 5: Koden til prosjektet

Koden for prosjektet
Koden for prosjektet

La oss nå se programvaresiden av prosjektet.

Koden til prosjektet er basert på dette prosjektet:

Jeg brukte koden som henter dataene fra Xiaomi -enheten og bygde et frittstående prosjekt med den.

I denne variabelen erklærer vi at vi må få ferske data hvert 10. sekund.

#definer SCAN_TIME 10 // sekunder

Her erklærer vi at vi ønsker å vise temperaturen i grader Celsius. Hvis du vil bruke det keiserlige systemet, må du bare sette denne variabelen til falsk.

boolsk METRIC = true; // Angi true for metrisk system; falskt for keiserlig

Ved oppsettfunksjonen initialiserer vi displayet og Bluetooth -modulen på ESP32 -kortet, og deretter tegner vi brukergrensesnittet på skjermen.

ugyldig oppsett () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // deaktiver brownout -detektor

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Deretter søker vi etter Bluetooth -enheter i nærheten hvert 10. sekund. Vi har ikke forbindelse til Xiaomi -enheten siden den ikke er nødvendig. Vi søker bare etter Bluetooth -enheter med lav energi i nærheten og sjekker pakken med kringkastingsannonser.

void loop () {char printLog [256]; Serial.printf ("Start BLE -skanning i %d sekunder … / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Funnet enhetstall: %d / n", count);

forsinkelse (100);

}

Fuktighets- og temperaturverdiene lagres i disse pakkene, så vi trenger bare å lese dem. Etter at vi har lest verdiene, viser vi dem på skjermen. Som alltid kan du finne en lenke til koden til dette prosjektet i beskrivelsen vedlagt denne instruksjonsboken.

Trinn 6: Endelige tanker og forbedringer

Siste tanker og forbedringer
Siste tanker og forbedringer
Siste tanker og forbedringer
Siste tanker og forbedringer

Nå som vi vet hvordan vi får data trådløst fra denne sensoren, kan vi bygge en komplett batteridrevet værstasjon. Siden denne Xiaomi -enheten er et kommersielt produkt, gir den god batterilevetid. Dessverre kan vi ikke oppnå lignende batteriforbruk på prosjektene våre ennå. Så jeg planlegger å bruke denne sensoren som en utendørs sensor for et værstasjonsprosjekt som vil bruke et stort e-papir display. Det blir kult. Jeg skal også søke etter andre Xiaomi Bluetooth -aktiverte enheter som vi kan hacke på lignende måte. Følg med.

Jeg vil gjerne vite din mening om dette prosjektet. Synes du det er nyttig at vi kan få data fra noen kommersielle Bluetooth -enheter? Hva skal du bygge med denne funksjonaliteten? Jeg vil gjerne lese ideene dine, så vennligst legg dem ut i kommentarfeltet nedenfor. Takk!

Anbefalt: