Bincika Lambar

Juya allon taɓawa na ESP32 zuwa Piano – Babu Bukatar Fayilolin Sauti

Juya allon taɓawa na ESP32 zuwa Piano – Babu Bukatar Fayilolin Sauti

Maɓallan da suka tashi, ƙungiyoyin gaskiya, da sautin da aka samar a kan guntu

Piano mai iya kunnawa a kan allon taɓawa. Maɓallan suna kama da sun tashi kuma suna danna lokacin da ka taɓa su, allon taɓawa yana bin yatsu biyar don ka iya kunna ƙungiyoyi, kuma kowane bayanin an haɗa shi ta hanyar processor - babu fayilolin sauti kuma babu SD card da ke da hannu.

922-Wannan Labarin Kiɗa na AI ne aikin nan yana nan.

923-Piano (wannan labarin na yanzu ne)

Yana da cikakken aiki ba tare da intanet ba. Ɗauke shi kuma ka kunna.

Piano na allon taɓawa yana aiki a kan MaTouch AI ESP32-S3 board

Shirye-shirye biyu, da dalilin da yasa dukansu suke

Wannan sketch yana da madannai biyu daban-daban gaba ɗaya, da maɓallin LAYOUT a kusurwar sama-hagu wanda ke musanya tsakaninsu. Lakabin a kan wannan maɓallin yana gaya maka wanne kake ciki a yanzu, don haka yana ninka a matsayin mai nuna alama - taɓa shi kuma yana canzawa.

KEYS - piano na gaske

MKRFAB3_4-D1.MOV.00_00_34_49.Still001

Maɓallai fari bakwai a faɗin cikakken nisa tare da maɓallai baƙi biyar a saman, daidai kamar madannai na gaske. Wannan shine abin da board ke farawa da shi. Domin octave ɗaya kawai ya dace, maɓallan - da + kusa da LAYOUT suna motsa ka sama da ƙasa; nunin cyan tsakaninsu yana nuna inda kake, C3 zuwa C6.

GRID - octaves huɗu, babu bayanan kuskure

Shirin GRID a kan MaTouch AI ESP32-S3 - layuka huɗu na bayanai bakwai
Shirin GRID a kan MaTouch AI ESP32-S3 - layuka huɗu na bayanai bakwai

Layuka huɗu na bakwai, maɓallai 28 a lokaci ɗaya. Kowane layi octave ne, mafi ƙasƙanci a ƙasa; kowane shafi bayanin ne - C, D, E, F, G, A, B. Babu sharps, babu flats, don haka duk board ɗin C major ne kuma babu bayanan kuskure. Kana iya ba wa wanda bai taɓa kunna komai ba, ka bar su su buge shi ba tare da tsari ba, kuma har yanzu yana jin kamar kiɗa.

Dalilin da yasa octave ɗaya kawai ke dacewa a matsayin madannai na gaske

Wannan shine lissafin da ke tsara duk aikin. Allon yana da pixels 320 a faɗin amma kusan inci 2.2 kawai a faɗi, don haka ƙarshen yatsa yana rufe kusan pixels 45.

  • Octave ɗaya - maɓallai fari bakwai a kusan pixels 45 kowanne. Mai daɗi.
  • Octaves biyu - maɓallai fari goma sha huɗu a kusan pixels 22 kowanne. Rabin ƙarshen yatsa. Ba a iya kunnawa.

Don haka shirin piano na gaske zai iya nuna octave ɗaya kawai a nan, wanda shine dalilin da yasa maɓallan octave suke - da kuma dalilin da yasa grid ke nan a matsayin madadin lokacin da kake son iyaka da aminci maimakon gaskiya.

Canza shirin a cikin lambar

Saituna uku kusa da saman sketch suna sarrafa duk wannan:

Saiti Abin da yake yi
BOOT_LAYOUT Wanne madannai ke bayyana a lokacin kunnawa. LAYOUT_KEYS don piano, LAYOUT_GRID don grid.
ROWS Nawa octaves GRID ke nuna. Default 4.
COLS Bayanan a kowane layi a cikin GRID. Default 7, bakwai na halitta.
BASE_OCTAVE Wanne octave layin ƙasa na GRID ke farawa. Default 3.

Yadda aka yi kamannin tashi

Gefen haske a saman da hagu na kowane maɓalli, da gefen duhu a ƙasa da dama, yana sa ido ya gane wani abu da ya fito. Danna maɓalli yana musanya su kuma yana duhuntar fuskar, wanda ke nuna an danna shi. Layukan lamba biyu ne a kowane gefe kuma yana da gamsarwa.

Yadda ake yin sauti

Babu rikodin a ko'ina a kan wannan board. Babu samfura, babu komai a kan katin ƙwaƙwalwa. Kowane bayanin mai tara lokaci ne wanda ke tafiya ta cikin teburin sine mai shigarwa 512 - tafiya da sauri don babban bayanin, a hankali don ƙarami - don haka babu trigonometry da ake lissafa a kowane samfur. Harmonics uku an haɗa su don ɗumi.

Kowane bayanin kuma yana samun gajeren ƙaddamarwa da sakin envelope, kusan milliseconds shida a ciki da saba'in a waje. Ba tare da shi ba za ka ji dannawa a duk lokacin da bayanin ya fara ko ya tsaya, domin kana kunna igiyar ruwa a cikakken ƙarfi. Wannan envelope shine bambanci tsakanin kayan aiki da ƙararrawa.

Har zuwa da bayanan kula biyar ana haɗa su tare, daidai da wuraren taɓawa biyar da panel ɗin ke bayarwa. i2s_write() yana toshewa lokacin da buffer ɗin sauti ya cika, wanda ke daidaita dukan shirin a lokaci na gaske - ba a buƙatar timers ko interrupts.

Maɓallan

  • LAYOUT yana musanya tsakanin KEYS da GRID. Label ɗin yana nuna wanne kake ciki.
  • - da + suna motsa octave ɗin. Tsarin KEYS kawai.
  • VOL yana buɗe panel ɗin ƙarar sama da keyboard ɗin - ja sandar don saita matakin. Taɓa VOL kuma don rufe shi.
  • DEMO yana kunna waƙa da kansa, yana kunna kowane maɓalli yayin tafiya.
  • WAVE yana juya sautin tsakanin SOFT, ORGAN da BRIGHT. Yana farawa akan ORGAN, wanda ya fi dacewa da wannan ƙaramin lasifika, amma gwada duka ukun.

Sarrafa ƙarar

Amplifier ɗin akan wannan board ɗin yana da ƙarfi sosai - 3.2 W a cikin lasifika 4 Ω - don haka iya rage shi yana da muhimmanci. Taɓa VOL yana zame panel ɗin sama da keyboard ɗin tare da babbar sandar da za a iya ja; matakin na yanzu kuma ana nuna shi a dindindin a sandar sama.

Yayin da panel ɗin ke buɗe, da gangan yana haɗiye duk wani taɓawa a ƙasa da sandar sama, don haka ba za ka iya kunna bayanan kula ta hanyar kuskure ba. Saitin ana amfani da shi azaman ninka ɗaya lokacin da aka daidaita sautin da aka haɗa zuwa 16-bit, wanda ba ya kashe komai a lokacin gudu kuma yana shafar waƙar demo daidai. Daidaita VOL_STEPS a cikin sketch ɗin idan kana son ƙarin matakai masu kyau ko marasa kyau fiye da goma na asali.

Babu WiFi, babu asusu, babu abin da za a saita

Ya cancanci a faɗi a sarari, domin kowane shirin a cikin wannan jerin yana buƙatar asusu a wani wuri: wannan ba ya buƙata. Babu secrets.h da za a cika, babu API key, babu hanyar sadarwa. Ɗauke shi kuma kunna shi. Daga cikin duk abin da aka gina don wannan board ɗin, wannan shine wanda za a ba wa mai farawa.

Gwada chord

Danna maɓallai uku ko huɗu a lokaci ɗaya. Mai sarrafa taɓawa yana bin diddigin yatsu biyar, don haka duk suna yin sauti tare - wannan shine lokacin da yake daina jin kamar ƙararrawa kuma ya fara jin kamar kayan kida.

Game da MaTouch AI ESP32-S3 2.8" board ɗin

Kowane shirin akan wannan shafin yana gudana akan MaTouch AI ESP32-S3 2.8" TFT ST7789V daga Makerfabs. Board ɗin ne gaba ɗaya: allon taɓawa mai launi, kyamara 3 megapixel, microphones biyu da amplifier ɗin lasifika na gaske, duk ana sarrafa su ta ESP32-S3 tare da 8 MB na PSRAM. Wannan haɗin shine abin da ke sa waɗannan ayyukan AI su yiwu akan board ɗaya ba tare da wani abu da aka haɗa ba.

8 MB na PSRAM ɗin ya fi kowane lamba muhimmanci a nan. Shi ne ke ba board ɗin damar riƙe firam ɗin kyamara, ƴan daƙiƙan sautin da aka rubuta, ko hoton da aka ɓoye a base64 a cikin ƙwaƙwalwar a lokaci ɗaya - babu ɗayansu da ya dace a cikin RAM ɗin ESP32’n na yau da kullun.

Takardun masana'anta: Shafin wiki na Makerfabs.

Kowane shirin don wannan board ɗin - kyamara, tantance fuska a layi, mataimakin murya na AI, hangen nesa na AI da shirin zane - yana da nasa koyarwar. Hanyoyin haɗi zuwa dukansu suna ƙasa da wannan labarin.

Muhimman bayanai

  • Processor: ESP32-S3, dual core 240 MHz, WiFi 2.4 GHz + Bluetooth 5.0
  • Ƙwaƙwalwar: 16 MB flash, 8 MB PSRAM (wanda kusan kowane shirin a nan ke buƙata)
  • Nuni: 2.8" IPS, 320×240, direban ST7789V, SPI
  • Taɓawa: GT911 capacitive, yana bin diddigin yatsu 5 a lokaci ɗaya
  • Kyamara: OV3660, 3 megapixel, har zuwa 2048×1536
  • Microphones: INMP441 I2S dijital mics biyu (nau'in stereo na gaske)
  • Lasifika: MAX98357A class-D amplifier, 3.2 W a cikin 4 Ω
  • Adana: Ramin katin microSD (yanayin SPI)
  • Wutar lantarki: USB-C, haɗin baturi na JST, caja TP4056, maɓallin wuta
  • Hakanan akan board ɗin: WS2812B RGB LED, PCF8563T agogon lokaci na gaske mai baturi, da ma'aunin baturi na MAX17048 wanda ba a jera shi a cikin bayanan hukuma ba

Kuna kunna shi da baturi? Filayen USB-C guda biyu, caja TP4056 da maɓallin wuta an bayyana su gaba ɗaya, tare da zane, a cikin labarin gwajin board ɗin — gami da wanne filin ke caji da kuma ko maɓallin ya kamata ya kasance a kunne ko a kashe.

Saitunan Arduino IDE

Waɗannan saitunan suna da muhimmanci. Yawancin matsalolin da mutane ke bayarwa game da wannan board ɗin ɗaya ne daga cikin waɗannan da ba daidai ba, kuma suna sake saitawa lokacin da ka canza sigar core ɗin, don haka sake duba su bayan kowane canji.

Saiti Ƙima
Board ESP32S3 Dev Module
Sigar ESP32 core 2.0.17
PSRAM OPI PSRAM
Girman Flash 16MB (128Mb)
Tsarin Partition 16M Flash (3MB APP/9.9MB FATFS)
USB CDC On Boot An kashe
Gudun Upload 921600
Share Duk Flash Kafin Upload An kashe
Port tashar CH340K USB-C

Idan upload ya kasa: saka board cikin yanayin download da hannu

Yawancin lokaci kawai ku danna Upload kuma yana aiki. Wani lokaci ba ya aiki - IDE yana zaune a Connecting...... sannan ya daina da Failed to connect to ESP32-S3: No serial data received.

Wannan yana faruwa saboda IO0 yana yin ayyuka uku a wannan board lokaci guda: shine maɓallin BOOT, shine layin sake-saiti na atomatik daga CH340K, kuma shine layin bayanai na RGB LED. Lokacin da sketch da ke gudana akan board yana tuka wannan LED, yana iya yaƙi da sake-saitin atomatik, don haka chip ɗin ya sake farawa cikin tsohon sketch ɗinku maimakon bootloader.

Gyaran yana ɗaukar daƙiƙa biyar. Saka shi cikin yanayin download da kanku:

  1. Danna kuma rike maɓallin BOOT.
  2. Yayin da kuke riƙe BOOT, danna RESET kuma ku saki RESET.
  3. Yanzu ku saki BOOT. Allon ya zama fanko - wannan shine bootloader yana jira.
  4. Danna Upload.
  5. Lokacin da ya gama, danna RESET sau ɗaya don kunna sabon sketch.

Idan har yanzu ba zai haɗa ba, rage Upload Speed zuwa 115200 kuma ku sake gwadawa. Kuma ku duba maɓallin wutar board ɗin yana kunne - CH340K yana ƙidaya kuma yana ba ku tashar COM koda lokacin da board ɗin kansa an kashe shi, wanda ke yaudarar mutane.

Libraries da ake buƙata

Wannan aikin yana buƙatar kowane library a cikin teburin da ke ƙasa - babu ƙari, babu ragi. Yawancin suna shigar kai tsaye daga Tools → Manage Libraries a cikin Arduino IDE, amma GFX Library for Arduino dole ne a shigar daga fayil ɗin ZIP. Lambobin sigar suna da mahimmanci, don haka da fatan za a yi amfani da ainihin waɗanda aka jera.

Library Sigar Marubuci Shigar daga
GFX Library for Arduino 1.5.6 moononournation Fayil ɗin ZIP - duba ƙasa
bb_captouch 1.3.1 Larry Bank Library Manager
Adafruit NeoPixel kowanne na kwanan nan Adafruit Library Manager

Shigar da GFX library daga fayil ɗin ZIP

  1. Sauke ZIP ɗin. An haɗa shi a cikin saukewar wannan aikin, ko kuna iya samunsa daga ma'ajiyar Arduino_GFX - danna maɓallin Code mai kore, sannan Download ZIP.
  2. Ajiye shi a inda za ku iya sake samunsa. Kada ku buɗe shi.
  3. A cikin Arduino IDE, danna SketchInclude LibraryAdd .ZIP Library.
  4. Bincika fayil ɗin ZIP da kuka sauke kuma danna Open.
  5. IDE ya shigar da shi kuma ya tabbatar a ƙasan taga. Idan kuna da sigar 1.6 da aka shigar, share wannan babban fayil ɗin daga Documents/Arduino/libraries da farko, ko biyun za su yi rikici.

Magance matsaloli

Alamar Dalili da gyara
Allon ya kasance baki Ba daidai ba sigar GFX library (yi amfani da 1.5.6) ko saitunan board ɗin ba daidai ba.
PSRAM alloc failed Tools → PSRAM ba a saita shi zuwa OPI PSRAM ba.
Babu abin upload / babu tashar COM Ba daidai ba tashar USB-C, ko direban CH340 ba a shigar ba.

Hotuna

makerfabs_ESP32S3_cam_music_screen-10-
makerfabs_ESP32S3_cam_music_screen-10-
makerfabs_ESP32S3_cam_music_screen-12-
makerfabs_ESP32S3_cam_music_screen-12-
MKRFAB3_4-D1.MOV.00_00_34_49.Still001
MKRFAB3_4-D1.MOV.00_00_34_49.Still001
Babu lambar da aka haɗa.

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Babu fayiloli da ake da su.