Inhoudsopgave:

ESP32 Xiaomi Hack - Draadloos gegevens ophalen - Ajarnpa
ESP32 Xiaomi Hack - Draadloos gegevens ophalen - Ajarnpa

Video: ESP32 Xiaomi Hack - Draadloos gegevens ophalen - Ajarnpa

Video: ESP32 Xiaomi Hack - Draadloos gegevens ophalen - Ajarnpa
Video: 🔶 Flipper Zero Fake Videos | everywhere... #shorts 2024, December
Anonim
Image
Image
ESP32 Xiaomi Hack - Krijg draadloos gegevens
ESP32 Xiaomi Hack - Krijg draadloos gegevens

Beste vrienden welkom bij een andere Instructable! Vandaag gaan we leren hoe we de gegevens kunnen krijgen die deze Xiaomi-temperatuur- en vochtigheidsmonitor verzendt met behulp van de Bluetooth-functionaliteit van het ESP32-bord.

Zoals je kunt zien, gebruik ik een ESP32-bord en een 2,8-inch TFT-kleurenscherm. Op het display geven we de temperatuur en de luchtvochtigheid weer. Het leuke is dat ik geen sensoren op het ESP32-bord heb aangesloten. Ik krijg de temperatuur en de luchtvochtigheid draadloos van deze commerciële Xiaomi-temperatuur- en vochtigheidsmeter. Hoe cool is dat! Het scherm op het Xiaomi-apparaat wordt elke seconde bijgewerkt, maar ik update het scherm dat is aangesloten op het ESP32-bord elke 10 seconden om stroom te besparen op het Xiaomi-apparaat.

Deze coole Xiaomi-temperatuur- en vochtigheidssensor geeft de temperatuur en de vochtigheid weer op het LCD-scherm en kan de gegevens ook naar andere Xiaomi-apparaten of apps verzenden met behulp van het Bluetooth-protocol. De apparaten gebruiken een enkele AAA-batterij en aangezien het een commercieel product is, is de levensduur van de batterij van het apparaat uitstekend. Hij gaat maandenlang mee op een enkele AAA-batterij, iets wat we bij onze doe-het-zelfprojecten niet kunnen bereiken. Een paar weken geleden ontdekte ik dat een paar slimme jongens erin slaagden om het protocol dat Xiaomi gebruikt om de gegevens van de sensor te verzenden, te reverse-engineeren en slaagden erin om die gegevens te krijgen met behulp van een ESP32-bord. Dus ik heb het geprobeerd, en zoals je kunt zien werkt het!

Stap 1: Verkrijg alle onderdelen

Krijg alle onderdelen
Krijg alle onderdelen

Laten we nu kijken hoe we dit project kunnen bouwen. We hebben een ESP32-bord nodig, een 2,8-inch ILI9341-display, de Xiaomi-temperatuur- en vochtigheidssensor, een breadboard en enkele draden.

Hier zijn enkele links naar de onderdelen die ik in deze Instructable ga gebruiken.

  • ESP32 ▶
  • 2,8" scherm ▶
  • Xiaomi-sensor ▶
  • Breadboard ▶
  • Draden ▶
  • USB-meter ▶
  • Powerbank ▶

Stap 2: Het ESP32-bord

Image
Image
Het ESP32-bord
Het ESP32-bord

Mocht je er niet bekend mee zijn, de ESP32 chip is de opvolger van de populaire ESP8266 chip die we in het verleden al vaker hebben gebruikt. De ESP32 is een beest! Het biedt twee 32 verwerkingskernen die werken op 160 MHz, een enorme hoeveelheid geheugen, WiFi, Bluetooth en vele andere functies met een kostprijs van ongeveer $ 7! Geweldige dingen!

Bekijk de gedetailleerde recensie die ik voor dit bord heb opgesteld. Ik heb de video op deze Instructable bijgevoegd. Het zal helpen begrijpen waarom deze chip de manier waarop we dingen maken voor altijd zal veranderen! Een van de meest opwindende dingen van de ESP32 is dat, hoewel hij zo krachtig is, hij een diepe slaapmodus biedt die slechts 10μΑs stroom nodig heeft. Dit maakt de ESP32 de ideale chip voor toepassingen met een laag stroomverbruik.

Stap 3: 2,8" TFT-display voor Arduino en ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Het scherm is groot en biedt een resolutie van 320x240 pixels. Vergeleken met een van mijn favoriete schermen, het 1,8” kleuren TFT-scherm zie je het een stuk groter. Het scherm biedt ook aanraakfunctionaliteit, wat een toegevoegde bonus is, en een SD-kaartsleuf aan de achterkant. Het maakt gebruik van de SPI-interface, dus de verbinding met de Arduino of het ESP32-bord is heel eenvoudig. De kosten van het display zijn relatief laag; het kost ongeveer 11 $, wat naar mijn mening een eerlijke prijs is voor wat dit scherm biedt.

Iets anders aan dit scherm is dat het niet als een schild wordt geleverd zoals het aanraakscherm dat we tot nu toe gebruikten. Op deze manier kunnen we het display op elk bord aansluiten, de Arduino Pro mini, de STM32, de ESP8266 en de ESP32. Dit is erg belangrijk omdat we nu een goedkope display hebben die we bij elk bord kunnen gebruiken. Tot nu toe waren de enige aanraakschermen die we met deze borden konden gebruiken de Nextion-schermen die duurder zijn, en om eerlijk te zijn, hoewel ik ze van tijd tot tijd gebruik, vind ik ze niet echt leuk.

Stap 4: Het beeldscherm aansluiten

Het beeldscherm aansluiten
Het beeldscherm aansluiten
Het beeldscherm aansluiten
Het beeldscherm aansluiten
Het beeldscherm aansluiten
Het beeldscherm aansluiten
Het beeldscherm aansluiten
Het beeldscherm aansluiten

Eerst moeten we het ESP32-bord aansluiten op het 2,8-inch display. U vindt het schema bij Instructable. Ik gebruik dit DOIT ESP32-bord dat ongeveer twee jaar geleden is uitgebracht. Deze versie van het bord is niet langer beschikbaar omdat er nu een nieuwere versie van is die meer pinnen biedt, deze. De enige reden dat ik de oude versie van het bord gebruik, is dat de GND-pin van het bord naast de SPI-pinnen is geplaatst, aan dezelfde kant van het bord, wat het breadboard-vriendelijk maakt.

Nadat we het display op het bord hebben aangesloten, kunnen we het project opstarten. Na een paar seconden ontvangen we live gegevens van het nabijgelegen Xiaomi-apparaat. Omdat het apparaat Bluetooth 4 gebruikt, is het bereik ervan redelijk goed. We kunnen gemakkelijk de gegevens krijgen die dit apparaat verzendt van afstanden tot 10 meter of meer! We kunnen ook het batterijniveau van het Xiaomi-apparaat ontvangen, maar ik geef deze waarde niet op het scherm weer.

Als we deze USB-meter gebruiken, kunnen we zien dat de huidige stroomafname van dit project ongeveer 120-150 mA is met dit grote display. Als we een e-paperdisplay gebruiken, het ESP32-bord in de diepe slaapmodus zetten en om de paar minuten gegevens van de sensor krijgen, kunnen we dit project batterijvriendelijk maken. Ik zal dit in een toekomstige video proberen. Dit project is slechts een demonstratie dat we draadloos gegevens van dit apparaat kunnen krijgen.

Stap 5: De code van het project

De code van het project
De code van het project

Laten we nu de softwarekant van het project bekijken.

De code van het project is gebaseerd op dit project:

Ik gebruikte de code die die gegevens van het Xiaomi-apparaat haalt en bouwde er een op zichzelf staand project mee.

In deze variabele verklaren we dat we elke 10 seconden nieuwe gegevens moeten krijgen.

#define SCAN_TIME 10 // seconden

Hierbij verklaren we dat we de temperatuur in graden Celsius willen weergeven. Als u het imperiale systeem wilt gebruiken, stelt u deze variabele in op false.

booleaans METRISCH = waar; //Instellen waar voor metrisch systeem; false voor imperial

Bij de setup-functie initialiseren we het display en de Bluetooth-module van het ESP32-bord en tekenen we vervolgens de gebruikersinterface op het scherm.

ongeldige setup() {

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // schakel brownout-detector uit

tft.begin();

Serieel.begin(115200);

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

drawUI();

}

Vervolgens zoeken we elke 10 seconden naar Bluetooth-apparaten in de buurt. We maken geen verbinding met het Xiaomi-apparaat omdat dit niet nodig is. We scannen alleen naar Bluetooth-randapparatuur met laag energieverbruik in de buurt en controleren de uitgezonden advertentiepakketten.

void loop() { char printLog [256]; Serial.printf("Start BLE-scan voor %d seconden…\n", SCAN_TIME); BLEScanResults gevondenDevices = pBLEScan->start(SCAN_TIME); int count = gevondenDevices.getCount(); printf("Aantal apparaten gevonden: %d\n", aantal);

vertraging (100);

}

De vochtigheids- en temperatuurwaarden worden in die pakketten opgeslagen, dus we hoeven ze alleen maar uit te lezen. Nadat we de waarden hebben gelezen, geven we ze weer op het scherm. Zoals altijd vindt u een link naar de code van dit project in de beschrijving bij deze Instructable.

Stap 6: Laatste gedachten en verbeteringen

Laatste gedachten en verbeteringen
Laatste gedachten en verbeteringen
Laatste gedachten en verbeteringen
Laatste gedachten en verbeteringen

Nu we weten hoe we draadloos gegevens van deze sensor kunnen krijgen, kunnen we een compleet weerstation op batterijen bouwen. Aangezien dit Xiaomi-apparaat een commercieel product is, biedt het een lange batterijduur. Helaas kunnen we voor onze projecten nog geen vergelijkbaar batterijverbruik bereiken. Dus ik ben van plan deze sensor te gebruiken als een buitensensor voor een weerstationproject dat een groot e-paperdisplay zal gebruiken. Het zal cool zijn. Ik ga ook op zoek naar andere Xiaomi Bluetooth-apparaten die we op een vergelijkbare manier kunnen hacken. Blijf kijken.

Ik zou graag uw mening over dit project willen weten. Vindt u het handig dat we gegevens van sommige commerciële Bluetooth-apparaten kunnen krijgen? Wat ga je bouwen met deze functionaliteit? Ik zou graag uw ideeën willen lezen, dus plaats ze alstublieft in de opmerkingen hieronder. Bedankt!

Aanbevolen: