Satura rādītājs:
- 1. darbība: iegūstiet visas detaļas
- 2. darbība: ESP32 tāfele
- 3. darbība: 2,8 collu TFT displejs Arduino un ESP32
- 4. darbība: displeja pievienošana
- 5. solis: projekta kods
- 6. darbība. Pēdējās domas un uzlabojumi
Video: ESP32 Xiaomi Hack - iegūstiet datus bezvadu režīmā: 6 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
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
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
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
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
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
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
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:
Shelly Sense - darbojas bezvadu režīmā (WPC Qi standarts): 5 soļi (ar attēliem)
Shelly Sense - darbināms bezvadu režīmā (WPC Qi standarts): LŪDZU, PIEZĪME: sekojot šai apmācībai, jūs zaudēsit garantiju un riskēsit sabojāt savu Shelly Sense. Dariet to tikai tad, ja zināt, ko darāt, un apzināties riskus. Shelly Sense ir pārsteidzošs produkts, lai sajustu visu
Bezvadu Arduino robots, izmantojot bezvadu moduli HC12: 7 soļi
Bezvadu Arduino robots, izmantojot HC12 bezvadu moduli: Sveiki, puiši, laipni lūdzam atpakaļ. Iepriekšējā ziņojumā es paskaidroju, kas ir H tilta ķēde, L293D motora vadītāja IC, cūciņa L293D motora vadītāja IC, lai vadītu lielas strāvas motoru vadītājus, un kā jūs varat izveidot un izveidot savu L293D motora draivera paneli
PCB rokas ar Arduino (ar iespēju bezvadu režīmā!): 3 soļi
PCB rokas ar Arduino (ar iespēju darboties bezvadu režīmā!): Atjauninājums 28.1.2019. Pašlaik strādāju pie šīs rokas ierīces nākamās versijas. Jūs varat sekot projektam manā YouTube kanālā vai Twitter. Brīdinājums! Es atklāju kļūdu PCB izkārtojumā. Kreisās un augšējās pogas ir pievienotas tikai analogām tapām. Es laboju
Piecdesmit metru diapazona bezvadu piekļuves punkts ar TP Link WN7200ND USB bezvadu adapteri Raspbian Stretch: 6 soļi
Piecdesmit metru diapazona bezvadu piekļuves punkts ar TP Link WN7200ND USB bezvadu adapteri Raspbian Stretch: Raspberry Pi ir lieliski piemērots, lai izveidotu drošus bezvadu piekļuves punktus, taču tam nav laba diapazona, es to izmantoju, izmantojot TP Link WN7200ND USB bezvadu adapteri. Kāpēc es vēlos maršrutētāja vietā izmantot aveņu pi? T
DIY bezvadu mikrofons uz bezvadu ģitāras sistēmu: 4 soļi
DIY bezvadu mikrofons uz bezvadu ģitāras sistēmu: esmu skatījies dažus video un dažas grupas, un gandrīz no tām ģitārā tiek izmantota bezvadu sistēma. Eju traks, kustos, staigāju un daru visu, ko vēlas, bez auklas, tāpēc es sapņoju, ka man tāds būs .. Bet .. man tas tagad ir pārāk dārgi, tāpēc es nonācu pie šī