I don’t know about you — maybe it's just that I'm a simple-minded man who is easily amused — but I find a lot of satisfaction in moving from a muddled breadboard prototype to a final, custom, neat-and-tidy implementation.
Do you remember when I created my original breadboard implementation of the MSGEQ7-Based DIY Audio Spectrum Analyzer for use in my BADASS Display? This ended up being a bit of a monster, so when it came to the BADASS Display itself, my chum Duane Benson created a special custom audio analyzer Arduino shield for me, and this made my life so much easier.
More recently, I ran into a problem while attempting to add a real-time clock (RTC) to the Cunning Chronograph. As I discussed in my Don’t Let I2C Pullup Resistors Bite You on the Bus! column, I started out with an RTC mounted on an Arduino proto-board, but ended up with yet another breadboard.
All of which brings us to this past weekend when I spent a happy Saturday morning beavering away at the kitchen table. The starting point was the image below:
Closest to the Cunning Chronograph we see an Arduino Mega. On top of this is mounted my audio analyzer shield. The large breadboard at the back holds the RTC, while the smaller breadboard on the near-right-side holds the Simblee breakout board that I'm using to control the Cunning Chronograph via Bluetooth with my iPad (see Controlling IoT devices with mobile platforms ).
Now, in addition to the RTC, I also want to have a temperature/pressure sensor and a 9DOF (nine degrees of freedom) sensor, all I2C-based. The thought of having a separate shield for each of these little ragamuffins wasn't particularly appealing, so I turned to Duane again. Within a few days, a custom sensor shield was winging its way to me. This little scamp holds the RTC and the two sensors, which makes me a very happy camper indeed.
The image below shows this new shield — with only the RTC attached at present — mounted on top of the Arduino-Audio Analyzer stack.
And so we come to the 29-GPIO Simblee breakout board. My initial thought was to simply drop it onto one of the Adafruit proto-shields I have lying around in my treasure chest of bits and pieces, so that's what I did as illustrated below:
To be honest, this actually turned out to be a bit of a pain in the nether regions for several reasons. First, I want to mount strips of 0.1″ pitch male pins next to each side of the Simblee. The problem here is that the proto-shield has a 0.1″ pitch in both the X and Y planes, but this means my header pins end up being a tad too close to my Simblee board, so I have to bend them out a bit, which doesn’t look very professional.
The other problem is that it proved to be surprisingly wearing on the nerves to solder the little wires linking each Simblee pin to its header counterpart. It probably won’t surprise you to discover that it didn’t take long before I emailed Duane asking about the possibility of creating a special Arduino shield for my Simblees as illustrated below:
(Source: Max Maxfield / Embedded.com)
There are several additional elements not shown here for simplicity, like filling the rest of the board with pads and vias for possible extra components, adding 3.3V, 5V, and GND rails, and adding breakouts from the header pins to the nearest pads/vias (just in case).
I didn’t feel too bad about asking Duane to do this because
he'll be doing all of the work he's going to start playing with Simblees himself, so this shield will come in handy for his own projects. In fact, if you look at this the right way, Duane actually owes me one (you're welcome :-).
Duane immediately responded saying: “The Simblee runs on 3.3V. Won’t we need 5V <-> 3.3V level converters on the GPIOs?”
Dang! I'd completely forgotten about this. Currently I'm only using my Simblee to drive signals to my Arduino, so I've set these pins on the Arduino to be of type INPUT_PULLUP. But I'm planning on adding Simblees to all of my projects, so I'm pretty sure that — in the not-so-distant future — I'll be wanting to drive 5V outputs signals from the Arduino into the Simblee.
Now, the Simblee's GIPO 0 can double up as an Analog Reference, while GIPOs 1 through 6 can act as analog inputs (they can also act as digital inputs/outputs and PWM outputs), so we're planning on leaving these “as-is.”
Ideally, we want to add level shifters to all of the remaining 22 GPIOs. Furthermore, although the Simblee side will always be 3.3V, we'll include a jumper that allows us to select between 5V and 3.3V on the external (header) side.
The issue we now have to consider is whether or not we will have enough space on the shield to mount the 29-GPIO Simblee breakout board, the header pins, and the level converters. One alternative might be to forget about the 29-GPIO breakout board and simply mount the 10mm x 7mm Simblee chip (the gray rectangle in the upper-left corner of the breakout board in the image above) directly onto the shield.
This is currently a work in progress (I can continue to use my existing solution for the cunning Chronograph). All I can say is, whatever we decide, I have no doubt that it will be magnificent. Watch this space for ongoing developments…