Comment construire votre technologie Laser Harp (étape par étape) - Open Electronics

Comment construire votre technologie Laser Harp (étape par étape) – Open Electronics


Nous reconstruisons l'ancien instrument de musique dans une version ultra-technologique où, au lieu des cordes, nous posons des rayons laser, les interrompant au passage des doigts, les notes sont produites..

La harpe est un instrument à cordes au son doux, harmonieux et relaxant, qui tire ses racines de la plus lointaine histoire remontant aux civilisations grecque et latine et peut-être même antérieure. on le retrouve aujourd'hui dans les orchestres symphoniques et aussi dans les concerts de musique de chambre. Comme tous les instruments à cordes, il produit le son en pinçant ou en étirant et en relâchant un certain nombre de cordes avec les doigts, maintenues en tension par le cadre dans lequel elles sont montées: un cadre normalement en bois, de forme caractéristique presque triangulaire.

Sans nous opposer à l'instrument classique, nous avons décidé de revisiter la structure en remplaçant les cordes par quelque chose de futuriste, car nous parlons de faisceaux laser; C’est ainsi qu'est né notre Harp Laser, un instrument de musique électronique et hautement technologique, dans lequel nous avons pour ainsi dire «attiré» l’incontournable Arduino et son matériel, ainsi qu'un peu d’imagination pour mettre ensemble, le cadre, obtenu à partir d’un ensemble de détails en plexiglass correctement assemblés.

Pour donner une touche scénographique, nous avons également prévu la possibilité de piloter, lorsque la harpe est en marche, une machine à fumée qui fait ressortir les faisceaux laser rouges, donnant du corps et de la texture aux cordes et leur donnant un aspect aussi solide que celles du traditionnel. harpe.

LE PROJET

Voyons immédiatement comment notre techno-instrument est composé, à commencer par l’électronique; ce dernier est composé d'une carte Arduino UNO rev.3 qui s'interface avec un groupe de capteurs laser permettant de comprendre quand nous interrompons le faisceau.

Nous expliquerons dans quelques instants comment le système fonctionne et pourquoi un laser peut se transformer en une chaîne virtuelle de harpe électronique.

En plus des chaînes Arduino et laser, nous avons un bouclier MIDI, qui est le générateur de son actuel; eh, en tant que tel, car la harpe doit produire des sons et donc pouvoir générer des sons, il en est ainsi dans notre projet:

  • les capteurs lasers constituent les dispositifs d'entrée, pour équiper le fonctionnement du capteur en ce qui concerne les perturbations et la lumière dans l'environnement: en effet si le laser était allumé en permanence, DOUT se présenterait (en cas de lumière arrivant sur le phototransistor après en cours de réflexion) une tension influencée par la lumière ambiante, car le phototransistor peut être constamment conducteur s’il est suffisamment éclairé ou frappé par d’autres rayonnements lumineux inclus dans son spectre de sensibilité. Au lieu de cela, en émettant des impulsions lumineuses à une certaine fréquence, nous pouvons, à l'aide d'un module récepteur équipé d'un filtre, veiller à ce qu'il ne les détecte que, en éliminant les composants d'éclairage continus.

Le circuit du capteur laser est alimenté par une tension pouvant aller de 2,5 à 12 Vcc grâce à la présence d'un régulateur de commutation intégré basé sur le PT1301 intégré.

Le bouclier MIDI

Passons maintenant au cœur de l'instrument de musique, un bouclier basé sur le VS1053B intégré de VLSI, déjà utilisé dans d'autres projets et capable de générer un certain nombre de notes de musique synthétisant les sons d'un grand nombre de instruments de musique et mélodiques (y compris la harpe et l'orgue) et percussions, derrière des commandes données par un canal de données; Les commandes acceptées peuvent être de divers formats, y compris le populaire MIDI, qui est la norme utilisée depuis des décennies pour l’interface de synthétiseurs musicaux et de claviers électroniques avec le PC.

Commençons par analyser le schéma de circuit du circuit, présenté dans ces pages.

Tout tourne autour du U1 intégré, qui est notre VS1053B; ce dernier est à la fois un décodeur CODEC / multistandard (il contient des codes et une mémoire de données pour les codecs de décodage audio Ogg Vorbis, MP3, AAC, WMA et WAV PCM + ADPCM) et un synthétiseur MIDI standard complet. Grâce aux plug-ins logiciels, la puce peut également implémenter le décodage FLAC sans perte ainsi que celui d'un enregistrement de haute qualité au format Ogg Vorbis.

