ESP32 تاچاسکرین را به پیانو تبدیل کنید – بدون نیاز به فایلهای صوتی
کلیدهای برجسته، آکوردهای واقعی، و صدایی که روی تراشه تولید میشود
یک پیانوی قابل نواختن روی صفحه لمسی. کلیدها برجسته به نظر میرسند و وقتی لمسشان میکنید فرو میروند، پنل لمسی پنج انگشت را دنبال میکند تا بتوانید آکورد بنوازید، و هر نت توسط پردازنده ساخته میشود - هیچ فایل صوتی و هیچ کارت SD در کار نیست.
922-این مقاله موسیقی هوش مصنوعی است پروژه اینجاست.
923-پیانو (این مقاله فعلی است)
کاملاً آفلاین است. فلش کنید و بنوازید.
Robojax_Makerfab را هنگام پرداخت در صفحه محصول MaTouch AI ESP32-S3 وارد کنید. استفاده از آن برای شما هزینهای ندارد و به حمایت از کدها و آموزشهای رایگان اینجا کمک میکند.دو چیدمان، و چرا هر دو وجود دارند
این اسکچ دو صفحهکلید کاملاً متفاوت دارد، و یک دکمه LAYOUT در گوشه بالا-چپ بین آنها جابهجا میشود. برچسب روی آن دکمه به شما میگوید که الان در کدام یک هستید، بنابراین به عنوان نشانگر هم عمل میکند - روی آن بزنید و تغییر میکند.
KEYS - یک پیانوی واقعی
هفت کلید سفید در تمام عرض با پنج کلید سیاه روی آنها، دقیقاً مثل یک صفحهکلید واقعی. برد با این حالت شروع میشود. چون فقط یک اکتاو جا میشود، دکمههای - و + کنار LAYOUT شما را بالا و پایین میبرند؛ نمایشگر فیروزهای بین آنها نشان میدهد کجا هستید، از C3 تا C6.
GRID - چهار اکتاو، بدون نت اشتباه

