3 poin oleh GN⁺ 2023-12-17 | 1 komentar | Bagikan ke WhatsApp
  • Proyek yang memadatkan synth MIDI USB-C berbasis CH32V003 ke papan sekitar 12 mm ini adalah eksperimen baru dalam seri synthesizer MIDI “smallest and worst”
  • CH32V003 48 MHz yang tidak memiliki USB hardware dibuat berfungsi sebagai perangkat USB-MIDI dengan menambahkan stack USB software rv003usb dari CNLohr
  • Tantangan utamanya adalah memasukkan konektor USB-C pemasangan vertikal, MCU QFN, regulator SC-70, komponen pasif 0603, dan buzzer piezo ke dalam diameter buzzer piezo
  • Kendala mekanis dan PCB seperti papan 2 layer 6/6 mil, pemasangan dua sisi, jig panel, interferensi pin piezo, dan fan-out USB-C diselesaikan lewat iterasi desain
  • Produk akhirnya berfungsi pada hub USB-C dan ponsel, tetapi tidak ter-enumerate saat tersambung langsung ke laptop, sehingga validasi wiring USB-C atau nilai resistor pull masih tersisa

Synth mainan USB-MIDI yang dibuat dengan CH32V003

  • Proyek ini adalah karya baru dalam seri synthesizer MIDI “smallest and worst”, dan flash synth dikecualikan dari daftar ini
  • Mikrokontroler yang digunakan adalah CH32V003
    • Mikrokontroler RISC-V 32-bit
    • Komponen yang sangat murah
    • Tidak memiliki USB hardware, tetapi prosesornya berjalan pada 48 MHz
  • Awalnya penulis ingin membuat library USB bit-bang sendiri untuk sekaligus belajar dan memenuhi kebutuhan praktis, tetapi CNLohr sudah mengimplementasikan rv003usb
  • Karena demo USB-MIDI saat itu belum selesai, penulis terlebih dahulu menyolder development board dan merakit perangkat untuk pengujian

Eksperimen awal USB-MIDI

  • Papan pertama dibuat dengan menggabungkan breakout TSOP20 dan breakout Micro-USB, lalu menambahkan regulator, kapasitor, dan resistor
  • Header pemrograman dibuat 2 pin, tetapi saat USB terpasang, GND tidak perlu disambungkan sehingga pemrograman bisa dilakukan hanya dengan satu pin D1
  • Input tombol diatur agar perangkat USB-MIDI memainkan nada
  • Ketika data MIDI tiba di chip, buzzer piezo mengeluarkan gelombang kotak
    • Menggunakan salah satu timer hardware pada chip
    • Output dibuat dalam differential mode untuk memperbesar volume
  • Pesan USB MIDI berukuran 4 byte dan endpoint low-speed USB dapat menampung hingga 8 byte, sehingga biasanya 2 pesan MIDI bisa dikirim per paket
    • Pada demo sederhana ini, setiap pesan memblokir sampai interupsi USB berikutnya
  • Dengan MIDI loopback di sisi host, perangkat ini berfungsi seperti “keyboard mainan yang benar-benar buruk”

Development board USB untuk CH32V003

  • Development board CH32V003 yang sudah ada tampaknya tidak menyambungkan pin USB, mungkin karena tidak ada USB hardware, sehingga penulis merancang development board USB kecil baru agar tidak perlu melakukan wiring berulang
  • Fitur papan:
    • Semua pin yang diperlukan dibuat sebagai breakout
    • Semua pin diberi label di kedua sisi
    • Resistor 1,5K dapat disolder ke D5 atau VDD
    • Jika tidak perlu software reconnect USB dan D5 ingin dipakai untuk keperluan lain, resistor dapat disambungkan ke sisi VDD
    • Jalur data USB di sisi bawah dapat dipotong dan diberi resistor seri jika diperlukan
  • Tiga pin di kanan atas adalah 3V3, GND, dan D1, digunakan sebagai header pemrograman
    • Jika ingin memprogram tanpa USB terpasang, ketiga pin dapat disambungkan
    • Bisa juga hanya menyambungkan D1 dan GND, atau jika USB terpasang ke mesin yang sama, cukup menyambungkan D1 saja
  • Pin tepi menggunakan pitch 0,1 inci, dan ukuran keseluruhan papan adalah 15,2 mm × 20,3 mm
  • File desain KiCad dipublikasikan di GitHub dan git.mitxela.com

Proses mengecilkan ke versi USB-C

  • Karena CH32V003 murah dan hanya membutuhkan sedikit komponen pendukung, hal itu memunculkan ide untuk mereproduksi proyek USB ATtiny terdahulu
  • Agar stylocard ditingkatkan dengan metode pembacaan langsung, dibutuhkan minimal 22 GPIO, tetapi satu CH32V003 tidak memiliki cukup pin untuk menangani pembacaan keyboard dan USB sekaligus
    • Penulis menilai penggunaan dua CH32V003 murah juga memungkinkan
    • Konfigurasinya: satu membaca separuh keyboard, sementara yang lain menangani sisa keyboard dan USB
  • Ide berikutnya adalah mereproduksi smallest USB MIDI synth yang sudah ada agar sesuai dengan era USB-C
  • Secara elektrik, beralih ke USB-C hanya sebatas menambahkan beberapa resistor dan konektor yang sesuai, tetapi memasukkan rangkaian elektronik ke dalam colokan USB-C tidak mudah
  • Akhirnya dipilih konektor USB-C pemasangan vertikal untuk pembuatan dock
    • Nomor komponennya USB4151
    • Ada banyak komponen serupa dari beberapa pemasok

Konektor USB-C dan routing papan 2 layer

  • Konektor USB-C sulit di-fan-out, dan tampaknya perancangnya mengasumsikan penggunaan papan kepadatan tinggi dan microvia
  • Footprint konektor yang dipilih saja secara teknis sudah melampaui spesifikasi proses standar 6/6 mil, sehingga keterbatasannya sudah besar bahkan sebelum menambahkan trace
  • Stud plastik membutuhkan lubang tembus non-plated dekat lubang plated
    • Untuk proyek mainan ini, penulis mengabaikan pelanggaran DRC tanpa membayar biaya toleransi yang lebih tinggi
    • Jika tidak dapat diproduksi, rencananya stud plastik akan dipotong dengan pisau
  • Targetnya adalah membuat papan yang masuk di bawah colokan USB-C sekecil mungkin, dan memasukkannya ke dalam diameter buzzer piezo biasa
    • Pitch pin buzzer adalah 7,62 mm, atau 0,3 inci
    • Diameter luarnya 13,8 mm
    • Agar masuk ke bagian cekung pada potting compound, diameter maksimumnya sekitar 12 mm
  • Tidak ada orientasi yang membuat pin piezo tidak mengganggu pin penyangga USB, sehingga jarak footprint diperlebar
    • Setelah iterasi desain, jarak pin piezo diperkecil hingga 8 mm
    • Jika perlu, pin dapat sedikit ditekuk ke luar atau dikikir
  • Pin USB 3 tidak disambungkan
    • Empat pasangan SuperSpeed dan dua pin SBU tidak digunakan
    • CC1 dan CC2 harus disambungkan, sehingga total ada 14 pin yang perlu disambungkan
  • Dengan meminimalkan cincin tembaga di sekitar lubang plated, semua track yang dibutuhkan nyaris berhasil dikeluarkan
  • Karena semua pin shield saling tersambung, sebenarnya ada opsi untuk tidak menyambungkan semua GND di papan sebagai jalan pintas, tetapi akhirnya GND juga tetap di-routing
  • Di sisi bawah, komponen QFN digeser dari tengah untuk mendapatkan ruang track yang cukup
    • GPIO yang tidak digunakan tidak bermasalah jika tersambung ke GND atau sinyal lain, sehingga GND dapat dilewatkan melalui bagian tengah chip
  • Regulator menggunakan paket SC-70
    • Regulator yang lebih kecil juga memungkinkan, tetapi masalah ruang tidak terlalu besar
    • Resistor dan kapasitor di sekitarnya menggunakan ukuran 0603
  • Di sisi depan, ada tiga test pad untuk pemrograman daya, GND, dan D1(SWIO)
    • Untuk pemrograman nyata, cukup pasang USB-C melalui kabel ekstensi dan tempelkan kabel ke satu pad D1

Menggunakan panel sebagai jig perakitan

  • Papan yang sangat kecil sulit dipegang saat menyapukan solder paste dengan stencil, sehingga penulis merancang panel sendiri
  • Karena papan ini memiliki komponen di kedua sisi, melakukan solder pada satu sisi lalu stencil sisi lainnya menjadi sangat rumit
  • Pada panel, desain ditempatkan dua kali dan yang kedua dibalik agar keseluruhannya menjadi simetris
    • Satu sisi dapat diberi stencil, lalu papan dibalik untuk memberi stencil pada sisi lainnya
  • Frame panel juga digunakan sebagai jig untuk menahan colokan USB-C
    • Lubang oval di tengah dirancang agar pas erat dengan colokan USB-C
    • FR4 dapat menahan oven reflow, sehingga cocok sebagai material penyangga
  • KiCad 3D Viewer membantu mencegah kesalahan
    • Berfungsi sebagai lapisan pertahanan tambahan untuk mengurangi kesalahan seperti solder mask footprint yang hilang atau output layer yang keliru
    • Interferensi antara pin piezo dan footprint yang tidak cocok juga bisa langsung diperiksa di render 3D

Perakitan dan penyolderan

  • Untuk papan yang sangat kecil, ada kalanya pabrikan mensubsidi harga pada kondisi toleransi rendah dan ukuran kecil
  • Proyek ini secara nominal memasang konektor USB 3.2 Gen 2 pada papan 2 layer bertoleransi 6/6 mil, tetapi pabrikan tidak mempermasalahkan footprint tersebut dan produksi berjalan tanpa masalah
  • Urutan perakitan yang benar adalah menyolder komponen kecil terlebih dahulu dan memasang konektor USB terakhir
    • Karena konektor USB bertipe through-hole, jika dipasang lebih dulu, sisi sebaliknya tidak dapat diberi stencil
  • Konektor USB menyertakan cap plastik yang dapat diambil dengan nozzle vakum
  • Awalnya penulis ingin melakukan reflow untuk beberapa unit, tetapi karena ukurannya terlalu kecil, akhirnya semuanya disolder dengan hot air gun
    • Meski sudah ada komponen yang tersolder di sisi bawah, tegangan permukaan dapat menahan komponen tetap di tempatnya
    • Jika perlu, dua jenis paduan solder dengan titik leleh berbeda juga bisa digunakan
  • Setelah penyolderan, papan dilepaskan dengan hati-hati dari panel dan tepi yang kasar sedikit dikikir
  • Setelah perakitan, diketahui bahwa kapasitor adalah satu-satunya komponen tertinggi; kapasitor yang lebih kecil sebenarnya bisa digunakan, tetapi saat itu sudah terlambat
  • Seperti yang diperkirakan, pin buzzer piezo cukup sempit, tetapi setelah didorong masuk secukupnya hingga papan terpasang rata, pin dipotong dan disolder dengan hati-hati
  • Buzzer piezo tambahan yang dipesan memiliki desain yang sangat sedikit berbeda dari stok lama

Berfungsi lewat hub, tetapi gagal tersambung langsung ke laptop

  • Konektor USB-C pemasangan vertikal pada awalnya dirancang untuk dimasukkan ke dalam dock ponsel atau tablet, sehingga panjangnya dibuat agar menonjol keluar dari casing plastik cetak
  • Penulis juga mempertimbangkan cover kecil cetak 3D untuk menutup rangkaian dan bagian bawah konektor, tetapi menilai tampilannya tidak akan bagus
  • Kabel ekstensi USB-C sebenarnya tidak diperbolehkan oleh spesifikasi, tetapi digunakan untuk memasok daya dan memprogram dengan menyentuhkan probe ke pin SWIO
  • Empat synth di-flash dengan nama perangkat yang berbeda agar dapat dibedakan di DAW
    • DAW yang digunakan adalah Cakewalk edisi 1998 yang dijalankan di Wine
  • Penulis membeli hub USB-C 4 port secara terpisah untuk pengujian
    • Hub yang hanya menyediakan empat USB-C sulit ditemukan
    • Kebanyakan hub mengubah USB-C menjadi konektor lain seperti USB-A, HDMI, atau kartu SD
  • Produk akhirnya berfungsi saat disambungkan ke hub USB-C dan ponsel
  • Jika disambungkan langsung ke laptop, perangkat tidak ter-enumerate
    • Di ujung kabel ekstensi USB-C yang melanggar spesifikasi, perangkat ter-enumerate
    • Ada kemungkinan wiring port USB-C sedikit keliru, atau nilai resistor pull yang menentukan tipe koneksi USB tidak tepat
  • Kode sumber proyek dipublikasikan di GitHub dan git.mitxela.com

1 komentar

 
GN⁺ 2023-12-17
Komentar Hacker News
  • Apakah orang ini mencari nafkah dari pekerjaan seperti ini? Hasilnya selalu begitu berkualitas tinggi dan unik
    Rasanya seperti ada perusahaan yang mencekiknya, sampai-sampai saya khawatir apakah ia sudah mencatat cukup banyak pekerjaan di Jira dan apakah setiap minggu ia menunjukkan hasil sesuai sprint point yang cukup
    Sulit membayangkan hidup yang bisa dengan bebas mengerjakan apa yang diinginkan, kapan pun diinginkan, dengan ritme sendiri, sambil mencurahkan waktu, usaha, dan sumber daya sebanyak ini ke proyek hobi
    Dari sisi uang mungkin bukan investasi besar. Bahan prototipenya mungkin sekitar 100–200 dolar, tapi berapa banyak waktu yang masuk? Beberapa jam sehari atau semalam setelah pulang kerja, selama bertahun-tahun?

    • Saya sudah bekerja selama puluhan tahun, tetapi belum pernah punya pekerjaan yang secara rutin mengharuskan saya melebihi 40 jam per minggu
      Paling-paling hanya beberapa jam tambahan karena situasi langka beberapa kali setahun, dan jelas ada pemberi kerja yang lebih baik
    • Penulis pernah menulis artikel tentang topik ini pada 2018 dan sendiri menandainya sebagai “rant”
      Buka https://mitxela.com/rants lalu gulir sampai judul Spare Time and Hard Work
    • https://mitxela.com/support
      Saya pernah mengenal seseorang yang pada masa awal Patreon mendapat dukungan sebagai seniman digital; sebelumnya ia streaming di Twitch dan memasang tombol donasi PayPal di profilnya
      Setiap kali saya melihatnya, ia memang seniman yang cukup hebat, tetapi saya terkejut melihat betapa cepatnya tagihan bisa tertutup begitu beberapa orang saja mulai berlangganan
      Kalau dipikir sebagai dana besar sekaligus, hidup dari tabungan saja tampak sulit, tetapi ketika ada pemasukan bulanan yang memungkinkan untuk hidup, perhitungannya jadi jauh lebih realistis. Hanya saja audiens harus terus dipertahankan
    • Saya bukan orang hardware, tapi sepertinya ia menjalani hidup impian
      Ia mengutak-atik benda karena menyenangkan. Banyak orang sulit meluangkan waktu, membuat rencana, dan benar-benar mengeksekusinya
      Saya juga suka komentar sarkastiknya, dan fakta bahwa ia tampak menjalankan tool software keluaran 1998 di Wine di Linux
    • Untuk engineer berpengalaman, proyek ini sepertinya butuh sekitar 3–5 hari dengan beberapa jam sehari setelah kerja
      Itu sudah termasuk edit video, waktu pengiriman, dan berbagai riset kecil-kecilan lewat ponsel di sela-sela
      Bisa saja lebih cepat, tetapi nanti mulai terasa seperti pekerjaan
      Bagi orang yang sudah punya tool-nya, biayanya mungkin mendekati 50 dolar
      Jika bersedia memakai solder paste bertimbal, mungkin bisa lebih murah dan lebih mudah, tetapi saya sama sekali tidak mau melakukannya
  • Lilin volumetrik miliknya benar-benar luar biasa https://mitxela.com/projects/candle

  • Cukup lucu melihat benda-benda ini tertancap di hub yang tiap portnya berlabel 10 Gig

  • Macro close-up bantalan ujung jarinya begitu tajam sampai video ini mungkin harus dianggap sebagai kebocoran keamanan sidik jari
    Bisa jadi lebih buruk daripada orang yang tanpa sengaja membagikan foto yang memperlihatkan kunci rumahnya

    • Ia tidak terlalu tampak seperti tipe orang yang akan memakai sidik jarinya sendiri untuk autentikasi
  • Adegan ketika sidik jari terlihat di foto beresolusi tinggi membuat saya sedikit tersentak

  • Catatan pembuatannya luar biasa detail, tetapi demo suaranya terlalu singkat
    Pada dasarnya sepertinya hanya menghasilkan gelombang kotak, jadi sulit menyebutnya synthesizer kalau tidak ada sintesis, modulasi, atau filter sungguhan
    Lebih tepat disebut “chip suara kartu ucapan dengan USB-MIDI”, dan meski kompleksitasnya rendah, rasanya juga sulit menggolongkannya sebagai PSG

    • Synthesizer osilator tunggal tetaplah synthesizer
      Bukan hanya ada gelombang kotak, tetapi juga ada opsi untuk memulai dan menghentikan suara, jadi bisa dibilang ada envelope
      Memang sangat mendasar sampai hampir tidak berguna[1], tetapi mungkin memang itu tujuannya
      [1]: Perangkat bernama Stylophone dengan fungsi serupa juga dipakai di Space Oddity. Detail: https://en.m.wikipedia.org/wiki/Stylophone
  • Memang lucu, tetapi sebenarnya sepertinya ini bukan synthesizer. Apakah bisa melakukan hal lain selain memutar gelombang kotak?

    • Tetap saja ia menyintesis bentuk gelombang mirip gelombang kotak yang cukup bagus dengan panjang berbeda-beda. Menurut saya itu sudah cukup
  • “Ada satu yang hanya bekerja pada orientasi tertentu, kebalikan total dari tujuan awal USB-C, jadi sangat menyiksa”
    Nokia 2780 Flip punya port pengisian USB-C, dan meski di kotaknya tertulis Micro-USB, port itu hanya bekerja dalam satu orientasi

  • Untuk menahan konektor SMT seperti itu tetap di tempatnya saat reflow dua sisi, saya merekomendasikan lem chip termoset merah

  • Demo yang benar-benar indah, dan sangat mengingatkan pada suara era mikrokomputer 8-bit