# ADA؛ ربات رومیزی تعاملی آردونیا
معرفی پروژه
ADA یک ربات رومیزی تعاملی بر پایه برد Wemos D1 mini و میکروکنترلر ESP8266 است. این ربات با دریافت الگوهای لمسی، حالت های مختلف چهره را روی نمایشگر OLED نشان می دهد، با سروو موتور حرکت می کند و از طریق ماژول DFPlayer Mini صداهای متناسب با واکنش ها را پخش می کند.
این پروژه نمونه ای از ترکیب سیستم های نهفته، الکترونیک، طراحی نرم افزار و تعامل انسان و ماشین است.
قابلیت های اصلی
- نمایش ۱۵ حالت چهره متحرک روی نمایشگر OLED با وضوح 128×64
- تشخیص ۱۹ الگوی لمسی با چهار حسگر TTP223
- استفاده از ماژول PCF8574 برای دریافت ورودی های لمسی
- حرکت نرم سر با سروو موتور
- پخش ۱۴ صدای واکنشی و یک صدای شروع با DFPlayer Mini
- نمایش ساعت اینترنتی با استفاده از NTP
- راه اندازی شبکه Wi-Fi برای تنظیم دستگاه
- انتخاب شبکه بی سیم از طریق پنل تحت وب
- نمایش ولتاژ و درصد تقریبی باتری
- کاهش تدریجی فعالیت در زمان بی کاری
- منوی تنظیمات روی نمایشگر OLED
- ذخیره تنظیمات و اطلاعات شبکه در حافظه EEPROM
- بررسی صحت داده های ذخیره شده با CRC
- آزمون خودکار بخشی از منطق برنامه با شبیه ساز سخت افزار
نحوه عملکرد
چهار حسگر لمسی در سمت جلوی ربات قرار می گیرند. کنترلر با بررسی ترتیب و زمان لمس حسگرها، الگوهای تعریف شده را تشخیص می دهد و واکنش متناسب را اجرا می کند.
برای نمونه، لمس کوتاه، لمس طولانی، چند لمس متوالی و حرکت دست از چپ به راست یا برعکس می توانند واکنش های متفاوتی ایجاد کنند. واکنش ها شامل تغییر حالت چهره، حرکت سر، پخش صدا، نمایش ساعت، نمایش وضعیت باتری و باز کردن منوی تنظیمات هستند.
نمایش چهره بر عهده نمایشگر OLED است، حرکت مکانیکی با سروو موتور انجام می شود و فایل های صوتی از کارت microSD توسط DFPlayer Mini پخش می شوند.
قطعات و تجهیزات
| قطعه | تعداد | کاربرد |
|---|---|---|
| Wemos D1 mini یا برد سازگار با ESP8266 | ۱ | کنترل اصلی و Wi-Fi |
| نمایشگر OLED SSD1306 با رابط I2C و وضوح 128×64 | ۱ | نمایش چهره و منوها |
| ماژول PCF8574 | ۱ | توسعه ورودی های دیجیتال |
| حسگر لمسی خازنی TTP223 | ۴ | دریافت فرمان های لمسی |
| ماژول DFPlayer Mini | ۱ | پخش فایل های صوتی |
| کارت microSD | ۱ | ذخیره فایل های صوتی |
| بلندگوی سازگار با DFPlayer | ۱ | پخش صدا |
| سروو موتور مانند SG90 | ۱ | حرکت سر ربات |
| مقاومت سری حدود ۱ کیلو اهم | ۱ | اتصال ورودی RX ماژول DFPlayer |
| مدار تقسیم ولتاژ | ۱ | اندازه گیری ولتاژ باتری |
| خازن سرامیکی 100nF | چند عدد | کاهش نویز تغذیه |
| خازن الکترولیتی 470 تا 1000µF | ۱ | کمک به پایداری تغذیه سروو و صوت |
| منبع تغذیه رگوله شده | ۱ | تامین انرژی مدار |
اتصالات سخت افزاری
نمایشگر OLED و ماژول PCF8574
هر دو ماژول از گذرگاه I2C مشترک استفاده می کنند.
| پایه دستگاه | پایه Wemos D1 mini |
|---|---|
| SDA نمایشگر OLED | D2 / GPIO4 |
| SCL نمایشگر OLED | D1 / GPIO5 |
| SDA ماژول PCF8574 | D2 / GPIO4 |
| SCL ماژول PCF8574 | D1 / GPIO5 |
| VCC ماژول ها | 3.3V، با رعایت مشخصات ماژول |
| GND ماژول ها | GND مشترک |
آدرس مورد انتظار PCF8574 برابر 0x20 و آدرس متداول نمایشگر SSD1306 برابر 0x3C است.
حسگرهای لمسی
خروجی چهار حسگر TTP223 به ورودی های ماژول PCF8574 متصل می شوند.
| حسگر | ورودی PCF8574 |
|---|---|
| S1 | P0 |
| S2 | P1 |
| S3 | P2 |
| S4 | P3 |
حسگرها باید با ولتاژ مناسب مدار 3.3 ولتی راه اندازی شوند تا از اعمال ولتاژ نامناسب به ورودی های ESP8266 و گذرگاه I2C جلوگیری شود.
سروو موتور و ماژول صوتی
| اتصال | پایه |
|---|---|
| سیگنال سروو موتور | D0 / GPIO16 |
| خروجی TX ماژول DFPlayer | D7 / GPIO13 |
| ورودی RX ماژول DFPlayer | D8 / GPIO15، از طریق مقاومت سری حدود 1kΩ |
تغذیه سروو موتور باید متناسب با جریان مصرفی آن طراحی شود. بهتر است سروو و بخش صوتی از مسیر تغذیه مناسب و پایدار استفاده کنند و زمین آن ها با زمین کنترلر مشترک باشد.
اندازه گیری باتری
خروجی مدار تقسیم ولتاژ به پایه A0 متصل می شود. نسبت مقاومت ها باید با محدوده مجاز ورودی آنالوگ برد واقعی سازگار باشد. باتری لیتیومی را مستقیما به A0 وصل نکنید.
نصب نرم افزار
- مخزن پروژه را از GitHub دریافت کنید.
- هسته برد ESP8266 را از بخش Boards Manager در Arduino IDE نصب کنید.
- کتابخانه های مورد نیاز را نصب کنید:
- U8g2
- DFRobotDFPlayerMini
- NTPClient
- TimeLib
- فایل
firmware/Ada/Ada.inoرا باز کنید.
- برد
LOLIN(WEMOS) D1 R2 & miniو پورت مناسب را انتخاب کنید.
- کارت microSD را با فایل سیستم FAT32 فرمت کنید.
- پوشه
assets/audio/MP3را در ریشه کارت حافظه کپی کنید.
- برنامه را کامپایل و روی برد بارگذاری کنید.
این پروژه همچنین دارای فایل پیکربندی PlatformIO است و می توان آن را با این محیط توسعه نیز ساخت.
راه اندازی Wi-Fi
اگر اطلاعات شبکه ای در حافظه دستگاه ذخیره نشده باشد، ربات شبکه تنظیمات زیر را ایجاد می کند:
- نام شبکه:
ADA-Config - رمز پیش فرض:
12345678 - نشانی پنل تنظیمات: http://192.168.4.1
پس از اتصال تلفن همراه یا رایانه به این شبکه، نشانی پنل را در مرورگر باز کنید و شبکه Wi-Fi مورد نظر را انتخاب کنید.
رمز پیش فرض برای نمونه سازی در نظر گرفته شده است. پیش از استفاده عمومی، آن را تغییر دهید.
حالت های کاهش فعالیت
در صورت نبود تعامل، دستگاه به صورت مرحله ای فعالیت خود را کاهش می دهد:
| زمان پیش فرض بی کاری | رفتار |
|---|---|
| ۳۰ ثانیه | کاهش روشنایی به ۵۰ درصد |
| ۶۰ ثانیه | نمایش چشم های نیمه بسته |
| ۵ دقیقه | ورود به حالت خواب و روشنایی ۲۵ درصد |
با لمس مجدد حسگرها، دستگاه به حالت فعال باز می گردد. زمان های مربوط به این حالت ها از منوی تنظیمات قابل تغییر هستند.
آزمون و بررسی عملکرد
مخزن پروژه شامل آزمون های خودکار برای بررسی بخشی از منطق برنامه و شبیه سازی سخت افزار است. طبق مستندات مخزن، آزمون های میزبان ۸۳ بررسی را اجرا می کنند و الگوهای لمسی و وجود فایل های صوتی مورد نیاز را کنترل می کنند.
این آزمون ها به تنهایی جایگزین آزمایش دستگاه واقعی نیستند. عملکرد نمایشگر، سروو موتور، کارت حافظه، حسگرها و تغذیه باید پس از مونتاژ نیز بررسی شود.
نکات مهم سخت افزاری
- جریان لحظه ای سروو موتور و ماژول صوتی می تواند باعث ریست شدن ESP8266 شود.
- از منبع تغذیه مناسب، سیم کشی کوتاه و خازن های صافی نزدیک بارها استفاده کنید.
- پایه GPIO15 یا D8 در هنگام راه اندازی ESP8266 وضعیت ویژه ای دارد؛ اتصال ماژول DFPlayer نباید مانع بوت صحیح برد شود.
- ورودی های ESP8266 تحمل مستقیم ولتاژ ۵ ولت را ندارند.
- نسبت تقسیم ولتاژ باتری و ضریب محاسبه نرم افزاری باید برای برد واقعی کالیبره شوند.
ساختار مخزن
firmware/Ada/— برنامه اصلی و ماژول های نرم افزاریassets/audio/MP3/— فایل های صوتی آماده استفادهdocs/— مستندات سخت افزار و نرم افزارtests/host/— آزمون ها و شبیه سازی منطق برنامهplatformio.ini— تنظیمات محیط PlatformIO
پیوندهای پروژه
- مخزن GitHub: ARDUnia/ADA
- راهنمای فارسی: docs/README_FA.md
- راهنمای سخت افزار: docs/HARDWARE.md
- راهنمای نرم افزار: docs/SOFTWARE.md
- راهنمای الگوهای لمسی: docs/GESTURES.md
مجوز استفاده
در نسخه فعلی مخزن، مجوز متن باز مشخصی انتخاب نشده است. بنابراین استفاده مجدد یا بازتوزیع کد باید با اجازه صاحب پروژه انجام شود، مگر اینکه مجوز رسمی به مخزن اضافه شود.
جمع بندی
ADA یک ربات رومیزی تعاملی است که حسگرهای لمسی، نمایشگر گرافیکی، حرکت مکانیکی، پخش صدا و ارتباط Wi-Fi را در یک پروژه مبتنی بر ESP8266 ترکیب می کند. ساختار ماژولار کد و مستندات پروژه، آن را به نمونه ای مناسب برای یادگیری و توسعه سامانه های تعاملی تبدیل کرده است.