Tout cela utilise une interface série pour la communication avec le périphérique hôte (le microcontrôleur qui régit le synthétiseur), qui peut également être configuré en mode bus SPI. En réalité, le VS1053B intègre un complexe d’interface série qui compte deux interfaces: l’une de contrôle (SCI = Interface de commande série) qui sert à commander le fonctionnement de la puce et qui dans notre cas est celle à travers laquelle Arduino (mais tout microcontrôleur pourrait do it)…) donne ses propres commandes et un transfert de données (SDI = Serial Data Interface) grâce auquel le VS1053B peut transférer ou acquérir des données en streaming à un autre appareil externe ou à partir de celui-ci. Parmi les deux, celui qui peut être configuré pour fonctionner en mode série TTL ou SPI est le SCI, l’interface de contrôle.

Le synthétiseur de son intégré est basé sur un DSP (Processeur de signal numérique) propriétaire du VLSI, appelé VS_DSP. Les sons synthétisés sont convertis par un CNA stéréo à plusieurs débits, doté d’un étage de préamplificateur audio et d’un filtre de sortie stéréo.

L'intégration prend également en charge le codage audio PCM / ADPCM, en utilisant comme étage d'entrée l'amplificateur de microphone amplifié (pour ceux qui souhaitent utiliser un microphone) ou en captant le signal d'une entrée de ligne et en l'envoyant à un convertisseur stéréo A / N. . Dans le diagramme, nous voyons qu'Arduino gère le VS1053B via le port série utilisé en tant qu’UART, ce qui dans U1 fait référence aux broches 26 (RX) et 27 (TX) connectées respectivement aux broches numériques D3 et D2 d’Arduino; ce dernier gère également la réinitialisation de U1, via D4, afin de le préparer à la réception des commandes.

Les trois lignes en question sont équipées d’un pull-up du côté du VS1053 et sont contrôlées par les broches Arduino via des résistances en série; Trois cavaliers (JRX, JTX et JRST) sur le circuit imprimé du blindage permettent de les déconnecter si nécessaire, par exemple si vous optez pour une autre forme de contrôle, telle que le SPI.

Le bouclier prend l’alimentation d’Arduino à travers les broches 5V et GND; avec le 5 volts, le module d’ampli PAM8043 fonctionne, le reste étant assuré par les régulateurs linéaires LDO U2 (MIC5504-1.8YM5-TR) et U3: ce dernier (c’est un MIC5504-3.3YM5-TR) obtient, à partir du prise à 5 volts d’Arduino, une tension de 3,3 volts pour alimenter les broches de l’alimentation analogique du VS1053 (AVDD1, AVDD2 et AVDD3) et U2, qui déduit de 1,8 V le courant de 1,8 V nécessaire au fonctionnement du cœur de U1, sur les broches CVDD (noyau VDD) et IOV1, IOV2, IOV3. Les condensateurs des lignes d'alimentation filtrent les tensions relatives dues aux perturbations et aux ondulations possibles.

Le VS1053B intégré possède une sortie audio stéréo située sur les broches 39 (canal R) et 46 (canal L), référée à la broche commune 42 (GBUF), qui n'est pas connectée à la masse analogique mais est également couplée, comme le signal des lignes, via R / C réseaux.

Les sorties de l'audio U1 atteignent une prise stéréo d'un circuit imprimé auquel un casque peut être connecté puisqu'elles sont connectées à un petit amplificateur de puissance BF avec des sorties basse impédance.

Les mêmes lignes R et L atteignent les entrées du module d'amplificateur U4, ce qui élève le niveau du signal juste assez pour piloter une paire d'enceintes de 3 watts et 4 ohms d'impédance chacune; le module U4 est le PAM8403, basé sur le homonyme intégré déjà équipé de tous les composants externes dont il a besoin et du potentiomètre de contrôle du volume.

Le VS1053B intégré fonctionne de manière synchronisée avec son propre oscillateur interne, qui est basé sur le quartz à 12,88 MHz connecté entre les broches 17 (X1) et 18 (X2).

Dans le diagramme, notez que le bouton RST, connecté à la ligne de réinitialisation d’en-tête est utile pour reproduire celui du décodage audio PCM + ADPCM) et un synthétiseur MIDI standard complet. Grâce aux plug-ins logiciels, la puce peut également implémenter le décodage FLAC sans perte ainsi que celui d'un enregistrement de haute qualité au format Ogg Vorbis.

Tout cela utilise une interface série pour la communication avec le périphérique hôte (le microcontrôleur qui régit le synthétiseur), qui peut également être configuré en mode bus SPI. En réalité, le VS1053B intègre un complexe d’interface série qui compte deux interfaces: l’une de contrôle (SCI = Interface de commande série) qui sert à commander le fonctionnement de la puce et qui dans notre cas est celle à travers laquelle Arduino (mais tout microcontrôleur pourrait do it)…) donne ses propres commandes et un transfert de données (SDI = Serial Data Interface) grâce auquel le VS1053B peut transférer ou acquérir des données en streaming à un autre appareil externe ou à partir de celui-ci. Parmi les deux, celui qui peut être configuré pour fonctionner en mode série TTL ou SPI est le SCI, l’interface de contrôle.

Le synthétiseur de son intégré est basé sur un DSP (Processeur de signal numérique) propriétaire du VLSI, appelé VS_DSP. Les sons synthétisés sont convertis par un CNA stéréo à plusieurs débits, doté d’un étage de préamplificateur audio et d’un filtre de sortie stéréo.

Le système intégré prend également en charge le codage audio PCM / ADPCM, en utilisant comme étage d’entrée l’amplificateur de microphone amplifié (pour ceux qui souhaitent utiliser un microphone) ou en captant le signal d’une entrée de ligne et en l’envoyant à un convertisseur stéréo A / N. . Dans le diagramme, nous voyons qu'Arduino gère le VS1053B via le port série utilisé en tant qu’UART, ce qui dans U1 fait référence aux broches 26 (RX) et 27 (TX) connectées respectivement aux broches numériques D3 et D2 d’Arduino; ce dernier gère également la réinitialisation de U1, via D4, afin de le préparer à la réception des commandes.

Les trois lignes en question sont équipées d’un pull-up du côté du VS1053 et sont contrôlées par les broches Arduino via des résistances en série; Trois cavaliers (JRX, JTX et JRST) sur le circuit imprimé du blindage permettent de les déconnecter si nécessaire, par exemple si vous optez pour une autre forme de contrôle, telle que le SPI.

Le bouclier prend l’alimentation d’Arduino à travers les broches 5V et GND; avec le 5 volts, le module d’ampli PAM8043 fonctionne, le reste étant assuré par les régulateurs linéaires LDO U2 (MIC5504-1.8YM5-TR) et U3: ce dernier (c’est un MIC5504-3.3YM5-TR) obtient, à partir du prise à 5 volts d’Arduino, une tension de 3,3 volts pour alimenter les broches de l’alimentation analogique du VS1053 (AVDD1, AVDD2 et AVDD3) et U2, qui déduit de 1,8 V le courant de 1,8 V nécessaire au fonctionnement du cœur de U1, sur les broches CVDD (noyau VDD) et IOV1, IOV2, IOV3. Les condensateurs des lignes d'alimentation filtrent les tensions relatives dues aux perturbations et aux ondulations possibles.

Le VS1053B intégré possède une sortie audio stéréo située sur les broches 39 (canal R) et 46 (canal L), référée à la broche commune 42 (GBUF), qui n'est pas connectée à la masse analogique mais est également couplée, comme le signal des lignes, via R / C réseaux.

Les sorties de l'audio U1 atteignent une prise stéréo d'un circuit imprimé auquel un casque peut être connecté puisqu'elles sont connectées à un petit amplificateur de puissance BF avec des sorties basse impédance.

Les mêmes lignes R et L atteignent les entrées du module d'amplificateur U4, ce qui élève le niveau du signal juste assez pour piloter une paire d'enceintes de 3 watts et 4 ohms d'impédance chacune; le module U4 est le PAM8403, basé sur le homonyme intégré déjà équipé de tous les composants externes dont il a besoin et du potentiomètre de contrôle du volume.

Le VS1053B intégré fonctionne de manière synchronisée avec son propre oscillateur interne, qui est basé sur le quartz à 12,88 MHz connecté entre les broches 17 (X1) et 18 (X2).

Dans le diagramme, notez que le bouton RST, connecté à la ligne de réinitialisation d’en-tête, est utile pour répliquer celui d’Arduino lorsque la carte est recouverte par le bouclier.

COMMENT ÇA MARCHE

Voyons maintenant comment tout fonctionne, en supposant que chaque capteur laser correspond à une note jouée et que les capteurs sont lus chacun par une ligne Arduino, en fonction des paramètres suivants:

pinMode (fumée, SORTIE);
pinMode (6, INPUT);
pinMode (5, INPUT);
pinMode (8, INPUT);
pinMode (9, INPUT);
pinMode (10, INPUT);
pinMode (11, INPUT);
pinMode (12, INPUT);
pinMode (13, INPUT);
pinMode (A5, INPUT);
pinMode (A4, INPUT);

Les broches A4 et A5 d’Arduino, bien que nativement analogiques, nous les avons attribuées comme numériques, car il existe cette possibilité et sinon, il n’ya pas assez de broches numériques.

La broche fumée (Arduino pin 7) est la seule à être configurée en tant que sortie et doit activer le relais de la machine à fumée. La première note dans l'ordre des fréquences et donc, si nous étions sur le clavier d'un piano, la partie n en partant de la gauche, est celle corrélée à la broche numérique 6 et la plus aiguë est celle relative à l'entrée analogique 4. Ensuite, la séquence des notes exécutables est Fa #, Sol, Sol #, La, La #, Si, Do, Do #, Re et Re # de l'octave supérieure; Si vous souhaitez connaître la correspondance avec toutes les notes exécutables par le synthétiseur intégré au VS1053B, consultez le tableau 1.

Tableau 1.

Chaque fois qu’Arduino détecte le niveau logique haut sur l’une des lignes susmentionnées, il construit la chaîne de synthèse série du synthétiseur de contenu dans VS1053B et l’envoie à l’intégré, ce qui produit le désir conduit à la note ta, avec le réglage (instrument). mis dans la commande elle-même; dans notre cas, le registre est fixé dans l’esquisse et est le même pour les 10 notes. L'instrument reproduit est le 9 de la banque GM1 (Celesta), comme indiqué dans le tableau 2.

Tableau 2

En ce qui concerne la machine à fumée, nous avons modifié l’un de ceux disponibles sur le site Web (code HQSM10001) en connectant en parallèle au bouton de commande du jet de fumée l’échange d’un relais sur la carte de dérivation, piloté par la broche numérique 7 d’Arduino. la sortie s'active (conduit à un niveau logique élevé) pendant 400 ms et est ensuite inhibée pendant 10 secondes, afin d'éviter de saturer l'environnement si des notes sont jouées en continu.

Les temps peuvent être modifiés à volonté à partir du croquis. Le module de relais est du type à 1 canal avec commande TTL et est le REL AY1CH.

Le schéma de câblage présenté dans ces pages explique bien comment les éléments de circuit doivent être interconnectés.

En ce qui concerne le format des commandes d’Arduino au VS1053B, la chaîne de réglage du synthétiseur est de ce type:

  • 0x51: définir l'heure
  • 0x01: volume principal
  • 0x80: note désactivée
  • 0x90: note sur
  • 0xc0: programme
  • 0xe0: molette de tangage
  • 0xb0: message de canal de paramètre
  • 0x00: sélection de banque (0 par défaut, 0x78 et 0x7f à la batterie, 0x79 mélodique)
  • 0x06: RPN MSB: 0 = plage de courbure,

2 = mélodie grossière

  • 0x07: volume du canal
  • 0x0a: contrôle de panoramique
  • 0x0b: expression (change le volume)
  • 0x0c: contrôle d’effet 1 (définit la décroissance de la réverbération globale)
  • 0x26: LSB RPN: 0 = plage de courbure
  • 0x40: hold1
  • 0x42: supporté
  • Niveau d'effet 0x5b (niveau de réverbération du canal)
  • 0x62.0x63,0x64,0x65: NRPN et RPN sélectionnent
  • 0x78: tout son est désactivé
  • 0x79: réinitialiser tous les contrôleurs
  • 0x7b, 0x7c, 0x7d: toutes les notes désactivées

Les paramètres permettent d’établir le fonctionnement du synthétiseur, c’est-à-dire l’instrument (registre) à jouer et quelle banque, l’éventuelle application d’effets tels que le sustain, la plage du pitch bend s’il est utilisé, etc.

Enfin, il convient de souligner une particularité du VS1053B, concernant l’étage de la sortie casque, dans lequel un paramétrage du traitement audio est implémenté dans quatre modes sélectionnables; le tout dans le but de restaurer la spatialité qui n’est généralement pas obtenue lors d’une écoute au casque.

Les quatre modes applicables sont:

  • Off: pas de correction spatiale, utile si vous écoutez l'audio dans le haut-parleur, car le son dans l'espace environnant acquiert sa propre spatialité. ce mode s'applique également à l'écoute au casque si l'audio à reproduire ne provient pas du synthétiseur mais du décodeur et contient déjà un prétraitement binaural;
  • minimal: conçu pour les écouteurs avec peu d'instruments et une correction spatiale minimale;
  • normal: convient pour écouter des chansons au casque en déplaçant de façon minimale la source audio perçue d'un pavillon à un autre;
  • extrême: convient à la reproduction d’enregistrements anciens ou secs, ou bien le son ou le conduit est généré par le synthétiseur MIDI.

LE FIRMWARE

Eh bien, complétons la description de la harpe laser avec l’analyse du micrologiciel, téléchargeable à partir de notre site Web www.elettronicain.it; Dans le Listing 1, nous vous rapportons la partie de l’esquisse qui vous associe les notes aux «chaînes».

Après avoir affecté les broches d’E / S, définissez l’outil souhaité avec l’instruction suivante:

const int INSTRUMENT1 = 9;

Toute personne souhaitant changer d'outil peut intervenir dans cette partie du code. Nous avons ensuite la partie de l'esquisse qui concerne le paramétrage de la communication série pour le contrôle par Arduino où vous pouvez remarquer que la vitesse de communication est réglée sur 31.250 bps:

#if USE_SERIAL_MIDI
midiSerial.begin (31250); pisello
#fin si

Et nous arrivons à la partie de l’esquisse concernant la commande visant la génération des notes, qui est la suivante:

Annonce 1

Comme vous pouvez le constater, les commandes définissent la note, le registre, l'heure, les modes d'attaque et de déclin (progression et diminution du son), etc., puis envoient la chaîne de commande correspondante au MIDI.

En ce qui concerne le contrôle de la machine à fumée, les paramètres sont les suivants:

Nous voyons ici que la commande au relais qui ferme le court-circuit dans le bouton de commande de la machine pendant 0,4 seconde, suivie d'un temps d'inhibition de 10 secondes (tous les temps sont exprimés en millisecondes).

La partie du code contenue dans le Listing 1 voit la fonction void readTouchInputs () avec les variables associées aux 10 capteurs: lorsqu’un touchStates passe de 0 à 1, une boucle for est démarrée qui produit l’impression sur une série de la note jouée, à des fins de débogage. La fonction void Play () suit, dans laquelle une boucle for exécute la note associée aux touchStates, en commençant par 30, qui est la plus grave; pour chaque touchStates qui change d'état, il ajoute 1 note, donc si le paramètre de commutation est touchStates [5] le paramètre note est 30 + 4, alors la note 34 est exécutée. Bien entendu, ceux qui le ressentent peuvent modifier les différents paramètres afin de désactiver la commande de la machine à fumée (il suffit de régler zéro en intro), personnaliser les notes et, le cas échéant, modifier le son de l'instrument.

Cela dit, nous avons conclu: nous ne pouvons que vous souhaiter bonne chance et surtout beaucoup de plaisir avec votre harpe numérique avec laquelle vous serez étonné de savoir qui la verra jouer.

Liste des composants:
R1: 1 Mohm (0603)
R2 ÷ R5: 100 kohm (0603)
R6, R7: 22 ohms (0603)
R8: 1 kohm (0603)
R9: 22 ohms (0603)
R10 ÷ R12: 100 kohm (0603)
R13, R14: 1 kohm (0603)
C1 ÷ C5: céramique 100 nF (0603)
C6: électrolytique 100 µF 6,3 VL (Ø 4 mm)
C7, C8: céramique 22 pF (0603)
C9: céramique 1 µF (0603)
C10, C11: céramique 10 nF (0603)
C12: céramique 47 nF (0603)
C13: électrolytique 100 µF 6,3 VL (Ø 4mm)
RTD: Microswitch
U1: VS1053B
U2: MIC5504-1.8YM5-TR
U3: MIC5504-3.3YM5-TR
U4: Module amplificateur PAM8403
SPK: prise jack 3,5 mm
Q1: quartz 12,288 MHz

Divers:

  • Pince 2 voies pas 5mm (2 pièces)
  • Pin Strip Arduino 6 Voies
  • Bande à broche Arduino 8 voies (2 pièces)
  • Pin Strip Arduino 10 Voies
  • Pin Strip Arduino 2 × 3 voies
  • Circuit imprimé S1414 (69 × 55 mm)

DEPUIS OPENSTORE

Arduino UNO R3

Micro amplificateur 3 + 3 watts

Carte de capteur laser

Module 1 relais (monté)

Pièces en plexiglas pour LASER HARP

Blindage MIDI avec VS1053B

jlcpcb.com



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *