The past three months have been an absolute sprint for us. The fall academic quarter has begun at Northwestern University, and we were pulling late nights getting ready. But we’ve made a ton of progress, let’s check it out!
To get 300 nScopes here on time for classes, we ordered from a local manufacturer. The upside was that communication was easy and quick, but the downside revealed itself when the order was not made to specification. They arrived in the wrong color, with no silkscreen labels, and worst of all, with two ICs soldered in backwards. We asked them to rework the two ICs, and we printed labels for the boards, and in the end, we got enough done for the students to use this quarter.
On a more positive note, we received our first prototypes from our full-scale manufacturer this past week. And we are super happy with them. Check it out, they’re beautiful.
We just have a few minor manufacturing issues to work with, and very soon, we’ll be placing a large order with them. Once we’ve done that, we’ll have an idea as to when our Kickstarter backers will be receiving them, and when you can buy them online. To stay tuned for that info, be sure to sign up for our updates here.
The firmware has been largely complete for several months, so there wasn’t a lot of core development that needed to be done. But what we did want to do was program a bootloader so we could update firmware after we shipped nScope. This was both a lot more work than we thought it would be, and also a lot of fun (after it was done).
When we compile our firmware, it’s stored as HEX file, an Intel format that was developed for passing around binary data for microcontrollers. We needed to convert that into a binary array of data that can be written directly onto nScope’s MCU program memory. Not only that, we wanted to package it with our API, so once we had this binary data, we needed to export it as a header file to include with our API. With the help of Microchip’s open source bootloader program, we verified and processed the hex file, and output the binary data as a header file. The result looks something like the picture on the right.
After seeing these numbers stream across the screen as they were being processed, it reminded us of the Matrix films, where they can see what’s happening in the “world” by looking at the streams of ASCII text scrolling down the screen. Yeah right, no one can actually parse that. Which left us with the concern, what if we load this data into program memory and it doesn’t work? How would we debug that?
Fortunately, we didn’t have to worry. We coded it up and it worked perfectly. Now instead of having to physically connect each nScope to a programmer, we can load firmware over the USB cable directly from software.
We decided to ditch Java and program nScope in C++ with wxWidgets and OpenGL. We’ve now implemented all four analog inputs, both digital outputs and both analog outputs. At this point, we’re slowly adding some features and squashing some bugs as we begin the software roll-out. So far, we’ve installed it on 250 computers, and, aside from some slight drawing errors on high-resolution Windows screens, have found no major problems. You can follow our progress on development here at our pre-release page.
You can download the software any time you’d like, but it will certainly change as time goes on. Eventually, we’ll build in the option to update automatically from the software, but right now an upgrade means deleting the old software.