ESP32 টাচস্ক্রিনকে পিয়ানোতে রূপান্তর করুন – কোনো সাউন্ড ফাইল প্রয়োজন নেই
উত্থিত চাবি, আসল কর্ড, এবং চিপে তৈরি শব্দ
টাচস্ক্রিনে একটি বাজানো যায় এমন পিয়ানো। চাবিগুলো উত্থিত দেখায় এবং স্পর্শ করলে ভেতরে চাপে, টাচ প্যানেল পাঁচটি আঙুল ট্র্যাক করে যাতে আপনি কর্ড বাজাতে পারেন, এবং প্রতিটি নোট প্রসেসর দ্বারা সংশ্লেষিত হয় - কোনো সাউন্ড ফাইল নেই এবং কোনো SD কার্ড জড়িত নেই।
922-এটি AI মিউজিক আর্টিকেল প্রজেক্টটি এখানে।
923-পিয়ানো (এটি বর্তমান আর্টিকেল)
এটি সম্পূর্ণ অফলাইন। ফ্ল্যাশ করুন এবং বাজান।
Robojax_Makerfab লিখুন। এটি ব্যবহার করতে আপনার কোনো খরচ নেই, এবং এটি এখানকার ফ্রি কোড এবং টিউটোরিয়াল সমর্থন করতে সাহায্য করে।দুটি লেআউট, এবং কেন দুটোই বিদ্যমান
এই স্কেচে দুটি সম্পূর্ণ ভিন্ন কীবোর্ড রয়েছে, এবং উপরের-বাম কোণায় একটি LAYOUT বাটন তাদের মধ্যে পরিবর্তন করে। সেই বাটনের লেবেলটি আপনাকে বলে যে আপনি এখন কোনটিতে আছেন, তাই এটি সূচক হিসেবেও কাজ করে - এটি ট্যাপ করুন এবং এটি পরিবর্তিত হয়।
KEYS - একটি আসল পিয়ানো
সম্পূর্ণ প্রস্থ জুড়ে সাতটি সাদা চাবি এবং উপরে পাঁচটি কালো চাবি, ঠিক আসল কীবোর্ডের মতো। বোর্ডটি এটিই দিয়ে শুরু হয়। যেহেতু শুধুমাত্র একটি অক্টেভ ফিট করে, LAYOUT-এর পাশের - এবং + বাটন আপনাকে উপরে এবং নিচে নিয়ে যায়; তাদের মধ্যে সায়ান রিডআউট দেখায় আপনি কোথায় আছেন, C3 থেকে C6।
GRID - চার অক্টেভ, কোনো ভুল নোট নেই

সাতের চারটি সারি, একসাথে ২৮টি চাবি। প্রতিটি সারি একটি অক্টেভ, সর্বনিম্নটি নিচে; প্রতিটি কলাম একটি নোট - C, D, E, F, G, A, B। কোনো শার্প নেই, কোনো ফ্ল্যাট নেই, তাই পুরো বোর্ডটি C মেজর এবং কোনো ভুল নোট নেই। আপনি এটি এমন কাউকে দিতে পারেন যিনি কখনো কিছু বাজাননি, তাদের এলোমেলোভাবে চাপতে দিন, এবং এটি এখনও সংগীতের মতো শোনাবে।
কেন একটি অক্টেভই আসল কীবোর্ড হিসেবে ফিট করে
এটি সেই গণিত যা পুরো প্রজেক্টকে আকার দেয়। স্ক্রিনটি ৩২০ পিক্সেল জুড়ে কিন্তু প্রায় ২.২ ইঞ্চি চওড়া, তাই একটি আঙুলের ডগা প্রায় ৪৫ পিক্সেল জুড়ে।
- এক অক্টেভ - সাতটি সাদা চাবি প্রতিটি প্রায় ৪৫ পিক্সেল। আরামদায়ক।
- দুই অক্টেভ - চৌদ্দটি সাদা চাবি প্রতিটি প্রায় ২২ পিক্সেল। অর্ধেক আঙুলের ডগা। বাজানো অযোগ্য।
তাই একটি সঠিক পিয়ানো লেআউট এখানে কখনোই এক অক্টেভের বেশি দেখাতে পারে না, এই কারণেই অক্টেভ বাটনগুলো বিদ্যমান - এবং কেন গ্রিডটি বিকল্প হিসেবে বিদ্যমান যখন আপনি বাস্তবতার পরিবর্তে পরিসর এবং নির্ভরযোগ্যতা চান।
কোডে লেআউট পরিবর্তন করা
স্কেচের শীর্ষের কাছে তিনটি সেটিং এই সব নিয়ন্ত্রণ করে:
| সেটিং | এটি যা করে |
|---|---|
BOOT_LAYOUT |
পাওয়ার-অনে কোন কীবোর্ড দেখা যায়। পিয়ানোর জন্য LAYOUT_KEYS, গ্রিডের জন্য LAYOUT_GRID। |
ROWS |
GRID কতটি অক্টেভ দেখায়। ডিফল্ট 4। |
COLS |
GRID-এ প্রতি সারিতে নোট। ডিফল্ট 7, সাতটি ন্যাচারাল। |
BASE_OCTAVE |
GRID-এর নিচের সারি কোন অক্টেভে শুরু হয়। ডিফল্ট 3। |
ROWS এবং COLS শুধুমাত্র GRID-কে প্রভাবিত করে। KEYS লেআউট তার নিজস্ব টেবিল থেকে অক্টেভ তৈরি করে এবং সেগুলি উপেক্ষা করে, তাই সেই সংখ্যাগুলি পরিবর্তন করলে কালো চাবি যোগ হবে না বা পিয়ানো পরিবর্তন হবে না।কীভাবে উত্থিত চেহারা তৈরি হয়
প্রতিটি চাবির উপরে এবং বামে একটি হালকা প্রান্ত, এবং নিচে এবং ডানে একটি গাঢ় প্রান্ত, চোখে কিছু বেরিয়ে থাকা হিসাবে ধরা পড়ে। একটি চাবি চাপলে সেগুলি বদলে যায় এবং মুখটি গাঢ় হয়, যা ভেতরে চাপা হিসাবে ধরা পড়ে। এটি প্রতি প্রান্তে দুই লাইন কোড এবং এটি বিশ্বাসযোগ্য।
কীভাবে শব্দ তৈরি হয়
এই বোর্ডে কোথাও কোনো রেকর্ডিং নেই। কোনো স্যাম্পল নেই, মেমরি কার্ডে কিছুই নেই। প্রতিটি নোট একটি ফেজ অ্যাকুমুলেটর যা একটি ৫১২-এন্ট্রি সাইন টেবিলের মাধ্যমে ধাপে ধাপে চলে - উচ্চ নোটের জন্য দ্রুত ধাপ, নিম্ন নোটের জন্য ধীর - তাই প্রতি স্যাম্পলে কোনো ত্রিকোণমিতি গণনা করা হয় না। উষ্ণতার জন্য তিনটি হারমোনিক মিশ্রিত হয়।
প্রতিটি নোটও একটি সংক্ষিপ্ত অ্যাটাক এবং রিলিজ এনভেলপ পায়, প্রায় ছয় মিলিসেকেন্ড ভেতরে এবং সত্তর বাইরে। এটি ছাড়া আপনি প্রতিবার নোট শুরু বা বন্ধ হলে একটি ক্লিক শুনতে পান, কারণ আপনি একটি ওয়েভফর্ম সম্পূর্ণ প্রশস্ততায় চালু করছেন। সেই এনভেলপটি একটি যন্ত্র এবং একটি বিপারের মধ্যে পার্থক্য।
একসাথে সর্বোচ্চ পাঁচটি নোট মিশ্রিত হয়, যা প্যানেল রিপোর্ট করা পাঁচটি স্পর্শ বিন্দুর সাথে মিলে যায়। i2s_write() অডিও বাফার পূর্ণ হলে ব্লক করে, যা পুরো প্রোগ্রামটিকে রিয়েল টাইমে সুবিধাজনকভাবে গতিময় রাখে - কোনো টাইমার বা ইন্টারাপ্টের প্রয়োজন নেই।
বোতামগুলি
- LAYOUT KEYS এবং GRID-এর মধ্যে পরিবর্তন করে। লেবেলটি দেখায় আপনি কোনটিতে আছেন।
- - এবং + অক্টেভ সরায়। শুধুমাত্র KEYS লেআউটে।
- VOL কীবোর্ডের উপর একটি ভলিউম প্যানেল খোলে - স্তর সেট করতে বারটি টেনে আনুন। এটি বন্ধ করতে আবার VOL-এ আলতো চাপুন।
- DEMO নিজে নিজে একটি সুর বাজায়, যাওয়ার সময় প্রতিটি কী আলোকিত করে।
- WAVE টোনটি SOFT, ORGAN এবং BRIGHT-এর মধ্যে ঘোরায়। এটি ORGAN-এ শুরু হয়, যা এই ছোট স্পিকারের জন্য সবচেয়ে উপযুক্ত, তবে তিনটিই চেষ্টা করুন।
ভলিউম নিয়ন্ত্রণ
এই বোর্ডের অ্যামপ্লিফায়ার সত্যিই জোরে - 4 Ω স্পিকারে 3.2 W - তাই এটি কমানোর ক্ষমতা গুরুত্বপূর্ণ। VOL-এ আলতো চাপ দিলে কীবোর্ডের উপর একটি বড় টেনে আনা যায় এমন বারসহ একটি প্যানেল স্লাইড হয়; বর্তমান স্তরটি উপরের বারে স্থায়ীভাবেও দেখানো হয়।
প্যানেলটি খোলা থাকাকালীন এটি ইচ্ছাকৃতভাবে উপরের বারের নীচের প্রতিটি স্পর্শ গ্রাস করে, তাই আপনি দুর্ঘটনাক্রমে এর মাধ্যমে নোট বাজাতে পারবেন না। সেটিংটি মিশ্রিত অডিওকে 16-বিটে স্কেল করার সময় একটি একক গুণ হিসাবে প্রয়োগ করা হয়, যা রান টাইমে কিছুই খরচ করে না এবং ডেমো সুরকে সমানভাবে প্রভাবিত করে। ডিফল্ট দশের চেয়ে সূক্ষ্ম বা মোটা ধাপ চাইলে স্কেচে VOL_STEPS সামঞ্জস্য করুন।
কোনো WiFi নেই, কোনো অ্যাকাউন্ট নেই, সেটআপ করার কিছুই নেই
স্পষ্টভাবে বলা মূল্যবান, কারণ এই সিরিজের প্রতিটি অন্যান্য প্রকল্পের কোথাও একটি অ্যাকাউন্ট প্রয়োজন: এইটির প্রয়োজন নেই। পূরণ করার জন্য কোনো secrets.h নেই, কোনো API কী নেই, কোনো নেটওয়ার্ক নেই। ফ্ল্যাশ করুন এবং বাজান। এই বোর্ডের জন্য তৈরি করা সবকিছুর মধ্যে, এটি একজন শিক্ষানবিশের হাতে দেওয়ার মতো একটি।
একটি কর্ড চেষ্টা করুন
একসাথে তিন বা চারটি কী চাপুন। টাচ কন্ট্রোলার পাঁচটি আঙুল ট্র্যাক করে, তাই তারা সব একসাথে শোনা যায় - সেই মুহূর্তেই এটি একটি বিপারের মতো অনুভূত হওয়া বন্ধ করে একটি বাদ্যযন্ত্রের মতো অনুভূত হতে শুরু করে।
MaTouch AI ESP32-S3 2.8" বোর্ড সম্পর্কে
এই পৃষ্ঠার প্রতিটি প্রকল্প Makerfabs-এর MaTouch AI ESP32-S3 2.8" TFT ST7789V-তে চলে। এটি একটি অল-ইন-ওয়ান বোর্ড: একটি রঙিন টাচস্ক্রিন, একটি 3 মেগাপিক্সেল ক্যামেরা, দুটি মাইক্রোফোন এবং একটি প্রকৃত স্পিকার অ্যামপ্লিফায়ার, সবকটি 8 MB PSRAMসহ একটি ESP32-S3 দ্বারা চালিত। এই সংমিশ্রণটিই এই AI প্রকল্পগুলিকে অন্য কিছু সংযুক্ত না করেই একটি একক বোর্ডে সম্ভব করে তোলে।
8 MB PSRAM এখানে অন্য যেকোনো সংখ্যার চেয়ে বেশি গুরুত্বপূর্ণ। এটি বোর্ডকে একই সময়ে একটি ক্যামেরা ফ্রেম, কয়েক সেকেন্ডের রেকর্ড করা অডিও বা একটি base64-এনকোডেড ছবি মেমরিতে ধারণ করতে দেয় - এর কোনোটিই ESP32-এর সাধারণ RAM-এ ফিট করে না।
নির্মাতার ডকুমেন্টেশন: Makerfabs উইকি পৃষ্ঠা।
এই বোর্ডের জন্য অন্যান্য প্রতিটি প্রকল্প - ক্যামেরা, অফলাইন মুখ শনাক্তকরণ, AI ভয়েস সহকারী, AI ভিশন এবং অঙ্কন প্রকল্প - এর নিজস্ব টিউটোরিয়াল রয়েছে। সবগুলির লিঙ্ক এই নিবন্ধের নীচে রয়েছে।
মূল বৈশিষ্ট্যসমূহ
- প্রসেসর: ESP32-S3, ডুয়াল কোর 240 MHz, WiFi 2.4 GHz + ব্লুটুথ 5.0
- মেমরি: 16 MB ফ্ল্যাশ, 8 MB PSRAM (এখানে প্রায় প্রতিটি প্রকল্পের জন্য প্রয়োজন)
- ডিসপ্লে: 2.8" IPS, 320×240, ST7789V ড্রাইভার, SPI
- টাচ: GT911 ক্যাপাসিটিভ, একসাথে 5টি আঙুল ট্র্যাক করে
- ক্যামেরা: OV3660, 3 মেগাপিক্সেল, 2048×1536 পর্যন্ত
- মাইক্রোফোন: দুটি INMP441 I2S ডিজিটাল মাইক (একটি প্রকৃত স্টেরিও জোড়া)
- স্পিকার: MAX98357A ক্লাস-D অ্যামপ্লিফায়ার, 4 Ω-তে 3.2 W
- স্টোরেজ: microSD কার্ড স্লট (SPI মোড)
- পাওয়ার: USB-C, JST ব্যাটারি সংযোগকারী, TP4056 চার্জার, পাওয়ার সুইচ
- এছাড়াও বোর্ডে: WS2812B RGB LED, 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 ফ্ল্যাশ (3MB APP/9.9MB FATFS) |
| USB CDC অন বুট | নিষ্ক্রিয় |
| আপলোড গতি | 921600 |
| আপলোডের আগে সব ফ্ল্যাশ মুছুন | নিষ্ক্রিয় |
| পোর্ট | CH340K USB-C পোর্ট |
আপলোড ব্যর্থ হলে: বোর্ডটি ম্যানুয়ালি ডাউনলোড মোডে রাখা
বেশিরভাগ সময় আপনি শুধু আপলোড চাপলেই কাজ হয়। কখনও কখনও হয় না - IDE Connecting......-এ বসে থাকে এবং তারপর Failed to connect to ESP32-S3: No serial data received দিয়ে হাল ছেড়ে দেয়।
এটি ঘটে কারণ IO0 এই বোর্ডে একসাথে তিনটি কাজ করে: এটি BOOT বোতাম, এটি CH340K থেকে অটো-রিসেট লাইন, এবং এটি RGB LED-এর ডেটা লাইন। যখন বোর্ডে ইতিমধ্যে চলমান স্কেচ সেই LED চালাচ্ছে, এটি স্বয়ংক্রিয় রিসেটের সাথে লড়াই করতে পারে, তাই চিপটি বুটলোডারে নয় বরং আপনার পুরানো স্কেচে পুনরায় চালু হয়।
সমাধানটি পাঁচ সেকেন্ড সময় নেয়। নিজে এটিকে ডাউনলোড মোডে রাখুন:
- BOOT বোতামটি চেপে ধরে রাখুন।
- BOOT ধরে রাখার সময়, RESET চাপুন এবং RESET ছেড়ে দিন।
- এখন BOOT ছেড়ে দিন। স্ক্রিন ফাঁকা হয়ে যায় - এটি বুটলোডার অপেক্ষা করছে।
- Upload-এ ক্লিক করুন।
- এটি শেষ হলে, নতুন স্কেচ চালানোর জন্য একবার RESET চাপুন।
যদি এটি এখনও সংযোগ না করে, Upload Speed 115200-এ নামিয়ে আবার চেষ্টা করুন। এবং বোর্ডের পাওয়ার সুইচ চালু আছে কিনা পরীক্ষা করুন - CH340K এনুমেরেট করে এবং আপনাকে একটি COM পোর্ট দেয় এমনকি বোর্ডটি নিজে বন্ধ থাকলেও, যা মানুষকে বিভ্রান্ত করে।
প্রয়োজনীয় লাইব্রেরি
এই প্রজেক্টের জন্য নিচের টেবিলের প্রতিটি লাইব্রেরি প্রয়োজন - এর বেশি নয়, কমও নয়। বেশিরভাগ সরাসরি Arduino IDE-তে Tools → Manage Libraries থেকে ইনস্টল হয়, কিন্তু GFX Library for Arduino একটি ZIP ফাইল থেকে ইনস্টল করতে হবে। সংস্করণ সংখ্যাগুলো গুরুত্বপূর্ণ, তাই অনুগ্রহ করে ঠিক তালিকাভুক্তগুলো ব্যবহার করুন।
| লাইব্রেরি | সংস্করণ | লেখক | ইনস্টল করুন |
|---|---|---|---|
| GFX Library for Arduino | 1.5.6 | moononournation | ZIP ফাইল - নিচে দেখুন |
| bb_captouch | 1.3.1 | Larry Bank | লাইব্রেরি ম্যানেজার |
| Adafruit NeoPixel | যেকোনো সাম্প্রতিক | Adafruit | লাইব্রেরি ম্যানেজার |
ZIP ফাইল থেকে GFX লাইব্রেরি ইনস্টল করা
- 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 ড্রাইভার ইনস্টল করা নেই। |
সম্পদ ও রেফারেন্সসমূহ
এখনো কোনো সম্পদ নেই।
ফাইলসমূহ📁
কোনো ফাইল উপলব্ধ নেই।