Firmware Development Roadmap

Okay, so I want to put up the order in which I’m working on things so I can get some feedback about which features are most important to you and what this order should be.

This order is pretty loose because my working style is way too ADHD to follow a list like this. I usually just get really excited about adding some particular functionality and then not leave my house until it’s done.

Your input here could help tip the scales about which feature I hyperfocus on next.

So here’s the tentative order that’s subject to change based on the results of this poll:

  1. Flashing the Arduino from the Jumperless (low level stuff) {done!!!}

    • You’ll still need to go to “Download Compiled Firmware” in Wokwi and drag that file into your Terminal window. But then the Jumperless will reset the Arduino and load whatever code you’re simulating in Wokwi.
  2. TUI interface for voltage and current sensing {done, in a rudimentary way}

    • Because the desktop app will probably take a while, until then, I should make an interface to show voltages and currents in the existing bridge app. In the code, it’s hella easy, just calls to analogRead() for the 4 ADCs and INA0.getCurrent() for the current sensors. (In Wokwi, ADC0-3 are Logic Analyser channels 0-3. I don’t remember what I set the current sensors as but it’s written in some guide somewhere.)
  3. Board scanning and probing

    • This will quickly go through the whole breadboard and connect each row to an ADC or something, read it, and then disconnect that row and move onto the next one. Then you multiplex the whole board and act as if it was reading every row at the same-ish time.

    • This would be the first step toward autodetecting components placed on the breadboard. And you could attach a probe to the GPIOs and make connections by poking 2 rows without a computer. Among other things.

  4. Queuing projects and swapping between them with a single command

    • If your using this for modular synth stuff, you could have a bunch of Wokwi projects open and cycle through them to get functionality kinda similar to this thing. Erica Synths - Desktop Matrix Mixer
  5. Automatically pulling and compiling the firmware from your Wokwi project.

    • This is harder than it sounds, but once it works, it’ll be hella slick. So you’ll be able to write your code in Wokwi and it’ll be flashed to the Arduino anytime you hit Save. The hard part with this it that it needs library management, so it has to find and download all the libraries you used in the code before it can be compiled with Arduino-CLI.
  6. Standalone desktop app

    • This honestly should be first but it’s really hard to pull off for someone with my skillset and biases. I barely ever trust Arduino libraries because I feel like I need to know exactly how things are implemented to use them, so I usually just use them as a reference to write my own library that just does what I need it to. And GUI frameworks are like 100 levels of abstraction above that, so every time I try one, I find that it’s a complete mess and look for something else. If anyone wants to start just the bare bones of one in a framework of their choosing, I will totally finish it just because I’d be committed to using that particular framework.

I’ve noticed that these are basically in order of easiest to hardest, which is probably good because I tend to fix things as I work on unrelated features. Anyway, here’s the poll. You may vote on as many as you want.

  • Flashing the Arduino with 1 USB cable
  • TUI for voltage and current sensing
  • Board scanning and probing
  • Queuing multiple Wokwi projects
  • Pulling and compiling Wokwi sketches on save
  • Standalone desktop app
0 voters

Ask and you shall receive… There were 2 votes for the TUI for voltage and current sensing so the latest release does that.

Throw in a Logic Analyzer to your Wokwi project and connect D0 - D3 to where ever to you want to measure. Then if you type ‘v’ in the main menu it will toggle a line that will update every 1/4 second with whatever voltage it sees on them.

With the slightly updated bridge app, connect D4 and D5 on the Logic Analyzer to measure the current flowing between them (they’ll act as a short because we’re measuring current).

Let me know if there’s anything you’d like to see added to this. I intend to polish it up over time so any input about how it functions would be helpful.

1 Like

I’m still in complete disbelief that I was able to make this happen. Dealing with USB stuff is always a rabbit hole of nonsense, but alas, Jumperless can now save you $2 on one of those little FTDI USB-Serial boards.
150 or so more updates and this thing will pay for itself!

Anyway, now it shows up as 2 USB CDC devices, the lower numbered port is the Jumperless itself, the higher numbered one is a USB-UART bridge that you can route anywhere on the board. Here’s a guide for the logic analyzer part in Wokwi now:

You’ll need to short the protection resistors I put on there to get this to work with 5V parts. Here’s where they are:

Now you can just choose the higher numbered port in Arduino IDE and it can flash code to the arduino with only 1 USB cable plugged into the Jumperless. When it gets the first byte from avrdude (0x30), it knows you’re trying to use it this way and it’ll pulse the Nano’s reset line low before passing along whatever it sees on that USB port.

Or you can use it to talk to anything on the breadboard that uses UART, just connect to “Jumperless (Port 2)” in your favorite terminal emulator (I personally use Serial 2 on MacOS, but anything will work.)

Let me know how the new update works for you.

1 Like