ساعت گویای هوشمند با ESP32 برای افراد نابینا و کمبینا
دنیای الکترونیک فقط برای ساخت گجتهای سرگرمکننده نیست؛ خیلی وقتها میتونیم با ابزارهای ساده، زندگی رو برای افراد دیگه راحتتر کنیم. یکی از این ابزارها، ساعت گویاست که میتونه برای افراد نابینا، کمبینا یا حتی سالمندان یه کمکحال واقعی باشه. مشکلی که اکثر ساعتهای گویای بازار دارن اینه که یا تنظیمات خیلی پیچیدهای دارن یا اینکه مدام باید شارژ بشن.
تو این پروژه میخوایم یه ساعت گویای کاملا مستقل بسازیم که با فشردن فقط یه دکمه بزرگ، زمان رو با صدای واضح اعلام میکنه. این دستگاه نیازی به اینترنت نداره، زمان رو حتی در صورت خاموش بودن دقیق نگه میداره و مهمتر از همه، طوری طراحی شده که مصرف باتریش فوقالعاده پایینه و میتونه سالها با چند تا باتری قلمی کار کنه.
بیا با هم قدمبهقدم این گجت کاربردی رو بسازیم. از طراحی مدار و پرینت قاب سهبعدی تا آپلود کدها و تنظیمات نهایی، همهچیز رو با هم پیش میبریم تا یه ساعت گویای حرفهای داشته باشی.
اهداف طراحی و نیازسنجی پروژه
قبل از اینکه دست به هویه بشیم و سراغ نرمافزار بریم، خیلی مهمه که دقیقا بدونیم از این پروژه چی میخوایم و چه مشکلاتی رو قراره حل کنیم.
هدف اصلی این بود که یه ساعت گویای ساده و قابل دسترس برای افراد کمبینا و مسن بسازیم. این دستگاه باید طوری باشه که بدون نگاه کردن بهش و بدون درگیر شدن با منوهای پیچیده یا صفحهنمایش، به راحتی قابل استفاده باشه. به همین خاطر، کل رابط کاربری این گجت رو فقط به یه دکمه بزرگ محدود کردیم.
یکی دیگه از نیازهای مهم، عملکرد کاملا مستقل دستگاه بود. این ساعت باید کاملا آفلاین کار کنه و هیچ نیازی به اینترنت یا سرویسهای خارجی نداشته باشه. وظیفه نگهداری زمان به عهده یه ماژول ساعت زمان واقعی (RTC) گذاشته شده؛ بنابراین حتی وقتی دستگاه خاموشه، زمان دقیق حفظ میشه.
مصرف پایین انرژی هم یکی از کلیدیترین اهداف طراحی بود. از اونجایی که ساعت فقط برای چند ثانیه کوتاه جهت اعلام زمان روشن میشه، منطقیه که تو بقیه ساعات روز کل سیستم کاملا خاموش باشه. همین ایده ساده باعث میشه دستگاه بتونه سالها با چند تا باتری قلمی معمولی کار کنه.
علاوه بر این، پیکربندی ساعت باید خیلی راحت باشه. برای تنظیم زمان یا تغییر زبان گوینده، نیازی به کامپیوتر یا نرمافزارهای پیچیده نیست و کل کار با یه گوشی هوشمند انجام میشه.
در نهایت، ساخت این پروژه باید ارزون و در دسترس باشه. به همین دلیل، از ماژولهای آماده و ارزون تو بازار، یه مدار چاپی ساده و یه قاب پرینت سهبعدی استفاده شده. تمام فایلهای طراحی و کدهای برنامه هم متنبازه تا هرکسی بتونه اونها رو به دلخواه خودش تغییر بده یا ارتقا بده.
بررسی بخشهای مختلف مدار
قبل از شروع ساخت، بیا یه نگاه کلی به بخشهای مختلف ساعت گویا بندازیم و ببینیم چطوری با هم کار میکنن. مغز متفکر این سیستم، یه ماژول ESP32-S3 Pico هست. این برد کل دستگاه رو کنترل میکنه، زمان فعلی رو میخونه، فایلهای صوتی مناسب رو انتخاب میکنه و در نهایت اونا رو از طریق خروجی صدا پخش میکنه.
زمان دقیق توسط ماژول ساعت زمان واقعی DS3231 تامین میشه. این ماژول یه باتری بکآپ اختصاصی برای خودش داره، پس حتی اگه برق اصلی دستگاه کاملا قطع بشه، زمان از دست نمیره.
پیامهای صوتی به صورت فایلهای MP3 تو حافظه فلش میکروکنترلر ذخیره شدن. برای پخش صدا، ESP32 دادهها رو از طریق پروتکل I2S به یه تقویتکننده صوتی MAX98357A میفرسته و اونم یه اسپیکر کوچیک رو درایو میکنه.
بخش کلیدی این طراحی، سیستم مدیریت مصرف انرژیه. برای اینکه تو حالت استندبای تقریبا هیچ برقی مصرف نشه، تو حالت عادی کل سیستم خاموشه. یه ماسفت کانال P (p-channel MOSFET) وظیفه قطع کردن ارتباط باتری در زمان بیکاری دستگاه رو به عهده داره.
وقتی کاربر دکمه رو فشار میده، یه مدار منطقی روشن/خاموش جریان برق رو وصل میکنه. ESP32 روشن میشه، زمان (و در صورت تمایل، تاریخ) رو اعلام میکنه و بعدش با استفاده از یکی از پایههای GPIO خودش، دوباره برق کل سیستم رو قطع میکنه.
انرژی این دستگاه رو سه تا باتری قلمی تامین میکنن. ولتاژ این باتریها توسط یه مبدل افزاینده/کاهنده مدل TPS63070 به 5 ولت ثابت تبدیل میشه تا دستگاه تو هر شرایطی (حتی با باتریهای نیمهخالی) پایدار کار کنه. این دیاگرام بلوکی یه دید عالی از نحوه کار سیستم بهت میده. تو قدمهای بعدی میبینیم که این بخشها چطوری روی برد اصلی پیاده میشن.
لحیمکاری و مونتاژ برد اصلی
تو این مرحله باید قطعات الکترونیکی رو روی برد مدار چاپی (PCB) اختصاصی این پروژه لحیم کنیم. فایلهای طراحی برد تو اینترنت در دسترسه و میتونی بدی شرکتهای چاپ PCB تا برات تولیدش کنن. طراحی این برد طوری انجام شده که لحیمکاری قطعات روش خیلی راحت باشه و حتی با هویههای معمولی هم از پسش برمیای.
بهترین کار اینه که وقتی هنوز برد کاملا خلوته، لحیمکاری رو با قطعات نصبسطحی (SMD) مثل ماسفت شروع کنی. این ماسفت تنها قطعه SMD روی برده و اگه اول کار لحیمش کنی، بقیه مراحل خیلی سادهتر میشه.
بعد از اون برو سراغ قطعات پایهدار: مقاومتها، خازنها، آیسی 14 پایه و دو تا ترانزیستور 2N7000. اینجا حسابی دقت کن و قبل از لحیم کردن قطعات قطبدار مثل خازنها، جهت پایههاشون رو چک کن تا برعکس نصب نشن.
وقتی کار قطعات ریز تموم شد، نوبت به نصب ماژولها میرسه. این ماژولها رو میتونی با پینهدرهای استاندارد 2.54 میلیمتری روی برد اصلی لحیم کنی. این روش هم کار رو تمیزتر میکنه و هم اگه بعدا ماژولی خراب شد، تعویضش خیلی راحتتره. با تموم شدن این مرحله، قلب تپنده ساعت گویای تو آمادست تا تو قدمهای بعدی داخل قابش قرار بگیره.
چاپ سهبعدی قاب ساعت
قاب محافظ و قطعات مکانیکی این ساعت کاملا با پرینتر سهبعدی ساخته میشن. فایلهای آماده چاپ (STL) تو اینترنت در دسترسه، پس میتونی خودت پرینتشون بگیری یا فایلها رو بفرستی برای خدمات چاپ سهبعدی.
موقع آمادهسازی فایلها تو نرمافزار اسلایسر، یه نکته خیلی مهم وجود داره: باید تو لایههای خاصی دستور مکث (Pause) رو اضافه کنی. این مکثها بهت اجازه میدن که وسط پرینت، مهرههای سایز M2 رو داخل فضای خالی قطعات قرار بدی. این ترفند باعث میشه مونتاژ نهایی خیلی ترتمیز دربیاد و قاب با پیچها کاملا محکم بشه.
برای چاپ قاب میتونی از هر متریالی استفاده کنی، اما فیلامنت PLA برای این پروژه کاملا مناسبه و هم برای بدنه اصلی و هم دکمه بزرگ ساعت جواب میده. بعد از تموم شدن پرینت، چک کن که مهرهها درست جا افتاده باشن و قطعات به راحتی روی هم سوار بشن.
مونتاژ نهایی قطعات داخل قاب
حالا وقتشه که تمام بخشهایی که ساختی رو به هم وصل کنی. اول از همه، برد اصلی رو داخل قاب پرینتشده بذار و با پیچهای M2 محکمش کن. حواست باشه که برد کاملا تراز بشه و پورتهاش با سوراخهای قاب هماهنگ باشن.
بعدش سیمهای اسپیکر و جا باتری رو به برد اصلی وصل کن. موقع لحیمکاری یا اتصال سوکتها، حتما قطب مثبت و منفی رو رعایت کن تا مدارت آسیب نبینه. وقتی همه اتصالات برقرار شد، سیمها رو مرتب داخل قاب جا بده و درپوشش رو ببند. تو این مرحله، کار مونتاژ سختافزاری کاملا تموم شده و دستگاه آماده دریافت نرمافزاره.
آپلود کدهای برنامه رو میکروکنترلر
فریمور این ساعت گویا تو محیط Visual Studio Code و با استفاده از افزونه PlatformIO نوشته شده. برای آپلود نرمافزار، VS Code رو باز کن و پوشه مربوط به کدهای ساعت (speaker_software) رو انتخاب کن. افزونه به صورت خودکار تمام کتابخونههای لازم رو دانلود و نصب میکنه.
حالا ساعت رو با یه کابل USB به کامپیوتر وصل کن. اصلا نیازی نیست دستگاه روشن باشه، چون موقع برنامهریزی، برقش مستقیما از همون پورت USB تامین میشه.
تو محیط VS Code، روی آیکون فلش سمت راست (Upload) کلیک کن. با این کار پروژهات کامپایل میشه و کدهای اصلی روی میکروکنترلر ESP32-S3 آپلود میشن.
وقتی نصب فریمور تموم شد، باید فایلهای صوتی MP3 رو هم روی دستگاه بریزی. برای این کار، روی آیکون PlatformIO سمت چپ صفحه کلیک کن. تو ساختار پروژه این مسیر رو برو: PROJECT TASKS ← esp32s3pico ← Platform ← Build Filesystem Image. بعد از اینکه این مرحله تموم شد، این مسیر رو برو: PROJECT TASKS ← esp32s3pico ← Platform ← Upload Filesystem Image.
این دستور فایلهای صوتی رو به صورت یه ایمیج یکپارچه روی حافظه دستگاه آپلود میکنه. وقتی هم فریمور و هم فایلهای صوتی با موفقیت نصب شدن، دستگاهت آمادست و فقط یه تنظیم کوچیک تو مرحله بعدی نیاز داره.
تنظیمات اولیه و اتصال به وایفای
این ساعت فقط یه بار نیاز به تنظیم داره و بعد از اون ماهها بدون هیچ دردسری کار میکنه. برای ورود به حالت تنظیمات، دکمهای که زیر دستگاه تعبیه شده رو نگه دار و همزمان دکمه بزرگ اصلی (Start) رو فشار بده. ساعت با گفتن عبارت "Wi-Fi on" بهت تایید میده که وارد حالت تنظیمات شده. حالا دستگاه یه شبکه وایفای داخلی به اسم "SpeakingClock" میسازه.
با گوشیت یا هر دستگاه دیگهای به این شبکه وایفای وصل شو. چند ثانیه بعد، یه صفحه مرورگر به صورت خودکار باز میشه که پنل تنظیمات ساعت رو نشون میده.
اول از همه، با زدن دکمه "Set RTC"، ساعت داخلی ماژول رو با زمان فعلی گوشیت سینک کن. با این کار، زمان دقیق تو حافظه ساعت کپی میشه. بعدش زبانی که دوست داری ساعت باهاش حرف بزنه رو انتخاب کن.
معمولا گزینههای انگلیسی و آلمانی در دسترسه (میتونی بعدا فایلهای صوتی فارسی رو هم بهش اضافه کنی). تو این صفحه میتونی ولتاژ باتری رو هم ببینی تا بدونی چقدر از عمر باتریها باقی مونده.
برای خروج از حالت تنظیمات، فقط کافیه دکمه اصلی ساعت رو یه بار فشار بدی. ساعت زمان فعلی رو اعلام میکنه و بعدش به صورت خودکار خاموش میشه تا باتری مصرف نشه.
نتیجهگیری و ایدههایی برای توسعه
- تبریک میگم! الان یه ساعت گویای هوشمند و فوقالعاده کممصرف داری که کار کردن باهاش بینهایت سادست و نیازی به اینترنت نداره.
- این پروژه ثابت کرد که با قطعات ارزونقیمت، یه مدار ساده و پرینتر سهبعدی میشه گجتهای به شدت کاربردی برای افراد خاص تولید کرد.
- چون این پروژه کاملا متنبازه، دستت بازه تا طراحیش رو تغییر بدی، کدهای نرمافزار رو ارتقا بدی یا قابش رو به سلیقه خودت شخصیسازی کنی.
- از همین ایده و سیستم مدیریت مصرف انرژی میتونی برای ساخت پروژههای باتریخور دیگه هم الهام بگیری.
- اگه این ساعت رو ساختی، زبان جدیدی بهش اضافه کردی یا طراحی قابش رو بهتر کردی، حتما نظرت رو با بقیه به اشتراک بذار تا همه بتونن از ایدههای خفنت استفاده کنن.
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.








































گفتگوهای کاربران
هنوز نظری ثبت نشده؛ تو شروع کن!
هنوز نظری ثبت نشده؛ تو شروع کن!