Съдържание:
- Стъпка 1: Вземете всички части
- Стъпка 2: Платката ESP32
- Стъпка 3: 2.8 "TFT дисплей за Arduino и ESP32
- Стъпка 4: Свързване на дисплея
- Стъпка 5: Кодът на проекта
- Стъпка 6: Последни мисли и подобрения
Видео: ESP32 Xiaomi Hack - Получаване на данни безжично: 6 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Скъпи приятели, добре дошли в друг Instructable! Днес ще научим как да получим данните, които този монитор за температура и влажност на Xiaomi предава, използвайки Bluetooth функционалността на платката ESP32.
Както можете да видите, използвам ESP32 платка и 2.8”цветен TFT дисплей. На дисплея показваме температурата и влажността. Готиното е, че не съм свързал никакви сензори към платката ESP32. Получавам безжично температурата и влажността от този търговски монитор за температура и влажност на Xiaomi. Колко готино е това! Дисплеят на устройството Xiaomi се актуализира всяка секунда, но аз актуализирам дисплея, който е свързан към платката ESP32 на всеки 10 секунди, за да пести енергия на устройството Xiaomi.
Този хладен сензор за температура и влажност на Xiaomi показва температурата и влажността на LCD дисплея си и може също да предава данните към други устройства или приложения на Xiaomi, използвайки Bluetooth протокола. Устройствата използват една батерия AAA и тъй като това е търговски продукт, животът на батерията на устройството е отличен. Той може да издържи с една батерия AAA в продължение на месеци, нещо, което не можем да постигнем в нашите проекти „направи си сам“. Преди няколко седмици открих, че някои умни момчета са успели да обърнат обратно протокола, който Xiaomi използва за предаване на данните от сензора, и са успели да получат тези данни с помощта на платка ESP32. Така че опитах и както виждате работи!
Стъпка 1: Вземете всички части
Нека сега да видим как да изградим този проект. Нуждаем се от платка ESP32, 2.8”дисплей ILI9341, сензор за температура и влажност на Xiaomi, макет и някои проводници.
Ето някои връзки към частите, които ще използвам в тази инструкция.
- ESP32 ▶
- 2.8 "Дисплей ▶
- Сензор Xiaomi ▶
- Платформа ▶
- Проводи ▶
- USB метър ▶
- Powerbank ▶
Стъпка 2: Платката ESP32
Ако не сте запознати с него, чипът ESP32 е наследник на популярния чип ESP8266, който сме използвали много пъти в миналото. ESP32 е звяр! Той предлага две 32 процесорни ядра, които работят на 160MHz, огромно количество памет, WiFi, Bluetooth и много други функции на цена от около 7 $! Невероятни неща!
Моля, вижте подробния преглед, който подготвих за тази дъска. Прикачих видеоклипа към тази инструкция. Това ще помогне да се разбере защо този чип ще промени начина, по който правим нещата завинаги! Едно от най-вълнуващите неща за ESP32 е, че въпреки че е толкова мощен, той предлага режим на дълбок сън, който изисква само 10 μΑs ток. Това прави 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 Board към 2.8”дисплея. Можете да намерите схемата, приложена към Instructable. Използвам тази платка DOIT ESP32, която беше пусната преди около две години. Тази версия на дъската вече не е налична, тъй като вече има налична по -нова версия на нея, която предлага повече щифтове, тази. Единствената причина, поради която използвам старата версия на платката, е, че GND щифтът на платката е поставен до SPI щифтовете, от една и съща страна на дъската, което я прави удобна за макет.
След като свържете дисплея към дъската, можем да включим проекта. След няколко секунди получаваме данни на живо от близкото устройство Xiaomi. Тъй като устройството използва Bluetooth 4, обхватът му е доста добър. Ние можем лесно да получим данните, които това устройство предава от разстояния до 10 метра или повече! Можем също да получим нивото на батерията на Xiaomi Device, но не показвам тази стойност на екрана.
Ако използваме този USB метър, можем да видим, че текущото равенство на този проект е около 120-150 mA, използвайки този голям дисплей. Ако използваме дисплей за електронна хартия, поставете платката ESP32 в режим на дълбок сън и получавайте данни от сензора на всеки няколко минути, за да направим този проект щадящ батериите. Ще опитам това в бъдещо видео. Този проект е само демонстрация, че можем да получим данни от това устройство безжично.
Стъпка 5: Кодът на проекта
Нека сега да видим софтуерната страна на проекта.
Кодът на проекта се основава на този проект:
Използвах кода, който получава тези данни от устройството Xiaomi и създадох самостоятелен проект с него.
В тази променлива декларираме, че трябва да получаваме свежи данни на всеки 10 секунди.
#define SCAN_TIME 10 // секунди
Тук декларираме, че искаме да покажем температурата в градуси по Целзий. Ако искате да използвате системата Imperial, просто задайте тази променлива на false.
булева METRIC = вярно; // Задайте вярно за метрична система; фалшив за имперски
При функцията за настройка инициализираме дисплея и Bluetooth модула на платката ESP32 и след това рисуваме потребителския интерфейс на екрана.
void setup () {
WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // деактивиране на детектора за изгаряне
tft.begin ();
Serial.begin (115200);
Serial.println ("ESP32 XIAOMI ДИСПЛЕЙ"); initBluetooth ();
drawUI ();
}
След това търсим Bluetooth устройства наблизо на всеки 10 секунди. Не правим връзка с устройството Xiaomi, тъй като не е необходимо. Сканираме само близки Bluetooth ниско енергийни периферни устройства и проверяваме рекламните пакети за излъчване.
void loop () {char printLog [256]; Serial.printf ("Стартиране на BLE сканиране за %d секунди … / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Намерен брой устройства: %d / n", брой);
забавяне (100);
}
Стойностите на влажност и температура се съхраняват в тези пакети, така че трябва само да ги прочетем. След като прочетем стойностите, ние ги показваме на екрана. Както винаги можете да намерите връзка към кода на този проект в описанието, приложено към тази инструкция.
Стъпка 6: Последни мисли и подобрения
Сега, когато знаем как да получаваме данни безжично от този сензор, можем да изградим цялостна метеорологична станция, захранвана от батерии. Тъй като това устройство Xiaomi е търговски продукт, то предлага голям живот на батерията. За съжаление, все още не можем да постигнем подобен разход на батерия по нашите проекти. Така че планирам да използвам този сензор като външен сензор за проект за метеорологична станция, който ще използва голям дисплей за електронна хартия. Ще бъде готино. Също така ще търся други устройства с Bluetooth, поддържащи Xiaomi, които можем да хакнем по подобен начин. Останете на линия.
Ще се радвам да знам вашето мнение за този проект. Смятате ли за полезно, че можем да получим данни от някои търговски Bluetooth устройства? Какво ще изградите с помощта на тази функционалност? Бих искал да прочета вашите идеи, затова ги публикувайте в секцията за коментари по -долу. Благодаря!
Препоръчано:
Как да направим рекордер за данни за влажност и температура в реално време с Arduino UNO и SD-карта - DHT11 регистратор на данни Симулация в Proteus: 5 стъпки
Как да направим рекордер за данни за влажност и температура в реално време с Arduino UNO и SD-карта | DHT11 симулация на регистратор на данни в Proteus: Въведение: Здравейте, това е Liono Maker, ето линк към YouTube. Ние правим творчески проект с Arduino и работим върху вградени системи. Data-Logger: Регистратор на данни (също регистратор на данни или запис на данни) е електронно устройство, което записва данни във времето с
Болт - Направи си сам безжично зареждане на нощен часовник (6 стъпки): 6 стъпки (със снимки)
Болт - Нощен часовник за безжично зареждане „Направи си сам“(6 стъпки): Индуктивното зареждане (известно още като безжично зареждане или безжично зареждане) е вид безжичен трансфер на енергия. Той използва електромагнитна индукция, за да доставя електричество на преносимите устройства. Най -често срещаното приложение е Qi безжичното зареждане
Метеорологична станция с безжично предаване на данни: 8 стъпки
Метеорологична станция с безжично предаване на данни: Тази инструкция е надграждането на предишния ми проект - метеорологична станция с регистриране на данни. Предишен проект можете да видите тук - Метеорологична станция с регистриране на данни Ако имате въпроси или проблеми, можете да се свържете с мен на моята поща: iwx.production@gmai
Как да извлечете данни от база данни Firebase на NodeMCU: 7 стъпки
Как да извлечем данни от база данни Firebase на NodeMCU: За тази инструкция ще извличаме данни от база данни в Google Firebase и ще ги извличаме с помощта на NodeMCU за по-нататъшно разбор. акаунт за създаване на база данни на Firebase. 3) Изтеглете
Събиране на данни от EAL-Industri4.0-RFID до база данни: 10 стъпки (със снимки)
EAL-Industri4.0-RFID Актуализиране на данни към база данни: Dette projekt omhandler opsamling af v æ gtdata, регистриращ се за идентифициране във vha. RFID, изоставане на данни в MySQL база данни vha. node-RED, samt fremvisning и поведение на opsamlede данни в et C# програма, създадена от en Windows Form Application