گجت همه کاره جیبی با ESP32
تا حالا شده توی موقعیتهای مختلف به یک ابزار کوچیک و جمعوجور نیاز داشته باشی که بتونه کارهای مختلفی برات انجام بده؟ مثلاً دما رو اندازه بگیره، فاصله رو حساب کنه، یا حتی یک بازی ساده برات اجرا کنه؟ این پروژه دقیقاً برای همین طراحی شده؛ یک مولتیتول جیبی که با تراشه قدرتمند ESP32-C3 کار میکنه و توی جیب هر کسی جا میشه.
این گجت کوچک کلی قابلیت جذاب داره: از حسگر نور و دما گرفته تا سنجش فاصله با لیزر، همراه با یک نمایشگر رنگی کوچک و دکمههای کنترلی. میتونی باهاش شبکههای وایفای رو اسکن کنی، کرنومتر بگیری، جدول تناوبی عناصر رو مرور کنی و حتی چندتا بازی نوستالژیک مثل مار و فلپیبرد رو انجام بدی. همهٔ اینها توی یک برد کوچک جمع شده که با کابل USB-C روشن میشه.
قراره توی این مقاله قدمبهقدم باهم پیش بریم، از سیمکشی قطعات و لحیمکاری گرفته تا بارگذاری کد نهایی و تست ابزار. نگران نباش، حتی اگه تجربه خیلی زیادی نداشته باشی، با دنبال کردن این راهنما میتونی خودت این مولتیتول رو بسازی. پس بریم سراغ کار و ببینیم چی لازم داریم.
قطعات موردنیاز
- ماژول ESP32-C3 Supermini
- نمایشگر 1.8 اینچی TFT LCD مدل ST7735S (همراه با 4 دکمه)
- مقاومت نوری (فتورزیستور)
- ترمیستور
- ماژول سنسور فاصله VL53L0X
- بازر پسیو
- سیمهای نازک (مثلا شماره 25AWG)
- مقاومت 1 کیلواهم
- دو عدد مقاومت 10 کیلواهم
- برد مدار چاپی یونیورسال
- کابل USB Type-C
- هویه لحیمکاری
- کامپیوتر
- پاوربانک USB
سیمکشی قطعات
نقشه پایههای ESP32:
- GPIO 0: ورودی آنالوگ فتورزیستور
- GPIO 1: ورودی آنالوگ ترمیستور
- GPIO 2: خروجی بازر پسیو
- GPIO 3: ورودی دکمههای K2 و K3 (نردبان مقاومتی)
- GPIO 4: پایه SCK نمایشگر ST7735S (SPI Clock)
- GPIO 5: دکمه K1
- GPIO 6: پایه SDA نمایشگر ST7735
- GPIO 7: پایه CS نمایشگر ST7735
- GPIO 8: پایه SDA سنسور VL53L0X
- GPIO 9: پایه SCL سنسور VL53L0X
- GPIO 10: پایه RST نمایشگر ST7735
- GPIO 20: پایه DC نمایشگر ST7735
- GPIO 21: دکمه K4
ماژول ESP32-C3 Supermini ابعاد خیلی کوچکی داره و فقط 13 پایه GPIO در دسترس قرار میده. جا دادن فتورزیستور، ترمیستور، نمایشگر SPI، سنسور فاصله، بازر و چهارتا دکمه توی این 13 پایه کار سادهای نبود. برای همین، دکمههای K2 و K3 با کمک یک نردبان مقاومتی روی یک پایه مشترک GPIO 3 قرار گرفتن.
زمانی که دکمه K2 فشرده بشه، پایه GPIO 3 مستقیما به زمین وصل میشه؛ اما وقتی K3 رو فشار بدی، این اتصال از طریق یک مقاومت 1 کیلواهمی به زمین برقرار میشه. به این ترتیب ESP32 میتونه از روی سطح ولتاژ تشخیص بده که کدوم دکمه فشرده شده.
مقاومتهای 10 کیلواهمی هم نقش تقسیمکننده ولتاژ رو برای فتورزیستور و ترمیستور بازی میکنن. با تغییر مقاومت این سنسورها، ولتاژ روی پایه GPIO عوض میشه و ESP32 میتونه مقدار نور و دما رو بخونه.
اگه بخوای سنسورهای دیگهای با پروتکل I2C اضافه کنی (مثل ژیروسکوپ یا شتابسنج)، میتونی از همون خطهای SDA و SCL استفاده کنی، فقط حواست باشه که مقاومت Pull-up 4.7 کیلواهمی رو فراموش نکنی، مگر اینکه خود سنسور داشته باشه.
برنامهنویسی ESP32-C3 Supermini
وقتی کد رو اجرا کنی، یک منو با دستهبندیهای زیر و عملکردهای مربوط به هر کدوم میبینی:
- حسگرها:
- نمایش تمام دادههای حسگرها (نموداری یا عددی لحظهای)
- فتورزیستور: میزان نور به درصد
- دما: نمایش دمای ترمیستور به سانتیگراد
- فاصله: نمایش فاصله از سنسور زمان پرواز به سانتیمتر
- ابزارهای کاربردی:
- جدول تناوبی عناصر: نمایش 118 عنصر با اطلاعاتی درباره هر کدام
- ثابتها: لیستی از ثابتهای معروف مثل عدد پی، سرعت نور در خلأ، ثابت پلانک و ...
- تبدیل واحد: تبدیل واحدهای رایج طول، حجم، سرعت و ...
- ماشین حساب: یک ماشین حساب ساده با جمع، تفریق، ضرب، تقسیم و اعداد اعشاری
- اسکنر وایفای: شبکههای وایفای اطراف رو اسکن میکنه و قدرت سیگنالشون رو نشون میده
- اسکنر BLE: دستگاههای بلوتوث کممصرف در دسترس رو نمایش میده
- کرنومتر: میتونه زمان رو نگه داره و دورها رو ذخیره کنه
- تایمر شمارش معکوس: یک تایمر تنظیم کن، بعد از اتمام زمان بازر هشدار میده
- بازیها:
- سایمون: بازی ساده حافظه
- دایناسور: کپی از بازی معروف دایناسور کروم
- مار: نسخهای از بازی مار گوشیهای قدیمی نوکیا
- فلپی برد: کپی از بازی فلپی برد
- تنظیمات:
- زبان: تغییر بین انگلیسی و چکی
- سرعت سایمون: سرعت بازی حافظه رو کم و زیاد کن تا آسونتر یا سختتر بشه
- صدا: صدای فشردن دکمهها رو روشن یا خاموش کن
- روشنایی: (با این سیمکشی کار نمیکنه، برای فعال شدن پایه BLK نمایشگر باید به GPIO 2 وصل بشه)
- تنظیم اختلاف دما: آفست دمای ترمیستور رو تنظیم کن
- رنگها/تمها: تم رنگی منوها رو عوض کن (4 گزینه)
رابط کاربری با 4 تا دکمه کنترل میشه:
- K1 برای بالا
- K2 برای پایین
- K3 برای بازگشت (#)
- K4 برای انتخاب (*)
بعضی از تنظیمات و رکوردهای بازیها در حافظه داخلی (ROM) ذخیره میشه، بنابراین حتی اگر برق قطع بشه یا میکروکنترلر ریست بشه، اطلاعات از بین نمیره. برای پاک کردن کامل دادهها، کد رو دوباره از طریق Arduino IDE آپلود کن، ولی این بار توی منوی Tools گزینهٔ "Erase All Flash Before Sketch Upload" رو فعال کن.
راستش رو بخوای، من توی کدنویسی خیلی حرفهای نیستم و بیشتر کدها با کمک هوش مصنوعی نوشته شده، پس اعتبارش به من نمیرسه.
لحیمکاری قطعات
- قطعات را روی برد یونیورسال بچین و با توجه به فضای مورد نیاز، ابعاد را مشخص کن (تصویر 1)
- برد را با اندازهای که همه چیز جا بشود، ببر (تصویر 2)
- پایههای قطعات را از سوراخهای برد عبور بده و خم کن تا هنگام لحیمکاری نیفتند (تصویر 3)
- لحیمکاری تمام قطعات و سیمهای جامپر را مرحلهبهمرحله انجام بده (تصویر 4)
- پس از اتمام لحیمکاری، همه اتصالات را دوباره بررسی کن (تصویر 5)
- با دقت نقشه سیمکشی را چک کن، مخصوصا اتصالات زمین و تغذیه که ناخواسته قطعهای نسوزد
- کد مربوط به مرحله 2 را روی ESP32-C3 Supermini آپلود کن
تست نهایی و ارتقاهای آینده
حالا میتونی دستگاه رو به برق وصل کنی و ببینی که همه چیز درست کار میکنه یا نه! اگر دوست داشتی میتونی با چسب حرارتی، یک پاوربانک پشت برد بچسبانی تا کاملا بدون نیاز به منبع خارجی کار کنه. همچنین میتونی سنسورهای دیگهای مثل ژیروسکوپ یا شتابسنج از طریق I2C اضافه کنی. در آینده شاید یک کارتخوان microSD هم اضافه بشه برای ذخیره گزارشهای طولانی یا حتی عکس.
این برد با هر منبع تغذیه USB Type-C روشن میشه، حتی میتونی با کابل USB-C به گوشی موبایلت وصلش کنی و همه جا همراهت باشه.
در نهایت، یک مولتیتول جیبی همهکاره ساختهای که کلی قابلیت باحال داره. امیدواریم از ساختنش لذت برده باشی. خوشحال میشیم نظرات و تجربهات رو با ما توی آیسیمدار به اشتراک بذاری.
فایلهای پیوست
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.








































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