Sommario:

ESP32 Xiaomi Hack - Ottieni dati in modalità wireless: 6 passaggi (con immagini)
ESP32 Xiaomi Hack - Ottieni dati in modalità wireless: 6 passaggi (con immagini)

Video: ESP32 Xiaomi Hack - Ottieni dati in modalità wireless: 6 passaggi (con immagini)

Video: ESP32 Xiaomi Hack - Ottieni dati in modalità wireless: 6 passaggi (con immagini)
Video: Quando provi a fare un complimento a una ragazza... 2024, Luglio
Anonim
Image
Image
ESP32 Xiaomi Hack - Ottieni dati in modalità wireless
ESP32 Xiaomi Hack - Ottieni dati in modalità wireless

Cari amici benvenuti in un altro Instructable! Oggi impareremo come ottenere i dati che questo monitor di temperatura e umidità Xiaomi trasmette utilizzando la funzionalità Bluetooth della scheda ESP32.

Come puoi vedere, sto usando una scheda ESP32 e un display TFT a colori da 2,8 pollici. Sul display vengono visualizzate la temperatura e l'umidità. La cosa bella è che non ho collegato alcun sensore alla scheda ESP32. Ottengo la temperatura e l'umidità in modalità wireless da questo monitor commerciale di temperatura e umidità Xiaomi. Quant'è fico! Il display del dispositivo Xiaomi viene aggiornato ogni secondo ma aggiorno il display collegato alla scheda ESP32 ogni 10 secondi per risparmiare energia sul dispositivo Xiaomi.

Questo fantastico sensore di temperatura e umidità Xiaomi visualizza la temperatura e l'umidità sul suo display LCD e può anche trasmettere i dati ad altri dispositivi o app Xiaomi utilizzando il protocollo Bluetooth. I dispositivi utilizzano una singola batteria AAA e poiché si tratta di un prodotto commerciale, la durata della batteria del dispositivo è eccellente. Può durare per mesi con una singola batteria AAA, qualcosa che non possiamo ottenere con i nostri progetti fai-da-te. Qualche settimana fa ho scoperto che alcuni ragazzi intelligenti sono riusciti a decodificare il protocollo che Xiaomi utilizza per trasmettere i dati dal sensore e sono riusciti a ottenere quei dati utilizzando una scheda ESP32. Così l'ho provato, e come puoi vedere funziona!

Passaggio 1: ottenere tutte le parti

Ottieni tutte le parti
Ottieni tutte le parti

Vediamo ora come costruire questo progetto. Abbiamo bisogno di una scheda ESP32, un display ILI9341 da 2,8 , il sensore di temperatura e umidità Xiaomi, una breadboard e alcuni fili.

Ecco alcuni link alle parti che userò in questo Instructable.

  • ESP32 ▶
  • Display da 2,8" ▶
  • Sensore Xiaomi ▶
  • Tagliere ▶
  • Fili ▶
  • Misuratore USB ▶
  • Powerbank ▶

Passaggio 2: la scheda ESP32

Image
Image
La scheda ESP32
La scheda ESP32

Se non lo conosci, il chip ESP32 è il successore del popolare chip ESP8266 che abbiamo usato molte volte in passato. L'ESP32 è una bestia! Offre due 32 core di elaborazione che operano a 160MHz, un'enorme quantità di memoria, WiFi, Bluetooth e molte altre funzionalità con un costo di circa 7$! Roba incredibile!

Si prega di guardare la recensione dettagliata che ho preparato per questa scheda. Ho allegato il video su questo Instructable. Aiuterà a capire perché questo chip cambierà per sempre il modo in cui creiamo le cose! Una delle cose più eccitanti dell'ESP32 è che anche se è così potente, offre una modalità di sospensione profonda che richiede solo 10μΑs di corrente. Ciò rende ESP32 il chip ideale per applicazioni a bassa potenza.

Passaggio 3: display TFT da 2,8" per Arduino ed ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Il display è grande e offre una risoluzione di 320x240 pixel. Rispetto a uno dei miei display preferiti, il display TFT a colori da 1,8 pollici lo puoi vedere molto più grande. Lo schermo offre anche funzionalità touch che è un ulteriore vantaggio e uno slot per schede SD sul retro. Utilizza l'interfaccia SPI, quindi la connessione con Arduino o la scheda ESP32 è molto semplice. Il costo del display è relativamente basso; costa circa 11$ che secondo me è un prezzo onesto per quello che offre questo display.

Un'altra cosa simile a questo display è che non si presenta come uno scudo come il display touch che stavamo usando finora. In questo modo, possiamo collegare il display a qualsiasi scheda, Arduino Pro mini, STM32, ESP8266 ed ESP32. Questo è molto importante perché ora abbiamo un display a basso costo che possiamo usare con ogni scheda. Fino ad ora, l'unico display touch che potevamo usare con queste schede erano i display Nextion che sono più costosi e, ad essere sincero, anche se li uso di tanto in tanto, non mi piacciono molto.

Passaggio 4: collegamento del display

Collegamento del display
Collegamento del display
Collegamento del display
Collegamento del display
Collegamento del display
Collegamento del display
Collegamento del display
Collegamento del display

Innanzitutto, dobbiamo collegare la scheda ESP32 al display da 2,8 pollici. Puoi trovare lo schema allegato a Instructable. Sto usando questa scheda DOIT ESP32 che è stata rilasciata circa due anni fa. Questa versione della scheda non è più disponibile poiché ora è disponibile una versione più recente che offre più pin, questa. L'unico motivo per cui sto usando la vecchia versione della scheda è che il pin GND della scheda è posizionato accanto ai pin SPI, sullo stesso lato della scheda, il che lo rende compatibile con la breadboard.

Dopo aver collegato il display alla scheda possiamo accendere il progetto. Dopo pochi secondi, riceviamo dati in tempo reale dal vicino dispositivo Xiaomi. Poiché il dispositivo utilizza il Bluetooth 4, la portata è abbastanza buona. Possiamo facilmente ottenere i dati trasmessi da questo dispositivo da distanze fino a 10 metri o più! Possiamo anche ricevere il livello della batteria del dispositivo Xiaomi ma non visualizzo questo valore sullo schermo.

Se usiamo questo misuratore USB, possiamo vedere che l'assorbimento di corrente di questo progetto è di circa 120-150 mA utilizzando questo grande display. Se utilizziamo un display e-paper, mettiamo la scheda ESP32 in modalità di sospensione profonda e otteniamo dati dal sensore ogni pochi minuti, possiamo rendere questo progetto compatibile con la batteria. Lo proverò in un prossimo video. Questo progetto è solo una dimostrazione che possiamo ottenere dati da questo dispositivo in modalità wireless.

Step 5: Il Codice del Progetto

Il Codice del Progetto
Il Codice del Progetto

Vediamo ora il lato software del progetto.

Il codice del progetto si basa su questo progetto:

Ho usato il codice che ottiene quei dati dal dispositivo Xiaomi e ho creato un progetto autonomo con esso.

In questa variabile, dichiariamo che abbiamo bisogno di ottenere nuovi dati ogni 10 secondi.

#define SCAN_TIME 10 // secondi

Qui dichiariamo di voler visualizzare la temperatura in gradi Celsius. Se vuoi usare il sistema imperiale, imposta questa variabile su false.

METRICA booleana = vero; //Imposta true per il sistema metrico; falso per imperiale

Alla funzione setup inizializziamo il display e il modulo Bluetooth della scheda ESP32 e poi disegniamo l'interfaccia utente sullo schermo.

void setup() {

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disabilita il rilevatore di oscuramento

tft.begin();

Serial.begin(115200);

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

drawUI();

}

Successivamente, cerchiamo i dispositivi Bluetooth nelle vicinanze ogni 10 secondi. Non effettuiamo una connessione al dispositivo Xiaomi poiché non è necessario. Effettuiamo solo la scansione delle periferiche Bluetooth a bassa energia nelle vicinanze e controlliamo i pacchetti pubblicitari trasmessi.

void loop() { char printLog[256]; Serial.printf("Avvia scansione BLE per %d secondi…\n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan->start(SCAN_TIME); int count = foundDevices.getCount(); printf("Conteggio dispositivi trovati: %d\n", conteggio);

ritardo(100);

}

I valori di umidità e temperatura sono memorizzati in quei pacchetti, quindi dobbiamo solo leggerli. Dopo aver letto i valori, li visualizziamo sullo schermo. Come sempre potete trovare un link al codice di questo progetto nella descrizione allegata a questo Instructable.

Passaggio 6: considerazioni finali e miglioramenti

Considerazioni finali e miglioramenti
Considerazioni finali e miglioramenti
Considerazioni finali e miglioramenti
Considerazioni finali e miglioramenti

Ora che sappiamo come ottenere i dati in modalità wireless da questo sensore, possiamo costruire una stazione meteorologica completa a batteria. Poiché questo dispositivo Xiaomi è un prodotto commerciale, offre un'ottima durata della batteria. Sfortunatamente, non possiamo ancora ottenere un consumo di batteria simile sui nostri progetti. Quindi, ho intenzione di utilizzare questo sensore come sensore per esterni per un progetto di stazione meteorologica che utilizzerà un grande display e-paper. Sarà bello. Inoltre, cercherò altri dispositivi abilitati Bluetooth Xiaomi che possiamo hackerare in modo simile. Rimani sintonizzato.

Mi piacerebbe conoscere la tua opinione su questo progetto. Trovi utile che possiamo ottenere dati da alcuni dispositivi Bluetooth commerciali? Cosa costruirai usando questa funzionalità? Mi piacerebbe leggere le tue idee, quindi per favore pubblicale nella sezione commenti qui sotto. Grazie!

Consigliato: