Мазмұны:
- 1 -қадам: барлық бөлшектерді алыңыз
- 2 -қадам: ESP32 тақтасы
- 3 -қадам: Arduino мен ESP32 үшін 2,8 дюймдік TFT дисплейі
- 4 -қадам: Дисплейді қосу
- 5 -қадам: Жобаның коды
- 6 -қадам: Қорытындылар мен жақсартулар
Бейне: ESP32 Xiaomi Hack - Деректерді сымсыз алу: 6 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:22
Құрметті достар, тағы бір нұсқаулыққа қош келдіңіздер! Бүгін біз Xiaomi температура мен ылғалдылық мониторы ESP32 тақтасының Bluetooth функциясын қолдана отырып жіберетін деректерді алуды үйренеміз.
Көріп отырғаныңыздай, мен ESP32 тақтасын және 2,8 дюймдік TFT дисплейін қолданамын. Дисплейде біз температура мен ылғалдылықты көрсетеміз. Бір қызығы, мен ESP32 тақтасына сенсор қосқан жоқпын. Мен температура мен ылғалдылықты Xiaomi температура мен ылғалдылықтың коммерциялық мониторынан аламын. Бұл қандай керемет! Xiaomi құрылғысындағы дисплей әр секунд сайын жаңартылады, бірақ мен Xiaomi құрылғысының қуатын үнемдеу үшін әр 10 секунд сайын ESP32 тақтасына қосылған дисплейді жаңартамын.
Бұл салқындатылған Xiaomi температурасы мен ылғалдылығы сенсоры СКД дисплейінде температура мен ылғалдылықты көрсетеді, сонымен қатар Bluetooth протоколы арқылы басқа Xiaomi құрылғыларына немесе қосымшаларына деректерді жібере алады. Құрылғылар бір AAA батареясын пайдаланады және бұл коммерциялық өнім болғандықтан, батареяның қызмет ету мерзімі өте жақсы. Ол бір AAA батареясымен бірнеше ай жұмыс істей алады, бұл біздің DIY жобаларымызда қол жеткізе алмайды. Бірнеше апта бұрын мен кейбір ақылды балалар Xiaomi сенсордан деректерді жіберу үшін қолданатын протоколды өзгерте алғанын және ESP32 тақтасының көмегімен бұл деректерді алуға болатынын білдім. Мен оны сынап көрдім, және сіз көріп тұрғандай, ол жұмыс істейді!
1 -қадам: барлық бөлшектерді алыңыз
Енді бұл жобаны қалай құруға болатынын қарастырайық. Бізге ESP32 тақтасы, 2,8 дюймдік ILI9341 дисплейі, Xiaomi температура мен ылғалдылық сенсоры, нан тақтасы және кейбір сымдар қажет.
Міне, мен осы нұсқаулықта қолданатын бөліктерге сілтемелер.
- ESP32 ▶
- 2.8 «Дисплей ▶
- Xiaomi сенсоры ▶
- Нан тақтасы ▶
- Сымдар ▶
- USB есептегіш ▶
- Powerbank ▶
2 -қадам: ESP32 тақтасы
Егер сіз онымен таныс болмасаңыз, ESP32 чипі - біз бұрын бірнеше рет қолданған әйгілі ESP8266 чипінің мұрагері. ESP32 - бұл жануар! Ол 160 МГц жиілікте жұмыс істейтін екі 32 ядроларды, жадының үлкен көлемін, WiFi, Bluetooth және бағасы 7 доллар тұратын басқа да көптеген мүмкіндіктерді ұсынады! Керемет заттар!
Осы тақтаға мен дайындаған егжей -тегжейлі шолуды қараңыз. Мен осы нұсқаулыққа бейнені қостым. Бұл чиптің біздің заттар жасау тәсілімізді неге өзгертетінін түсінуге көмектеседі! ESP32-дегі ең қызықты нәрселердің бірі-бұл өте қуатты болса да, ол тек 10 мОц токты қажет ететін терең ұйқы режимін ұсынады. Бұл ESP32 микросхемасын аз қуатты қосымшалар үшін тамаша етеді.
3 -қадам: Arduino мен ESP32 үшін 2,8 дюймдік TFT дисплейі
Дисплей үлкен және 320x240 пиксель ажыратымдылығын ұсынады. Менің сүйікті дисплейлерімнің бірімен салыстырғанда, 1,8 дюймдік TFT дисплейі сіз оны әлдеқайда үлкен көре аласыз. Экран сенсорлық функцияны ұсынады, бұл қосымша бонус және артқы жағында SD картасының ұясы. Ол SPI интерфейсін қолданады, сондықтан Arduino немесе ESP32 тақтасымен байланыс өте қарапайым. Дисплей бағасы салыстырмалы түрде төмен; Бұл шамамен 11 доллар тұрады, менің ойымша, бұл дисплей ұсынатынның бағасы.
Бұл дисплейдің тағы бір ерекшелігі, ол біз қолданған сенсорлық дисплей сияқты қалқан емес. Осылайша, біз дисплейді Arduino Pro mini, STM32, ESP8266 және ESP32 кез келген тақтаға қосамыз. Бұл өте маңызды, өйткені қазір бізде әр тақтада қолдануға болатын арзан дисплей бар. Осы уақытқа дейін біз осы тақталарда қолдануға болатын жалғыз сенсорлық дисплей Nextion дисплейлері болды, мен оларды кейде қолдансам да, маған ұнамайды.
4 -қадам: Дисплейді қосу
Алдымен біз ESP32 тақтасын 2.8 дюймдік дисплейге қосуымыз керек. Сіз нұсқаулықты қоса берілген схеманы таба аласыз. Мен осыдан екі жыл бұрын шыққан DOIT ESP32 тақтасын қолданамын. Тақтаның бұл нұсқасы енді қол жетімді емес, өйткені оның жаңа нұсқасы бар, ол көбірек түйреуіштерді ұсынады. Тақтаның ескі нұсқасын қолданудың бірден -бір себебі - тақтаның GND түйрегіші тақтаның дәл сол жағында орналасқан, бұл оны тақтаға ыңғайлы етеді.
Дисплейді тақтаға қосқаннан кейін біз жобаны іске қосамыз. Бірнеше секундтан кейін біз жақын орналасқан Xiaomi құрылғысынан тікелей деректерді аламыз. Құрылғы Bluetooth 4 қолданатындықтан, оның диапазоны өте жақсы. Біз бұл құрылғы 10 метрге дейінгі қашықтықтан жіберетін деректерді оңай ала аламыз! Біз Xiaomi құрылғысының батарея деңгейін де ала аламыз, бірақ мен бұл мәнді экранда көрсетпеймін.
Егер біз осы USB есептегішті қолданатын болсақ, бұл үлкен дисплейдің көмегімен жобаның ағымдағы ұтыс шамасы 120-150 мА шамасында екенін көре аламыз. Егер біз электрондық қағаз дисплейін қолданатын болсақ, ESP32 тақтасын терең ұйқы режиміне қойыңыз және сенсордан бірнеше минут сайын деректерді алып тұрсаңыз, біз бұл жобаны батареяға ыңғайлы ете аламыз. Мен мұны алдағы видеода сынап көремін. Бұл жоба бұл құрылғыдан деректерді сымсыз алуға болатындығының дәлелі.
5 -қадам: Жобаның коды
Енді жобаның бағдарламалық жағын қарастырайық.
Жобаның коды осы жобаға негізделген:
Мен Xiaomi құрылғысынан осы деректерді алатын кодты қолдандым және онымен жеке жоба құрдым.
Бұл айнымалы мәнде біз әр 10 секунд сайын жаңа деректер алуымыз керек деп мәлімдейміз.
#SCAN_TIME 10 // секундты анықтаңыз
Мұнда біз температураны Цельсий градусымен көрсеткіміз келетінін мәлімдейміз. Егер сіз империялық жүйені қолданғыңыз келсе, бұл айнымалы мәнді жалған етіп орнатыңыз.
логикалық METRIC = ақиқат; // метрикалық жүйе үшін ақиқатты орнатыңыз; император үшін жалған
Орнату кезінде біз ESP32 тақтасының дисплейі мен Bluetooth модулін инициализациялаймыз, содан кейін экранда пайдаланушы интерфейсін саламыз.
жарамсыз орнату () {
WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // қоңыр түсу детекторын өшіру
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 құрылғысы коммерциялық өнім болғандықтан, ол батареяның керемет қызмет ету мерзімін ұсынады. Өкінішке орай, біз әлі де жобаларымызда ұқсас батареяны тұтынуға қол жеткізе алмаймыз. Сонымен, мен бұл сенсорды электронды қағаздың үлкен дисплейін қолданатын метеостанция жобасы үшін сыртқы сенсор ретінде пайдалануды жоспарлап отырмын. Бұл салқын болады. Сонымен қатар, мен Xiaomi Bluetooth қосылған басқа құрылғыларды іздеймін, оларды біз дәл осылай бұза аламыз. Бізбен бірге қалыңыз.
Мен бұл жоба туралы сіздің пікіріңізді білгім келеді. Кейбір коммерциялық Bluetooth құрылғыларынан деректерді алу пайдалы деп ойлайсыз ба? Сіз бұл функцияны қолдана отырып не құрғыңыз келеді? Мен сіздің идеяларыңызды оқығым келеді, сондықтан оларды төмендегі түсініктеме бөліміне орналастырыңыз. Рахмет!
Ұсынылған:
HC12 сымсыз модулін қолданатын сымсыз Arduino роботы: 7 қадам
HC12 сымсыз модулін қолданатын сымсыз Arduino роботы: Сәлем балалар, қош келдіңіздер. Алдыңғы постымда мен H Bridge Circuit деген не екенін, L293D мотор драйвері IC, L293D мотор драйвері IC жоғары ток қозғалтқыштарының драйверлерін басқаруға және L293D қозғалтқыш тақтасын қалай жасауға және жасауға болатынын түсіндірдім
Raspbian Stretch -те TPN WN7200ND USB сымсыз адаптері бар елу метрлік сымсыз кіру нүктесі: 6 қадам
Raspbian Stretch -те TP Link WN7200ND USB сымсыз адаптері бар елу метрлік сымсыз кіру нүктесі: Raspberry Pi қауіпсіз сымсыз кіру нүктелерін жасау үшін тамаша, бірақ оның ауқымы жақсы емес, мен оны кеңейту үшін TP Link WN7200ND USB сымсыз адаптерін қолдандым. Мен мұны қалай істеу керектігін айтқым келеді Неліктен мен маршрутизатордың орнына таңқурай пиін қолданғым келеді? T
Сымсыз Skype сымсыз телефоны: 3 қадам
Көрінбейтін Skype сымсыз телефоны: Бұл жоба сымсыз скайптың алдыңғы жобаларына негізделген, бірақ бұл схема телефон зарядтағышының базасында ұқыпты сақталған. Мен Uniden 900 Mhz сымсыз телефонды қолданамын. Төменде SkypePhone.xls қараңыз, мен оны қалай дәнекерлегенім туралы Excel кестесін қараңыз
Сирек жер магниттерін алу үшін жұмыс үстелінің қатты дискісін бөліп алу: 8 қадам
Сирек жер магниттерін алу үшін жұмыс үстеліндегі қатты дискіні бөліп алу: Бұл нұсқаулықта мен сізге компьютердің қатты дискісін ажырату және одан сирек кездесетін жер магниттерін алу қадамдарын көрсетемін
DIY сымсыз микрофоннан сымсыз гитаралық жүйе: 4 қадам
DIY сымсыз микрофоннан сымсыз гитаралық жүйеге дейін: Мен бірнеше видеолар мен кейбір топтарды көрдім және олардың көпшілігі гитарада сымсыз жүйені қолданады. Ақылсыздық, қозғалу, серуендеу және сымсыз өздері қалаған нәрсені жасау, сондықтан мен сымның болуын армандаймын .. Бірақ .. мен үшін бұл қазір тым қымбат, сондықтан мен бұған келдім