Indholdsfortegnelse:

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

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

Video: ESP32 Xiaomi Hack - Få data trådløst: 6 trin (med billeder)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, September
Anonim
Image
Image
ESP32 Xiaomi Hack - Få data trådløst
ESP32 Xiaomi Hack - Få data trådløst

Kære venner velkommen til en anden instruerbar! I dag skal vi lære at få de data, som denne Xiaomi temperatur- og luftfugtighedsmonitor overfører ved hjælp af Bluetooth -funktionaliteten på ESP32 -kortet.

Som du kan se, bruger jeg et ESP32 -kort og et 2,8”farve TFT -display. På displayet viser vi temperaturen og fugtigheden. Det fede er, at jeg ikke har tilsluttet nogen sensorer til ESP32 -kortet. Jeg får temperaturen og fugtigheden trådløst fra denne kommercielle Xiaomi temperatur- og fugtighedsmonitor. Hvor er det fedt! Skærmen på Xiaomi -enheden opdateres hvert sekund, men jeg opdaterer den skærm, der er tilsluttet ESP32 -kortet hvert 10. sekund for at spare strøm på Xiaomi -enheden.

Denne fede Xiaomi temperatur- og fugtighedsføler viser temperaturen og fugtigheden på LCD -displayet, og den kan også overføre dataene til andre Xiaomi -enheder eller apps ved hjælp af Bluetooth -protokollen. Enhederne bruger et enkelt AAA -batteri, og da det er et kommercielt produkt, er enhedens batterilevetid fremragende. Det kan holde på et enkelt AAA -batteri i flere måneder, noget vi ikke kan opnå på vores DIY -projekter. For et par uger siden opdagede jeg, at nogle kloge fyre formåede at reverse engineering den protokol, som Xiaomi bruger til at overføre dataene fra sensoren, og det lykkedes at få disse data ved hjælp af et ESP32 -kort. Så jeg prøvede det, og som du kan se virker det!

Trin 1: Få alle delene

Få alle delene
Få alle delene

Lad os nu se, hvordan vi bygger dette projekt. Vi har brug for et ESP32 -kort, et 2,8”ILI9341 display, Xiaomi temperatur- og fugtighedsføler, et brødbræt og nogle ledninger.

Her er nogle links til de dele, jeg skal bruge i denne Instructable.

  • ESP32 ▶
  • 2,8 "skærm ▶
  • Xiaomi Sensor ▶
  • Breadboard ▶
  • Ledninger ▶
  • USB -måler ▶
  • Powerbank ▶

Trin 2: ESP32 -kortet

Image
Image
ESP32 Board
ESP32 Board

Hvis du ikke kender det, er ESP32 -chippen efterfølgeren til den populære ESP8266 -chip, vi tidligere har brugt mange gange. ESP32 er et dyr! Det tilbyder to 32 processorkerner, der fungerer ved 160MHz, en massiv mængde hukommelse, WiFi, Bluetooth og mange andre funktioner med en pris på omkring 7 $! Fantastiske ting!

Se venligst den detaljerede anmeldelse, jeg har forberedt til dette board. Jeg har vedhæftet videoen på denne Instructable. Det vil hjælpe med at forstå, hvorfor denne chip vil ændre den måde, vi laver ting på for evigt! En af de mest spændende ting ved ESP32 er, at selvom den er så kraftig, tilbyder den en dyb dvaletilstand, der kun kræver 10μΑs strøm. Dette gør ESP32 til den ideelle chip til applikationer med lav effekt.

Trin 3: 2,8 "TFT -skærm til Arduino og ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Skærmen er stor, og den tilbyder en opløsning på 320x240 pixels. Sammenlignet med en af mine favoritdisplays, kan du se den 1,8”farve TFT -skærm meget større. Skærmen tilbyder også berøringsfunktionalitet, som er en ekstra bonus og en SD -kortplads bagpå. Den bruger SPI -grænsefladen, så forbindelsen til Arduino eller ESP32 -kortet er meget ligetil. Omkostningerne ved displayet er relativt lave; det koster omkring 11 $, hvilket efter min mening er en rimelig pris for hvad dette display tilbyder.

En anden ting som ved denne skærm er, at den ikke kommer som et skjold som den berøringsskærm, vi hidtil har brugt. På denne måde kan vi slutte skærmen til ethvert kort, Arduino Pro mini, STM32, ESP8266 og ESP32. Dette er meget vigtigt, fordi vi nu har et billigt display, som vi kan bruge med hvert bord. Indtil nu var det eneste berøringsskærm, vi kunne bruge med disse tavler, Nextion -skærme, der er dyrere, og for at være ærlig, selvom jeg bruger dem fra tid til anden, kan jeg ikke rigtig lide dem.

Trin 4: Tilslutning af skærmen

Tilslutning af skærmen
Tilslutning af skærmen
Tilslutning af skærmen
Tilslutning af skærmen
Tilslutning af skærmen
Tilslutning af skærmen
Tilslutning af skærmen
Tilslutning af skærmen

Først skal vi slutte ESP32 -kortet til 2,8”-skærmen. Du kan finde skematisk vedhæftet til Instructable. Jeg bruger dette DOIT ESP32 -kort, der blev frigivet for cirka to år siden. Denne version af tavlen er ikke længere tilgængelig, da der nu er en nyere version af den tilgængelig, som tilbyder flere pins, denne. Den eneste grund til, at jeg bruger den gamle version af brættet, er, at brættets GND -pin er placeret ved siden af SPI -benene, på samme side af brættet, hvilket gør det brødbrætvenligt.

Efter tilslutning af displayet til tavlen kan vi starte projektet. Efter et par sekunder modtager vi live data fra den nærliggende Xiaomi -enhed. Da enheden bruger Bluetooth 4, er rækkevidden af den ret god. Vi kan let få de data, denne enhed sender fra afstande op til 10 meter eller mere! Vi kan også modtage batteriniveauet på Xiaomi -enheden, men jeg viser ikke denne værdi på skærmen.

Hvis vi bruger denne USB-måler, kan vi se, at den nuværende tegning af dette projekt er omkring 120-150 mA ved hjælp af denne store skærm. Hvis vi bruger et e-papir display, sætter ESP32-kortet i dyb dvaletilstand og får data fra sensoren hvert par minutter, så vi kan gøre dette projekt batteri venligt. Jeg vil prøve dette i en fremtidig video. Dette projekt er blot en demonstration af, at vi kan få data fra denne enhed trådløst.

Trin 5: Projektets kode

Projektets kode
Projektets kode

Lad os nu se softwaresiden af projektet.

Projektets kode er baseret på dette projekt:

Jeg brugte koden, der får disse data fra Xiaomi -enheden, og byggede et selvstændigt projekt med det.

I denne variabel erklærer vi, at vi skal hente friske data hvert 10. sekund.

#define SCAN_TIME 10 // sekunder

Her erklærer vi, at vi vil vise temperaturen i grader Celsius. Hvis du vil bruge det kejserlige system, skal du bare indstille denne variabel til falsk.

boolsk METRIC = sand; // Angiv sand for metrisk system; falsk for kejserlige

Ved opsætningsfunktionen initialiserer vi displayet og Bluetooth -modulet på ESP32 -kortet, og derefter tegner vi brugergrænsefladen på skærmen.

ugyldig opsætning () {

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

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Dernæst søger vi efter Bluetooth -enheder i nærheden hvert 10. sekund. Vi opretter ikke forbindelse til Xiaomi -enheden, da den ikke er nødvendig. Vi søger kun efter nærliggende Bluetooth lavenergiudstyr og kontrollerer udsendelsesannoncepakkerne.

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

forsinkelse (100);

}

Fugtigheds- og temperaturværdierne gemmes i disse pakker, så vi behøver kun at læse dem. Når vi har læst værdierne, viser vi dem på skærmen. Som altid kan du finde et link til koden for dette projekt i beskrivelsen vedhæftet denne instruktionsbog.

Trin 6: Endelige tanker og forbedringer

Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer
Endelige tanker og forbedringer

Nu hvor vi ved, hvordan vi får data trådløst fra denne sensor, kan vi bygge en komplet batteridrevet vejrstation. Da denne Xiaomi -enhed er et kommercielt produkt, giver den stor batterilevetid. Desværre kan vi ikke opnå lignende batteriforbrug på vores projekter endnu. Så jeg planlægger at bruge denne sensor som en udendørs sensor til et vejrstationsprojekt, der vil bruge et stort e-papir display. Det bliver fedt. Jeg vil også søge efter andre Xiaomi Bluetooth -aktiverede enheder, som vi kan hacke på en lignende måde. Bliv hængende.

Jeg vil meget gerne vide din mening om dette projekt. Finder du det nyttigt, at vi kan få data fra nogle kommercielle Bluetooth -enheder? Hvad vil du bygge ved hjælp af denne funktionalitet? Jeg vil gerne læse dine ideer, så send dem venligst i kommentarfeltet herunder. Tak!

Anbefalede: