Le plus petit synthé MIDI USB-C
(mitxela.com)- Un projet qui fait tenir un synthé MIDI USB-C basé sur CH32V003 sur une carte d’environ 12 mm, nouvelle expérimentation dans la série des synthétiseurs MIDI « smallest and worst »
- Fait fonctionner un CH32V003 à 48 MHz, dépourvu d’USB matériel, comme périphérique USB-MIDI grâce à la pile USB logicielle rv003usb de CNLohr
- Le principal défi consistait à faire tenir un connecteur USB-C monté verticalement, un MCU QFN, un régulateur SC-70, des composants passifs 0603 et un buzzer piézoélectrique dans le diamètre de ce buzzer
- Les contraintes mécaniques et PCB — carte 2 couches 6/6 mil, montage double face, gabarit de panneau, interférences avec les broches du piézo, fan-out USB-C — ont été résolues par itérations de conception
- Le produit fini fonctionne avec un hub USB-C et un téléphone, mais ne s’énumère pas en connexion directe à un ordinateur portable ; il reste donc à vérifier le câblage USB-C ou les valeurs des résistances de pull
Un synthé jouet USB-MIDI avec CH32V003
- Ce projet est une nouvelle réalisation dans la série des synthétiseurs MIDI « les plus petits et les pires » ; le flash synth est exclu de cette liste
- Le microcontrôleur utilisé est le CH32V003
- Microcontrôleur RISC-V 32 bits
- Composant très bon marché
- Il n’a pas d’USB matériel, mais son processeur fonctionne à 48 MHz
- À l’origine, l’objectif était d’écrire directement une bibliothèque USB en bit banging, à la fois pour apprendre et pour obtenir quelque chose d’utile, mais CNLohr avait déjà implémenté rv003usb
- La démo USB-MIDI n’étant pas encore terminée à l’époque, une carte de développement a d’abord été soudée pour constituer un dispositif de test
Premières expérimentations USB-MIDI
- La première carte consistait en une breakout TSOP20 et une breakout Micro-USB, avec un régulateur, des condensateurs et des résistances ajoutés
- Le header de programmation était composé de 2 broches, mais lorsque l’USB était branché, il n’était pas nécessaire de connecter GND : la programmation pouvait donc se faire avec une seule broche, D1
- L’appareil USB-MIDI était configuré pour jouer une note via une entrée bouton
- Quand les données MIDI arrivaient sur la puce, le buzzer piézoélectrique émettait une onde carrée
- Un des timers matériels de la puce était utilisé
- La sortie se faisait en mode différentiel afin d’augmenter le volume
- Les messages USB MIDI font 4 octets et un endpoint USB low-speed peut aller jusqu’à 8 octets ; on peut donc généralement envoyer 2 messages MIDI par paquet
- Dans cette démo simple, chaque message bloque jusqu’à l’interruption USB suivante
- Avec un loopback MIDI côté hôte, l’ensemble se comportait comme un « clavier jouet vraiment médiocre »
Carte de développement USB pour CH32V003
- Les cartes de développement CH32V003 existantes semblaient ne pas raccorder les broches USB, probablement faute d’USB matériel ; pour éviter de refaire le câblage à chaque fois, une petite carte de développement USB a été conçue
- Caractéristiques de la carte :
- Toutes les broches nécessaires sont exposées
- Toutes les broches sont étiquetées des deux côtés
- La résistance de 1,5 K peut être soudée sur D5 ou sur VDD
- Si une reconnexion logicielle USB n’est pas nécessaire et que D5 doit servir à autre chose, elle peut être reliée côté VDD
- Les lignes de données USB au-dessous peuvent être coupées si nécessaire pour ajouter des résistances série
- Les 3 broches en haut à droite sont 3V3, GND et D1, utilisées comme header de programmation
- Pour programmer USB débranché, les 3 broches peuvent être connectées
- On peut aussi ne connecter que D1 et GND, ou seulement D1 si l’USB est branché à la même machine
- Les broches de bord sont au pas de 0,1 pouce, et la carte complète mesure 15,2 mm × 20,3 mm
- Les fichiers de conception KiCad sont publiés sur GitHub et git.mitxela.com
Réduction vers une version USB-C
- Le faible coût du CH32V003 et le peu de composants annexes nécessaires ont conduit à l’idée de recréer un ancien projet USB à ATtiny
- Pour améliorer le stylocard avec une lecture directe, il faudrait au moins 22 GPIO ; avec un seul CH32V003, il n’y a pas assez de broches pour gérer à la fois la lecture du clavier et l’USB
- L’utilisation de deux CH32V003 bon marché semblait aussi possible
- L’un lirait la moitié du clavier, l’autre gérerait le reste du clavier et l’USB
- L’idée suivante a été de recréer l’ancien smallest USB MIDI synth pour l’ère de l’USB-C
- Électriquement, le passage à l’USB-C revient à ajouter quelques résistances et le bon connecteur, mais il est difficile de faire entrer facilement de l’électronique dans une prise USB-C
- Le choix final s’est porté sur un connecteur USB-C vertical destiné à la fabrication de docks
- Sa référence est USB4151
- Des composants similaires existent chez plusieurs fournisseurs
Connecteur USB-C et routage d’une carte 2 couches
- Le fan-out d’un connecteur USB-C est difficile, et il semble conçu en supposant l’usage de cartes haute densité et de microvias
- À lui seul, le footprint du connecteur choisi dépasse techniquement les spécifications d’un procédé standard 6/6 mil, ce qui impose de fortes contraintes avant même d’ajouter des pistes
- Les ergots en plastique nécessitent des trous traversants non métallisés proches de trous métallisés
- Pour ce projet jouet, les violations DRC ont été ignorées afin de ne pas payer des tolérances plus élevées
- Si la fabrication échouait, il était prévu de couper les ergots en plastique au cutter
- L’objectif était de rendre la carte placée sous la prise USB-C aussi petite que possible et de la faire tenir dans le diamètre d’un buzzer piézo standard
- Le pas des broches du buzzer est de 7,62 mm, soit 0,3 pouce
- Son diamètre extérieur est de 13,8 mm
- Pour tenir dans le creux du composé de potting, le diamètre maximal est d’environ 12 mm
- Aucune orientation n’évitait l’interférence entre les broches du piézo et les broches de support USB ; l’espacement des footprints a donc été augmenté
- Après plusieurs itérations, l’écartement des broches du piézo a été réduit à 8 mm
- Si nécessaire, les broches pouvaient être légèrement pliées vers l’extérieur ou limées
- Les broches USB 3 ne sont pas connectées
- Les 4 paires SuperSpeed et les 2 broches SBU ne sont pas utilisées
- CC1 et CC2 devant être connectées, 14 broches doivent l’être au total
- En minimisant les anneaux de cuivre autour des trous métallisés, toutes les pistes nécessaires ont pu être sorties de justesse
- Comme les broches de blindage sont toutes reliées entre elles, il aurait aussi été possible d’éviter de raccorder tous les GND sur la carte, mais le GND a finalement été routé également
- Sur la face inférieure, le composant QFN a été décalé par rapport au centre pour libérer assez d’espace de routage
- Les GPIO inutilisés pouvant être reliés à GND ou à d’autres signaux sans problème, GND pouvait passer au milieu de la puce
- Le régulateur utilise un boîtier SC-70
- Un régulateur plus petit aurait été possible, mais l’espace n’était pas un problème majeur
- Les résistances et condensateurs autour sont au format 0603
- Sur la face avant, trois pastilles de test ont été placées pour la programmation : alimentation, GND et D1 (SWIO)
- En pratique, pour programmer, il suffit de brancher l’USB-C via une rallonge et de poser un fil sur la seule pastille D1
Utiliser le panneau comme gabarit d’assemblage
- Les cartes très petites sont difficiles à maintenir lors de l’application de la pâte à braser au pochoir ; un panneau a donc été conçu spécialement
- Cette carte comportant des composants des deux côtés, il est particulièrement délicat de braser un côté puis d’appliquer le pochoir sur l’autre
- Deux exemplaires du design ont été placés sur le panneau, le second étant retourné afin que l’ensemble soit symétrique
- On peut appliquer le pochoir sur un côté, retourner la carte, puis appliquer le pochoir sur l’autre
- Le cadre du panneau sert aussi de gabarit pour maintenir la prise USB-C
- Le trou ovale au centre est conçu pour s’ajuster fermement à la prise USB-C
- Le FR4 supporte le four de refusion, ce qui en fait un bon matériau de support
- Le visualiseur 3D de KiCad aide à éviter les erreurs
- Il sert de ligne de défense supplémentaire contre les oublis de masque de soudure sur les footprints ou les sorties sur la mauvaise couche
- Les interférences entre les broches du piézo et les footprints se voient immédiatement dans le rendu 3D
Assemblage et soudure
- Pour les très petites cartes, il arrive que les fabricants subventionnent le prix dans des conditions de faibles tolérances et de petite taille
- Dans ce projet, un connecteur nominalement USB 3.2 Gen 2 était monté sur une carte 2 couches aux tolérances 6/6 mil, mais le fabricant n’a pas contesté le footprint et la fabrication s’est déroulée sans problème
- Le bon ordre d’assemblage consiste à souder d’abord les petits composants, puis à fixer le connecteur USB en dernier
- Le connecteur USB étant traversant, s’il était monté en premier, il serait impossible d’appliquer le pochoir sur l’autre face
- Le connecteur USB inclut un capuchon en plastique que l’on peut saisir avec une buse à vide
- L’idée initiale était d’en refondre plusieurs, mais leur taille était si petite qu’ils ont finalement tous été soudés au pistolet à air chaud
- Même si des composants sont déjà soudés sur la face inférieure, la tension de surface peut les maintenir en place
- Au besoin, on pourrait aussi utiliser deux alliages de soudure à points de fusion différents
- Après soudure, les cartes ont été détachées prudemment du panneau et les bords rugueux ont été légèrement poncés
- Après assemblage, il est apparu que le condensateur était le composant isolé le plus haut ; un condensateur plus petit aurait pu être utilisé, mais il était déjà trop tard
- Comme prévu, les broches du buzzer piézoélectrique étaient serrées, mais en les poussant suffisamment pour que la carte soit bien à plat, elles ont été coupées puis soudées avec précaution
- Les buzzers piézoélectriques commandés en plus avaient une conception très légèrement différente du stock existant
Fonctionne avec un hub, mais pas en connexion directe à un ordinateur portable
- Le connecteur USB-C vertical est à l’origine conçu pour être intégré dans des docks de téléphone ou de tablette, avec une longueur prévue pour dépasser d’un boîtier plastique moulé
- Un petit capot imprimé en 3D couvrant le circuit et le bas du connecteur a aussi été envisagé, mais le résultat aurait probablement été peu esthétique
- Les rallonges USB-C ne sont pas autorisées par la spécification, mais l’une d’elles a servi à fournir l’alimentation et à sonder la broche SWIO pour la programmation
- Les quatre synthés ont été flashés avec des noms de périphériques différents afin de pouvoir les distinguer dans la DAW
- La DAW utilisée était Cakewalk version 1998, exécutée sous Wine
- Un hub USB-C 4 ports a été acheté séparément pour les tests
- Les hubs ne proposant que quatre ports USB-C étaient difficiles à trouver
- La plupart convertissaient l’USB-C vers d’autres connecteurs comme USB-A, HDMI ou carte SD
- Le produit fini fonctionne lorsqu’il est connecté à un hub USB-C et à un téléphone
- En connexion directe à un ordinateur portable, il ne s’énumère pas
- Il s’énumère pourtant à l’extrémité d’une rallonge USB-C non conforme à la spécification
- Il est possible que le câblage du port USB-C soit légèrement incorrect, ou que les valeurs des résistances de pull déterminant le type de connexion USB ne soient pas exactes
- Le code source du projet est publié sur GitHub et git.mitxela.com
1 commentaires
Avis sur Hacker News
Est-ce que cette personne gagne sa vie avec ce genre de travaux ? Ses réalisations sont toujours d’un niveau très élevé et uniques.
J’ai l’impression qu’une entreprise lui met la pression, au point de m’inquiéter de savoir s’il a bien consigné assez de tâches dans Jira et s’il montre chaque semaine suffisamment de résultats en points de sprint.
J’ai du mal à imaginer une vie où l’on peut simplement faire librement ce qu’on veut, quand on veut, à son rythme, tout en consacrant autant de temps, d’efforts et de ressources à un projet perso.
Financièrement, ce n’est peut-être pas un gros investissement. Les matériaux du prototype coûtent probablement autour de 100 à 200 dollars, mais combien de temps cela prend-il ? Quelques heures par jour ou par nuit après le travail, pendant des années ?
Au pire, j’ai travaillé quelques heures de plus quelques fois par an à cause de situations rares, et il existe clairement de meilleurs employeurs.
Allez sur https://mitxela.com/rants et descendez jusqu’au titre Spare Time and Hard Work.
Aux débuts de Patreon, je connaissais quelqu’un qui recevait du soutien en tant qu’artiste numérique ; avant cela, il streamait sur Twitch et avait un bouton de don PayPal dans son profil.
C’était déjà un artiste assez remarquable à chaque fois que je le voyais, mais j’ai été surpris de voir à quelle vitesse quelques abonnements pouvaient régler les factures.
Quand on raisonne en grosses sommes, vivre uniquement de ses économies paraît difficile, mais si un montant mensuel permet de couvrir la vie courante, le calcul devient beaucoup plus réaliste. Il faut toutefois continuer à garder son public.
Il bidouille des objets parce que ça l’amuse. Beaucoup de gens ont du mal à dégager du temps, à planifier, puis à aller jusqu’au bout.
J’aime aussi les commentaires sarcastiques, et le côté où il semble faire tourner des outils logiciels de 1998 sous Wine sur Linux.
En comptant le montage vidéo, les délais de livraison et les petites recherches faites sur téléphone par-ci par-là.
On pourrait sans doute aller plus vite, mais alors ça commencerait à ressembler à du travail.
Pour quelqu’un qui a déjà les outils, le coût pourrait être plus proche de 50 dollars.
Si l’on est prêt à utiliser de la pâte à braser au plomb, cela pourrait être encore moins cher et plus facile, mais personnellement je ne voudrais absolument pas le faire.
Sa bougie volumétrique est vraiment incroyable https://mitxela.com/projects/candle
C’est assez drôle de voir ces trucs branchés sur un hub dont chaque port est étiqueté 10 Gig.
Le gros plan macro sur le bout du doigt est tellement net qu’il faudrait peut-être considérer cette vidéo comme une fuite de sécurité d’empreinte digitale.
C’est peut-être pire que les gens qui partagent par erreur des photos où l’on voit leurs clés de maison.
Les scènes où l’on voit des empreintes digitales sur des photos haute résolution font légèrement tiquer.
Le compte rendu de fabrication est incroyablement détaillé, mais la démo sonore est beaucoup trop courte.
En gros, cela semble ne produire qu’une onde carrée, donc sans vraie synthèse, modulation ni filtre, j’ai du mal à y voir un synthétiseur.
Il serait plus juste de l’appeler « puce sonore de carte de vœux avec USB-MIDI » ; même si la complexité est faible, il serait aussi difficile de le classer comme PSG.
Il n’y a pas seulement une onde carrée, et puisqu’il y a aussi la possibilité de démarrer et d’arrêter le son, on peut dire qu’il y a une enveloppe.
C’est certes basique au point d’être presque inutile[1], mais c’était probablement le but.
[1]: Le Stylophone, un appareil aux fonctions similaires, apparaît aussi dans Space Oddity. Détails : https://en.m.wikipedia.org/wiki/Stylophone
C’est amusant, mais en pratique je ne pense pas que ce soit vraiment un synthétiseur. Peut-il faire autre chose que jouer une onde carrée ?
« Il y en a un qui ne fonctionne que dans un sens, ce qui est exactement l’inverse de ce que l’USB-C était censé viser, et c’est insupportable. »
Le Nokia 2780 Flip a un port de charge USB-C, mais il ne fonctionne que dans un seul sens, même si la boîte indique Micro-USB.
Pour maintenir ce genre de connecteur SMT en place pendant une refusion double face, je recommande la colle rouge thermodurcissable pour composants.
C’est une démo vraiment magnifique, qui évoque fortement les sons de l’époque des micro-ordinateurs 8 bits.