Hackster is hosting Hackster Holidays, Ep. 7: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Friday!Stream Hackster Holidays, Ep. 7 on Friday!

Stefan Wagner's TinyStick Is a Compact Joystick/Mouse with a WCH CH32V003 RISC-V Hidden Inside

With two firmware options — one to act as a joystick, the other as a "mousestick" — this tiny accessory is your flexible friend.

Gareth Halfacree
6 months agoHW101

Maker Stefan Wagner has built another useful gadget around the popular WCH Electronics CH32V003 RISC-V microcontroller: an analog joystick, connecting directly to a host device over USB and in just about the smallest possible footprint.

"The USB Joystick is a versatile device that combines the functionality of an analog joystick with the convenience of a USB interface," Wagner explains of the "TinyStick: CH32V003 Edition" he has designed and built. "It is based on the affordable [WCH Electronics] CH32V003 32-bit RISC-V microcontroller."

WCH Electronics' CH32V003 has proven extremely popular since its launch, for very good reason: despite costing mere cents apiece, they're built around a surprisingly powerful QinKe RISC-V2A core — implementing the RV32EC subset of the free and open source RISC-V instruction set architecture (ISA) — and include a wealth of on-board peripherals.

This chip represents the brains of the joystick. A two-axis analog stick with push-button input, like you'd find on a game controller, is connected to the microcontroller's analog to digital converter (ADC), which then uses its inputs to inform the output of a firmware designed to present the gadget as a USB Human Interface Device — meaning no driver installation is required.

Wagner has has released two different versions of the firmware, too. The standard "joystick" firmware does exactly what you'd expect: presents the device as a USB joystick, using the stick's push input as a fire button. The "mousestick" firmware, by contrast, translates the joystick's movements into mouse inputs — and maps the stick's push input to a left click.

Design files and source code for the TinyStick have been published to GitHub under the reciprocal Creative Commons Attribution-ShareAlike 3.0 Unported license.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles