فهرست مطالب:

ESP32 Xiaomi Hack - دریافت اطلاعات به صورت بی سیم: 6 مرحله (همراه با تصاویر)
ESP32 Xiaomi Hack - دریافت اطلاعات به صورت بی سیم: 6 مرحله (همراه با تصاویر)

تصویری: ESP32 Xiaomi Hack - دریافت اطلاعات به صورت بی سیم: 6 مرحله (همراه با تصاویر)

تصویری: ESP32 Xiaomi Hack - دریافت اطلاعات به صورت بی سیم: 6 مرحله (همراه با تصاویر)
تصویری: Deleting Hoverboard Motherboard Program and Installing New Program - Applying Different Controls 2024, نوامبر
Anonim
Image
Image
ESP32 شیائومی هک - اطلاعات را به صورت بی سیم دریافت کنید
ESP32 شیائومی هک - اطلاعات را به صورت بی سیم دریافت کنید

دوستان عزیز به آموزش دیگری خوش آمدید! امروز قصد داریم نحوه دریافت اطلاعاتی را که این مانیتور دما و رطوبت شیائومی با استفاده از قابلیت بلوتوث برد ESP32 منتقل می کند ، بدست آوریم.

همانطور که می بینید ، من از یک برد ESP32 و یک صفحه نمایش TFT رنگی 2.8 اینچی استفاده می کنم. در صفحه نمایش ، دما و رطوبت را نشان می دهیم. نکته جالب این است که من هیچ سنسوری را به برد ESP32 وصل نکرده ام. من دما و رطوبت را به صورت بی سیم از این مانیتور تجاری دما و رطوبت شیائومی دریافت می کنم. چقدر باحاله! نمایشگر دستگاه شیائومی هر ثانیه به روز می شود ، اما من صفحه نمایش متصل به برد ESP32 را هر 10 ثانیه برای صرفه جویی در قدرت دستگاه شیائومی به روز می کنم.

این سنسور دما و رطوبت شیائومی دما و رطوبت را روی صفحه LCD خود نمایش می دهد و همچنین می تواند داده ها را با استفاده از پروتکل بلوتوث به سایر دستگاه ها یا برنامه های شیائومی منتقل کند. دستگاه ها از یک باتری AAA استفاده می کنند و از آنجا که یک محصول تجاری است ، عمر باتری دستگاه عالی است. می تواند ماهها بر روی یک باتری AAA دوام بیاورد ، چیزی که در پروژه های DIY خود نمی توانیم به آن برسیم. چند هفته پیش ، متوجه شدم که برخی از افراد باهوش توانستند پروتکلی را که شیائومی برای انتقال داده ها از سنسور استفاده می کند ، مهندسی معکوس کنند و با استفاده از یک برد ESP32 این اطلاعات را دریافت کنند. بنابراین من آن را امتحان کردم ، و همانطور که می بینید کار می کند!

مرحله 1: تمام قطعات را دریافت کنید

همه قطعات را دریافت کنید
همه قطعات را دریافت کنید

اکنون بیایید ببینیم چگونه این پروژه را بسازیم. ما به برد ESP32 ، صفحه نمایش 2.8 اینچی ILI9341 ، سنسور دما و رطوبت شیائومی ، تخته نان و مقداری سیم نیاز داریم.

در اینجا پیوندهایی به قسمتهایی وجود دارد که من در این دستورالعمل استفاده می کنم.

  • ESP32 ▶
  • 2.8 اینچ Display
  • سنسور شیائومی ▶
  • Breadboard ▶
  • سیمها ▶
  • USB متر ▶
  • پاوربانک ▶

مرحله 2: برد ESP32

Image
Image
برد ESP32
برد ESP32

اگر با آن آشنا نیستید ، تراشه ESP32 جانشین تراشه محبوب ESP8266 است که ما بارها در گذشته از آن استفاده کرده ایم. ESP32 یک جانور است! این دستگاه دارای 32 هسته پردازشی با فرکانس 160 مگاهرتز ، مقدار زیادی حافظه ، WiFi ، بلوتوث و بسیاری از ویژگی های دیگر با هزینه ای در حدود 7 دلار است! چیزهای شگفت انگیز!

لطفاً بررسی مفصلی را که برای این تخته آماده کرده ام تماشا کنید. من ویدیو را در این دستورالعمل ضمیمه کرده ام. این به درک اینکه چرا این تراشه روش ما را برای همیشه تغییر می دهد کمک می کند! یکی از هیجان انگیزترین چیزها در مورد ESP32 این است که اگرچه بسیار قدرتمند است ، اما حالت خواب عمیق را ارائه می دهد که تنها به 10μΑ جریان نیاز دارد. این ESP32 را به تراشه ای ایده آل برای برنامه های کم مصرف تبدیل می کند.

مرحله 3: صفحه نمایش TFT 2.8 اینچی برای آردوینو و ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

صفحه نمایش بزرگ است و وضوح تصویر 320x240 پیکسل را ارائه می دهد. در مقایسه با یکی از نمایشگرهای مورد علاقه من ، صفحه نمایش TFT رنگی 1.8 اینچی ، می توانید آن را بسیار بزرگتر ببینید. صفحه نمایش همچنین عملکرد لمسی را ارائه می دهد که یک امتیاز اضافی و شکاف کارت SD در پشت است. از رابط SPI استفاده می کند ، بنابراین ارتباط با Arduino یا برد ESP32 بسیار ساده است. هزینه صفحه نمایش نسبتاً کم است. هزینه آن حدود 11 دلار است که به نظر من قیمت مناسبی برای چیزی است که این صفحه نمایش ارائه می دهد.

نکته دیگری که در مورد این صفحه نمایش وجود دارد این است که مانند صفحه لمسی که تا کنون از آن استفاده می کردیم ، به عنوان یک سپر ظاهر نمی شود. به این ترتیب ، می توانیم صفحه نمایش را به هر برد ، Arduino Pro mini ، STM32 ، ESP8266 و ESP32 متصل کنیم. این بسیار مهم است زیرا ما در حال حاضر یک صفحه نمایش ارزان قیمت داریم که می توانیم از آن برای هر برد استفاده کنیم. تا به حال ، تنها صفحه لمسی که می توانستیم با این تابلوها استفاده کنیم ، صفحه های Nextion بودند که گرانتر هستند و اگر بخواهم صادق باشم هر چند وقت یکبار از آنها استفاده می کنم ، واقعاً آنها را دوست ندارم.

مرحله 4: اتصال صفحه نمایش

اتصال صفحه نمایش
اتصال صفحه نمایش
اتصال صفحه نمایش
اتصال صفحه نمایش
اتصال صفحه نمایش
اتصال صفحه نمایش
اتصال صفحه نمایش
اتصال صفحه نمایش

ابتدا باید برد ESP32 را به نمایشگر 2.8 اینچی متصل کنیم. می توانید شماتیک پیوست شده به Instructable را بیابید. من از این برد DOIT ESP32 استفاده می کنم که حدود دو سال پیش منتشر شد. این نسخه از برد دیگر در دسترس نیست زیرا اکنون نسخه جدیدتری از آن موجود است که پین های بیشتری را ارائه می دهد ، این یکی. تنها دلیلی که من از نسخه قدیمی برد استفاده می کنم این است که پین GND تخته در کنار پین های SPI ، در همان طرف تخته قرار گرفته است ، که باعث می شود آن را به تخته نان دوست داشته باشید.

پس از اتصال صفحه نمایش به برد ، می توانیم پروژه را روشن کنیم. پس از چند ثانیه ، داده های مستقیم را از دستگاه شیائومی مجاور دریافت می کنیم. از آنجا که دستگاه از بلوتوث 4 استفاده می کند ، محدوده آن بسیار خوب است. ما به راحتی می توانیم داده های این دستگاه را از فاصله تا 10 متر یا بیشتر دریافت کنیم! ما همچنین می توانیم سطح باتری دستگاه Xiaomi را دریافت کنیم اما من این مقدار را روی صفحه نمایش نمی دهم.

اگر از این USB متر استفاده کنیم ، می بینیم که جریان فعلی این پروژه با استفاده از این صفحه نمایش بزرگ حدود 120-150 میلی آمپر است. اگر از صفحه نمایش کاغذ الکترونیکی استفاده می کنیم ، برد ESP32 را در حالت خواب عمیق قرار دهید و هر چند دقیقه یکبار از سنسور اطلاعات دریافت کنید ، می توانیم باتری این پروژه را دوستانه کنیم. این را در ویدیوی آینده امتحان می کنم. این پروژه فقط یک نمایش است که می توانیم داده ها را از این دستگاه به صورت بی سیم دریافت کنیم.

مرحله 5: کد پروژه

کد پروژه
کد پروژه

بیایید اکنون بخش نرم افزاری پروژه را ببینیم.

کد پروژه بر اساس این پروژه است:

من از کدی که این اطلاعات را از دستگاه شیائومی دریافت می کند استفاده کردم و یک پروژه مستقل با آن ساختم.

در این متغیر ، ما اعلام می کنیم که باید داده های تازه را هر 10 ثانیه دریافت کنیم.

#تعریف SCAN_TIME 10 // ثانیه

در اینجا ، ما اعلام می کنیم که می خواهیم دما را در درجه سانتیگراد نمایش دهیم. اگر می خواهید از سیستم Imperial استفاده کنید فقط این متغیر را روی false تنظیم کنید.

boolean METRIC = true؛ // true for metric system؛ دروغ برای امپراتوری

در عملکرد راه اندازی ، صفحه نمایش و ماژول بلوتوث برد ESP32 را اولیه می کنیم و سپس رابط کاربری را روی صفحه ترسیم می کنیم.

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 ثانیه به دنبال دستگاه های بلوتوث در این نزدیکی می گردیم. ما به دستگاه Xiaomi متصل نمی شویم زیرا نیازی به آن نیست. ما فقط لوازم جانبی کم مصرف بلوتوث نزدیک را اسکن می کنیم و بسته های تبلیغاتی پخش شده را بررسی می کنیم.

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: موارد نهایی و بهبودها

موارد و بهبودهای نهایی
موارد و بهبودهای نهایی
موارد و بهبودهای نهایی
موارد و بهبودهای نهایی

اکنون که می دانیم چگونه داده ها را به صورت بی سیم از این سنسور دریافت کنیم ، می توانیم یک ایستگاه هواشناسی کامل با باتری بسازیم. از آنجا که این دستگاه شیائومی یک محصول تجاری است ، عمر باتری بسیار خوبی را ارائه می دهد. متأسفانه ، ما هنوز نمی توانیم مصرف باتری مشابهی را در پروژه های خود بدست آوریم. بنابراین ، من قصد دارم از این سنسور به عنوان یک سنسور فضای باز برای پروژه ایستگاه هواشناسی استفاده کنم که از یک صفحه نمایش بزرگ کاغذ الکترونیکی استفاده می کند. خنک خواهد شد. همچنین ، من قصد دارم سایر دستگاه های مجهز به بلوتوث شیائومی را که می توانیم به روش مشابه آنها را هک کنیم ، جستجو کنم. گوش به زنگ باشید.

دوست دارم نظر شما را در مورد این پروژه بدانم. آیا به نظر شما مفید است که بتوانیم از برخی دستگاه های تجاری بلوتوث اطلاعات دریافت کنیم؟ با استفاده از این قابلیت چه چیزی را می خواهید بسازید؟ من می خواهم ایده های شما را بخوانم بنابراین لطفا آنها را در قسمت نظرات زیر ارسال کنید. با تشکر!

توصیه شده: