Inhaltsverzeichnis:

ESP32 Xiaomi Hack - Daten drahtlos abrufen - Gunook
ESP32 Xiaomi Hack - Daten drahtlos abrufen - Gunook

Video: ESP32 Xiaomi Hack - Daten drahtlos abrufen - Gunook

Video: ESP32 Xiaomi Hack - Daten drahtlos abrufen - Gunook
Video: M5Stack Data Logger Voltage Graph Tutorial ESP32 2024, November
Anonim
Image
Image
ESP32 Xiaomi Hack - Daten drahtlos abrufen
ESP32 Xiaomi Hack - Daten drahtlos abrufen

Liebe Freunde willkommen zu einem anderen Instructable! Heute werden wir lernen, wie man die Daten erhält, die dieser Xiaomi Temperatur- und Feuchtigkeitsmonitor mit der Bluetooth-Funktionalität der ESP32-Platine überträgt.

Wie Sie sehen, verwende ich ein ESP32-Board und ein 2,8-Zoll-Farb-TFT-Display. Auf dem Display zeigen wir die Temperatur und die Luftfeuchtigkeit an. Das Coole ist, dass ich keine Sensoren an die ESP32-Platine angeschlossen habe. Ich erhalte die Temperatur und die Luftfeuchtigkeit drahtlos von diesem kommerziellen Xiaomi Temperatur- und Feuchtigkeitsmonitor. Wie cool ist das! Das Display auf dem Xiaomi-Gerät wird jede Sekunde aktualisiert, aber ich aktualisiere das Display, das mit der ESP32-Platine verbunden ist, alle 10 Sekunden, um Strom auf dem Xiaomi-Gerät zu sparen.

Dieser coole Xiaomi Temperatur- und Feuchtigkeitssensor zeigt die Temperatur und die Luftfeuchtigkeit auf seinem LCD-Display an und kann die Daten auch über das Bluetooth-Protokoll an andere Xiaomi-Geräte oder Apps übertragen. Die Geräte verwenden eine einzelne AAA-Batterie und da es sich um ein kommerzielles Produkt handelt, ist die Akkulaufzeit des Geräts ausgezeichnet. Es kann monatelang mit einer einzigen AAA-Batterie betrieben werden, was wir bei unseren DIY-Projekten nicht erreichen können. Vor ein paar Wochen habe ich entdeckt, dass es einigen schlauen Jungs gelungen ist, das Protokoll, mit dem Xiaomi die Daten vom Sensor überträgt, zurückzuentwickeln und diese Daten mit einem ESP32-Board abzurufen. Also habe ich es ausprobiert und wie Sie sehen können, funktioniert es!

Schritt 1: Holen Sie sich alle Teile

Holen Sie sich alle Teile
Holen Sie sich alle Teile

Sehen wir uns nun an, wie dieses Projekt erstellt wird. Wir brauchen ein ESP32-Board, ein 2,8-Zoll-ILI9341-Display, den Xiaomi Temperatur- und Feuchtigkeitssensor, ein Steckbrett und einige Kabel.

Hier sind einige Links zu den Teilen, die ich in diesem Instructable verwenden werde.

  • ESP32 ▶
  • 2,8"-Display ▶
  • Xiaomi Sensor ▶
  • Steckbrett ▶
  • Kabel ▶
  • USB-Messgerät ▶
  • Powerbank ▶

Schritt 2: Das ESP32-Board

Image
Image
Das ESP32-Board
Das ESP32-Board

Wenn Sie damit nicht vertraut sind, der ESP32-Chip ist der Nachfolger des beliebten ESP8266-Chips, den wir in der Vergangenheit oft verwendet haben. Der ESP32 ist ein Biest! Es bietet zwei 32-Prozessorkerne, die mit 160 MHz arbeiten, eine enorme Menge an Speicher, WLAN, Bluetooth und viele andere Funktionen zu einem Preis von etwa 7 $! Tolles Zeug!

Bitte sehen Sie sich die ausführliche Rezension an, die ich für dieses Board erstellt habe. Ich habe das Video auf diesem Instructable angehängt. Es wird Ihnen helfen zu verstehen, warum dieser Chip die Art und Weise, wie wir Dinge herstellen, für immer verändern wird! Eines der aufregendsten Dinge am ESP32 ist, dass er trotz seiner hohen Leistung einen Tiefschlafmodus bietet, der nur 10 μΑs Strom benötigt. Dies macht den ESP32 zum idealen Chip für Low-Power-Anwendungen.

Schritt 3: 2,8" TFT-Display für Arduino und ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Das Display ist groß und bietet eine Auflösung von 320 x 240 Pixel. Im Vergleich zu einem meiner Lieblings-Displays, dem 1,8-Zoll-Farb-TFT-Display, kann man es viel größer sehen. Der Bildschirm bietet auch eine Touch-Funktionalität, die ein zusätzlicher Bonus ist, und einen SD-Kartensteckplatz auf der Rückseite. Es verwendet die SPI-Schnittstelle, sodass die Verbindung mit dem Arduino oder dem ESP32-Board sehr einfach ist. Die Kosten für das Display sind relativ gering; Es kostet etwa 11 $, was meiner Meinung nach ein fairer Preis für das ist, was dieses Display bietet.

Eine weitere Besonderheit dieses Displays ist, dass es nicht wie das bisher verwendete Touch-Display als Schutzschild geliefert wird. Auf diese Weise können wir das Display mit jedem Board verbinden, dem Arduino Pro mini, dem STM32, dem ESP8266 und dem ESP32. Dies ist sehr wichtig, da wir jetzt ein kostengünstiges Display haben, das wir mit jedem Board verwenden können. Bisher waren die einzigen Touch-Displays, die wir mit diesen Boards verwenden konnten, die teureren Nextion-Displays, und ehrlich gesagt, obwohl ich sie gelegentlich benutze, mag ich sie nicht wirklich.

Schritt 4: Anschließen des Displays

Anschließen des Displays
Anschließen des Displays
Anschließen des Displays
Anschließen des Displays
Anschließen des Displays
Anschließen des Displays
Anschließen des Displays
Anschließen des Displays

Zuerst müssen wir das ESP32 Board mit dem 2,8“Display verbinden. Sie können den Schaltplan finden, der an Instructable angehängt ist. Ich verwende dieses DOIT ESP32 Board, das vor etwa zwei Jahren veröffentlicht wurde. Diese Version des Boards ist nicht mehr verfügbar, da es jetzt eine neuere Version davon gibt, die mehr Pins bietet, diese. Der einzige Grund, warum ich die alte Version der Platine verwende, ist, dass der GND-Pin der Platine neben den SPI-Pins auf der gleichen Seite der Platine liegt, was sie steckbrettfreundlich macht.

Nachdem wir das Display an das Board angeschlossen haben, können wir das Projekt einschalten. Nach wenigen Sekunden erhalten wir Live-Daten vom nahegelegenen Xiaomi-Gerät. Da das Gerät Bluetooth 4 verwendet, ist die Reichweite ziemlich gut. Wir können die Daten, die dieses Gerät überträgt, problemlos aus Entfernungen von bis zu 10 Metern oder mehr abrufen! Wir können auch den Akkustand des Xiaomi-Geräts empfangen, aber ich zeige diesen Wert nicht auf dem Bildschirm an.

Wenn wir dieses USB-Messgerät verwenden, können wir mit diesem großen Display sehen, dass die Stromaufnahme dieses Projekts etwa 120-150 mA beträgt. Wenn wir ein E-Paper-Display verwenden, das ESP32-Board in den Tiefschlafmodus versetzen und alle paar Minuten Daten vom Sensor abrufen, können wir dieses Projekt batteriefreundlich gestalten. Ich werde dies in einem zukünftigen Video versuchen. Dieses Projekt ist nur eine Demonstration, dass wir Daten von diesem Gerät drahtlos abrufen können.

Schritt 5: Der Code des Projekts

Der Kodex des Projekts
Der Kodex des Projekts

Sehen wir uns nun die Softwareseite des Projekts an.

Der Code des Projekts basiert auf diesem Projekt:

Ich habe den Code verwendet, der diese Daten vom Xiaomi-Gerät erhält, und damit ein eigenständiges Projekt erstellt.

In dieser Variable geben wir an, dass wir alle 10 Sekunden neue Daten abrufen müssen.

#define SCAN_TIME 10 // Sekunden

Hier erklären wir, dass wir die Temperatur in Grad Celsius anzeigen wollen. Wenn Sie das imperiale System verwenden möchten, setzen Sie diese Variable einfach auf false.

boolescher METRISCH = wahr; //Für metrisches System auf true setzen; falsch für imperial

Bei der Setup-Funktion initialisieren wir das Display und das Bluetooth-Modul des ESP32-Boards und zeichnen dann die Benutzeroberfläche auf den Bildschirm.

Leere Einrichtung () {

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // Brownout-Detektor deaktivieren

tft.begin();

Serial.begin(115200);

Serial.println ("ESP32 XIAOMI-ANZEIGE"); initBluetooth();

drawUI();

}

Als nächstes suchen wir alle 10 Sekunden nach Bluetooth-Geräten in der Nähe. Wir stellen keine Verbindung zum Xiaomi-Gerät her, da es nicht benötigt wird. Wir scannen nur nach nahegelegenen Bluetooth-Low-Energy-Peripheriegeräten und überprüfen die gesendeten Werbepakete.

Void Schleife () { char printLog [256]; Serial.printf("BLE-Scan für %d Sekunden starten…\n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan->start(SCAN_TIME); int count = foundDevices.getCount(); printf("Gefundene Geräteanzahl: %d\n", count);

Verzögerung (100);

}

Die Feuchtigkeits- und Temperaturwerte werden in diesen Paketen gespeichert, sodass wir sie nur auslesen müssen. Nachdem wir die Werte gelesen haben, zeigen wir sie auf dem Bildschirm an. Wie immer finden Sie einen Link zum Code dieses Projekts in der Beschreibung, die diesem Instructable beigefügt ist.

Schritt 6: Abschließende Gedanken und Verbesserungen

Abschließende Gedanken & Verbesserungen
Abschließende Gedanken & Verbesserungen
Abschließende Gedanken & Verbesserungen
Abschließende Gedanken & Verbesserungen

Da wir nun wissen, wie man drahtlos Daten von diesem Sensor erhält, können wir eine komplette batteriebetriebene Wetterstation bauen. Da es sich bei diesem Xiaomi-Gerät um ein kommerzielles Produkt handelt, bietet es eine hervorragende Akkulaufzeit. Leider können wir bei unseren Projekten noch keinen ähnlichen Batterieverbrauch erreichen. Also plane ich, diesen Sensor als Außensensor für ein Wetterstationsprojekt zu verwenden, das ein großes E-Paper-Display verwendet. Es wird cool sein. Außerdem werde ich nach anderen Bluetooth-fähigen Geräten von Xiaomi suchen, die wir auf ähnliche Weise hacken können. Bleiben Sie dran.

Ich würde gerne Ihre Meinung zu diesem Projekt erfahren. Finden Sie es nützlich, dass wir Daten von einigen kommerziellen Bluetooth-Geräten abrufen können? Was werden Sie mit dieser Funktionalität erstellen? Ich würde gerne Ihre Ideen lesen, also posten Sie sie bitte in den Kommentaren unten. Vielen Dank!

Empfohlen: