Close
0%
0%

breadWare

A jumperless breadboard

Public Chat
Similar projects worth following
breadWare is a prototyping tool where jumper connections can be made by sending commands from a computer instead of placing physical wires.

The onboard ATmega4809 can also read and write any analog (±9V) voltage to anywhere on the breadboard.

That means with the right desktop app, you could prototype the circuits with someone else over the internet as if your boards were physically right next to each other. Or save a circuit on your computer and load it up later by just placing the components again. Or a million other things I haven't thought of yet.

You also can connect 5 of the GPIO pins so you basically have an Arduino Nano Every hidden inside a breadboard.

The connections are fully analog (internally a CMOS switch) and can handle ±9V (up to ±12V if you raised the supply voltages), with an on resistance of ~75Ω.

Message me if you'd like to help out with any part to development and I can send you a board to play with.

breadWare v0.2

My reason for doing this whole writeup and putting this out there is to hopefully find some fellow hackers who are equally stoked on breadWare and want to help make it into something where people will wonder how the hell they built anything before it existed (probably not Arduino levels of disruption, but when I need to use a Bus Pirate, I can't even imagine the horrible dystopian hellscape the world would be without it.) At least for me, placing jumpers messes up my flow, because there's always that angel on one shoulder telling me to be methodical: cut my jumpers to the right length, make nice 90° bends, use colors consistently, while the demon on the other shoulder says to just get the damn thing working now and let future me deal with the mess. The demon always wins, so I'd really like the angel to shut up, it's distracting. So offloading that internal debate to a computer seems like a good idea [disclaimer: do not run this on a HAL 9000 computer, I hear cognitive dissonance like this can cause undefined behavior]

bW!_RB67_5_crop

Here’s the second board revision. I was showing off the last version to someone and they offhandedly mentioned that it would be cool if the whole thing fit under the breadboard. I knew this was my plan all along, but it forced me to finally design it before the code gets too specific to the original off-the-cuff design and I get stuck with my poor life design choices.

Matrix Board Changes

2021-06-10-0002-3

MTmatrix

I found that the most valuable resource when finding paths between rows that aren’t directly connected (so they need to make an intermediate hop) are “virtual” breadboard rows that aren’t connected to the actual board but connect to the control board below and basically act as the general purpose nodes to do everything else (like reading voltages, connecting to the GPIO on the microcontroller, connecting to a second board, etc.). I put 4 of them in (on chips A, D, E, H), and I don’t think that’s nearly enough if I want to be able to do a bunch of special function things at once without making the user use some particular set of rows to do certain things. I would really like to make it as simple as “put anything wherever and the board will figure it out.”

I changed the logical arrangement of the MT8816 crosspoint switches to make the it easier to just hop over the middle space. In the original layout if I wanted to connect top row 5 to bottom row 5, it would always take 2 hops to do that (and these switches each have an on resistance of about 65Ω). Now the bottom rows are flipped so internally the bottom left is 62 and counts down to 33 on the right (note: these are abstracted away to the user by using b1-b30 instead of bigger numbers.)

And just to add some glam I added some reverse mounted LEDs that shine through the top and bottom power rails to show when that rail’s power supply is on.

Control Board Changes

2021-06-10-0001-3

breadControl

I almost entirely redesigned the controller board so it has a ton of whatever the hardware equivalent of syntactic sugar is. The original was kind of thrown together to make sure the concept of using crosspoint switches like that wasn’t fundamentally stupid (still not entirely ruling that out, but so far it looks promising.) I also just realized I never did a writeup for the first iteration, and I’m not about to go back and do that just to prove that this board is an improvement.

Power Stuff

Because I’m going to such great lengths to make everything analog, and I already need a negative supply for the crosspoint switches; I decided to make the adjustable power supply for the rails also be able to do negative voltages. The power stuff still needs some work, right now it gets pretty warm when it’s running and it really doesn’t like it when I remove the matrix board with it on. Presumably because it needs some current draw but I’m not exactly sure why it cares as much as it does (I burned a tantalum cap shaped brand into my finger, you could...

Read more »

JPEG Image - 1.20 MB - 06/16/2021 at 12:27

Preview
Download

Portable Network Graphics (PNG) - 4.39 MB - 06/16/2021 at 12:26

Preview
Download

Portable Network Graphics (PNG) - 125.42 kB - 06/16/2021 at 12:26

Preview
Download

breadWare Code.zip

This is the whole project folder from PlatformIO in VS Code

Zip Archive - 1.51 MB - 06/16/2021 at 11:10

Download

Zip Archive - 5.84 MB - 06/16/2021 at 11:10

Download

View all 10 files

  • 1 × ATmega4809 0-Series AVR
  • 9 × MT8816 8x16 Analog Crosspoint Switch
  • 1 × LT1054 Charge Pump Inverter/Regulator
  • 1 × MCP2221A USB to UART
  • 2 × L272D Power Dual Op Amp

View all 7 components

  • Why not an FPGA?

    Kevin Santo Cappuccio06/22/2021 at 02:30 0 comments

    I've received this question a lot, so instead of answering it in random comment threads I'll just do it here. I'm referring to research I did a year ago and didn't bother to look anything up for this to get any hard numbers. Take the things I say here with a grain of salt, because to be honest I'm not particularly learned in the ways of the FPGA. But I did learn enough to know that I don't need to learn any more about them for this project (one day I will have a project that actually needs one and isn't just crammed in for no reason, and I'm looking forward to it)

    I considered something like this early on, but it turns out FPGAs won't work well for this particular use case. But on a super high level, breadWare is sort of an FPAA (Field Programmable Analog Array) built out of a bunch of discrete chips to make it work the way I had originally imagined they would. 

    Here are some fun facts about FPGAs (that weren't so fun when I learned them because it meant the design was going to be waayy more complicated):

    -Although we think of them as routing signals through a bunch of logic gates, how they actually work is by sending the signals through LookUp Tables, so it basically simulates a logic gate by just reading places in memory that you've programmed with a bitstream. The LUTs are connected by a crossbar switch internally, but they know exactly how it's going to be used so they can simplify out a lot of the things that would make it "general-purpose." From what I understand, the input signals always go through a large set of LUTs (which is fine in a purely digital world, because they can just map 1 to 1 and 0 to 0 ) before they can go through the crossbar switch. So it's more like a Star Trek teleporter where it just scans and reassembles you on the other side.

    -Nowadays it's really rare to find FPGAs with inputs that are even 5V tolerant, most are only like 2.8V tolerant, so you'd either need to be super careful with the connections or have 60 separate level shifters.

    -You need analog signals to make even the simplest of digital circuits work, for example a 555 timer needs to read the voltage on a capacitor to generate a clock signal.

    -I got really excited when I heard about FPAAs, but turns out they're basically unobtanium for less than $100 per chip, and they're usually only a few analog blocks thrown into a regular FPGA. Apparently JPL made a chip in-house for spacecraft, but I can't imagine a regular person could buy one.

    So now I have a microcontroller and a digital potentiometer do those extra things, and the ATmega4809 I'm using does have a built-in hardware logic gate they call a "Configurable Custom Logic" cell, as well as a ton of other fun things to mess around with.

    But yeah, an FPGA version could probably do some awesome things that this one can't.

  • Dual Matrix Test

    Kevin Santo Cappuccio06/16/2021 at 12:18 0 comments

    After seeing that a single MT8816 would work, I wanted to make sure you could route a connection through 2 of them and still have a reasonably good connection. Because using a single 32x32 crosspoint wasn't gonna happen, I think they actually might exist (it's been a while since I looked into it), but they're in the few hundred dollar range per chip, and they're generally for HDMI switching so they don't really have the qualities you'd want in a general purpose analog switch. 

    I also wanted to make it not take up the whole breadboard so I could actually test it on real things. 

    Disclaimer: what I wrote above is a lie, the real reason I made this is because I had just discovered the joys of wire-wrap wire and I needed an excuse to use it. 

    Here's the code

    What follows is basically a slideshow of me building this thing.


    This is the pinout for the rows of wires going to the Arduino Nano Every

    Control Lines (top to bottom)  (left side of board)

    CS A

    DAT A

    STB A

    RST AB

    CS B

    DAT B

    STB B

    Vdd +

    Vss GND

    Vee -

    Address Lines (left to right) (bottom of board)

    Y0 A

    Y1 A

    Y2 A

    X0 A

    X1 A

    X2 A

    X3 A

    Y0 B

    Y1 B

    Y2 B

    X0 B

    X1 B

    X2 B

    X3 B

  • Early Proofs of Concept

    Kevin Santo Cappuccio06/16/2021 at 11:40 0 comments

    Here are some photos and videos of early proofs of concept to make sure you could actually use a crosspoint switch to make a reasonable stand-in for a physical jumper. I was expecting this not to work, but surprisingly, it did. 

    Here's the 555 test setup. I'm using a DIP version of the MT8816 which was really handy for this early testing stuff. 

    and here it is working  here's the code for this

    What I'm doing here is using the crosspoint switch to change the resistors and capacitors in the 555 circuit to change the frequency.

    That other 8 pin chip on the left is a charge pump to make the -9v power rail.

    Then I realized I should probably do something more intuitive for the students so I set this up with LEDs 

View all 3 project logs

  • 1
    How I soldered a PCB onto a breadboard

    So I've been asked how I attached the breadboard to the PCB, the answer is that it was a pain in the ass.

    So in v0.1, I had those rows of plated through holes along the middle where I started by adding a blob of solder on each of those metal clips, then putting a fine tip on my soldering iron and sticking it through the hole from the other side to melt it and letting surface tension grab the PTH and bridge them together. It was a total hack that took forever and wasn't super reliable.

    On v0.2, I made those middle rows closer together to roughly line up with the inner edges of those metal clips. I tried a few different things, drilling a hole in each one and sticking a wire through (I used that for the power rails), using 90° header pins to grab them from the side but the one that ended up working the best was pulling the metal clips out of the plastic breadboard and cutting a tiny tab into the inner side of each clip, bending them 90° and using that as a pin to solder into the holes. The pins only go like halfway through so from the back they just look like flat pads of solder, but it seems to be enough. In the pictures I've only done one side.

    I should have taken more pictures of this process but getting those tabs to all line up perfectly straight and all fit at the same time was pretty finicky, and I never think to take photos when I really have to concentrate. It's weird because that means the easy parts are the best documented, and the parts people might have trouble following have almost none (you can see that effect in my code too, the function findPath() is ridiculously complicated and has 0 comments, sorry everyone)

View all instructions

Enjoy this project?

Share

Discussions

Electromaker wrote 07/01/2021 at 09:39 point

This is a wonderful project and I really hope you get others on board to help you take this further. We put the call-out on our weekly Youtube show: https://youtu.be/A1BKuY2xBsU?t=23

  Are you sure? yes | no

Kevin Santo Cappuccio wrote 07/01/2021 at 11:30 point

Awesome, thanks! Your show is great, even when you're not talking about my stuff. 

  Are you sure? yes | no

Vitaly Domnikov wrote 06/24/2021 at 16:28 point

Super awesome project!  🚀
I did something similar, but a lot simpler that you did: https://hackaday.io/project/170373-fpgb

  Are you sure? yes | no

Alwyn Allan wrote 06/24/2021 at 07:44 point

Awesome concept and execution. It reminds me of the Cypress PSoC concept, which is still mind-blowing 20+ years after it was introduced. You use their PC-only GUI to sketch your analog + digital + software with a nice selection of on-chip OpAmps, DACs, ADCs, filters, and anything you care to connect to IO pins, and it routes it through CMOS switches to make it all work. Same on the digital side, and it gets implemented as logic with low-nanosecond latencies, not a software simulation. The CY8CKIT-059 is a good entry point for $15. No negative rails, but you're better off designing that way these days. 

  Are you sure? yes | no

John Loeffler wrote 06/23/2021 at 02:37 point

Love the project.  I have heard of allot of people wanting to make something like this but you are the first one to do it. 

  Are you sure? yes | no

Kevin Santo Cappuccio wrote 06/23/2021 at 03:11 point

Thanks man. Yeah it was super helpful to have hundreds of pages of forum posts for abandoned projects to get help get past some of those early gotchas. Weirdly enough, most of the useful ones revolved around routing guitar effects pedals. Maybe when this project is a bit more mature I'll send them some boards to thank them for being unwitting collaborators.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates