Мазмуну:
- 1 -кадам: Бардык бөлүктөрдү алыңыз
- 2 -кадам: ESP32 тактасы
- 3 -кадам: 2.8 "Arduino жана ESP32 үчүн TFT дисплейи
- 4 -кадам: Дисплейди туташтыруу
- 5 -кадам: Долбоордун коду
- 6 -кадам: Акыркы нерселер жана жакшыртуулар
Video: ESP32 Xiaomi Hack - Зымсыз маалымат алуу: 6 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Урматтуу достор, дагы бир инструкцияга кош келиңиздер! Бүгүн биз бул Xiaomi Температура жана Нымдуулук монитору ESP32 тактасынын Bluetooth функциясын колдонуп өткөргөн маалыматтарды кантип алууну үйрөнөбүз.
Көрүнүп тургандай, мен ESP32 тактасын жана 2.8”түстүү TFT дисплейин колдонуп жатам. Дисплейде биз температураны жана нымдуулукту көрсөтөбүз. Эң сонун нерсе, мен эч кандай сенсорлорду ESP32 тактасына туташтыра элекмин. Мен бул коммерциялык Xiaomi Температура жана Нымдуулук мониторунан температураны жана нымдуулукту зымсыз алам. Бул кандай сонун! Xiaomi түзмөгүндөгү дисплей секунд сайын жаңыртылып турат, бирок мен Xiaomi түзмөгүндө кубаттуулукту үнөмдөө үчүн ESP32 тактасына 10 секунд сайын туташып турган дисплейди жаңыртып турам.
Бул салкын Xiaomi температурасы жана нымдуулугу сенсору LCD дисплейинде температураны жана нымдуулукту көрсөтөт, ошондой эле Bluetooth протоколу аркылуу башка Xiaomi түзмөктөрүнө же колдонмолоруна маалыматтарды өткөрө алат. Түзмөктөр бир эле AAA батареясын колдонушат жана ал коммерциялык продукт болгондуктан, батареянын иштөө мөөнөтү эң сонун. Бул бир эле AAA батарейкасында бир нече ай иштей алат, бул биздин DIY долбоорлорубузга жете албайт. Бир нече жума мурун, мен кээ бир акылдуу балдар Xiaomi сенсордон маалыматтарды берүү үчүн колдонгон протоколду кайра иштетип, ESP32 тактасын колдонуу менен ошол маалыматты алууга жетишкенин билдим. Ошентип, мен аны сынап көрдүм, жана ал көрүп тургандай, ал иштейт!
1 -кадам: Бардык бөлүктөрдү алыңыз
Эми бул долбоорду кантип курууну карап көрөлү. Бизге ESP32 тактайы, 2,8 дюймдук ILI9341 дисплейи, Xiaomi температурасы жана нымдуулугу сенсору, нан тактасы жана кээ бир зымдар керек.
Бул инструкцияда колдоно турган бөлүктөргө шилтемелер бар.
- ESP32 ▶
- 2.8 "Дисплей ▶
- Xiaomi сенсор ▶
- Breadboard ▶
- Зымдар ▶
- USB Метр ▶
- Powerbank ▶
2 -кадам: ESP32 тактасы
Эгерде сиз аны жакшы билбесеңиз, ESP32 чипи - биз мурда көп жолу колдонгон популярдуу ESP8266 чиптин мураскери. ESP32 - бул жырткыч! Бул 160 МГцте иштеген 32 32 өзөктү, эс тутумдун чоң көлөмүн, WiFi, Bluetooth жана баасы 7 доллардын тегерегиндеги көптөгөн башка функцияларды сунуштайт! Укмуш нерселер!
Сураныч, мен бул такта үчүн даярдаган деталдуу кароону көрүңүз. Мен бул Нускамага видеону тиркеп койдум. Бул чип эмне үчүн түбөлүккө нерселерди жасообузду өзгөртөөрүн түшүнүүгө жардам берет! ESP32 жөнүндө эң кызыктуу нерселердин бири-бул абдан күчтүү болгонуна карабастан, терең уйку режимин сунуштайт, ал үчүн 10μΑs гана ток керектелет. Бул ESP32ди аз кубаттуулуктагы тиркемелер үчүн идеалдуу чипке айландырат.
3 -кадам: 2.8 "Arduino жана ESP32 үчүн TFT дисплейи
Дисплей чоң жана 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 -кадам: Долбоордун коду
Эми долбоордун программалык жагын карап көрөлү.
Долбоордун коду бул долбоорго негизделген:
Мен Xiaomi түзмөгүнөн ошол маалыматты алган кодду колдондум жана аны менен өз алдынча долбоор түздүм.
Бул өзгөрмөдө, биз ар бир 10 секунд сайын жаңы маалыматтарды алуубуз керек деп жарыялайбыз.
#аныктоо SCAN_TIME 10 // секунд
Бул жерде биз температураны Цельсий градусында көрсөтүүнү каалайбыз деп жарыялайбыз. Эгерде сиз империялык системаны колдонууну кааласаңыз, анда бул өзгөрмөнү жалган деп коюңуз.
логикалык METRIC = чыныгы; // Метрикалык система үчүн чындыкты коюңуз; император үчүн жалган
Орнотуу функциясында биз ESP32 тактасынын дисплейин жана Bluetooth модулун баштапкы абалга келтиребиз, андан кийин экранда колдонуучу интерфейсин тартабыз.
жараксыз орнотуу () {
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 түзмөгү коммерциялык продукт болгондуктан, батарейканын иштөө мөөнөтүн сунуштайт. Тилекке каршы, биз азырынча биздин долбоорлордо окшош батарея керектөөсүнө жете албайбыз. Ошентип, мен бул сенсорду чоң электрондук кагаз дисплейин колдоно турган метеостанциянын долбоору үчүн сырткы сенсор катары колдонууну пландап жатам. Бул сонун болот. Ошондой эле, мен башка Xiaomi Bluetooth иштетилген түзмөктөрдү издейм, биз дагы ушундай жол менен бузуп алабыз. Бар болуңуз.
Мен бул долбоор боюнча сиздин пикириңизди билгим келет. Кээ бир коммерциялык Bluetooth түзмөктөрүнөн маалыматтарды ала алганыбыз пайдалуу деп ойлойсузбу? Бул функцияны колдонуу менен эмнени курмакчысыз? Мен сиздин идеяларыңызды окугум келет, андыктан аларды төмөндөгү комментарийлер бөлүмүнө жазыңыз. Рахмат!
Сунушталууда:
DIY дем алуу сенсору Arduino менен (өткөргүч токулган сунуу сенсору): 7 кадам (сүрөттөр менен)
DIY дем алуу сенсору Arduino менен (Өткөргүч токулган сенсор): Бул DIY сенсор өткөргүч трикотаж сунуу сенсорунун формасын алат. Ал көкүрөгүңүздү/ашказаныңызды ороп алат, жана көкүрөгүңүз/ашказаныңыз кеңейгенде жана контрактта болгондо, сенсор, демек, Arduinoго берилүүчү маалымат. Ошентип
Соматикалык - Реалдуу дүйнө үчүн маалымат колкабы: 6 кадам (Сүрөттөр менен)
Соматикалык-Реалдуу дүйнө үчүн маалымат колкаптары: 4мм диаметри неодим цилиндр магниттери 4мм диаметри неодим цилиндр магниттери Кол белгилерин которуу үчүн бардык жабдыктар жүктөлгөн жана м
Raspberry Pi маалымат тактасы: 11 кадам (сүрөттөр менен)
Raspberry Pi Bulletin Board: Бул менин чиркөөмдө иштеген долбоор. Биз narthex/lobby аймагында орнотулган жана статикалык слайддарды бир нече секундда айланып өтө турган электрондук жарнак тактасын кааладык
NodeMCUдогу Firebase маалымат базасынан маалыматтарды кантип алуу керек: 7 кадам
NodeMCUдогу Firebase маалымат базасынан маалыматтарды кантип алуу керек: Бул көрсөтмө үчүн, биз Google Firebase маалымат базасынан маалыматтарды алып, андан ары талдоо үчүн NodeMCU аркылуу алып келебиз. Firebase маалымат базасын түзүү үчүн эсеп. 3) жүктөп алуу
Маалымат станциясы (Arduino): 5 кадам (Сүрөттөр менен)
Маалымат станциясы (Arduino): Менин эң акыркы көрсөтмөмө кош келиңиз, өз алдынча маалымат станциясын куруңуз! Бул сонун түзмөк Ethernet калканы бар Arduino Uno менен интернетке туташып, акыркы жаңылыктарды жана жергиликтүү аба ырайын түшүрүп, ЖК дисплейде көрсөтөт.