Բովանդակություն:
- Քայլ 1: Ստացեք բոլոր մասերը
- Քայլ 2: ESP32 խորհուրդը
- Քայլ 3: 2.8 "TFT էկրան Arduino- ի և ESP32- ի համար
- Քայլ 4: Էկրանը միացնելը
- Քայլ 5. Նախագծի ծածկագիրը
- Քայլ 6: Վերջնական արդյունքներ և բարելավումներ
Video: ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար ՝ 6 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Հարգելի ընկերներ, բարի գալուստ մեկ այլ Ուսուցիչ: Այսօր մենք կսովորենք, թե ինչպես ստանալ այն տվյալները, որոնք փոխանցում է այս 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 խորհուրդը
Եթե դուք ծանոթ չեք դրան, ESP32 չիպը հանդիսանում է հայտնի ESP8266 չիպի իրավահաջորդը, որը մենք բազմիցս օգտագործել ենք անցյալում: ESP32- ը գազան է: Այն առաջարկում է երկու 32 պրոցեսորային միջուկներ, որոնք աշխատում են 160 ՄՀց հաճախականությամբ, հսկայական քանակությամբ հիշողություն, WiFi, Bluetooth և բազմաթիվ այլ հնարավորություններ ՝ մոտ 7 $ արժողությամբ: Amazարմանալի իրեր!
Խնդրում ենք դիտել այս տախտակի համար պատրաստած մանրամասն ակնարկը: Ես կցել եմ այս հրահանգի տեսանյութը: Դա կօգնի հասկանալ, թե ինչու է այս չիպը ընդմիշտ փոխելու իրերի ստեղծման եղանակը: ESP32- ի ամենահուզիչ բաներից մեկն այն է, որ չնայած այն այնքան հզոր է, բայց այն առաջարկում է խոր քնի ռեժիմ, որը պահանջում է ընդամենը 10μΑ հոսանք: Սա ESP32- ը դարձնում է իդեալական չիպ ցածր էներգիայի կիրառման համար:
Քայլ 3: 2.8 "TFT էկրան Arduino- ի և ESP32- ի համար
Էկրանը մեծ է, այն առաջարկում է 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 սարքերից: Ի՞նչ եք պատրաստվում կառուցել ՝ օգտագործելով այս գործառույթը: Ես կցանկանայի կարդալ ձեր գաղափարները, այնպես որ դրանք տեղադրեք ստորև բերված մեկնաբանությունների բաժնում: Շնորհակալություն
Խորհուրդ ենք տալիս:
Անլար ջերմաստիճանի և խոնավության տվիչի տվյալներ Excel- ին ուղարկելը. 34 քայլ
Անլար ջերմաստիճանի և խոնավության տվիչի տվյալների փոխանցում Excel- ին. Այս տեքստի կանգառի միջոցով դուք պետք է
Անլար թրթռման և ջերմաստիճանի տվիչների տվյալներ MySQL- ում ՝ օգտագործելով Node-RED: 40 քայլ
Անլար թրթռումների և ջերմաստիճանի տվիչների տվյալներ MySQL- ին Node-RED- ի միջոցով. Ներկայացնում ենք NCD- ի Long Range IoT Industrial անլար թրթռման և ջերմաստիճանի տվիչը, որը կարող է պարծենալ մինչև 2 մղոն հեռավորությամբ `անլար ցանցային ցանցի կառուցվածքի օգտագործմամբ: Ներառելով ճշգրիտ 16-բիթանոց թրթռման և ջերմաստիճանի տվիչ ՝ այս սարքը փոխում է
Անլար թրթռումների և ջերմաստիճանի տվիչների տվյալներ Excel- ին Node-RED- ի միջոցով ուղարկելը. 25 քայլ
Անլար թրթռումների և ջերմաստիճանի տվիչների տվյալներ Excel- ին ուղարկելով Node-RED- ի միջոցով. Ներկայացնելով NCD- ի Long Range IoT Industrial անլար թրթռման և ջերմաստիճանի տվիչը, որը կարող է պարծենալ մինչև 2 մղոն հեռավորությամբ `անլար ցանցային ցանցի կառուցվածքի օգտագործմամբ: Ներառելով ճշգրիտ 16-բիթանոց թրթռման և ջերմաստիճանի տվիչ ՝ այս սարքը փոխում է
Անլար թրթռման և ջերմաստիճանի տվյալներ ուղարկել Google թերթիկներին ՝ օգտագործելով Node-RED ՝ 37 քայլ
Node-RED- ի միջոցով Google թերթիկներին անլար թրթռման և ջերմաստիճանի տվյալներ ուղարկելը. Ներկայացնելով NCD- ի Long Range IoT Industrial անլար թրթռման և ջերմաստիճանի տվիչը, որը կարող է պարծենալ մինչև 2 մղոն հեռավորությամբ `անլար ցանցային ցանցի կառուցվածքի օգտագործմամբ: Ներառելով ճշգրիտ 16-բիթանոց թրթռման և ջերմաստիճանի տվիչ ՝ այս սարքը փոխում է
IoT Long Range անլար ջերմաստիճանի և խոնավության տվիչի տվյալներ Google Sheet- ին ուղարկելը ՝ 39 քայլ
IoT Long Range անլար ջերմաստիճանի և խոնավության տվիչի տվյալներ ուղարկելով Google թերթ կողքին բացի Այս տեքստի կանգառի միջոցով դուք պետք է