3 Punkte von GN⁺ 2023-12-17 | 1 Kommentare | Auf WhatsApp teilen
  • Ein Projekt, das einen USB-C-MIDI-Synth auf eine Platine von rund 12 mm quetscht, als neues Experiment der Reihe „smallest and worst“ MIDI-Synthesizer
  • Lässt einen 48-MHz-CH32V003 ohne Hardware-USB mithilfe von CNLohrs Software-USB-Stack rv003usb als USB-MIDI-Gerät arbeiten
  • Die zentrale Herausforderung war, einen vertikal montierten USB-C-Stecker, einen QFN-MCU, einen SC-70-Regler, 0603-Passivbauteile und einen Piezo-Buzzer innerhalb des Durchmessers des Piezo-Buzzers unterzubringen
  • Löst mechanische und PCB-Beschränkungen wie ein 2-Lagen-6/6mil-Board, Bestückung auf beiden Seiten, Panel-Jig, Kollisionen mit Piezo-Pins und USB-C-Fanout durch iterative Designrunden
  • Das fertige Gerät funktionierte an einem USB-C-Hub und an einem Smartphone, wurde bei direkter Verbindung mit einem Laptop jedoch nicht enumeriert; die Prüfung der USB-C-Verdrahtung oder der Pull-up-Widerstandswerte steht noch aus

Ein USB-MIDI-Spielzeug-Synth mit dem CH32V003

  • Das Projekt ist ein neues Werkstück aus der Reihe der „kleinsten und schlechtesten“ MIDI-Synthesizer; der flash synth zählt nicht zu dieser Liste
  • Verwendet wurde der Mikrocontroller CH32V003
    • 32-Bit-RISC-V-Mikrocontroller
    • sehr günstiges Bauteil
    • hat kein Hardware-USB, läuft aber mit 48 MHz
  • Ursprünglich war geplant, eine eigene Bitbang-USB-Bibliothek zu schreiben, um Lernen und Praxisnutzen zugleich zu erreichen, aber CNLohr hatte rv003usb bereits implementiert
  • Da die USB-MIDI-Demo damals noch nicht fertig war, wurde zunächst ein Testgerät aufgebaut, indem ein Development-Board verlötet wurde

Frühe USB-MIDI-Experimente

  • Die erste Platine bestand aus einem TSOP20-Breakout und einem Micro-USB-Breakout plus Regler, Kondensatoren und Widerständen
  • Der Programmier-Header bestand aus zwei Pins, aber solange USB eingesteckt war, musste GND nicht verbunden werden, sodass die Programmierung mit nur einem D1-Pin möglich war
  • Ein Tastereingang wurde so konfiguriert, dass das USB-MIDI-Gerät Noten abspielt
  • Wenn MIDI-Daten den Chip erreichen, gibt der Piezo-Buzzer eine Rechteckwelle aus
    • Dabei wird einer der Hardware-Timer des Chips verwendet
    • Zur Erhöhung der Lautstärke erfolgt die Ausgabe im differential mode
  • USB-MIDI-Nachrichten sind 4 Byte lang, und ein Low-Speed-USB-Endpoint kann bis zu 8 Byte übertragen, daher lassen sich üblicherweise zwei MIDI-Nachrichten pro Paket senden
    • In dieser einfachen Demo wird bei jeder Nachricht bis zum nächsten USB-Interrupt blockiert
  • Mit einem MIDI-Loopback auf Host-Seite wurde das Ganze so betrieben, dass es wie ein „wirklich schreckliches Spielzeug-Keyboard“ funktioniert

USB-Development-Board für den CH32V003

  • Bestehende CH32V003-Development-Boards schienen die USB-Pins nicht herauszuführen, vermutlich weil kein Hardware-USB vorhanden ist, daher wurde ein kleines USB-Development-Board neu entworfen, um wiederholtes Verdrahten zu vermeiden
  • Eigenschaften der Platine:
    • führt alle benötigten Pins heraus
    • beschriftet alle Pins auf beiden Seiten
    • der 1,5K-Widerstand kann an D5 oder an VDD angelötet werden
    • es ist keine softwareseitige USB-Reconnect-Funktion nötig, und wenn D5 für andere Zwecke gebraucht wird, kann stattdessen an VDD angeschlossen werden
    • die USB-Datenleitungen auf der Unterseite können bei Bedarf getrennt und mit Serienwiderständen ergänzt werden
  • Die drei Pins oben rechts sind 3V3, GND und D1 und dienen als Programmier-Header
    • Zum Programmieren ohne USB können alle drei Pins verbunden werden
    • Es reicht auch, nur D1 und GND zu verbinden, oder sogar nur D1, wenn USB am selben Rechner eingesteckt ist
  • Die Randpins haben 0,1-Zoll-Raster, die gesamte Platine misst 15,2 mm × 20,3 mm
  • Die KiCad-Designdateien sind auf GitHub und git.mitxela.com veröffentlicht

Verkleinerung auf eine USB-C-Version

  • Weil der CH32V003 günstig ist und nur wenige Zusatzbauteile braucht, entstand die Idee, frühere USB-ATtiny-Projekte damit nachzubauen
  • stylocard würde für eine Verbesserung auf direktes Auslesen mindestens 22 GPIOs benötigen, doch mit nur einem CH32V003 fehlen die Pins, um gleichzeitig die Tastatur auszulesen und USB zu bedienen
    • Als praktikabel wurde auch der Einsatz von zwei günstigen CH32V003 gesehen
    • Einer würde eine Hälfte der Tastatur lesen, der andere die restliche Tastatur und USB übernehmen
  • Die nächste Idee war, den bestehenden smallest USB MIDI synth für das USB-C-Zeitalter nachzubauen
  • Elektrisch bedeutet der Umstieg auf USB-C nur ein paar zusätzliche Widerstände und einen passenden Stecker, aber in einen USB-C-Stecker selbst lässt sich Elektronik nicht so leicht einbauen
  • Am Ende fiel die Wahl auf einen vertikal montierten USB-C-Stecker für Docking-Anwendungen
    • Die Teilenummer ist USB4151
    • Ähnliche Bauteile gibt es von mehreren Anbietern

USB-C-Stecker und Routing auf einer 2-Lagen-Platine

  • USB-C-Stecker lassen sich schwer auffächern, fast so, als hätten die Designer ein High-Density-Board mit Microvias vorausgesetzt
  • Schon allein der Footprint des gewählten Steckers überschreitet technisch die Standardvorgaben eines 6/6mil-Prozesses, noch bevor zusätzliche Leiterbahnen hinzukommen, sodass die Randbedingungen von Anfang an eng sind
  • Die Kunststoffzapfen benötigen nichtmetallisierte Durchgangsbohrungen nahe metallisierter Löcher
    • Bei diesem Spielzeugprojekt wurden DRC-Verstöße ignoriert, statt für höhere Toleranzkosten zu zahlen
    • Falls die Fertigung scheitern sollte, war geplant, die Kunststoffzapfen mit einem Messer abzuschneiden
  • Ziel war es, die Platine unter dem USB-C-Stecker so klein wie möglich zu machen und sie in den Durchmesser eines gewöhnlichen Piezo-Buzzers einzupassen
    • Das Raster der Buzzer-Pins beträgt 7,62 mm bzw. 0,3 Zoll
    • Der Außendurchmesser liegt bei 13,8 mm
    • Um in die Vertiefung der Vergussmasse zu passen, durfte der maximale Durchmesser nur etwa 12 mm betragen
  • Es gab keine Orientierung der Piezo-Pins ohne Kollision mit den USB-Stützpins, daher wurde der Abstand der Footprints vergrößert
    • Nach mehreren Designiterationen wurde der Pinabstand des Piezos auf 8 mm reduziert
    • Bei Bedarf lassen sich die Pins leicht nach außen biegen oder abschleifen
  • Die USB-3-Pins bleiben unbeschaltet
    • Die vier SuperSpeed-Paare und die zwei SBU-Pins werden nicht verwendet
    • CC1 und CC2 müssen jedoch angeschlossen werden, also sind insgesamt 14 Pins zu verbinden
  • Durch Minimierung der Kupferringe um die Through-Holes konnten gerade noch alle nötigen Leiterbahnen herausgeführt werden
  • Da alle Shield-Pins verbunden sind, wäre auch ein Workaround möglich gewesen, bei dem auf der Platine nicht alle GND-Verbindungen geführt werden, letztlich wurde GND aber trotzdem mitgeroutet
  • Auf der Unterseite wurden die QFN-Bauteile aus der Mitte herausgeschoben, um genug Platz für Leiterbahnen zu schaffen
    • Ungenutzte GPIOs können problemlos mit GND oder anderen Signalen verbunden werden, wodurch GND durch die Mitte des Chips geführt werden konnte
  • Der Regler verwendet ein SC-70-Gehäuse
    • Ein noch kleinerer Regler wäre möglich gewesen, aber Platz war hier nicht das Hauptproblem
    • Für die umliegenden Widerstände und Kondensatoren wurde das 0603-Format verwendet
  • Auf der Vorderseite befinden sich drei Testpads für Versorgung, GND und D1(SWIO) zum Programmieren
    • In der Praxis reicht es zum Programmieren, USB-C über ein Verlängerungskabel anzuschließen und einen Draht an das D1-Pad zu halten

Das Panel als Bestückungs-Jig

  • Sehr kleine Platinen lassen sich beim Schablonieren der Lötpaste schwer fixieren, deshalb wurde ein eigenes Panel entworfen
  • Da diese Platine auf beiden Seiten Bauteile trägt, ist es besonders knifflig, nach dem Löten der einen Seite die andere Seite zu schablonieren
  • Im Panel wurden zwei Exemplare des Designs platziert, das zweite gespiegelt, damit das Gesamtbild symmetrisch wird
    • So lässt sich eine Seite schablonieren, dann das Board wenden und die andere Seite schablonieren
  • Der Panelrahmen dient außerdem als Jig, um den USB-C-Stecker zu halten
    • Das ovale Loch in der Mitte wurde so ausgelegt, dass der USB-C-Stecker stramm hineinpasst
    • FR4 hält einen Reflow-Ofen aus und eignet sich daher gut als Stützmaterial
  • Der KiCad-3D-Viewer half, Fehler zu vermeiden
    • Er wirkte als zusätzliche Absicherung gegen Patzer wie fehlende Soldermasken im Footprint oder Ausgaben auf der falschen Lage
    • Auch Kollisionen zwischen Piezo-Pins und Footprints waren im 3D-Rendering sofort sichtbar

Montage und Löten

  • Bei extrem kleinen Platinen subventionieren Hersteller mitunter den Preis trotz geringer Toleranzen und kleiner Abmessungen
  • Dieses Projekt setzte nominell einen USB-3.2-Gen-2-Stecker auf eine 2-Lagen-Platine mit 6/6mil-Toleranzen, aber der Hersteller beanstandete den Footprint nicht und die Fertigung lief problemlos
  • Die richtige Montagereihenfolge ist, zuerst die kleinen Bauteile zu löten und den USB-Stecker zuletzt anzubringen
    • Der USB-Stecker ist als Through-Hole-Bauteil ausgeführt; würde er zuerst montiert, wäre ein Schablonieren der Gegenseite unmöglich
  • Der USB-Stecker hat eine Kunststoffkappe, die sich mit einer Vakuumdüse aufnehmen lässt
  • Zunächst war geplant, mehrere Exemplare per Reflow zu löten, aber wegen der winzigen Größe wurde am Ende alles mit Heißluft gelötet
    • Selbst bei bereits auf der Unterseite verlöteten Bauteilen kann die Oberflächenspannung die Teile an Ort und Stelle halten
    • Falls nötig, könnten auch zwei Lötlegierungen mit unterschiedlichen Schmelzpunkten verwendet werden
  • Nach dem Löten wurden die Platinen vorsichtig aus dem Panel gelöst und die rauen Kanten etwas abgeschliffen
  • Nach der Montage zeigte sich, dass der Kondensator das höchste einzelne Bauteil war; kleinere Kondensatoren wären möglich gewesen, aber da war es schon zu spät
  • Wie erwartet saßen die Pins des Piezo-Buzzers sehr stramm, wurden aber weit genug hineingedrückt, damit die Platine flach anliegt; danach wurden die Pins gekürzt und vorsichtig verlötet
  • Zusätzlich bestellte Piezo-Buzzer hatten ein minimal anderes Design als der vorhandene Bestand

Funktioniert am Hub, scheitert aber direkt am Laptop

  • Der vertikal montierte USB-C-Stecker ist eigentlich dafür gedacht, in Docks für Smartphones oder Tablets eingebaut zu werden, und hat deshalb eine Länge, mit der er aus einem geformten Kunststoffgehäuse herausragt
  • Auch eine kleine 3D-gedruckte Abdeckung für Schaltung und Unterseite des Steckers wurde erwogen, aber das Ergebnis hätte wohl nicht gut ausgesehen
  • Ein USB-C-Verlängerungskabel ist laut Spezifikation nicht zulässig, wurde aber verwendet, um Strom zu liefern und den SWIO-Pin zum Programmieren zu kontaktieren
  • In die vier Synths wurden unterschiedliche Gerätenamen geflasht, damit sie sich in der DAW unterscheiden lassen
    • Die verwendete DAW war Cakewalk von 1998, ausgeführt unter Wine
  • Zum Testen wurde eigens ein USB-C-Hub mit vier Ports gekauft
    • Es war schwer, einen Hub mit ausschließlich vier USB-C-Ports zu finden
    • Die meisten wandelten USB-C in andere Anschlüsse wie USB-A, HDMI oder SD-Karte um
  • Das fertige Gerät funktioniert, wenn es an einen USB-C-Hub oder an ein Smartphone angeschlossen wird
  • Bei direkter Verbindung mit einem Laptop wird es jedoch nicht enumeriert
    • Am Ende eines nicht spezifikationskonformen USB-C-Verlängerungskabels wird es dagegen enumeriert
    • Möglicherweise ist die USB-C-Port-Verdrahtung leicht fehlerhaft, oder die Pull-up-Widerstandswerte zur Bestimmung des USB-Verbindungstyps sind nicht ganz korrekt
  • Der Quellcode des Projekts ist auf GitHub und git.mitxela.com veröffentlicht

1 Kommentare

 
GN⁺ 2023-12-17
Meinungen auf Hacker News
  • Verdient diese Person mit solchen Arbeiten ihren Lebensunterhalt? Die Ergebnisse sind immer so hochkarätig und einzigartig.
    Es fühlt sich an, als hätte ein Unternehmen einen im Würgegriff, und man macht sich Sorgen, ob man genug Arbeit in Jira dokumentiert hat und ob man jede Woche Ergebnisse im Umfang von genügend Sprint Points vorweisen kann.
    Ich kann mir ein Leben kaum vorstellen, in dem man einfach frei macht, was man will, wann man will, in seinem eigenen Tempo, und so viel Zeit, Mühe und Ressourcen in Hobbyprojekte steckt.
    Finanziell ist es vielleicht keine große Investition. Das Material für den Prototyp dürfte wohl etwa 100–200 Dollar kosten, aber wie viel Zeit steckt darin? Jeden Tag oder Abend nach der Arbeit ein paar Stunden, über Jahre hinweg?

    • Ich arbeite seit Jahrzehnten, hatte aber noch nie einen Job, bei dem ich regelmäßig mehr als 40 Stunden pro Woche arbeiten musste.
      Höchstens ein paar zusätzliche Stunden wegen seltener Situationen ein paar Mal im Jahr; bessere Arbeitgeber gibt es definitiv.
    • Der Autor hat 2018 einen Beitrag zu diesem Thema geschrieben, den er selbst als „rant“ bezeichnet hat.
      Auf https://mitxela.com/rants einfach bis zur Überschrift „Spare Time and Hard Work“ nach unten scrollen.
    • https://mitxela.com/support
      Ich kannte jemanden, der in den frühen Tagen von Patreon als Digital Artist unterstützt wurde; davor streamte er auf Twitch und hatte in seinem Profil einen PayPal-Spendenbutton.
      Er war jedes Mal, wenn ich ihn gesehen habe, ein ziemlich hervorragender Künstler, aber ich war überrascht, wie schnell Rechnungen erledigt waren, sobald nur ein paar Leute ein Abo abschlossen.
      Wenn man in größeren Einmalbeträgen denkt, wirkt es schwierig, nur von Ersparnissen zu leben; sobald man aber von einem monatlich eingehenden Betrag leben kann, wird die Rechnung viel realistischer. Allerdings muss man das Publikum weiter bei der Stange halten.
    • Ich bin kein Hardware-Mensch, aber er scheint ein Traumleben zu führen.
      Er hackt an Dingen herum, weil es Spaß macht. Vielen Menschen fällt es schwer, sich die Zeit zu nehmen, zu planen und es dann auch umzusetzen.
      Ich mag auch die sarkastischen Kommentare und den Eindruck, dass er Software-Tools von 1998 unter Wine auf Linux laufen lässt.
    • Für einen erfahrenen Ingenieur dürfte dieses Projekt nach Feierabend, ein paar Stunden pro Tag, etwa 3 bis 5 Tage dauern.
      Einschließlich Videoschnitt, Versandzeit und allerlei nebenbei am Handy erledigter Recherche.
      Schneller ginge es sicher auch, aber dann würde es langsam anfangen, sich wie Arbeit anzufühlen.
      Für jemanden, der die Werkzeuge schon hat, könnten die Kosten eher bei 50 Dollar liegen.
      Wenn man bereit ist, bleihaltige Lötpaste zu verwenden, könnte es noch billiger und einfacher werden, aber ich würde das auf keinen Fall wollen.
  • Seine volumetrische Kerze ist wirklich großartig: https://mitxela.com/projects/candle

  • Ziemlich lustig, diese Dinger in einem Hub stecken zu sehen, bei dem jeder Port mit 10 Gig beschriftet ist.

  • Die Makroaufnahme der Fingerkuppe ist so scharf, dass man dieses Video vielleicht als Sicherheitsleck für Fingerabdrücke betrachten sollte.
    Das könnte schlimmer sein, als wenn Leute versehentlich Fotos teilen, auf denen ihre Hausschlüssel zu sehen sind.

    • Er wirkt nicht wirklich wie der Typ Mensch, der seinen Fingerabdruck zur Authentifizierung verwenden würde.
  • Szenen, in denen man auf hochauflösenden Fotos Fingerabdrücke sieht, lassen einen kurz zusammenzucken.

  • Der Baubericht ist unglaublich detailliert, aber die Sound-Demo ist viel zu kurz.
    Im Grunde scheint das Ding nur Rechteckwellen auszugeben; ohne echte Synthese, Modulation oder Filter ist es schwer, das als Synthesizer zu betrachten.
    „Soundchip aus einer Grußkarte mit USB-MIDI“ wäre wohl treffender, und trotz der geringen Komplexität dürfte es selbst schwer als PSG durchgehen.

    • Auch ein Ein-Oszillator-Synthesizer ist immer noch ein Synthesizer.
      Es gibt nicht nur Rechteckwellen, und da es Optionen gibt, den Klang zu starten und zu stoppen, hat er gewissermaßen eine Hüllkurve.
      Er ist zwar fast nutzlos rudimentär[1], aber vermutlich war genau das das Ziel.
      [1]: Ein Gerät mit ähnlicher Funktion, das Stylophone, kam auch in „Space Oddity“ vor. Mehr dazu: https://en.m.wikipedia.org/wiki/Stylophone
  • Lustig ist es schon, aber eigentlich scheint es kein Synthesizer zu sein. Kann es außer dem Abspielen einer Rechteckwelle noch irgendetwas?

    • Immerhin synthetisiert es ziemlich ordentliche rechteckwellenähnliche Wellenformen unterschiedlicher Länge. Das reicht meiner Meinung nach.
  • „Es gibt eines, das nur in einer bestimmten Ausrichtung funktioniert, was genau dem widerspricht, wofür USB-C ursprünglich gedacht war, und das quält mich sehr.“
    Das Nokia 2780 Flip hat einen USB-C-Ladeanschluss, funktioniert aber nur in einer Ausrichtung, obwohl auf der Schachtel Micro-USB steht.

  • Um so einen SMT-Steckverbinder beim beidseitigen Reflow an Ort und Stelle zu halten, empfehle ich roten wärmehärtenden Chipkleber.

  • Eine wirklich schöne Demo, die stark an den Klang der Ära der 8-Bit-Mikrocomputer erinnert.