After seeing this giant mechanical keyboard at Adafruit, I decided I had to build my own. Adafruit made theirs out of wood and used one of their Python-compatible microcontroller boards. I wanted a sloped top on my keyboard. I also wanted to check out what was new with Microchip’s USB device stack. I decided to build my keyboard out of aluminum and use a PIC18 microcontroller.
I will describe here the USB interface between the radio station and the computer which I recently developed and tested. This post is a continuation of the first part, where I described a simple interface for controlling two digital lines using the USB / Serial Converter, where I presented simple interface to control two digital signals (e.g. Ptzt and CW). This time I will describe an interface that combines more functions:
Controlling several digital (switching) inputs and outputs
Interface for controlling the station via the serial interface
Black Mesa Labs is presenting an open-source-hardware USB 3.0 to FPGA PMOD interface design. First off, please lower your expectations. USB 3.0 physical layer is capable of 5 Gbps, or 640 MBytes/Sec. This project can’t provide that to your FPGA over 2 PMOD connectors – not even close. It does substantially improve PC to FPGA bandwidth however, 30x for Writes and 100x for Reads compared to a standard FTDI cable based on the FT232 ( ala RS232 like UART interface at 921,600 baud ). A standard FTDI cable is $20 and the FT600 chip is less than $10, so BML deemed it a project worth pursuing.
Alexander Lang has been working on a USB breakout board, he writes:
I often need to intercept USB signals for decoding and measurement purposes. I cut a cable apart last time I needed one but to be honest I much prefer doing things properly. I also noticed that nobody seems to sell a similar product on Ebay, Aliexpress or Amazon! I did find a vendor in the USA on tindie. I also found this product on tindie which is similar but has a current monitoring circuit built in.
Either of these products would work for my purposes but the first product’s shipping costs from the USA seem a little extravagant and I only wanted one or two.
The second product uses pin headers to allow connection which are a bit close together for my liking. It’s often the way of things. When I cannot obtain what I want I make my own!
In this video Hugatry shared detailed instructions of how to use the STM32F103C8T6 as an USB device with virtual serial port:
Cheap STM32F103C8T6 development board
Blue STM32F103C8T6 development boards, also known as “BluePill”, are cheap way to get started with 32bit ARM microcontrollers. The STM32 development board can sometimes be bought for less than $2 and ST-LinkV2 compatible programmer and debugger doesn’t cost much more than that either.
The STM32F103C8T6 has nice amount of flash and RAM, runs at 72MHz and best of all: It has built-in USB. It is possible to program these STM32 boards to act as an USB devices, without “FTDI chip”. In this post and in the embedded video I will teach step by step how to use the STM32F103C8T6 as an USB device, in particular a virtual serial port.
Designed and built by Simon Inns, a universal USB to quadrature mouse adapter project – SmallyMouse2:
SmallyMouse2 is a universal USB to quadrature mouse adapter for many 8-bit and 16-bit retro computers and allows the use of modern USB mice on machines such as the Acorn BBC Micro, Acorn Master, Acorn Archimedes, Commodore Amiga, Atari ST and many more. Unlike most existing mouse adapters, SmallyMouse2 implements a fully USB compatible interface (most current adaptors are PS/2 based) this allows the use of any modern mouse including those that use wireless communications.
The hype around the NES Classic in 2016 was huge, and as expected, units are already selling for excessively high prices on eBay. The console shipped with 30 games pre-installed, primarily first-party releases from Nintendo. But worry not — there’s now a way to add more games to your NES Classic!
Like many a good hack, this one spawned from a forum community. [madmonkey] posted on GBX.ru about their attempts to load extra games into the console. The first step is using the FEL subroutine of the Allwinner SOC’s boot ROM to dump the unit’s flash memory. From there, it’s a matter of using custom tools to inject extra game ROMs before reburning the modified image to the console. The original tool used, named hakchi, requires a Super Mario savegame placed into a particular slot to work properly, though new versions have already surfaced eliminating this requirement.
While this is only a software modification, it does come with several risks. In addition to bricking your console, virus scanners are reporting the tools as potentially dangerous. There is confusion in the community as to whether these are false positives or not. As with anything you find lurking on a forum, your mileage may vary. But if you just have to beat Battletoads for the umpteenth time, load up a VM for the install process and have at it. This Reddit thread (an expansion from the original pastebin instructions) acts as a good starting point for the brave.
Only months after release, the NES Classic is already a fertile breeding ground for hacks — last year we reported on this controller mod and how to install Linux. Video of this ROM injection hack after the break.
A lot of classic synthesizers rely on analog control voltages to vary parameters; this is a problem for the modern musician who may want to integrate such hardware with a MIDI setup. For just this problem, [little-scale] has built a MIDI-controllable DAC for generating control voltages.
It’s a simple enough build – a Teensy 2 is used to speak USB MIDI to a laptop. This allows the DAC to be used with just about any modern MIDI capable software. The Teensy then controls a Microchip MCP4922 over SPI to generate the requisite control voltages. [little-scale]’s video covers the basic assembly of the hardware on a breadboard, and goes on to demonstrate its use with a performance using the MIDI DAC to control a Moog Mother 32 synth. [little-scale] has also made the code available, making it easy to spin up your own.
We can see this project being indispensable to electronic musicians working with banks of modular synths, making it much easier to tie them in with automation in their DAW of choice. This isn’t the first MIDI interfacing hack we’ve seen either – check out this setup to interface an iPad to guitar pedals.
With more and more manufacturers moving to USB-C, it seems as though the trusty USB port is getting more and more entrenched. Not that that’s a bad thing, either; having a universal standard like this is great for simplicity and interconnectability. However, if you’re still stuck with USB 2.0 ports on your now completely obsolete one-year-old phone, there’s still some hope that you can at least get rapid charging. [hugatry] was able to manipulate Qualcomm’s rapid charging protocol to enable it to work with any device.
The protocol in question is supposed to work only on supported devices. Namely, anything with a Qualcomm Snapdragon or other similar products. [hugatry] had a Qualcomm rapid charging-capable USB port, but no supported devices. What he found out after some investigation, though, was that it’s extremely easy to bitbang the protocol to request essentially any amount of power from the Qualcomm device. He didn’t even need a microcontroller to do the handshaking, only passive components.
It’s a little surprising that getting around a proprietary standard in this day in age is so straightforward (and he does note that while it worked for him, your mileage may vary), but we’re happy to see it nonetheless. [hugatry]’s process is definitely worth checking out, as is his video which you can find after the break.
[Mitxela] wanted to build a different kind of mouse, one that worked like an Etch-a-Sketch toy with one X knob and one Y knob. Armed with some rotary encoders and a microcontroller, that shouldn’t be hard. But when you use a pin-limited ATtiny85, you are going to need some tricks.
The encoders put out a two-bit Gray code and close a button when you depress them. Plus you need some pins for the V-USB stack to handle the USB interface. [Mitxela] decided to convert the encoders to output analog voltages using a simple resistor DAC. That would only require two analog inputs, and another anlaog input could read both switches.
One problem: there still wasn’t quite enough I/O. Of course, with AVRs you can always repurpose the reset pin as an analog pin, but you lose the ability to program the device at low voltage. And naturally, there’s a workaround for this too, allowing you to keep the reset pin and still read its analog value. You just have to make sure that value doesn’t go below about 2.5V so the device stays out of reset. Once that was in place, the rest went easy, as you can see in the video below.
A LASER-cut enclosure and knobs finishes the project off nicely. Honestly, we might have been tempted to just get a bigger CPU, but we have to admit this works. If it were a commercial project, we might be a bit worried about reducing noise immunity on the reset pin, but for a hacker project it works and it is a clever use of pins.
We love crazy ideas about saving pins. Once you have an Etch-a-Sketch mouse on your desk, you might as well build a clock to go with it.