چهار ردیف از هفت، ۲۸ کلید به طور همزمان. هر ردیف یک اکتاو است، پایینترین در پایین؛ هر ستون یک نت است - C، D، E، F، G، A، B. هیچ دیز و بمل وجود ندارد، بنابراین کل برد در گام دو ماژور است و هیچ نت اشتباهی وجود ندارد. میتوانید آن را به کسی بدهید که هرگز چیزی ننواخته، بگذارید تصادفی بزند، و باز هم مثل موسیقی به نظر برسد.
چرا فقط یک اکتاو به عنوان صفحهکلید واقعی جا میشود
این حسابوکتابی است که کل پروژه را شکل میدهد. صفحه ۳۲۰ پیکسل عرض دارد اما فقط حدود ۲.۲ اینچ پهنا دارد، بنابراین یک نوک انگشت تقریباً ۴۵ پیکسل را میپوشاند.
- یک اکتاو - هفت کلید سفید با حدود ۴۵ پیکسل هر کدام. راحت.
- دو اکتاو - چهارده کلید سفید با حدود ۲۲ پیکسل هر کدام. نصف نوک انگشت. غیرقابل نواختن.
پس یک چیدمان پیانوی واقعی فقط میتواند یک اکتاو را اینجا نشان دهد، به همین دلیل دکمههای اکتاو وجود دارند - و به همین دلیل گرید به عنوان جایگزین وقتی میخواهید گستره و قابلیت اطمینان به جای واقعگرایی داشته باشید، وجود دارد.
تغییر چیدمان در شِفر (کود)
سه تنظیمات نزدیک بالای اسکچ همه اینها را کنترل میکنند:
| تنظیمات | کاری که انجام میدهد |
|---|---|
BOOT_LAYOUT |
کدام صفحهکلید هنگام روشن شدن ظاهر میشود. LAYOUT_KEYS برای پیانو، LAYOUT_GRID برای گرید. |
ROWS |
چند اکتاو GRID نشان میدهد. پیشفرض ۴. |
COLS |
نتها در هر ردیف در GRID. پیشفرض ۷، هفت نت طبیعی. |
BASE_OCTAVE |
کدام اکتاو ردیف پایین GRID شروع میشود. پیشفرض ۳. |
ROWS و COLS فقط روی GRID تأثیر میگذارند. چیدمان KEYS اکتاو خود را از جدولهای خودش میسازد و آنها را نادیده میگیرد، بنابراین تغییر آن اعداد کلیدهای سیاه اضافه نمیکند یا پیانو را تغییر نمیدهد.چگونه ظاهر برجسته ساخته میشود
یک لبه روشن در امتداد بالا و چپ هر کلید، و یک لبه تیره در امتداد پایین و راست، برای چشم به عنوان چیزی که بیرون زده خوانده میشود. فشردن یک کلید آنها را جابهجا میکند و سطح را تیره میکند، که به عنوان فرو رفته خوانده میشود. این دو خط شِفر (کود) برای هر لبه است و قانعکننده است.
چگونه صدا ساخته میشود
هیچ ضبطی در هیچ جای این برد وجود ندارد. هیچ نمونه صوتی، هیچ چیزی روی کارت حافظه. هر نت یک انباشتگر فاز است که از یک جدول سینوسی ۵۱۲ مدخلی عبور میکند - سریع از آن عبور کنید برای نت بالا، آهسته برای نت پایین - بنابراین هیچ مثلثاتی برای هر نمونه محاسبه نمیشود. سه هارمونیک برای گرما ترکیب میشوند.
هر نت همچنین یک پوشش حمله و رهاسازی کوتاه دریافت میکند، حدود شش میلیثانیه ورود و هفتاد خروج. بدون آن، هر بار که یک نت شروع یا متوقف میشود یک کلیک میشنوید، چون یک شکل موج را با دامنه کامل روشن میکنید. آن پوشش تفاوت بین یک ساز و یک بوق است.
حداکثر پنج نت با هم ترکیب میشوند که با پنج نقطه لمسی که پنل گزارش میدهد مطابقت دارد. i2s_write() وقتی بافر صوتی پر است مسدود میشود، که بهطور مناسبی کل برنامه را در زمان واقعی تنظیم میکند - بدون نیاز به تایمر یا وقفه.
دکمهها
- LAYOUT بین KEYS و GRID جابهجا میشود. برچسب نشان میدهد که در کدام حالت هستید.
- - و + اکتاو را جابهجا میکنند. فقط در چیدمان KEYS.
- VOL یک پنل صدا را روی صفحهکلید باز میکند - نوار را بکشید تا سطح صدا تنظیم شود. دوباره روی VOL ضربه بزنید تا بسته شود.
- DEMO یک آهنگ را بهتنهایی پخش میکند و هر کلید را هنگام پخش روشن میکند.
- WAVE تن را بین SOFT، ORGAN و BRIGHT تغییر میدهد. از ORGAN شروع میشود که برای این بلندگوی کوچک بهترین است، اما هر سه را امتحان کنید.
کنترل صدا
آمپلیفایر روی این برد واقعاً بلند است - 3.2 وات به یک بلندگوی 4 اهم - بنابراین توانایی کمکردن آن مهم است. ضربه زدن روی VOL یک پنل را روی صفحهکلید با یک نوار قابل کشیدن بزرگ باز میکند؛ سطح فعلی نیز بهطور دائمی در نوار بالا نشان داده میشود.
در حالی که پنل باز است، عمداً هر لمس زیر نوار بالا را میبلعد، بنابراین نمیتوانید بهطور تصادفی از طریق آن نتها را فعال کنید. تنظیم بهصورت یک ضرب واحد هنگام مقیاسبندی صدای ترکیبی به 16 بیت اعمال میشود، که در زمان اجرا هزینهای ندارد و بهطور یکسان روی آهنگ دمو تأثیر میگذارد. اگر مراحل دقیقتر یا درشتتر از ده پیشفرض میخواهید، VOL_STEPS را در اسکچ تنظیم کنید.
بدون WiFi، بدون حساب، هیچ چیز برای راهاندازی
ارزش دارد که صریح بگوییم، زیرا هر پروژه دیگری در این سری به یک حساب در جایی نیاز دارد: این یکی نیاز ندارد. هیچ secrets.h برای پر کردن وجود ندارد، هیچ کلید API، هیچ شبکهای. آن را فلش کنید و پخش کنید. از بین همه چیزهایی که برای این برد ساخته شده، این یکی است که باید به یک مبتدی داده شود.
یک آکورد را امتحان کنید
سه یا چهار کلید را همزمان فشار دهید. کنترلکننده لمسی پنج انگشت را ردیابی میکند، بنابراین همه آنها با هم صدا میدهند - این لحظهای است که دیگر مثل یک بوق احساس نمیشود و مثل یک ساز شروع به حس شدن میکند.
درباره برد MaTouch AI ESP32-S3 2.8 اینچی
هر پروژه در این صفحه روی MaTouch AI ESP32-S3 2.8" TFT ST7789V از Makerfabs اجرا میشود. این یک برد همهکاره است: یک صفحهنمایش لمسی رنگی، یک دوربین 3 مگاپیکسلی، دو میکروفون و یک آمپلیفایر واقعی بلندگو، همه توسط یک ESP32-S3 با 8 مگابایت PSRAM هدایت میشوند. این ترکیب چیزی است که این پروژههای هوش مصنوعی را روی یک برد واحد بدون هیچ چیز دیگری ممکن میسازد.
8 مگابایت PSRAM بیشتر از هر عدد دیگری در اینجا اهمیت دارد. این چیزی است که به برد اجازه میدهد یک فریم دوربین، چند ثانیه صدای ضبطشده، یا یک عکس کدگذاریشده با base64 را همزمان در حافظه نگه دارد - هیچکدام از اینها در RAM معمولی ESP32 جا نمیشوند.
مستندات تولیدکننده: صفحه ویکی Makerfabs.
هر پروژه دیگر برای این برد - دوربین، تشخیص چهره آفلاین، دستیار صوتی هوش مصنوعی، بینایی هوش مصنوعی و پروژه نقاشی - آموزش مخصوص به خود را دارد. لینکهای همه آنها در زیر این مقاله است.
مشخصات کلیدی
- پردازنده: ESP32-S3، دو هستهای 240 مگاهرتز، WiFi 2.4 گیگاهرتز + بلوتوث 5.0
- حافظه: 16 مگابایت فلش، 8 مگابایت PSRAM (تقریباً برای هر پروژه در اینجا لازم است)
- نمایشگر: 2.8 اینچ IPS، 320×240، درایور ST7789V، SPI
- لمس: GT911 خازنی، ردیابی 5 انگشت بهطور همزمان
- دوربین: OV3660، 3 مگاپیکسل، تا 2048×1536
- میکروفونها: دو میکروفون دیجیتال I2S INMP441 (یک جفت استریوی واقعی)
- بلندگو: آمپلیفایر کلاس D MAX98357A، 3.2 وات به 4 اهم
- ذخیرهسازی: اسلات کارت microSD (حالت SPI)
- برق: USB-C، کانکتور باتری JST، شارژر TP4056، کلید برق
- همچنین روی برد: LED RGB WS2812B، ساعت واقعی با باتری PCF8563T، و یک سنجشگر باتری MAX17048 که در مشخصات رسمی لیست نشده است
USB CDC On Boot را روی Disabled تنظیم کنید. از پورت اشتباه استفاده کنید و صدا بد رفتار میکند یا آپلودها شکست میخورند.آیا از باتری تغذیه میکنید؟ دو سوکت USB-C، شارژر TP4056 و کلید برق بهطور کامل، با شماتیک، در مقاله امتحان برد توضیح داده شدهاند — از جمله اینکه کدام سوکت شارژ میکند و آیا کلید باید روشن یا خاموش باشد.
تنظیمات Arduino IDE
این تنظیمات مهم هستند. بیشتر مشکلاتی که مردم با این برد گزارش میکنند یکی از این موارد است که اشتباه است، و آنها وقتی نسخه هسته را تغییر میدهید بازنشانی میشوند، بنابراین بعد از هر تغییری دوباره آنها را بررسی کنید.
| تنظیمات | مقدار |
|---|---|
| برد | ESP32S3 Dev Module |
| نسخه هسته ESP32 | 2.0.17 |
| PSRAM | OPI PSRAM |
| حافظه فلش | 16MB (128Mb) |
| طرح پارتیشنبندی | 16M Flash (3MB APP/9.9MB FATFS) |
| USB CDC هنگام بوت | غیرفعال |
| سرعت آپلود | 921600 |
| پاک کردن کامل فلش قبل از آپلود | غیرفعال |
| پورت | پورت USB-C CH340K |
اگر آپلود ناموفق بود: قرار دادن برد در حالت دانلود به صورت دستی
در بیشتر مواقع فقط دکمه Upload را فشار میدهید و کار میکند. گاهی اوقات این اتفاق نمیافتد - IDE در Connecting...... میماند و سپس با پیام Failed to connect to ESP32-S3: No serial data received تسلیم میشود.
این اتفاق میافتد زیرا IO0 سه وظیفه را همزمان روی این برد انجام میدهد: دکمه BOOT است، خط تنظیم مجدد خودکار از CH340K است، و خط داده برای LED RGB است. وقتی برنامهای که از قبل روی برد در حال اجراست آن LED را هدایت میکند، ممکن است با تنظیم مجدد خودکار درگیر شود، بنابراین تراشه به جای بوتلودر، به برنامه قبلی شما راهاندازی مجدد میشود.
راهحل پنج ثانیه طول میکشد. خودتان آن را در حالت دانلود قرار دهید:
- دکمه BOOT را فشار دهید و نگه دارید.
- در حالی که هنوز BOOT را نگه داشتهاید، دکمه RESET را فشار دهید و رها کنید.
- حالا BOOT را رها کنید. صفحه خالی میشود - این یعنی بوتلودر در انتظار است.
- روی Upload کلیک کنید.
- وقتی تمام شد، یک بار RESET را فشار دهید تا برنامه جدید اجرا شود.
اگر باز هم متصل نشد، Upload Speed را به 115200 کاهش دهید و دوباره تلاش کنید. همچنین بررسی کنید که کلید برق برد روشن باشد - CH340K حتی وقتی خود برد خاموش است شناسایی میشود و یک پورت COM به شما میدهد، که افراد را گمراه میکند.
کتابخانههای مورد نیاز
این پروژه به تمام کتابخانههای جدول زیر نیاز دارد - نه بیشتر، نه کمتر. بیشتر آنها مستقیماً از Tools → Manage Libraries در Arduino IDE نصب میشوند، اما GFX Library for Arduino باید از یک فایل ZIP نصب شود. شماره نسخهها مهم هستند، بنابراین لطفاً دقیقاً از نسخههای ذکر شده استفاده کنید.
| کتابخانه | نسخه | نویسنده | نصب از |
|---|---|---|---|
| GFX Library for Arduino | 1.5.6 | moononournation | فایل ZIP - به زیر مراجعه کنید |
| bb_captouch | 1.3.1 | Larry Bank | Library Manager |
| Adafruit NeoPixel | هر نسخه اخیر | Adafruit | Library Manager |
نصب کتابخانه GFX از یک فایل ZIP
- فایل ZIP را دانلود کنید. این فایل در دانلود این پروژه گنجانده شده است، یا میتوانید آن را از مخزن Arduino_GFX دریافت کنید - روی دکمه سبز Code کلیک کنید، سپس Download ZIP.
- آن را در جایی ذخیره کنید که بتوانید دوباره پیدا کنید. آن را از حالت فشرده خارج نکنید.
- در Arduino IDE، روی Sketch → Include Library → Add .ZIP Library کلیک کنید.
- به فایل ZIP که دانلود کردهاید بروید و روی Open کلیک کنید.
- IDE آن را نصب میکند و در پایین پنجره تأیید میکند. اگر قبلاً نسخه 1.6 نصب کردهاید، ابتدا آن پوشه را از
Documents/Arduino/librariesحذف کنید، در غیر این صورت این دو با هم تداخل خواهند داشت.
عیبیابی
| علامت | علت و راهحل |
|---|---|
| صفحه سیاه میماند | نسخه اشتباه کتابخانه GFX (از 1.5.6 استفاده کنید) یا تنظیمات اشتباه برد. |
PSRAM alloc failed |
Tools → PSRAM روی OPI PSRAM تنظیم نشده است. |
| هیچ چیزی آپلود نمیشود / پورت COM وجود ندارد | پورت USB-C اشتباه است، یا درایور CH340 نصب نشده است. |
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
هیچ فایلی موجود نیست.