Code de recherche

Transformez un écran tactile ESP32 en piano – Aucun fichier audio nécessaire

Transformez un écran tactile ESP32 en piano – Aucun fichier audio nécessaire

Touches surélevées, de vrais accords, et le son généré sur la puce

Un piano jouable sur l'écran tactile. Les touches semblent surélevées et s'enfoncent lorsque vous les touchez, le panneau tactile suit cinq doigts pour que vous puissiez jouer des accords, et chaque note est synthétisée par le processeur - il n'y a ni fichiers sonores ni carte SD impliquée.

922-Ceci est un article sur l'IA musicale le projet est ici.

923-Le Piano (cet article actuel)

Il est entièrement hors ligne. Flashez-le et jouez.

Piano à écran tactile fonctionnant sur la carte MaTouch AI ESP32-S3

Deux dispositions, et pourquoi les deux existent

Ce sketch a deux claviers complètement différents, et un bouton LAYOUT dans le coin supérieur gauche permet de basculer entre eux. Le libellé de ce bouton vous indique dans lequel vous vous trouvez actuellement, il sert donc aussi d'indicateur - touchez-le et il change.

KEYS - un vrai piano

MKRFAB3_4-D1.MOV.00_00_34_49.Still001

Sept touches blanches sur toute la largeur avec cinq touches noires au-dessus, exactement comme un vrai clavier. C'est ce que la carte affiche au démarrage. Comme une seule octave tient, les boutons - et + à côté de LAYOUT vous permettent de monter et descendre ; l'affichage cyan entre eux indique où vous êtes, de C3 à C6.

GRID - quatre octaves, aucune fausse note

La disposition GRID sur la MaTouch AI ESP32-S3 - quatre rangées de sept notes
La disposition GRID sur la MaTouch AI ESP32-S3 - quatre rangées de sept notes

Quatre rangées de sept, 28 touches à la fois. Chaque rangée est une octave, la plus basse en bas ; chaque colonne est une note - C, D, E, F, G, A, B. Pas de dièses, pas de bémols, donc tout le clavier est en do majeur et il n'y a aucune fausse note. Vous pouvez le donner à quelqu'un qui n'a jamais joué de rien, le laisser frapper au hasard, et cela sonnera toujours comme de la musique.

Pourquoi une seule octave tient comme vrai clavier

Voici l'arithmétique qui façonne tout le projet. L'écran fait 320 pixels de large mais seulement environ 2,2 pouces de large, donc un bout de doigt couvre environ 45 pixels.

  • Une octave - sept touches blanches d'environ 45 pixels chacune. Confortable.
  • Deux octaves - quatorze touches blanches d'environ 22 pixels chacune. Un demi-bout de doigt. Injouable.

Donc une vraie disposition de piano ne peut jamais montrer qu'une octave ici, c'est pourquoi les boutons d'octave existent - et pourquoi la grille existe comme alternative lorsque vous voulez de la portée et de la fiabilité plutôt que du réalisme.

Changer la disposition dans le code

Trois réglages près du haut du sketch contrôlent tout cela :

Réglage Ce qu'il fait
BOOT_LAYOUT Quel clavier apparaît à la mise sous tension. LAYOUT_KEYS pour le piano, LAYOUT_GRID pour la grille.
ROWS Combien d'octaves la GRID affiche. Par défaut 4.
COLS Notes par rangée dans la GRID. Par défaut 7, les sept notes naturelles.
BASE_OCTAVE Sur quelle octave la rangée du bas de la GRID commence. Par défaut 3.

Comment l'effet surélevé est réalisé

Un bord clair le long du haut et de la gauche de chaque touche, et un bord sombre le long du bas et de la droite, donne à l'œil l'impression que quelque chose dépasse. Appuyer sur une touche les inverse et assombrit la surface, ce qui donne l'impression d'être enfoncée. C'est deux lignes de code par bord et c'est convaincant.

Comment le son est produit

Il n'y a aucun enregistrement sur cette carte. Pas d'échantillons, rien sur la carte mémoire. Chaque note est un accumulateur de phase qui parcourt une table de sinus de 512 entrées - parcourez-la rapidement pour une note aiguë, lentement pour une note grave - donc aucune trigonométrie n'est calculée par échantillon. Trois harmoniques sont mélangées pour la chaleur.

Chaque note reçoit également une courte enveloppe d'attaque et de relâchement, environ six millisecondes à l'entrée et soixante-dix à la sortie. Sans elle, vous entendez un clic à chaque fois qu'une note commence ou s'arrête, car vous activez une forme d'onde à pleine amplitude. Cette enveloppe est la différence entre un instrument et un bip.

Jusqu'à cinq notes sont mélangées ensemble, correspondant aux cinq points de contact que le panneau signale. i2s_write() bloque lorsque le tampon audio est plein, ce qui rythme commodément tout le programme en temps réel — aucun minuteur ni interruption n'est nécessaire.

Les boutons

  • LAYOUT alterne entre KEYS et GRID. Le libellé indique dans lequel vous vous trouvez.
  • - et + déplacent l'octave. Uniquement dans la disposition KEYS.
  • VOL ouvre un panneau de volume par-dessus le clavier — faites glisser la barre pour régler le niveau. Touchez à nouveau VOL pour le fermer.
  • DEMO joue une mélodie tout seul, en allumant chaque touche au fur et à mesure.
  • WAVE fait défiler le son entre SOFT, ORGAN et BRIGHT. Il démarre sur ORGAN, qui convient le mieux à ce petit haut-parleur, mais essayez les trois.

Contrôle du volume

L'amplificateur de cette carte est vraiment puissant — 3,2 W dans un haut-parleur de 4 Ω — donc pouvoir le baisser est important. Toucher VOL fait glisser un panneau par-dessus le clavier avec une grande barre déplaçable ; le niveau actuel est également affiché en permanence dans la barre supérieure.

Lorsque le panneau est ouvert, il avale délibérément chaque toucher sous la barre supérieure, afin que vous ne puissiez pas déclencher de notes par accident à travers lui. Le réglage est appliqué comme une seule multiplication lorsque l'audio mixé est mis à l'échelle en 16 bits, ce qui ne coûte rien à l'exécution et affecte également la mélodie de démonstration. Ajustez VOL_STEPS dans le croquis si vous souhaitez des pas plus fins ou plus grossiers que les dix par défaut.

Pas de WiFi, pas de comptes, rien à configurer

Il vaut la peine de le dire clairement, car chaque autre projet de cette série nécessite un compte quelque part : celui-ci non. Il n'y a pas de secrets.h à remplir, pas de clé API, pas de réseau. Flashez-le et jouez. De tout ce qui a été construit pour cette carte, c'est celui à donner à un débutant.

Essayez un accord

Appuyez sur trois ou quatre touches à la fois. Le contrôleur tactile suit cinq doigts, donc elles sonnent toutes ensemble — c'est le moment où cela cesse de ressembler à un bip et commence à ressembler à un instrument.

À propos de la carte MaTouch AI ESP32-S3 2.8"

Chaque projet sur cette page fonctionne sur la MaTouch AI ESP32-S3 2.8" TFT ST7789V de Makerfabs. C'est une carte tout-en-un : un écran tactile couleur, une caméra de 3 mégapixels, deux microphones et un véritable amplificateur de haut-parleur, le tout piloté par un ESP32-S3 avec 8 Mo de PSRAM. Cette combinaison est ce qui rend ces projets d'IA possibles sur une seule carte sans rien d'autre connecté.

Les 8 Mo de PSRAM comptent plus que tout autre chiffre ici. C'est ce qui permet à la carte de contenir une image de caméra, quelques secondes d'audio enregistré ou une photo encodée en base64 en mémoire en même temps — rien de tout cela ne tient dans la RAM normale de l'ESP32.

Documentation du fabricant : page wiki de Makerfabs.

Chaque autre projet pour cette carte — la caméra, la reconnaissance faciale hors ligne, l'assistant vocal IA, la vision IA et le projet de dessin — a son propre tutoriel. Les liens vers tous sont ci-dessous cet article.

Spécifications clés

  • Processeur : ESP32-S3, double cœur 240 MHz, WiFi 2,4 GHz + Bluetooth 5.0
  • Mémoire : 16 Mo de flash, 8 Mo de PSRAM (requis par presque chaque projet ici)
  • Écran : IPS 2,8", 320×240, pilote ST7789V, SPI
  • Tactile : GT911 capacitif, suit 5 doigts à la fois
  • Caméra : OV3660, 3 mégapixels, jusqu'à 2048×1536
  • Microphones : deux micros numériques I2S INMP441 (une véritable paire stéréo)
  • Haut-parleur : amplificateur classe-D MAX98357A, 3,2 W dans 4 Ω
  • Stockage : emplacement carte microSD (mode SPI)
  • Alimentation : USB-C, connecteur batterie JST, chargeur TP4056, interrupteur d'alimentation
  • Également sur la carte : LED RGB WS2812B, horloge temps réel PCF8563T avec batterie, et une jauge de batterie MAX17048 qui n'est pas listée dans les spécifications officielles

Alimenter la carte avec une batterie ? Les deux prises USB-C, le chargeur TP4056 et l'interrupteur d'alimentation sont expliqués en détail, avec le schéma, dans l'article de test de la carte — y compris quelle prise charge et si l'interrupteur doit être activé ou désactivé.

Paramètres de l'IDE Arduino

Ces paramètres comptent. La plupart des problèmes signalés par les utilisateurs avec cette carte proviennent de l'un d'eux étant incorrect, et ils se réinitialisent lorsque vous changez la version du cœur, donc vérifiez-les à nouveau après tout changement.

Paramètre Valeur
Carte Module de développement ESP32S3
Version du cœur ESP32 2.0.17
PSRAM PSRAM OPI
Taille de la flash 16 Mo (128 Mb)
Schéma de partition Flash 16 Mo (3 Mo APP/9,9 Mo FATFS)
USB CDC au démarrage Désactivé
Vitesse de téléversement 921600
Effacer toute la flash avant téléversement Désactivé
Port le port USB-C CH340K

Si le téléversement échoue : mettre la carte en mode téléchargement manuellement

La plupart du temps, il suffit d'appuyer sur Téléverser et cela fonctionne. Parfois, cela ne fonctionne pas - l'IDE reste sur Connexion...... puis abandonne avec Échec de la connexion à l'ESP32-S3 : aucune donnée série reçue.

Cela se produit parce que IO0 fait trois tâches à la fois sur cette carte : c'est le bouton BOOT, c'est la ligne de réinitialisation automatique du CH340K, et c'est la ligne de données pour la LED RGB. Lorsque le sketch déjà en cours d'exécution sur la carte pilote cette LED, il peut interférer avec la réinitialisation automatique, donc la puce redémarre dans votre ancien sketch au lieu du bootloader.

La solution prend cinq secondes. Mettez-la en mode téléchargement vous-même :

  1. Appuyez et maintenez le bouton BOOT.
  2. Tout en maintenant BOOT enfoncé, appuyez sur RESET et relâchez RESET.
  3. Relâchez maintenant BOOT. L'écran devient noir - c'est le bootloader qui attend.
  4. Cliquez sur Téléverser.
  5. Lorsque cela se termine, appuyez sur RESET une fois pour exécuter le nouveau sketch.

Si cela ne se connecte toujours pas, réduisez la Vitesse de téléversement à 115200 et réessayez. Et vérifiez que l'interrupteur d'alimentation de la carte est allumé - le CH340K s'énumère et vous donne un port COM même lorsque la carte elle-même est éteinte, ce qui trompe les gens.

Bibliothèques requises

Ce projet nécessite chaque bibliothèque du tableau ci-dessous - rien de plus, rien de moins. La plupart s'installent directement depuis Outils → Gérer les bibliothèques dans l'IDE Arduino, mais la bibliothèque GFX pour Arduino doit être installée à partir d'un fichier ZIP. Les numéros de version comptent, veuillez donc utiliser exactement ceux listés.

Bibliothèque Version Auteur Installer depuis
Bibliothèque GFX pour Arduino 1.5.6 moononournation Fichier ZIP - voir ci-dessous
bb_captouch 1.3.1 Larry Bank Gestionnaire de bibliothèques
Adafruit NeoPixel toute récente Adafruit Gestionnaire de bibliothèques

Installer la bibliothèque GFX à partir d'un fichier ZIP

  1. Téléchargez le ZIP. Il est inclus dans le téléchargement de ce projet, ou vous pouvez l'obtenir depuis le dépôt Arduino_GFX - cliquez sur le bouton vert Code, puis sur Télécharger le ZIP.
  2. Enregistrez-le à un endroit où vous pourrez le retrouver. Ne le décompressez pas.
  3. Dans l'IDE Arduino, cliquez sur CroquisInclure une bibliothèqueAjouter la bibliothèque .ZIP.
  4. Naviguez jusqu'au fichier ZIP que vous avez téléchargé et cliquez sur Ouvrir.
  5. L'IDE l'installe et confirme en bas de la fenêtre. Si vous avez déjà une version 1.6 installée, supprimez d'abord ce dossier de Documents/Arduino/libraries, sinon les deux entreront en conflit.

Dépannage

Symptôme Cause et solution
L'écran reste noir Mauvaise version de la bibliothèque GFX (utilisez 1.5.6) ou mauvais paramètres de la carte.
Échec de l'allocation PSRAM Outils → PSRAM n'est pas réglé sur PSRAM OPI.
Rien ne se téléverse / pas de port COM Mauvais port USB-C, ou le pilote CH340 n'est pas installé.

Images

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
Aucun code joint.

Ressources et références

Aucune ressource pour le moment.

Fichiers📁

Aucun fichier disponible.