El sintetizador MIDI USB-C más pequeño
(mitxela.com)- Proyecto que mete un sintetizador MIDI USB-C basado en CH32V003 en una placa de alrededor de 12 mm, como un nuevo experimento de la serie de sintetizadores MIDI “smallest and worst”
- Hace funcionar como dispositivo USB-MIDI a un CH32V003 de 48 MHz sin USB por hardware usando la pila USB por software rv003usb de CNLohr
- El reto principal fue acomodar dentro del diámetro de un buzzer piezoeléctrico un conector USB-C de montaje vertical, un MCU QFN, un regulador SC-70, pasivos 0603 y el propio buzzer piezoeléctrico
- Resuelve restricciones mecánicas y de PCB como una placa de 2 capas 6/6 mil, montaje por ambos lados, jig de panel, interferencia con pines del piezo y fanout de USB-C mediante iteraciones de diseño
- El prototipo final funcionó con un hub USB-C y con un teléfono, pero no enumeró al conectarlo directo a una laptop, así que aún queda verificar el cableado USB-C o el valor de las resistencias pull
Sintetizador USB-MIDI de juguete hecho con CH32V003
- El proyecto es una nueva pieza de la serie de sintetizadores MIDI “los más pequeños y peores”, y el flash synth queda fuera de esa lista
- El microcontrolador usado es el CH32V003
- Microcontrolador RISC-V de 32 bits
- Componente muy barato
- No tiene USB por hardware, pero el procesador funciona a 48 MHz
- Al principio se quería escribir una biblioteca USB bit-banged propia para cumplir tanto un objetivo de aprendizaje como uno práctico, pero CNLohr ya había implementado rv003usb
- Como en ese momento la demo USB-MIDI aún no estaba terminada, primero se armó un dispositivo de prueba soldando una placa de desarrollo
Experimentos iniciales con USB-MIDI
- La primera placa consistía en un breakout TSOP20 y un breakout Micro-USB, con regulador, capacitores y resistencias añadidos
- El header de programación era de 2 pines, pero con el USB conectado no hacía falta unir GND, así que se podía programar solo con un pin D1
- Se configuró una entrada por botón para que el dispositivo USB-MIDI reprodujera notas
- Cuando los datos MIDI llegan al chip, el buzzer piezoeléctrico emite una onda cuadrada
- Usa uno de los temporizadores por hardware del chip
- Para subir el volumen, la salida se hace en modo diferencial
- Los mensajes USB MIDI son de 4 bytes y un endpoint USB low-speed permite hasta 8 bytes, así que normalmente se pueden enviar 2 mensajes MIDI por paquete
- En esta demo simple, se bloquea hasta la siguiente interrupción USB por cada mensaje
- Se usó un loopback MIDI del lado del host para hacerlo funcionar como un “teclado de juguete realmente terrible”
Placa de desarrollo USB para CH32V003
- Como las placas de desarrollo CH32V003 existentes parecían no conectar los pines USB, quizá porque no tienen USB por hardware, se diseñó una pequeña placa de desarrollo USB nueva para evitar recablear una y otra vez
- Características de la placa:
- Expone todos los pines necesarios
- Etiqueta todos los pines por ambos lados
- La resistencia de 1.5 K puede soldarse a D5 o a VDD
- No hace falta reconexión USB por software, y si se quiere usar D5 para otra cosa puede conectarse hacia VDD
- Las líneas de datos USB en la cara inferior pueden cortarse y agregar resistencias en serie si hace falta
- Los 3 pines de la esquina superior derecha son 3V3, GND y D1, y se usan como header de programación
- Si se quiere programar con el USB desconectado, se pueden conectar los 3 pines
- También se puede conectar solo D1 y GND, o solo D1 si el USB está conectado a la misma máquina
- Los pines del borde tienen paso de 0.1 pulgadas, y el tamaño total de la placa es 15.2 mm × 20.3 mm
- Los archivos de diseño en KiCad están publicados en GitHub y en git.mitxela.com
El proceso de reducirlo a una versión USB-C
- Como el CH32V003 es barato y necesita pocos componentes de soporte, eso llevó a la idea de recrear proyectos anteriores con USB ATtiny
- stylocard necesita al menos 22 GPIO para mejorarla con lectura directa, pero con un solo CH32V003 faltan pines para leer el teclado y manejar USB al mismo tiempo
- Se consideró viable usar dos CH32V003 baratos
- Uno leería la mitad del teclado y el otro se encargaría del resto del teclado y del USB
- La siguiente idea fue recrear el smallest USB MIDI synth existente para la era USB-C
- El cambio a USB-C, en lo eléctrico, solo implica agregar unas cuantas resistencias y un conector adecuado, pero no es fácil meter electrónica dentro de un conector USB-C
- Al final se eligió un conector USB-C de montaje vertical pensado para fabricar docks
- El número de parte es USB4151
- Existen componentes similares de varios proveedores
Conector USB-C y ruteo en placa de 2 capas
- El fanout del conector USB-C es difícil, y parece que quien lo diseñó daba por hecho una placa de alta densidad con microvías
- Solo el footprint del conector elegido ya excede técnicamente la especificación estándar de proceso 6/6 mil, incluso antes de agregar pistas, así que las restricciones son fuertes desde el inicio
- Los pernos plásticos necesitan agujeros pasantes no metalizados cerca de agujeros metalizados
- En este proyecto de juguete se ignoraron esas violaciones de DRC para no pagar tolerancias más costosas
- Si no se podía fabricar, el plan era cortar los pernos plásticos con un cuchillo
- El objetivo era hacer la placa que va debajo del plug USB-C lo más pequeña posible y meterla dentro del diámetro de un buzzer piezoeléctrico común
- El paso entre pines del buzzer es de 7.62 mm, es decir 0.3 pulgadas
- El diámetro exterior es de 13.8 mm
- Para meterla dentro de la parte cóncava del compuesto de encapsulado, el diámetro máximo debía ser de unos 12 mm
- No había orientación en la que los pines del piezo no interfirieran con los pines de soporte USB, así que se aumentó el espaciado entre footprints
- Tras varias iteraciones de diseño, la separación de los pines del piezo se redujo hasta 8 mm
- Si hace falta, los pines pueden doblarse ligeramente hacia afuera o limarse
- Los pines USB 3 no se conectan
- No se usan los 4 pares SuperSpeed ni los 2 pines SBU
- Como CC1 y CC2 sí deben conectarse, en total hay que conectar 14 pines
- Se minimizó el anillo de cobre alrededor de los agujeros metalizados para apenas poder sacar todas las pistas necesarias
- Como todos los pines del shield están conectados, también era posible evitar conectar toda la GND en la placa, pero al final sí se ruteó la GND
- En la cara inferior, el componente QFN se desplazó del centro para dejar suficiente espacio de ruteo
- Como los GPIO no usados no causan problemas si se conectan a GND u otras señales, fue posible pasar GND por el centro del chip
- El regulador usa encapsulado SC-70
- Se podría usar un regulador más pequeño, pero el espacio no era el problema principal
- Las resistencias y capacitores alrededor son de tamaño 0603
- En la cara frontal se colocaron 3 pads de prueba para alimentación, GND y programación D1 (SWIO)
- En la práctica, para programarlo basta conectar el USB-C con un cable extensor y tocar con un cable solo el pad D1
Usar el panel como jig de ensamblaje
- Como una placa tan pequeña es difícil de sujetar al aplicar pasta de soldar con stencil, se diseñó un panel específico
- Esta placa tiene componentes en ambos lados, así que después de soldar un lado resulta especialmente complicado usar stencil en el otro
- En el panel se colocaron dos copias del diseño y la segunda se puso invertida para que el conjunto fuera simétrico
- Así se puede aplicar stencil a un lado, dar vuelta la placa y aplicar stencil al otro
- El marco del panel también se usa como jig para sujetar el plug USB-C
- El agujero ovalado del centro está diseñado para ajustar firmemente con el plug USB-C
- El FR4 soporta un horno de reflow, así que sirve como material de soporte
- El visor 3D de KiCad ayuda a evitar errores
- Funciona como una defensa adicional contra fallas como soldermask faltante en footprints o exportación de capas equivocadas
- La interferencia entre los pines del piezo y el footprint también se puede ver de inmediato en el render 3D
Ensamblaje y soldadura
- Las placas muy pequeñas a veces reciben subsidio de precio por parte del fabricante cuando se trabaja con tolerancias bajas y tamaños reducidos
- Este proyecto era nominalmente un conector USB 3.2 Gen 2 sobre una placa de 2 capas con tolerancia 6/6 mil, pero el fabricante no objetó el footprint y la fabricación salió sin problemas
- El orden correcto de ensamblaje es soldar primero los componentes pequeños y dejar el conector USB para el final
- Como el conector USB es de montaje pasante, si se coloca primero ya no se puede usar stencil en la cara opuesta
- El conector USB incluye una tapa plástica que permite tomarlo con boquilla de vacío
- Al principio se intentó hacer reflow de varias piezas a la vez, pero como eran demasiado pequeñas, al final todas se soldaron con pistola de aire caliente
- Aunque ya hubiera componentes soldados en la cara inferior, la tensión superficial puede mantenerlos en su sitio
- Si hace falta, también se pueden usar dos aleaciones de soldadura con distintos puntos de fusión
- Después de soldar, se separaron con cuidado del panel y se limaron un poco los bordes ásperos
- Tras el ensamblaje se confirmó que el capacitor era el componente individual más alto, y se podría haber usado uno más pequeño, pero ya era demasiado tarde
- Como era de esperarse, los pines del buzzer piezoeléctrico quedaron muy ajustados, pero se lograron insertar lo suficiente para que la placa quedara plana; luego se cortaron y soldaron con cuidado
- Los buzzers piezoeléctricos pedidos adicionalmente tenían un diseño apenas distinto al del stock anterior
Funciona en un hub, pero falla al conectarlo directo a una laptop
- El conector USB-C de montaje vertical fue diseñado originalmente para ir dentro de docks para teléfonos o tablets, así que tiene la longitud necesaria para sobresalir de una carcasa plástica moldeada
- También se pensó en una pequeña cubierta impresa en 3D para tapar el circuito y la parte inferior del conector, pero se estimó que no se vería bien
- Aunque los cables extensores USB-C no están permitidos por la especificación, se usó uno para alimentar el dispositivo y programarlo tocando el pin SWIO con una punta de prueba
- En los cuatro sintetizadores se grabaron nombres de dispositivo distintos para poder diferenciarlos en el DAW
- El DAW usado fue Cakewalk de 1998 ejecutándose en Wine
- Se compró por separado un hub USB-C de 4 puertos para las pruebas
- Fue difícil encontrar un hub con solo 4 USB-C
- La mayoría convierten USB-C a otros conectores como USB-A, HDMI o tarjeta SD
- El producto terminado funciona al conectarlo a un hub USB-C y a un teléfono
- Al conectarlo directamente a una laptop no enumera
- Sí enumera al final del cable extensor USB-C no compatible con la especificación
- Puede que el cableado del puerto USB-C tenga un pequeño error, o que el valor de las resistencias pull que determinan el tipo de conexión USB no sea el correcto
- El código fuente del proyecto está publicado en GitHub y en git.mitxela.com
1 comentarios
Opiniones de Hacker News
¿Esta persona se gana la vida haciendo este tipo de trabajos? Sus resultados siempre son de un nivel altísimo y muy únicos.
Me da la sensación de que una empresa le tiene el pie en el cuello, y me hace preocuparme por si registró suficiente trabajo en Jira o si cada semana está mostrando resultados equivalentes a suficientes puntos de sprint.
Me cuesta imaginar una vida en la que alguien simplemente haga libremente lo que quiere, cuando quiere y a su propio ritmo, y aun así le dedique tanto tiempo, esfuerzo y recursos a un proyecto de hobby.
Quizá en dinero no sea una gran inversión. Los materiales del prototipo probablemente cuesten unos 100–200 dólares, pero ¿cuánto tiempo habrá requerido? ¿Unas horas al día o por la noche después del trabajo, durante años?
Como mucho, unas horas extra por situaciones raras unas cuantas veces al año; sin duda existen mejores empleadores.
En https://mitxela.com/rants hay que bajar hasta el título Spare Time and Hard Work.
Conocí a alguien que, en los primeros días de Patreon, recibía apoyo como artista digital; antes de eso transmitía en Twitch y tenía un botón de donación por PayPal en su perfil.
Siempre me pareció un artista bastante destacado, pero me sorprendió ver lo rápido que se podían pagar las cuentas con que apenas unas personas empezaran a suscribirse.
Si lo piensas como una suma grande, vivir solo de ahorros parece difícil, pero cuando se vuelve posible vivir con una cantidad que entra cada mes, las cuentas se vuelven mucho más realistas. Eso sí, hay que mantener a la audiencia.
Está hackeando cosas que hace porque le divierten. A mucha gente le cuesta hacerse el tiempo, planear y llegar a ejecutarlo.
También me gustan sus comentarios sarcásticos, y ese aire de estar usando herramientas de software de 1998 corriendo en Wine sobre Linux.
Eso incluye edición de video, tiempos de envío y las investigaciones varias hechas a ratos en el teléfono.
Podría hacerse más rápido, pero entonces empezaría a sentirse como trabajo.
Para alguien que ya tiene las herramientas, el costo podría estar más cerca de 50 dólares.
Si estás dispuesto a usar pasta de soldadura con plomo, podría volverse más barato y fácil, pero yo jamás querría hacerlo.
Su vela volumétrica es realmente impresionante: https://mitxela.com/projects/candle
Es bastante gracioso ver estos dispositivos conectados a un hub con la etiqueta 10 Gig en cada puerto.
La ampliación macro de la yema del dedo es tan nítida que quizá habría que considerar este video como una filtración de seguridad de huellas digitales.
Podría ser peor que cuando la gente comparte por accidente fotos en las que se ven las llaves de su casa.
La escena en la que se ven huellas digitales en una foto de alta resolución hace que uno se detenga un poco.
El registro del proceso de fabricación es increíblemente detallado, pero la demo de sonido es demasiado corta.
Básicamente parece que solo produce una onda cuadrada, así que cuesta verlo como un sintetizador si no hay síntesis, modulación ni filtros reales.
Sería más correcto llamarlo “chip de sonido de tarjeta de felicitación con USB-MIDI”, y aunque su complejidad es baja, también parece difícil clasificarlo como PSG.
Ni siquiera es solo una onda cuadrada, y también hay opciones para iniciar y detener el sonido, así que en cierto modo tiene una envolvente.
Es tan básico que roza lo inútil[1], pero probablemente ese era el objetivo.
[1]: Un dispositivo de funcionalidad similar llamado Stylophone se usó incluso en Space Oddity. Más detalles: https://en.m.wikipedia.org/wiki/Stylophone
Es gracioso, pero en realidad no parece un sintetizador. ¿Puede hacer algo más que reproducir una onda cuadrada?
“Hay uno que solo funciona en una orientación concreta, que es exactamente lo contrario de lo que USB-C pretendía originalmente, y resulta demasiado frustrante”.
El Nokia 2780 Flip tiene un puerto de carga USB-C y, aunque en la caja dice Micro-USB, solo funciona en una orientación.
Para mantener en su lugar ese tipo de conectores SMT durante el reflujo por ambas caras, recomiendo pegamento rojo termoendurecible para chips.
Una demo realmente hermosa, y evoca fuertemente los sonidos de la era de las microcomputadoras de 8 bits.