Verander 'n ESP32-raakskerm in 'n klavier – geen klanklêers nodig nie
Verhoogde sleutels, regte akkoorde, en die klank wat op die chip gegenereer word
'n Speelbare klavier op die raakskerm. Die sleutels lyk verhoog en druk in wanneer jy hulle raak, die raakpaneel volg vyf vingers sodat jy akkoorde kan speel, en elke noot word deur die verwerker gesintetiseer - daar is geen klanklêers en geen SD-kaart betrokke nie.
922-Dit is AI Musiek Artikel projek is hier.
923-Die Klavier (is hierdie huidige artikel)
Dit is heeltemal vanlyn. Flits dit en speel.
Robojax_Makerfab in by die betaalpunt op die MaTouch AI ESP32-S3 produkbladsy. Dit kos jou niks om te gebruik nie, en dit help om die gratis kode en handleidings hier te ondersteun.Twee uitlegte, en waarom beide bestaan
Hierdie skets het twee heeltemal verskillende klawerborde, en 'n LAYOUT-knoppie in die boonste linkerhoek wissel tussen hulle. Die etiket op daardie knoppie vertel jou in watter een jy nou is, so dit dien ook as die aanwyser - tik dit en dit verander.
KEYS - 'n regte klavier
Sewe wit sleutels oor die volle breedte met vyf swart sleutels bo-op, presies soos 'n regte klawerbord. Dit is waarmee die bord begin. Omdat slegs een oktaaf pas, beweeg die - en +-knoppies langs LAYOUT jou op en af; die siaanlesing tussen hulle wys waar jy is, C3 tot C6.
GRID - vier oktawe, geen verkeerde note nie

Vier rye van sewe, 28 sleutels gelyktydig. Elke ry is 'n oktaaf, laagste onderaan; elke kolom is 'n noot - C, D, E, F, G, A, B. Geen kruise, geen molle nie, so die hele bord is C-majeur en daar is geen verkeerde note nie. Jy kan dit aan iemand gee wat nog nooit enigiets gespeel het nie, laat hulle lukraak daaraan slaan, en dit klink steeds soos musiek.
Waarom een oktaaf al is wat pas as 'n regte klawerbord
Dit is die rekenkunde wat die hele projek vorm. Die skerm is 320 pixels breed maar slegs ongeveer 2.2 duim wyd, so 'n vingerpunt bedek ongeveer 45 pixels.
- Een oktaaf - sewe wit sleutels op ongeveer 45 pixels elk. Gemaklik.
- Twee oktawe - veertien wit sleutels op ongeveer 22 pixels elk. 'n Halwe vingerpunt. Onspeelbaar.
So 'n behoorlike klavieruitleg kan hier net een oktaaf wys, daarom bestaan die oktaafknoppies - en daarom bestaan die rooster as die alternatief wanneer jy reikwydte en betroubaarheid wil hê eerder as realisme.
Verander die uitleg in kode
Drie instellings naby die bokant van die skets beheer dit alles:
| Instelling | Wat dit doen |
|---|---|
BOOT_LAYOUT |
Watter klawerbord verskyn by aanskakeling. LAYOUT_KEYS vir die klavier, LAYOUT_GRID vir die rooster. |
ROWS |
Hoeveel oktawe die GRID wys. Standaard 4. |
COLS |
Note per ry in die GRID. Standaard 7, die sewe natuurlike note. |
BASE_OCTAVE |
Watter oktaaf die onderste ry van die GRID op begin. Standaard 3. |
ROWS en COLS beïnvloed slegs die GRID. Die KEYS-uitleg bou sy oktaaf uit sy eie tabelle en ignoreer hulle, so die verandering van daardie getalle sal nie swart sleutels byvoeg of die klavier verander nie.Hoe die verhoogde voorkoms gedoen word
'n Ligte rand langs die bokant en links van elke sleutel, en 'n donker rand langs die onderkant en regs, lees vir die oog as iets wat uitsteek. Druk op 'n sleutel ruil hulle om en verdonker die gesig, wat lees as ingedruk. Dit is twee reëls kode per rand en dit is oortuigend.
Hoe die klank gemaak word
Daar is geen opnames enige plek op hierdie bord nie. Geen monsters, niks op die geheuekaart nie. Elke noot is 'n fase-akkumulator wat deur 'n 512-inskrywing sinus-tabel stap - stap vinnig daardeur vir 'n hoë noot, stadig vir 'n lae een - so geen trigonometrie word per monster bereken nie. Drie harmonieke word gemeng vir warmte.
Elke noot kry ook 'n kort aanval- en vrystellingsomhulsel, ongeveer ses millisekondes in en sewentig uit. Sonder dit hoor jy 'n klik elke keer as 'n noot begin of stop, omdat jy 'n golfvorm teen volle amplitude aanskakel. Daardie omhulsel is die verskil tussen 'n instrument en 'n pieper.
Tot vyf note word saam gemeng, wat ooreenstem met die vyf raakpunte wat die paneel rapporteer. i2s_write() blokkeer wanneer die oudiobuffer vol is, wat gerieflik die hele program teen regte tyd tempo hou - geen timers of onderbrekings is nodig nie.
Die knoppies
- LAYOUT wissel tussen KEYS en GRID. Die etiket wys watter een jy in is.
- - en + beweeg die oktaaf. Slegs KEYS-uitleg.
- VOL open 'n volume-paneel oor die sleutelbord - sleep die balk om die vlak te stel. Tik weer op VOL om dit te sluit.
- DEMO speel 'n deuntjie op sy eie en verlig elke sleutel soos dit gaan.
- WAVE wissel die toon tussen SOFT, ORGAN en BRIGHT. Dit begin op ORGAN, wat die beste by hierdie klein luidspreker pas, maar probeer al drie.
Volume-beheer
Die versterker op hierdie bord is regtig hard - 3.2 W in 'n 4 Ω-luidspreker - so om dit te kan afdraai, maak saak. Tik op VOL laat 'n paneel oor die sleutelbord gly met 'n groot sleepbare balk; die huidige vlak word ook permanent in die boonste balk gewys.
Terwyl die paneel oop is, sluk dit doelbewus elke raakpunt onder die boonste balk, sodat jy nie per ongeluk note daardeur kan laat klink nie. Die instelling word toegepas as 'n enkele vermenigvuldiging wanneer die gemengde oudio na 16-bis geskaal word, wat niks tydens looptyd kos nie en die demo-deuntjie eweneens beïnvloed. Pas VOL_STEPS in die skets aan as jy fyner of growwer stappe as die standaard tien wil hê.
Geen WiFi, geen rekeninge, niks om op te stel nie
Die moeite werd om duidelik te sê, want elke ander projek in hierdie reeks benodig 'n rekening iewers: hierdie een nie. Daar is geen secrets.h om in te vul nie, geen API-sleutel, geen netwerk nie. Flits dit en speel. Van alles wat vir hierdie bord gebou is, is dit die een om aan 'n beginner te gee.
Probeer 'n akkoord
Druk drie of vier sleutels gelyktydig. Die raakbeheerder volg vyf vingers, sodat hulle almal saam klink - dit is die oomblik wanneer dit ophou voel soos 'n pieper en begin voel soos 'n instrument.
Oor die MaTouch AI ESP32-S3 2.8"-bord
Elke projek op hierdie bladsy loop op die MaTouch AI ESP32-S3 2.8" TFT ST7789V van Makerfabs. Dit is 'n alles-in-een-bord: 'n kleurraakskerm, 'n 3-megapixel-kamera, twee mikrofoons en 'n regte luidsprekerversterker, alles aangedryf deur 'n ESP32-S3 met 8 MB PSRAM. Daardie kombinasie is wat hierdie AI-projekte moontlik maak op 'n enkele bord met niks anders aangeheg nie.
Die 8 MB PSRAM maak meer saak as enige ander getal hier. Dit is wat die bord in staat stel om 'n kameraraam, 'n paar sekondes opgeneemde oudio, of 'n base64-geënkodeerde foto gelyktydig in geheue te hou - nie een daarvan pas in die ESP32 se normale RAM nie.
Vervaardiger-dokumentasie: Makerfabs wiki-bladsy.
Elke ander projek vir hierdie bord - die kamera, vanlyn gesigsherkenning, die AI-stemassistent, AI-visie en die tekenprojek - het sy eie handleiding. Skakels na almal is onder hierdie artikel.
Belangrikste spesifikasies
- Verwerker: ESP32-S3, dubbelkern 240 MHz, WiFi 2.4 GHz + Bluetooth 5.0
- Geheue: 16 MB-flits, 8 MB PSRAM (vereis deur byna elke projek hier)
- Skerm: 2.8" IPS, 320×240, ST7789V-bestuurder, SPI
- Raak: GT911 kapasitief, volg 5 vingers gelyktydig
- Kamera: OV3660, 3 megapixel, tot 2048×1536
- Mikrofoons: twee INMP441 I2S digitale mikrofoons ('n egte stereopaar)
- Luidspreker: MAX98357A klas-D-versterker, 3.2 W in 4 Ω
- Berging: microSD-kaartgleuf (SPI-modus)
- Krag: USB-C, JST-battery-aansluiting, TP4056-laaier, kragskakelaar
- Ook op die bord: WS2812B RGB-LED, PCF8563T battery-ondersteunde regte-tyd-klok, en 'n MAX17048-battery-meting wat nie in die amptelike spesifikasies gelys is nie
USB CDC On Boot op Disabled. Gebruik die verkeerde poort en oudio sal wanfunksioneer of oplaai sal misluk.Krag dit van 'n battery af? Die twee USB-C-sokke, die TP4056-laaier en die kragskakelaar word volledig verduidelik, met die skematiese, in die bordtoets-artikel — insluitend watter sok laai en of die skakelaar aan of af moet wees.
Arduino IDE-instellings
Hierdie instellings maak saak. Die meeste probleme wat mense met hierdie bord rapporteer, is een van hierdie wat verkeerd is, en hulle stel terug wanneer jy die kernweergawe verander, so kyk hulle weer na enige verandering.
| Instelling | Waarde |
|---|---|
| Bord | ESP32S3 Dev Module |
| ESP32-kernweergawe | 2.0.17 |
| PSRAM | OPI PSRAM |
| Flitsgrootte | 16MB (128Mb) |
| Partisie-skema | 16M Flash (3MB APP/9.9MB FATFS) |
| USB CDC by opstart | Gedeaktiveer |
| Oplaaispoed | 921600 |
| Vee alle flits uit voor oplaai | Gedeaktiveer |
| Poort | die CH340K USB-C-poort |
As die oplaai misluk: sit die bord met die hand in aflaaimodus
Meeste van die tyd druk jy net Upload en dit werk. Soms nie - die IDE bly by Connecting...... en gee dan moed op met Failed to connect to ESP32-S3: No serial data received.
Dit gebeur omdat IO0 drie take op hierdie bord gelyktydig doen: dit is die BOOT-knoppie, dit is die outo-herstellyn van die CH340K, en dit is die datalyne vir die RGB-LED. Wanneer die skets wat reeds op die bord loop daardie LED bestuur, kan dit met die outomatiese herstel baklei, sodat die skyfie in jou ou skets herbegin in plaas van in die selflaaier.
Die regstelling neem vyf sekondes. Sit dit self in aflaaimodus:
- Druk en hou die BOOT-knoppie in.
- Terwyl jy steeds BOOT vashou, druk RESET en laat RESET los.
- Laat nou BOOT los. Die skerm word leeg - dit is die selflaaier wat wag.
- Klik Upload.
- Wanneer dit klaar is, druk RESET een keer om die nuwe skets te laat loop.
As dit steeds nie sal koppel nie, verlaag Upload Speed na 115200 en probeer weer. En kyk dat die bord se kragskakelaar aan is - die CH340K tel op en gee jou 'n COM-poort selfs wanneer die bord self afgeskakel is, wat mense flous.
Vereiste biblioteke
Hierdie projek benodig elke biblioteek in die tabel hieronder - niks meer, niks minder nie. Die meeste installeer direk vanaf Tools → Manage Libraries in die Arduino IDE, maar GFX Library for Arduino moet vanaf 'n ZIP-lêer geïnstalleer word. Die weergawe-nommers maak saak, so gebruik asseblief presies die wat gelys word.
| Biblioteek | Weergawe | Skrywer | Installeer vanaf |
|---|---|---|---|
| GFX Library for Arduino | 1.5.6 | moononournation | ZIP-lêer - sien hieronder |
| bb_captouch | 1.3.1 | Larry Bank | Library Manager |
| Adafruit NeoPixel | enige onlangse | Adafruit | Library Manager |
Installeer die GFX-biblioteek vanaf 'n ZIP-lêer
- Laai die ZIP af. Dit is by hierdie projek se aflaai ingesluit, of jy kan dit vanaf die Arduino_GFX-bewaarplek kry - klik die groen Code-knoppie, dan Download ZIP.
- Stoor dit op 'n plek waar jy dit weer kan vind. Moenie dit uitpak nie.
- In die Arduino IDE, klik Sketch → Include Library → Add .ZIP Library.
- Blaai na die ZIP-lêer wat jy afgelaai het en klik Open.
- Die IDE installeer dit en bevestig onderaan die venster. As jy reeds 'n 1.6-weergawe geïnstalleer het, verwyder daardie gids van
Documents/Arduino/librarieseers, anders sal die twee bots.
Probleemoplossing
| Simeptoom | Oorsaak en regstelling |
|---|---|
| Skerm bly swart | Verkeerde GFX-biblioteekweergawe (gebruik 1.5.6) of verkeerde bordinstellings. |
PSRAM alloc failed |
Tools → PSRAM is nie op OPI PSRAM gestel nie. |
| Niks laai op nie / geen COM-poort | Verkeerde USB-C-poort, of die CH340-bestuurder is nie geïnstalleer nie. |
Hulpbronne en verwysings
Geen hulpbronne nog.
Lêers📁
Geen lêers beskikbaar.