Բովանդակություն:

ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար ՝ 6 քայլ (նկարներով)
ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար ՝ 6 քայլ (նկարներով)

Video: ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար ՝ 6 քայլ (նկարներով)

Video: ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար ՝ 6 քայլ (նկարներով)
Video: Добавление градусника XIaomi lywsd03mmc в ESPHome и в Home Assistant через ESP32 2024, Հուլիսի
Anonim
Image
Image
ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար
ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար

Հարգելի ընկերներ, բարի գալուստ մեկ այլ Ուսուցիչ: Այսօր մենք կսովորենք, թե ինչպես ստանալ այն տվյալները, որոնք փոխանցում է այս Xiaomi ջերմաստիճանի և խոնավության մոնիտորը ՝ օգտագործելով ESP32 տախտակի Bluetooth ֆունկցիոնալությունը:

Ինչպես տեսնում եք, ես օգտագործում եմ ESP32 տախտակ և 2.8 դյույմանոց TFT էկրան: Էկրանի վրա մենք ցուցադրում ենք ջերմաստիճանը և խոնավությունը: Ամենահետաքրքիրն այն է, որ ես ոչ մի տվիչ չեմ միացրել ESP32 տախտակին: Ես ջերմաստիճանը և խոնավությունը անլար կերպով ստանում եմ այս առևտրային Xiaomi ջերմաստիճանի և խոնավության մոնիտորից: Ինչ թույն է դա: Xiaomi սարքի էկրանը թարմացվում է ամեն վայրկյան, բայց ես թարմացնում եմ այն էկրանը, որը միացված է ESP32 տախտակին յուրաքանչյուր 10 վայրկյանը մեկ ՝ Xiaomi սարքի էներգիան խնայելու համար:

Այս զովացուցիչ ջերմաստիճանի և խոնավության սենսորը ցուցադրում է ջերմաստիճանը և խոնավությունը իր LCD էկրանին, և այն կարող է նաև տվյալները փոխանցել այլ Xiaomi սարքերին կամ ծրագրերին ՝ օգտագործելով Bluetooth արձանագրությունը: Սարքերն օգտագործում են մեկ AAA մարտկոց, և քանի որ այն առևտրային արտադրանք է, սարքի մարտկոցի կյանքը գերազանց է: Այն կարող է տևել ամիսներ շարունակ մեկ AAA մարտկոցի վրա, ինչը մենք չենք կարող հասնել մեր DIY նախագծերի վրա: Մի քանի շաբաթ առաջ ես հայտնաբերեցի, որ որոշ խելացի տղաներ կարողացել են հակադարձել այն արձանագրությանը, որը Xiaomi- ն օգտագործում է սենսորից տվյալները փոխանցելու համար և կարողացել են ստանալ այդ տվյալները ESP32 տախտակի միջոցով: Այսպիսով, ես փորձեցի այն, և ինչպես տեսնում եք, այն աշխատում է:

Քայլ 1: Ստացեք բոլոր մասերը

Ստացեք բոլոր մասերը
Ստացեք բոլոր մասերը

Հիմա տեսնենք, թե ինչպես կառուցել այս նախագիծը: Մեզ պետք է ESP32 տախտակ, 2.8 դյույմանոց ILI9341 էկրան, Xiaomi ջերմաստիճանի և խոնավության տվիչ, տախտակ և որոշ լարեր:

Ահա մի քանի հղումներ այն մասերի, որոնք ես պատրաստվում եմ օգտագործել սույն Հրահանգում:

  • ESP32 ▶
  • 2.8 "Displayուցադրել ▶
  • Xiaomi ցուցիչ ▶
  • Breadboard ▶
  • Լարեր ▶
  • USB հաշվիչ ▶
  • Powerbank ▶

Քայլ 2: ESP32 խորհուրդը

Image
Image
ESP32 խորհուրդը
ESP32 խորհուրդը

Եթե դուք ծանոթ չեք դրան, ESP32 չիպը հանդիսանում է հայտնի ESP8266 չիպի իրավահաջորդը, որը մենք բազմիցս օգտագործել ենք անցյալում: ESP32- ը գազան է: Այն առաջարկում է երկու 32 պրոցեսորային միջուկներ, որոնք աշխատում են 160 ՄՀց հաճախականությամբ, հսկայական քանակությամբ հիշողություն, WiFi, Bluetooth և բազմաթիվ այլ հնարավորություններ ՝ մոտ 7 $ արժողությամբ: Amazարմանալի իրեր!

Խնդրում ենք դիտել այս տախտակի համար պատրաստած մանրամասն ակնարկը: Ես կցել եմ այս հրահանգի տեսանյութը: Դա կօգնի հասկանալ, թե ինչու է այս չիպը ընդմիշտ փոխելու իրերի ստեղծման եղանակը: ESP32- ի ամենահուզիչ բաներից մեկն այն է, որ չնայած այն այնքան հզոր է, բայց այն առաջարկում է խոր քնի ռեժիմ, որը պահանջում է ընդամենը 10μΑ հոսանք: Սա ESP32- ը դարձնում է իդեալական չիպ ցածր էներգիայի կիրառման համար:

Քայլ 3: 2.8 "TFT էկրան Arduino- ի և ESP32- ի համար

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Էկրանը մեծ է, այն առաջարկում է 320x240 պիքսել թույլատրելիություն: Իմ նախընտրած դիսփլեյներից մեկի ՝ 1.8 դյույմանոց TFT դիսփլեյի համեմատ, այն կարող եք տեսնել շատ ավելի մեծ: Էկրանը նաև առաջարկում է հպման գործառույթ, որը լրացուցիչ բոնուս է և հետևի SD քարտի բնիկ: Այն օգտագործում է SPI ինտերֆեյսը, ուստի Arduino- ի կամ ESP32 տախտակի հետ կապը շատ պարզ է: Էկրանի արժեքը համեմատաբար ցածր է. այն արժե մոտ 11 դոլար, ինչը, իմ կարծիքով, արդար գին է այն բանի համար, ինչ առաջարկում է այս էկրանը:

Այս ցուցադրման մեկ այլ բան այն է, որ այն չի հանդիսանում վահան, ինչպես սենսորային էկրանը, որը մենք մինչ այժմ օգտագործում էինք: Այս կերպ, մենք կարող ենք էկրանը միացնել ցանկացած տախտակի, Arduino Pro mini- ի, STM32- ի, ESP8266- ի և ESP32- ի: Սա շատ կարևոր է, քանի որ մենք այժմ ունենք էժան էկրան, որը կարող ենք օգտագործել յուրաքանչյուր տախտակի հետ: Մինչ այժմ, միակ սենսորային էկրանը, որը մենք կարող էինք օգտագործել այս տախտակների հետ, Nextion- ի ցուցադրումներն էին, որոնք ավելի թանկ են, և եթե անկեղծ լինեմ, չնայած ժամանակ առ ժամանակ դրանք օգտագործում եմ, դրանք ինձ իսկապես դուր չեն գալիս:

Քայլ 4: Էկրանը միացնելը

Էկրանը միացնելը
Էկրանը միացնելը
Էկրանը միացնելը
Էկրանը միացնելը
Էկրանը միացնելը
Էկրանը միացնելը
Էկրանը միացնելը
Էկրանը միացնելը

Նախ, մենք պետք է ESP32 խորհուրդը միացնենք 2.8 դյույմանոց էկրանին: Դուք կարող եք գտնել Instructable- ին կցված սխեմատիկ պատկերը: Ես օգտագործում եմ այս DOIT ESP32 խորհուրդը, որը թողարկվել է մոտ երկու տարի առաջ: Տախտակի այս տարբերակը այլևս հասանելի չէ, քանի որ այժմ հասանելի է դրա ավելի նոր տարբերակը, որն առաջարկում է ավելի շատ կապում ՝ այս մեկը: Տախտակի հին տարբերակը օգտագործելու միակ պատճառն այն է, որ տախտակի GND կապը, որը տեղադրված է SPI կապանքների կողքին, տախտակի նույն կողմում, ինչը դարձնում է այն հարմարավետ հացահատիկի համար:

Էկրանը տախտակին միացնելուց հետո մենք կարող ենք էներգիա հաղորդել նախագծին: Մի քանի վայրկյան անց մենք կենդանի տվյալներ ենք ստանում մոտակա Xiaomi սարքից: Քանի որ սարքն օգտագործում է Bluetooth 4, դրա տիրույթը բավականին լավ է: Մենք կարող ենք հեշտությամբ ստանալ այս սարքի փոխանցած տվյալները մինչև 10 մետր կամ ավելի հեռավորություններից: Մենք կարող ենք նաև ստանալ Xiaomi սարքի մարտկոցի մակարդակը, բայց ես այդ արժեքը չեմ ցուցադրում էկրանին:

Եթե մենք օգտագործում ենք այս USB հաշվիչը, մենք կարող ենք տեսնել, որ այս նախագծի ընթացիկ վիճակահանությունը կազմում է մոտ 120-150 մԱ ՝ օգտագործելով այս մեծ էկրանը: Եթե մենք օգտագործում ենք էլեկտրոնային թղթի էկրան, ESP32 տախտակը դնում ենք խորը քնի ռեժիմում և սենսորից տվյալներ ենք ստանում ամեն մի քանի րոպեն մեկ, մենք կարող ենք այս նախագծի մարտկոցը դարձնել բարեկամական: Սա կփորձեմ ապագա տեսահոլովակում: Այս նախագիծը պարզապես ցուցադրում է, որ մենք կարող ենք տվյալ սարքից անլար տվյալներ ստանալ:

Քայլ 5. Նախագծի ծածկագիրը

Րագրի ծածկագիրը
Րագրի ծածկագիրը

Եկեք այժմ տեսնենք ծրագրի ծրագրային կողմը:

Projectրագրի ծածկագիրը հիմնված է այս նախագծի վրա ՝

Ես օգտագործեցի այն կոդը, որը ստանում է այդ տվյալները Xiaomi սարքից և դրա հետ ստեղծեցի առանձին նախագիծ:

Այս փոփոխականում մենք հայտարարում ենք, որ պետք է թարմ տվյալներ ստանալ ամեն 10 վայրկյանը մեկ:

#սահմանեք SCAN_TIME 10 // վայրկյան

Այստեղ մենք հայտարարում ենք, որ ցանկանում ենք ջերմաստիճանը ցուցադրել elsելսիուսի աստիճանով: Եթե ցանկանում եք օգտագործել կայսերական համակարգը, պարզապես այս փոփոխականը սահմանեք կեղծ:

բուլյան METRIC = ճշմարիտ; // Սահմանել ճշմարիտ մետրային համակարգի համար; կեղծ կայսերականի համար

Կարգավորման գործառույթում մենք նախաստորագրում ենք ESP32 տախտակի էկրանը և Bluetooth մոդուլը, այնուհետև էկրանին գծում ենք օգտագործողի միջերեսը:

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // անջատել brownout դետեկտորը

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Հաջորդը, մենք մոտ 10 վայրկյանը մեկ փնտրում ենք մոտակա Bluetooth սարքեր: Մենք չենք կապում Xiaomi սարքի հետ, քանի որ դրա կարիքը չկա: Մենք սկանավորում ենք միայն մոտակա Bluetooth ցածր էներգիայի ծայրամասային սարքերը և ստուգում ենք հեռարձակվող գովազդային փաթեթները:

void loop () {char printLog [256]; Serial.printf («Սկսել BLE սկան %d վայրկյան… / n», SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> սկիզբ (SCAN_TIME); int count = foundDevices.getCount (); printf ("Գտնված սարքի քանակը` %d / n ", հաշվարկ);

ուշացում (100);

}

Խոնավության և ջերմաստիճանի արժեքները պահվում են այդ փաթեթներում, ուստի մեզ մնում է միայն կարդալ դրանք: Արժեքները կարդալուց հետո դրանք ցուցադրում ենք էկրանին: Ինչպես միշտ, այս ծրագրի կոդի հղումը կարող եք գտնել սույն Հրահանգին կից նկարագրության մեջ:

Քայլ 6: Վերջնական արդյունքներ և բարելավումներ

Վերջնական չնայած և բարելավումներ
Վերջնական չնայած և բարելավումներ
Վերջնական չնայած և բարելավումներ
Վերջնական չնայած և բարելավումներ

Այժմ, երբ մենք գիտենք, թե ինչպես կարելի է անլար տվյալներ ստանալ այս սենսորից, կարող ենք կառուցել մարտկոցով աշխատող եղանակային կայան: Քանի որ այս Xiaomi սարքը կոմերցիոն արտադրանք է, այն առաջարկում է մարտկոցի մեծ կյանք: Unfortunatelyավոք, մենք դեռ չենք կարող մարտկոցի նման սպառման հասնել մեր նախագծերի վրա: Այսպիսով, ես նախատեսում եմ օգտագործել այս սենսորը որպես արտաքին սենսոր եղանակային կայանի նախագծի համար, որը կօգտագործի էլեկտրոնային թղթի մեծ էկրան: Թույն կլինի: Բացի այդ, ես պատրաստվում եմ որոնել Xiaomi Bluetooth- ով միացված այլ սարքեր, որոնք մենք կարող ենք նման կերպ կոտրել: Մնացեք մեզ հետ.

Ես կցանկանայի իմանալ ձեր կարծիքը այս նախագծի վերաբերյալ: Օգտակար համարու՞մ եք, որ մենք կարող ենք տվյալներ ստանալ որոշ կոմերցիոն Bluetooth սարքերից: Ի՞նչ եք պատրաստվում կառուցել ՝ օգտագործելով այս գործառույթը: Ես կցանկանայի կարդալ ձեր գաղափարները, այնպես որ դրանք տեղադրեք ստորև բերված մեկնաբանությունների բաժնում: Շնորհակալություն

Խորհուրդ ենք տալիս: