Synth MIDI USB-C nhỏ nhất
(mitxela.com)- Đây là một dự án nhồi synth MIDI USB-C dựa trên CH32V003 vào một bo mạch khoảng 12 mm, một thử nghiệm mới trong loạt synth MIDI “smallest and worst”
- Dùng stack USB phần mềm rv003usb của CNLohr trên CH32V003 48 MHz không có USB phần cứng để vận hành như một thiết bị USB-MIDI
- Thách thức cốt lõi là nhét đầu nối USB-C gắn thẳng đứng, MCU QFN, bộ điều áp SC-70, linh kiện thụ động 0603 và còi piezo vào trong đường kính của còi piezo
- Các ràng buộc cơ khí và PCB như bo 2 lớp 6/6 mil, gắn linh kiện hai mặt, jig panel, va chạm chân piezo, fanout USB-C được giải quyết qua nhiều vòng lặp thiết kế
- Sản phẩm hoàn thiện hoạt động với hub USB-C và điện thoại, nhưng không được liệt kê khi cắm trực tiếp vào laptop, nên vẫn cần kiểm chứng dây USB-C hoặc giá trị điện trở kéo
Synth đồ chơi USB-MIDI làm bằng CH32V003
- Dự án là sản phẩm mới trong loạt synth MIDI “nhỏ nhất và tệ nhất”, còn flash synth được loại khỏi danh sách này
- Vi điều khiển được dùng là CH32V003
- Vi điều khiển RISC-V 32-bit
- Linh kiện rất rẻ
- Không có USB phần cứng, nhưng bộ xử lý chạy ở 48 MHz
- Ban đầu tác giả định tự viết thư viện USB bit-bang để vừa học vừa dùng thực tế, nhưng CNLohr đã triển khai sẵn rv003usb
- Vì demo USB-MIDI khi đó chưa hoàn thiện, tác giả hàn một bo phát triển để dựng trước thiết bị thử nghiệm
Thử nghiệm USB-MIDI ban đầu
- Bo đầu tiên gồm một breakout TSOP20 và một breakout Micro-USB ghép lại, thêm bộ điều áp, tụ điện và điện trở
- Header lập trình gồm 2 chân, nhưng khi đang cắm USB thì không cần nối GND, nên có thể lập trình chỉ bằng một chân D1
- Thiết bị USB-MIDI được thiết lập để phát nốt bằng đầu vào nút bấm
- Khi dữ liệu MIDI tới chip, còi piezo xuất ra sóng vuông
- Dùng một bộ định thời phần cứng của chip
- Xuất ở chế độ differential để tăng âm lượng
- Thông điệp USB MIDI có 4 byte, còn endpoint USB low-speed có thể tới 8 byte, nên thường có thể gửi 2 thông điệp MIDI trong mỗi gói
- Trong demo đơn giản này, mỗi thông điệp sẽ chặn cho đến ngắt USB tiếp theo
- Dùng MIDI loopback phía host để khiến nó hoạt động như một “bàn phím đồ chơi thật sự tệ”
Bo phát triển USB cho CH32V003
- Các bo phát triển CH32V003 hiện có dường như không nối chân USB, có lẽ vì không có USB phần cứng, nên để tránh đi dây lặp lại, tác giả thiết kế một bo phát triển USB nhỏ mới
- Đặc điểm của bo:
- Breakout toàn bộ các chân cần thiết
- Gắn nhãn mọi chân ở cả hai mặt
- Điện trở 1,5K có thể hàn vào D5 hoặc VDD
- Nếu không cần tái kết nối USB bằng phần mềm và muốn dùng D5 cho mục đích khác, có thể nối về phía VDD
- Các đường dữ liệu USB ở mặt dưới có thể cắt và thêm điện trở nối tiếp khi cần
- 3 chân góc trên bên phải là 3V3, GND, D1 và được dùng làm header lập trình
- Nếu rút USB ra để lập trình, có thể nối cả 3 chân
- Cũng có thể chỉ nối D1 và GND, hoặc nếu USB đang cắm vào cùng máy thì chỉ nối D1
- Các chân ở mép có pitch 0,1 inch, kích thước toàn bo là 15,2 mm × 20,3 mm
- File thiết kế KiCad được công khai trên GitHub và git.mitxela.com
Quá trình thu nhỏ thành phiên bản USB-C
- Vì CH32V003 rẻ và cần ít linh kiện hỗ trợ, ý tưởng tiếp theo là tái hiện các dự án USB ATtiny trước đây
- stylocard cần ít nhất 22 GPIO nếu muốn cải tiến theo cách đọc trực tiếp, nhưng một CH32V003 không đủ chân để vừa đọc bàn phím vừa xử lý USB
- Tác giả cho rằng cũng có thể dùng hai CH32V003 giá rẻ
- Cấu hình là một con đọc nửa bàn phím, con còn lại xử lý phần bàn phím còn lại và USB
- Ý tưởng tiếp theo là tái hiện smallest USB MIDI synth trước đây cho thời đại USB-C
- Về điện, chuyển sang USB-C chỉ ở mức thêm vài điện trở và đầu nối phù hợp, nhưng không dễ nhét mạch điện tử vào trong phích USB-C
- Cuối cùng, tác giả chọn đầu nối USB-C gắn thẳng đứng dùng để làm dock
- Mã linh kiện là USB4151
- Có nhiều linh kiện tương tự từ nhiều nhà cung cấp
Đầu nối USB-C và định tuyến bo 2 lớp
- Đầu nối USB-C khó fanout, và trông như nhà thiết kế đã giả định dùng bo mật độ cao cùng microvia
- Chỉ riêng footprint của đầu nối được chọn về mặt kỹ thuật đã vượt quá thông số quy trình 6/6 mil tiêu chuẩn, nên đã bị ràng buộc lớn ngay trước khi thêm trace
- Chốt nhựa cần lỗ xuyên không mạ gần các lỗ mạ
- Trong dự án đồ chơi này, tác giả bỏ qua vi phạm DRC thay vì trả thêm chi phí dung sai cao hơn
- Nếu không sản xuất được thì dự định sẽ cắt chốt nhựa bằng dao
- Mục tiêu là làm bo chui dưới phích USB-C nhỏ nhất có thể và nhét vào trong đường kính của còi piezo thông thường
- Pitch chân còi là 7,62 mm, tức 0,3 inch
- Đường kính ngoài là 13,8 mm
- Để đặt vào trong phần lõm của hợp chất potting, đường kính tối đa khoảng 12 mm
- Không có hướng nào để chân piezo không va chạm với chân đỡ USB, nên tác giả nới rộng khoảng cách footprint
- Sau nhiều vòng lặp thiết kế, khoảng cách chân piezo được giảm xuống 8 mm
- Nếu cần, có thể bẻ chân hơi hướng ra ngoài hoặc mài bớt
- Không nối các chân USB 3
- Không dùng 4 cặp SuperSpeed và 2 chân SBU
- CC1, CC2 phải được nối, nên tổng cộng cần nối 14 chân
- Bằng cách giảm tối đa vòng đồng quanh lỗ mạ, tác giả vừa đủ kéo được tất cả track cần thiết ra ngoài
- Vì các chân shield đều được nối với nhau, có thể đi đường vòng là không nối toàn bộ GND trên bo, nhưng cuối cùng GND cũng được route cùng
- Mặt dưới đẩy linh kiện QFN lệch khỏi trung tâm để có đủ không gian cho track
- Các GPIO không dùng có thể nối với GND hoặc tín hiệu khác mà không vấn đề gì, nên có thể cho GND đi qua giữa chip
- Bộ điều áp dùng package SC-70
- Cũng có thể dùng bộ điều áp nhỏ hơn, nhưng không gian không quá căng
- Các điện trở và tụ điện xung quanh dùng cỡ 0603
- Mặt trước có 3 test pad để lập trình nguồn, GND, D1(SWIO)
- Khi lập trình thực tế, chỉ cần cắm USB-C qua cáp nối dài và chạm dây vào một pad D1 là đủ
Dùng panel làm jig lắp ráp
- Bo rất nhỏ khó cố định khi quét solder paste bằng stencil, nên tác giả tự thiết kế panel
- Bo này có linh kiện ở cả hai mặt, nên sau khi hàn một mặt, việc quét stencil cho mặt còn lại đặc biệt khó
- Panel đặt hai thiết kế, trong đó thiết kế thứ hai được lật lại để toàn bộ trở nên đối xứng
- Có thể quét stencil một mặt, lật bo rồi quét stencil mặt kia
- Khung panel cũng được dùng làm jig giữ phích USB-C
- Lỗ bầu dục ở giữa được thiết kế để khớp chặt với phích USB-C
- FR4 chịu được lò reflow, nên phù hợp làm vật liệu đỡ
- Trình xem 3D của KiCad giúp tránh lỗi
- Hoạt động như lớp phòng vệ bổ sung để giảm các lỗi như thiếu soldermask trên footprint hoặc xuất sai layer
- Va chạm giữa chân piezo và footprint cũng có thể kiểm tra ngay trong bản render 3D
Lắp ráp và hàn
- Với bo rất nhỏ, nhà sản xuất đôi khi trợ giá trong điều kiện dung sai thấp và kích thước nhỏ
- Dự án này về danh nghĩa là đưa đầu nối USB 3.2 Gen 2 lên bo 2 lớp dung sai 6/6 mil, nhưng nhà sản xuất không bắt lỗi footprint và quá trình chế tạo cũng diễn ra suôn sẻ
- Trình tự lắp ráp đúng là hàn các linh kiện nhỏ trước rồi gắn đầu nối USB sau cùng
- Vì đầu nối USB là dạng xuyên lỗ, nếu gắn trước thì không thể quét stencil mặt đối diện
- Đầu nối USB có kèm nắp nhựa để có thể gắp bằng đầu hút chân không
- Ban đầu tác giả định reflow nhiều chiếc, nhưng chúng quá nhỏ nên cuối cùng hàn tất cả bằng máy khò nhiệt
- Dù mặt dưới đã có linh kiện được hàn, sức căng bề mặt vẫn có thể giữ linh kiện tại chỗ
- Nếu cần, cũng có thể dùng hai loại hợp kim hàn có điểm nóng chảy khác nhau
- Sau khi hàn, tác giả cẩn thận tách khỏi panel và mài nhẹ các cạnh thô
- Sau khi lắp ráp, tác giả phát hiện tụ điện là linh kiện đơn lẻ cao nhất; có thể dùng tụ nhỏ hơn, nhưng lúc đó đã muộn
- Đúng như dự đoán, chân còi piezo khá khít, nhưng có thể đẩy đủ vào để bo nằm phẳng rồi cắt chân và hàn cẩn thận
- Các còi piezo đặt mua thêm có thiết kế khác cực kỳ nhỏ so với hàng tồn kho cũ
Hoạt động qua hub nhưng thất bại khi cắm trực tiếp laptop
- Đầu nối USB-C gắn thẳng đứng vốn được thiết kế để đặt bên trong dock điện thoại hoặc tablet, nên có chiều dài đủ để nhô ra ngoài vỏ nhựa đúc
- Tác giả cũng nghĩ tới một nắp in 3D nhỏ che mạch và phần dưới đầu nối, nhưng cho rằng ngoại hình sẽ không đẹp
- Cáp nối dài USB-C không được tiêu chuẩn cho phép, nhưng được dùng để cấp nguồn và chạm probe vào chân SWIO để lập trình
- Bốn chiếc synth được flash với tên thiết bị khác nhau để có thể phân biệt trong DAW
- DAW được dùng là Cakewalk bản 1998 chạy trong Wine
- Tác giả mua riêng một hub USB-C 4 cổng để thử nghiệm
- Rất khó tìm hub chỉ có 4 cổng USB-C
- Phần lớn hub là loại chuyển USB-C sang các đầu nối khác như USB-A, HDMI, thẻ SD
- Sản phẩm hoàn thiện hoạt động khi kết nối với hub USB-C và điện thoại
- Khi cắm trực tiếp vào laptop thì không được liệt kê
- Lại được liệt kê ở đầu cáp nối dài USB-C vi phạm chuẩn
- Có khả năng dây của cổng USB-C bị mắc hơi sai, hoặc giá trị điện trở kéo dùng để xác định kiểu kết nối USB chưa chính xác
- Mã nguồn dự án được công khai trên GitHub và git.mitxela.com
1 bình luận
Ý kiến trên Hacker News
Người này kiếm sống bằng những việc như thế này à? Thành quả lúc nào cũng ở trình độ rất cao và độc đáo
Mình cứ có cảm giác như một công ty nào đó đang kìm kẹp anh ta, khiến mình lo không biết anh ta đã ghi đủ việc lên Jira chưa, mỗi tuần có trình ra đủ số sprint point hay không
Thật khó tưởng tượng một cuộc sống mà người ta cứ tự do làm điều mình muốn, vào lúc mình muốn, theo nhịp độ của mình, rồi đổ chừng ấy thời gian, công sức và tài nguyên vào một dự án sở thích
Về tiền thì có thể không phải khoản đầu tư lớn. Vật liệu làm nguyên mẫu chắc khoảng 100–200 đô la, nhưng thời gian thì sao? Mỗi ngày hay mỗi đêm sau giờ làm vài tiếng, trong nhiều năm?
Cùng lắm là vài lần hiếm hoi trong năm phải làm thêm vài tiếng vì tình huống đặc biệt, và chắc chắn có những nhà tuyển dụng tốt hơn
Vào https://mitxela.com/rants rồi kéo xuống mục có tiêu đề Spare Time and Hard Work là thấy
Tôi từng biết một người nhận tài trợ trên Patreon với tư cách nghệ sĩ số từ những ngày đầu; trước đó người đó phát trực tiếp trên Twitch và để nút ủng hộ PayPal trong hồ sơ
Lúc nào nhìn cũng thấy là một nghệ sĩ khá xuất sắc, nhưng tôi đã ngạc nhiên khi thấy chỉ cần vài người bắt đầu đăng ký là các hóa đơn được giải quyết nhanh đến mức nào
Nếu nghĩ theo kiểu một cục tiền lớn thì sống chỉ bằng tiền tiết kiệm trông có vẻ khó, nhưng khi có khoản tiền vào hằng tháng đủ để sinh hoạt, phép tính trở nên thực tế hơn nhiều. Có điều vẫn phải giữ được khán giả
Anh ấy đang hack những món đồ vì thấy vui. Nhiều người khó mà dành thời gian, lập kế hoạch rồi thực hiện đến nơi đến chốn
Tôi cũng thích mấy câu bình luận mỉa mai, và cả cảm giác như đang chạy công cụ phần mềm đời 1998 bằng Wine trên Linux
Tính cả dựng video, thời gian vận chuyển, và những nghiên cứu lặt vặt làm trên điện thoại lúc rảnh
Có thể làm nhanh hơn, nhưng khi đó nó sẽ bắt đầu giống như công việc
Với người đã có sẵn dụng cụ, chi phí có thể gần 50 đô la
Nếu sẵn sàng dùng kem hàn có chì thì có thể rẻ và dễ hơn nữa, nhưng tôi thì tuyệt đối không muốn làm vậy
Cây nến thể tích của anh ấy thật sự đỉnh https://mitxela.com/projects/candle
Nhìn mấy thứ này cắm vào một hub mà mỗi cổng đều dán nhãn 10 Gig khá buồn cười
Ảnh macro phóng to miếng đệm đầu ngón tay sắc nét đến mức có lẽ nên xem video này là một vụ rò rỉ bảo mật vân tay
Có khi còn tệ hơn việc người ta vô tình chia sẻ ảnh lộ chìa khóa nhà
Cảnh thấy rõ vân tay trong ảnh độ phân giải cao khiến người ta hơi khựng lại
Bài ghi lại quá trình chế tạo thì cực kỳ chi tiết, nhưng phần demo âm thanh lại quá ngắn
Về cơ bản có vẻ nó chỉ phát sóng vuông, nên khó coi là synthesizer nếu không có tổng hợp/điều biến/bộ lọc thực sự
Gọi là “chip âm thanh thiệp chúc mừng có gắn USB-MIDI” có lẽ đúng hơn; dù độ phức tạp thấp, cũng khó xếp nó vào PSG
Nó cũng không chỉ có sóng vuông, và vì có tùy chọn bắt đầu và dừng âm thanh nên có thể coi là có envelope
Dù cơ bản đến mức gần như vô dụng[1], có lẽ đó chính là mục tiêu
[1]: Một thiết bị có chức năng tương tự tên là Stylophone từng xuất hiện trong Space Oddity. Chi tiết: https://en.m.wikipedia.org/wiki/Stylophone
Buồn cười thật, nhưng thực ra có vẻ nó không phải synthesizer. Ngoài phát sóng vuông ra thì nó còn làm được gì khác không?
“Có một cái chỉ hoạt động theo một hướng nhất định, đúng là trái ngược hoàn toàn với mục tiêu ban đầu của USB-C nên rất khó chịu”
Nokia 2780 Flip có cổng sạc USB-C, nhưng dù trên hộp ghi là Micro-USB, nó chỉ hoạt động theo một hướng
Để cố định loại đầu nối SMT như vậy đúng vị trí khi reflow hai mặt, tôi khuyên dùng keo chip nhiệt rắn màu đỏ
Một bản demo thật sự đẹp, và gợi nhớ mạnh đến âm thanh thời máy vi tính 8-bit