Joey Castillo is one of those makers that not only seems to have a myriad projects continuously on the go, but also seems to actually make significant progress on them, rather than getting overwhelmed from juggling them in the air — something I've been known to end up doing...
Keeping in following with Castillo's focus on projects that monitor health metrics, his latest work tracks that theme perfectly, but also scales down the size of the hardware to something intended to fit within the form factor of a ring!
His latest project may well have been inspired by the Oura Ring, but as with nearly every project that graces our pages, the goal here isn't to simply buy something off the shelf — oh no! We're all far more interested in the DIY approach, because it's frankly a hell of a lot more fun!
The Oura was a new bit of kit for my list of cool tech. Despite owning a range of smartwatches and activity trackers, the Oura somehow slipped under my radar, and frankly, despite a user fixability / hackability score of probably -1/10, it's a very slick looking bit of tech, and a feat of miniaturization.
This is a pretty ambitious form factor to take on, from a hobbyist perspective, but darn it if Castillo hasn't gone and taken a very impressive attempt at meeting those dimensions — even if coming in a touch over. 😉
It's sometimes hard to get a feel for the scale of a PCB from a photo image, and for those of us who don't keep American pocket change to hand, a quarter dollar doesn't help much either!
Let's start by pointing out that the passives used in the assembly of the Sensor Ring are 0603, but look positively huge in the shot below... well, perhaps we can start to get a feel for the size of this board.
Even if we lay out the dimensions of the board as shown below, it's still kind of hard to wrap your head around the actual size of this board. Yeah, it's not on the 01005 scale that we're seeing Greg Davill heading ever towards, but it's still a very respectable feat of miniaturization that we are seeing from Castillo with this project!
With a footprint of 116mm^2, the MCU alone occupies 1/4 of the front face of the board, with a suite of external peripherals occupying the remaining 3/4. So, what's taking up the rest of the space?
As always, Castillo figures out how to cram in a wealth of information to his documentation.
Even when he reckons it's just been thrown together, his documentation sits at a level that is far above what most of us get written down.
Despite a wealth of information already in that one photo, we're here to dig deeper, so let's break it down block by block and see how this ring runs circles around the competition.
At its heart, the Sensor Ring is based around the ever popular SAM D21 from Microchip. The same processor that graces the Adafruit Metro range of boards, and sits at the heart of many an Arduino or SparkFun boards, this is a versatile choice for a project that needs to pack communication peripherals, and processing power, into a tiny footprint.
This 32-pin processor has the ability to instantiate pretty much any flavor of serial bus on its SERCOM peripheral pins, meaning you can flip around, assigning SPI or I2C as your needs see fit.
When paired with the on-die native USB transceiver, well, a whole world of compact, communication rich devices is unlocked for the designer!
Beyond the jellybean support resistor / capacitor components present on the front face of the board, there are only two more components we need to cover on the main PCB of the ring.
Done in a flash...
With such a focus on data, and the logging of said data, most of Castillo's projects include some form of data storage. Here, he's managed to again cram that in, with a whopping 2MB of SPI flash storage, wrapped up in a USON-8 package.
Beyond sensor logging, this external flash also gives the system enough memory to handle the larger footprint that comes with using the CircuitPython environment. But, with 2MB on board, the Sensor Ring has enough space to take on even the largest CircuitPython script, and whatever libraries you choose to pull in for your sensor boards, connected on that external daughter board interface....
Castillo notes a slight glitch with the flash implementation shown above, however...
Unfortunately, that's small scale of the board means that this isn't exactly a small fix to implement, with the flash package not really having any exposed pins to wire to.
Hopefully Castillo will find the right balance of caffeine before attempting that mod!
Pico-sized power supply packaging...
Though the system uses a 3.3V supply, and a lithium polymer battery that has a nominal voltage of 3.6V, it's not quite a match made in heaven.
With the full range of a lithium polymer cell running from 4.2V (charged), all the way down to 3.1 - 3.2V (discharge) before the cell under voltage protection kicks in, that's anywhere from a little to a quite a way outside the comfort zone of the SAM D21.
So, to get that pokey polymer cell voltage range constrained to something a bit more user friendly, an LDO gets squeezed into the schematic. And, while the schematic drawing of the Microchip MIC5380 isn't hugely much to write home about, the footprint it something else!
Check out the caption on that package drawing below. Yup, that's right, 1mm x 1mm. This sort of sized package, is, IMO, about the limit for where hobbyist capability cuts off when it comes to SMD assembly
Yet, if your hands are steady enough, this sized part offers quite a reasonable trade off between size and current capability — the ability to pass 150mA per channel — for a total of 300mA for such a small part is actually quite impressive!
You might wonder why Castillo has picked a dual LDO, especially with two 3.3V outputs... It's actually a sneaky way to control power gating to the daughter board peripheral header that we briefly alluded to earlier, and will discuss in detail next!
Well, by itself? Not a huge amount — aside from possibly taking the title of the world's smallest CircuitPython-compatible development board!
The beauty of the project is that it provides a solid interface over which to add any functionality you see fit, via a range of flexible printed circuit daughter boards.
The clever connection system used on the external interface follows the same pinout that Castillo uses for his Sensor Cap project, which in turn, was very much inspired by a clever pin assignment that @philburgess created for the Adafruit MonsterM4SK
Seen spanning the bridge between the two halves of the MonsterM4sk PCB above, the pinout of this connector system is wired to the SAM D21 in such a way to make the most of that reconfigurable SERCOM I/O we touched on, towards the start of this article.
With the ability to speak SPI, I2C, digital GPIO and analog, all over the single, 9-pin connector, your imagination is the limit when it comes to designing daughterboards for this system.
More SPI flash? Sure! Analog accelerometers? Absolutely, why not! DotStar chains? Damn straight. You can add whatever you want with this system, and with SPI and I2C, you can even look at daisy-chaining, as with the QWIIC and STEMMA QT connection systems.
With a few examples already laid out, we can just see the tip of the iceberg, for what's possible with this hardware system.
Dazzling digital DotStars...
Everyone loves a bit of blinky, and I'd actually love this as a feedback system for a device with such a form factor.
Perhaps this is also the first time that the truly tiny scale of the Sensor Ring becomes apparent. Keep in mind a DotStar micro — four of which can be seen on this daughter board is also known as the APA102-2020/EC20 — the 2020 or EC20 denoting the package size of 2mm^2!
I said earlier on that this project is potentially the worlds smallest CircuitPython-compatible board, and seeing it wrapped around Castillo's finger below only makes me more certain of that claim!
Charging ahead with miniaturization...
So those of you who have been paying close attention to the class material might have notice what seems like an oversight in the power supply with this project.
Yup, we talked about that tiny LDO, that takes care of regulating the system voltage for the Sensor Ring PCB, but if you're left wondering where the charger is for this system, don't worry, you've not missed it...
In a similar idea to the daughter board concept, functions such as battery charging, and indeed, the USB connector, have been moved off-board, to their own "daughter board."
This makes a lot of sense. Even a Micro USB connector is pretty chunky when compared to the Sensor Ring PCB itself, and the charger IC will only ever be used when the ring itself is not in use, so why not move these non-core components off-board?
With this board, Castillo has implemented a rudimentary charging dock of sorts, which is going to be a lot more robust that manually pulling a cell in and out of circuit to be charged externally.
Not to mention, it looks very slick when packaged up in the associated 3D-printed chassis. There are a number of design hints to take from this build — the assembly looks very well thought out.
Despite the PoC jumper leads used above, the design lends itself very well to pogo pins, which would be a wonderful connection system for such a portable device, and also saving the footprint of yet another connector on the ring PCB itself.
Knowing Castillo and his never-ending quest to strive for project perfection, we'll hopefully see a few more PCB revisions, as he undoubtedly manages to cram ever more into this circular circuit creation.
That being said, perhaps there is a fine line between ultra portable and hand solder-able. He muses that there isn't much more to be done in the maker-friendly scale of things, but longs to revisit this design with the WLCSP packaged SAM D21.
We can see this version of the MCU sat below, with the entire part sitting well within the ground pad of the QFN D21 alone. That's tiny!
With that part available with a whopping on-die 256kB of flash, that's enough storage to potentially drop the SPI flash needed for CircuitPython operation, while using the current processor. Sensor earrings, anyone?
As always, Castillo has pushed his project work up to GitHub, where the EAGLE files for the Sensor Ring, and charging cradle, are freely available for your forking pleasure — as part of the Sensor Cap project.
And, as we always suggest, for more "real-time" updates on these great projects, make sure to follow Castillo on Twitter!