این مقاله به شما نشان میدهد چگونه با استفاده از نمایشگر ESP32، یک دستیار صوتی و تصویری بسازید که جایگزینی عالی برای گوگل هوم هاب باشد. ما نگاهی به سختافزار Elecrow CrowPanel Advance 7-inch، چالشهای ساخت و راهحلهای هوشمندانه برای عملکرد بهتر خواهیم داشت. با این راهنما، میتوانید یک دستگاه هوشمند و کارآمد برای خانه خود داشته باشید.
در دنیای امروز، دستگاههای هوشمند خانگی نقش مهمی ایفا میکنند. اما گاهی اوقات، یافتن گزینههای سفارشی و مقرونبهصرفه دشوار است. در این مقاله، ما به شما نشان میدهیم چگونه با استفاده از قطعات موجود و دانش برنامهنویسی، یک نمایشگر هوشمند بسازید که قابلیتهای یک دستیار صوتی را هم داشته باشد.
چرا یک نمایشگر هوشمند خودتان بسازید؟
ساخت یک نمایشگر هوشمند خانگی با ESP32، راهی عالی برای کنترل خانه هوشمند شماست. برخلاف گزینههای آماده، این روش به شما امکان میدهد تا ویژگیها را کاملاً سفارشی کنید. با الهام از دستیارهای صوتی موجود، هدف ما ساخت یک جایگزین قدرتمند و انعطافپذیر بود.
برای این پروژه، از نمایشگر Elecrow CrowPanel Advance 7-inch HMI ESP32 AI استفاده کردیم. این نمایشگر، امکانات زیادی دارد که آن را برای این منظور ایدهآل میکند. با استفاده از ESPHome، توانستیم یک دستیار صوتی با قابلیتهای تصویری بسازیم.
معرفی نمایشگر Elecrow CrowPanel Advance 7-inch
این نمایشگر 7 اینچی با تراشه ESP32-S3، امکانات گستردهای را ارائه میدهد. پنل لمسی IPS با رزولوشن 800×480، کیفیت تصویر عالی دارد. همچنین، قابلیت اضافه کردن ماژولهای مختلف مانند LoRa، Zigbee و Wi-Fi 6 را فراهم میکند.
این دستگاه دارای میکروفون و خروجی اسپیکر داخلی است. همچنین، پورت باتری، ساعت زمان واقعی (RTC) و اسلات کارت SD از دیگر ویژگیهای آن محسوب میشوند. با وجود نام “AI”، این نمایشگر پردازش هوش مصنوعی داخلی ندارد و صرفاً به میکروفون و اسپیکر اشاره دارد.
ویژگیهای کلیدی Elecrow CrowPanel Advance 7-inch:
- صفحه نمایش: 7 اینچ IPS لمسی با رزولوشن 800×480
- پردازنده: ESP32-S3 N16R8
- ماژولهای افزودنی: پشتیبانی از LoRa، Zigbee، Thread، Wi-Fi 6
- صدا: میکروفون داخلی و خروجی اسپیکر
- اتصالات: پورت باتری، RTC، اسلات کارت SD، پینهای UART
چالشهای سختافزاری و مدیریت پینها
یکی از بزرگترین چالشها، محدودیت پینهای GPIO در ESP32-S3 است. این تراشه 45 پین GPIO دارد، اما تنها 36 پین از ESP32-S3-WROOM-1-N16R8 قابل استفاده هستند. با توجه به اینکه نمایشگر و PSRAM نیز پینهای زیادی را اشغال میکنند، تنها حدود 13 پین برای سایر کارها باقی میماند.
شرکت Elecrow برای حل این مشکل، سوئیچهایی در پشت دستگاه قرار داده است. این سوئیچها به شما اجازه میدهند تا قابلیتهای خاصی را فعال یا غیرفعال کنید. این یعنی نمیتوانید همزمان از تمام امکانات مانند میکروفون، اسپیکر، ماژول بیسیم و کارت TF استفاده کنید.
گزینههای سوئیچ پین:
- میکروفون و اسپیکر
- ماژول بیسیم
- کارت TF
- میکروفون و کارت TF
با وجود مستندات خوب Elecrow، پیدا کردن نمونه کد برای میکروفون کمی دشوار بود. اما با ترکیب دیتاشیت میکروفون INMP441 و اطلاعات دیگر، توانستیم آن را راهاندازی کنیم. کیفیت ساخت نمایشگر و صفحه نمایش بسیار خوب است.
ساخت دستیار صوتی با ESPHome و غلبه بر مشکلات
ساخت یک دستیار صوتی با ESPHome، در ابتدا با چالشهایی همراه بود. میکروفون به راحتی کار نمیکرد و نمیدانستیم که آیا مشکل از میکروفون است یا از خط پردازش صدا. با استفاده از کامپوننت `udp_audio`، توانستیم صدای میکروفون را به کامپیوتر استریم کرده و از عملکرد آن مطمئن شویم.
پس از اطمینان از عملکرد میکروفون، مشکل در پردازش صوتی توسط microWakeWord و Whisper بود. راه حل نهایی، استفاده از پروژه آماده ESP32-S3-Box-3 در ESPHome بود. با پورت کردن پینها و ویژگیهای سختافزاری، توانستیم یک دستیار صوتی کاملاً فعال داشته باشیم.
بهبود عملکرد نمایشگر
در ابتدا، نمایشگر بسیار کند بود و رندر تصاویر با تأخیر انجام میشد. برای حل این مشکل، کل پشته گرافیکی را با کتابخانه LVGL (Light and Versatile Embedded Graphics Library) جایگزین کردیم. این تغییر، عملکرد نمایشگر را به شدت بهبود بخشید و تجربهای روانتر را فراهم کرد.
هدایت خروجی صوتی
از آنجا که اسپیکری برای تست در دسترس نبود، نیاز به راهی برای شنیدن پاسخها داشتیم. از رویداد `esphome.tts_uri` استفاده کردیم تا جزئیات فایل صوتی پاسخ را به Home Assistant ارسال کنیم. سپس، یک اتوماسیون در Home Assistant این فایل صوتی را روی یک اسپیکر دیگر پخش میکند. این روش بسیار کارآمد بود.
نمونه کد هدایت صدا:
script:
- id: send_tts_uri_event
parameters:
tts_uri: string
then:
- homeassistant.event:
event: esphome.tts_uri
data:
uri: !lambda return tts_uri;
alias: Play TTS URI
description: ""
triggers:
- trigger: event
event_type: esphome.tts_uri
event_data:
device_id: edb7423f767d4c4b5706ed9cfa47a7d8
actions:
- action: media_player.play_media
data:
announce: true
media_content_type: music
media_content_id: "{{ trigger.event.data.uri }}"
target:
device_id: 3b520dfbbac9b1bb6e05e51f8f8a2695
mode: single
با این تنظیمات، یک دستیار صوتی و تصویری کامل داریم که میتواند فرمانهای صوتی را پردازش کند و پاسخها را از طریق یک اسپیکر خارجی پخش نماید. این دستگاه اکنون میتواند دستگاههای خانه هوشمند را مانند گوگل هوم هاب کنترل کند.
گامهای بعدی و قابلیتهای آینده
اکنون که سیستم اصلی کار میکند، میتوانیم به رفع باگهای کوچک و اضافه کردن قابلیتهای جدید بپردازیم. با استفاده از LVGL، به راحتی میتوانیم صفحات “استراحت” را اضافه کنیم که کنترلهای اولیه خانه، آب و هوا و تصاویر را نمایش دهند. این کار، قابلیتهای دستگاه را به مراتب افزایش میدهد.
نمایشگرهای مانند Elecrow CrowPanel Advance بسیار قدرتمند و چندکاره هستند. شما میتوانید از آنها برای ساخت داشبورد خانه هوشمند، بازیهای ساده، فیدخوان RSS یا حتی یادگیری LVGL استفاده کنید. امکانات بیشماری برای سفارشیسازی و توسعه وجود دارد.