Maker.io main logo

Jumperless

2023-08-21 | By Architeuthis Flux

License: Apache License, Version 2.0 Breadboards WS2812/SK6812 (NeoPixel) Arduino RP2040

Here's another video of me using the Jumperless to figure out the pinout of an LED matrix. I'm actually not faking it in this video, I couldn't find a data

Using a bunch of analog crosspoint switches wired together into one bigger switch, Jumperless makes real, fully analog hardware connections between any points on the board or the Arduino Nano header at the top via serial, instead of needing to use jumper wires.

Jumperless

Jumperless also has a ton of voltage/current sensing so the RGB LEDs underneath each row can show a ton of information about what's going on with your circuit. It has 2 buffered DACs (0-5V and ±8V), 4 buffered 12-bit ADCs (3 are 0-5V and 1 for ±8V), 2 INA219 current/voltage sensor ICs, and 5 GPIO that can be routed to anywhere on the breadboard or the Nano header.

Use it to probe the pins on an unknown IC, or for some automated fuzzing, or to read/write EEPROM chips, or to help guide you through converting a schematic to a real circuit or do whatever you want with it.

Here I am prototyping the Bolex Time Lapse Thing

 

You can watch the whole build here.

The connections are real and fully analog (-8V to +8V, up to around 1 MHz before signal quality starts to degrade) instead of cheating with some measure-then-simulate setup, although you can do that too if you want to simulate a memristor or to send jumpers over the internet.

 

 

 the back

Controlling the thing

Currently, the best way to make connections is using Wokwi while running the Jumperless Wokwi Bridge app on your computer. It's a Python script and command line interface that automatically pulls any changes you make to your Wokwi project and sends them to the Jumperless.

Here's a video of me connecting an OLED display to an Arduino

 

It also passes through all the serial communications to and from the Jumperless so you can use the text-based menus to do things like running the wave generators, measuring current/voltage, and looking debug output on the Jumperless directly at the same time.

Pretty soon there will be an Arduino Library where you can make connections and measure stuff with an API that will look something like jumperless.connect(row1, row2); or jumperless.measureVoltage(row); that can either be run on the Arduino Nano (sending commands via UART to the RP2040) or the Jumperless itself.

Hopefully this will allow people to write cool stuff for the Jumperless to do that I haven't even thought of and wouldn't be possible on a regular breadboard.

Also there will be a Python Module that does the same stuff as above, which can either be run in an onboard MicroPython interpreter or on a computer.

Here's another video of me using the Jumperless to figure out the pinout of an LED matrix. I'm actually not faking it in this video, I couldn't find a datasheet.

 

Firmware and stuff

The Jumperless is controlled by an RP2040 and can be programmed exactly like a Raspberry Pi Pico. I spend every waking second of my life working on the firmware so there will be frequent updates. There are prebuilt UF2 files on Github under Releases, so whenever there's an update, just hold the USB BOOT button while plugging it into your computer (with the included pink glittery USB Mini cable,) then drag that UF2 file into the drive that pops up and you're good to go.

The whole thing is open source so you can also edit/fix the firmware however you like (and please submit a pull request on Github to share your fixes)

There's a super long explainer that walks through what the firmware is doing on Hackaday

Or you can go to GitHub and read all the code and stuff yourself.

 
DACs and Revisions

Currently, the ones available are Revision 2, the only major difference between Rev 2 and the soon-to-be-available Rev 3 are the Digital Analog Converters. If you're an audio person that might want to use this thing as a eurorack module or something involving generating audio, I recommend you wait for Rev 3 to be available in a couple weeks. Here's why:

Revision 2 uses 2 MCP4728 12-bit I2C DACs, which work great for setting voltages to be used as an adjustable power supply, but I2C isn't fast enough to send clean waveforms above ~100Hz.

The DAC
This is the DAC (on Rev 3) and current sensor circuits

Revision 3 now uses a single MCP4822 2 channel SPI DAC, which is fast enough to make waveforms well above 20KHz. So, you could feasibly use the onboard DAC as a Max8 or plugData output, and route the audio output to the breadboard and mess with it in hardware and even send it back in as an input. The software to do that hasn't been written yet but with the upcoming Python Module and Arduino API, it shouldn't be too difficult pull off.

Both of these revisions have their DACs buffered through an LM272D High Power (1A) op amp. Obviously 1 amp would blow this thing up, the power supplies couldn't handle it, and it would go way over the current limit for the crosspoint switches. But the outputs of the buffered analog voltages are broken out to pads in the top corner, so you could drive a smallish speaker directly form that if you wanted to.

The +-8V DAC output is hardwired to one of the 2 INA219 current/voltage sensors so you can always see how much current is being drawn. The other INA219 is routable anywhere on the breadboard.

If you blow something up on this board for whatever reason, just let me know. I'd be happy to repair it for you for free or walk you through the repair and send you the parts.

waveform

For synth/music people

I'll add some relevant info for the more synth/music related stuff here.

First of all, a lot of the earliest, in-depth discussion about trying to make something like this came from a ~200-page thread on some synth forum that eventually fizzled out (I'll try to find the link.) So, I have the synth community to thank for some of the early groundwork on this.

What's especially relevant for you guys are the DACs and ADCs. Revision 3 has an MCP4822 12-bit DAC where one output is level shifted with a beefy power op amp to +-8V and the other to 0-5V. I switched to that from 2 MCP4728s (they're I2C, so you can only get like 100Hz cleanly) so it can output frequencies well above audio range, up to ~400Khz.

The ADCs are the built in (12-bit, 500ksps) ones from an RP2040, double buffered and level shifted to the 0-3.3V the RP2040 can handle. One of them is shifted to read +-8V, the other 3 are 0-5V.

One way I envision this could be used for synth stuff, is setting the Jumperless as an output and an input from max8 or puredata, so you can do some stuff there, send it to the breadboard, mess with the signal in meatspace, and then send it back to the computer. Basically, making this thing a filter (or whatever it's called, I'm not a musician) that just happens to be a physical breadboard.

Or another way to use this would be to sequence modular synth connections or guitar pedals with a control signal or something. Like having patch cables that can be swapped around really fast (it takes ~30 microseconds to make/break connections) and do it programmatically. The connections can handle +-8.5V and seem to be good up to 1MHz, so it should handle most signal levels (please let me know if that's wrong.)

the buffersThese shift the 5V or +-8V down to 0-3.3V so it doesn't fry the RP2040's ADCs. Note the 2nd op amp is only powered with +5V to make absolutely sure.

If you want to play around with those buffers in Falstad Circuit Sim, click here.

Power supplies

The switch on the upper left controls the rail voltages, if you look at the side of the building in the logo, you'll see the settings; +-8V, 5V, and 3.3V. If you set it to +-8V, the top positive rail will be ~+8V and the bottom positive rail will be ~-8V. Otherwise, they will both be the same, either 5V or 3.3V. The negative rails are permanently tied to Ground.

the power supplyThe crosspoints are supplied with the full +-9V, everything else is dropped though a diode to give them some headroom for switching
 
leds

Just for fun, here's a crazy sped-up video of me routing this Temper your expectations

Although Jumperless is made with love, it's not a precision instrument, the connections it makes go through CH446Q crosspoint switches and do have some resistance, about 75 Ohms total for a connection and resistance is matched to within 5 ohms for every connection. It sounds like a lot, but in practice it doesn't seem to have a noticeable effect on most circuits that one would build on a breadboard. It also sort of acts like a current limit to keep you from accidentally frying stuff.

If you want to get the resistance lower, you can make redundant connections to halve it each time (running that 75 Ohms in parallel with another 75 Ohms.)

Also, temperature apparently has an effect on Ron, the colder it gets the lower the resistance. So if you care, turn the LED brightness down (they generate a good deal of heat) or put the whole thing in a tray of liquid nitrogen.

Worst case, it's still a breadboard and although it's called Jumperless, that's not a rule. You can run jumpers the old-fashioned way.

There's also a maximum rated current for the crosspoint switches, it says 15mA per connection and 100mA per chip. I have run 200mA through a single connection for a few minutes without issues, but of course be aware of that.

I'm giving you permission to take the Absolute Maximum Ratings for the CH446Q with a grain of salt. If you fry one, I'll repair it for free. The chips are super easy to swap out with a hot air gun. If you think you're going to fry these chips regularly (it's actually surprisingly hard to do), and have access to a hot air station, let me know when you place the order and I'll throw in a few extra CH446Qs in the box so you can replace them yourself.

both sides

For firmware, occasionally there are some arrangements of connections that the pathfinding code trips up on and can't find a path for. If that happens to you, please screenshot the connections and send it to me or open a Github issue. I can usually fix those issues within a day, but the hard part is finding those arrangements that cause issues.

One day when I decide to make my own custom silicon for this, it can be made with beefy power MOSFETs to get it close to a perfect connection. But for now, I have to work with ICs that already exist.

Just for fun, here's a crazy sped-up video of me routing this board:
 

 

 
You mean an FPGA?

No, not at all, shut up. I could go on forever about the differences, but the main thing is that FPGAs are really sensitive to input voltages and really only do digital signals. Also, FPGAs don't actually route signals, internally they're a grid of lookup tables that do logic operations. So, a signal coming in isn't really "sent through" so much as it's copied with a logical NOTNOT (unchanged) gate, that's great for combinatorial logic, but not for analog stuff.

Also quickly throwing together a breadboard circuit in an HDL would take ungodly skills.

the box 

And yeah, it's all open source. Or you can buy one from me on Tindie.

oshw

licenses

TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum