Satura rādītājs:

ESP32 Xiaomi Hack - iegūstiet datus bezvadu režīmā: 6 soļi (ar attēliem)
ESP32 Xiaomi Hack - iegūstiet datus bezvadu režīmā: 6 soļi (ar attēliem)

Video: ESP32 Xiaomi Hack - iegūstiet datus bezvadu režīmā: 6 soļi (ar attēliem)

Video: ESP32 Xiaomi Hack - iegūstiet datus bezvadu režīmā: 6 soļi (ar attēliem)
Video: Добавление градусника XIaomi lywsd03mmc в ESPHome и в Home Assistant через ESP32 2024, Novembris
Anonim
Image
Image
ESP32 Xiaomi Hack - iegūstiet datus bezvadu režīmā
ESP32 Xiaomi Hack - iegūstiet datus bezvadu režīmā

Dārgie draugi, laipni lūdzam citā Instructable! Šodien mēs uzzināsim, kā iegūt datus, ko šis Xiaomi temperatūras un mitruma monitors pārraida, izmantojot ESP32 plates Bluetooth funkcionalitāti.

Kā redzat, es izmantoju ESP32 plati un 2,8 collu krāsu TFT displeju. Displejā tiek parādīta temperatūra un mitrums. Forši ir tas, ka es neesmu pievienojis nevienu sensoru ESP32 plāksnei. Temperatūru un mitrumu es varu iegūt bezvadu režīmā no šī komerciālā Xiaomi temperatūras un mitruma monitora. Cik forši tas ir! Displejs Xiaomi ierīcē tiek atjaunināts katru sekundi, bet es atjauninu displeju, kas ir savienots ar ESP32 plati ik pēc 10 sekundēm, lai taupītu Xiaomi ierīces enerģiju.

Šis foršais Xiaomi temperatūras un mitruma sensors LCD ekrānā parāda temperatūru un mitrumu, kā arī var pārsūtīt datus uz citām Xiaomi ierīcēm vai lietotnēm, izmantojot Bluetooth protokolu. Ierīces izmanto vienu AAA bateriju, un, tā kā tas ir komerciāls produkts, ierīces akumulatora darbības laiks ir lielisks. Tas var ilgt vairākus mēnešus ar vienu AAA bateriju, ko mēs nevaram sasniegt mūsu DIY projektos. Pirms dažām nedēļām es atklāju, ka dažiem gudriem puišiem izdevās pārveidot protokolu, ko Xiaomi izmanto, lai pārsūtītu datus no sensora, un izdevās iegūt šos datus, izmantojot ESP32 plati. Tāpēc es to izmēģināju, un, kā redzat, tas darbojas!

1. darbība: iegūstiet visas detaļas

Iegūstiet visas detaļas
Iegūstiet visas detaļas

Tagad redzēsim, kā izveidot šo projektu. Mums ir nepieciešama ESP32 tāfele, 2,8 collu ILI9341 displejs, Xiaomi temperatūras un mitruma sensors, maizes dēlis un daži vadi.

Šeit ir dažas saites uz daļām, kuras es izmantošu šajā pamācībā.

  • ESP32 ▶
  • 2,8 collu displejs ▶
  • Xiaomi sensors ▶
  • Maizes dēlis ▶
  • Vadi ▶
  • USB skaitītājs ▶
  • Powerbank ▶

2. darbība: ESP32 tāfele

Image
Image
ESP32 valde
ESP32 valde

Ja jūs to neesat pazīstams, ESP32 mikroshēma ir populārās ESP8266 mikroshēmas pēctecis, ko mēs esam izmantojuši daudzas reizes agrāk. ESP32 ir zvērs! Tas piedāvā divus 32 apstrādes kodolus, kas darbojas 160 MHz, milzīgu atmiņas apjomu, WiFi, Bluetooth un daudzas citas funkcijas, kuru izmaksas ir aptuveni 7 USD! Apbrīnojamas lietas!

Lūdzu, skatieties detalizētu pārskatu, ko esmu sagatavojis šai padomei. Esmu pievienojis video šai instrukcijai. Tas palīdzēs saprast, kāpēc šī mikroshēma uz visiem laikiem mainīs veidu, kādā mēs veidojam lietas! Viena no aizraujošākajām lietām par ESP32 ir tā, ka, lai gan tas ir tik spēcīgs, tas piedāvā dziļā miega režīmu, kas prasa tikai 10 μs strāvas. Tas padara ESP32 par ideālu mikroshēmu mazjaudas lietojumiem.

3. darbība: 2,8 collu TFT displejs Arduino un ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Displejs ir liels un piedāvā 320x240 pikseļu izšķirtspēju. Salīdzinot ar vienu no maniem iecienītākajiem displejiem, 1,8 collu krāsu TFT displeju var redzēt daudz lielāku. Ekrāns piedāvā arī pieskāriena funkcionalitāti, kas ir papildu bonuss, un SD kartes slots aizmugurē. Tas izmanto SPI saskarni, tāpēc savienojums ar Arduino vai ESP32 plati ir ļoti vienkāršs. Displeja izmaksas ir salīdzinoši zemas; tas maksā aptuveni 11 USD, kas, manuprāt, ir godīga cena par to, ko piedāvā šis displejs.

Vēl viena lieta, kas saistīta ar šo displeju, ir tāda, ka tas nav kā vairogs, piemēram, skārienekrāns, ko līdz šim izmantojām. Tādā veidā mēs varam savienot displeju ar jebkuru dēli, Arduino Pro mini, STM32, ESP8266 un ESP32. Tas ir ļoti svarīgi, jo tagad mums ir lēts displejs, ko varam izmantot ar katru dēli. Līdz šim vienīgais skārienekrāns, ko mēs varētu izmantot ar šiem dēļiem, bija Nextion displeji, kas ir dārgāki, un, godīgi sakot, pat ja es tos laiku pa laikam lietoju, man tie īsti nepatīk.

4. darbība: displeja pievienošana

Displeja pievienošana
Displeja pievienošana
Displeja pievienošana
Displeja pievienošana
Displeja pievienošana
Displeja pievienošana
Displeja pievienošana
Displeja pievienošana

Pirmkārt, mums ir jāpievieno ESP32 tāfele 2,8 collu displejam. Shēmu varat atrast vietnē Instructable. Es izmantoju šo DOIT ESP32 plati, kas tika izlaista apmēram pirms diviem gadiem. Šī tāfeles versija vairs nav pieejama, jo tagad ir pieejama jaunāka tās versija, kas piedāvā vairāk tapas. Vienīgais iemesls, kāpēc es izmantoju tāfeles veco versiju, ir tas, ka plāksnes GND tapa ir novietota blakus SPI tapām tajā pašā dēļa pusē, kas padara to draudzīgu maizei.

Pēc displeja pievienošanas pie tāfeles mēs varam ieslēgt projektu. Pēc dažām sekundēm mēs saņemam tiešraides datus no tuvumā esošās Xiaomi ierīces. Tā kā ierīce izmanto Bluetooth 4, tā diapazons ir diezgan labs. Mēs varam viegli iegūt datus, ko šī ierīce pārraida no attāluma līdz 10 metriem vai vairāk! Mēs varam arī saņemt Xiaomi ierīces akumulatora uzlādes līmeni, bet es šo vērtību ekrānā nerādu.

Ja mēs izmantojam šo USB skaitītāju, mēs varam redzēt, ka šī projekta pašreizējais patēriņš ir aptuveni 120-150 mA, izmantojot šo lielo displeju. Ja mēs izmantojam e-papīra displeju, ievietojiet ESP32 plāksni dziļā miega režīmā un ik pēc dažām minūtēm iegūstiet datus no sensora, lai mēs varētu padarīt šo projektu akumulatoru draudzīgu. Es to izmēģināšu nākamajā videoklipā. Šis projekts ir tikai pierādījums tam, ka mēs varam iegūt datus no šīs ierīces bezvadu režīmā.

5. solis: projekta kods

Projekta kodekss
Projekta kodekss

Tagad apskatīsim projekta programmatūras pusi.

Projekta kods ir balstīts uz šo projektu:

Es izmantoju kodu, kas iegūst šos datus no Xiaomi ierīces, un izveidoju ar to atsevišķu projektu.

Šajā mainīgajā lielumā mēs paziņojam, ka mums ir jāiegūst svaigi dati ik pēc 10 sekundēm.

#define SCAN_TIME 10 // sekundes

Šeit mēs paziņojam, ka vēlamies parādīt temperatūru Celsija grādos. Ja vēlaties izmantot Imperial sistēmu, vienkārši iestatiet šo mainīgo uz false.

Būla METRIC = true; // Metrikas sistēmai iestatīt taisnību; nepatiesa imperiālajam

Iestatīšanas funkcijā mēs inicializējam displeju un ESP32 paneļa Bluetooth moduli, un pēc tam ekrānā uzzīmējam lietotāja interfeisu.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // atspējot izslēgšanās detektoru

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Tālāk ik pēc 10 sekundēm mēs meklējam tuvumā esošās Bluetooth ierīces. Mēs neveidojam savienojumu ar Xiaomi ierīci, jo tā nav nepieciešama. Mēs meklējam tikai tuvumā esošās Bluetooth zemas enerģijas perifērijas ierīces un pārbaudām apraides reklāmu paketes.

void loop () {char printLog [256]; Serial.printf ("Sāciet BLE skenēšanu %d sekundes… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Atrasto ierīču skaits: %d / n", skaits);

kavēšanās (100);

}

Mitruma un temperatūras vērtības tiek glabātas šajās paketēs, tāpēc mums tās tikai jālasa. Pēc vērtību izlasīšanas mēs tās parādām ekrānā. Kā vienmēr, šai instrukcijai pievienotajā aprakstā varat atrast saiti uz šī projekta kodu.

6. darbība. Pēdējās domas un uzlabojumi

Pēdējās domas un uzlabojumi
Pēdējās domas un uzlabojumi
Pēdējās domas un uzlabojumi
Pēdējās domas un uzlabojumi

Tagad, kad mēs zinām, kā bezvadu režīmā iegūt datus no šī sensora, mēs varam izveidot pilnīgu laika staciju, kas darbojas ar baterijām. Tā kā šī Xiaomi ierīce ir komerciāls produkts, tā piedāvā lielisku akumulatora darbības laiku. Diemžēl mūsu projektos vēl nevaram sasniegt līdzīgu akumulatora patēriņu. Tātad, es plānoju izmantot šo sensoru kā āra sensoru laika staciju projektam, kurā tiks izmantots liels e-papīra displejs. Būs forši. Es arī meklēšu citas ierīces, kurās ir iespējota Bluetooth ar Bluetooth, kuras mēs varam uzlauzt līdzīgā veidā. Sekojiet līdzi.

Es labprāt uzzinātu jūsu viedokli par šo projektu. Vai jums šķiet noderīgi, ka mēs varam iegūt datus no dažām komerciālām Bluetooth ierīcēm? Ko jūs plānojat izveidot, izmantojot šo funkcionalitāti? Es gribētu izlasīt jūsu idejas, tāpēc, lūdzu, ievietojiet tās komentāru sadaļā zemāk. Paldies!

Ieteicams: