Working on the JeeNode Zero Dec 2016
The JeeNode v6 was created several years ago, to combine the convenience of the then-still-upcoming Arduino IDE with low-power wireless communictation:
It all worked – and still works – really well, with over half a dozen nodes running at JeeLabs, sending out a bunch of sensor readings every minute or so. Due to their ultra low-power sleep mode, these nodes tend to run unattended for one to two years on 3 AA batteries.
But the 8-bit AVR µC family is getting a bit long in the tooth, with so many interesting new developments in hardware and microcontroller architecture, in particular the enormous variety of ARM Cortex chips out there. More precise and faster ADCs, DMA, more accurate PWM, a much more sophisticated 32-bit programming model, all that with considerably more vendor and packaging choices, and yet able to sleep at even lower current consumption levels - what is there not to like about all this?
The search for a new member of the JeeNode family started quite some time ago, with a never-released “JeeNode Pico” based on the LPC824 from NXP. Unfortunately, the number of variants for this chip family (e.g. memory size and packaging) was never very large.
All the experiments with the LPC824 (and the 8-DIP LPC810) did show that there are indeed lots of interesting features in the ARM chip family, waiting to be exposed and unleashed.
Enter the STM32, the 32-bit ARM series from STMicroelectronics which has been around for several years, with new chip releases at a breathtaking pace. While most of the more advanced chips are only available in 64-, 100-, or even 144-pin packages, there is also an active line of smaller chips in 20- and 32-pin versions. For these, the STM32L series is particularly interesting from a low-power standpoint, with its “stop” and “standby” mode power consumption in the single microamp range, sometimes even lower.
And so the idea was born to try and design a new entry for the JeeNode family, which would again combine a µC with a low-end radio, i.e. the RFM69 successor of the RFM12.
Since there are no DIP versions of the STM32’s, the size can be made considerably smaller than the ATmega-based JeeNode v6. It all ended up being a unit of about 20x40 mm, with all the components on one side, and a large “main header” to support solderless breadboards:
The connector on the left is an FTDI connector, which is all that’s needed for development: power, code uploads / re-flashing, and a serial port to communicate with during actual use.
The connector at the top left is a small “aux header” with some less-used connections to the µC and the radio. These will not generally be needed in most projects.
The main header at the bottom has been organised for maximum ease of use: all
the I/O pins are labeled the same as the names on the µC itself (none of that
A0..A5 nonsense of the Arduino), and they are also all
numerically sorted to make it easier to remember what goes where. The PB6 and
PB7 pins are labeled SCL and SDA, respectively, since they’ll mostly be used as
I2C bus anyway.
As in the original JeeNode, the logic levels for this board are 3.3V, which is the new standard. Note that, unlike the original JeeNode, most (not all!) pins are “5V tolerant”.
One last important detail to point out is that all the components are placed on the bottom of this PCB, which leaves the top maximally exposed for clear labeling and pin identification. There are two more benefits to this setup: a coin cell holder can be soldered to the top side to create a truly small self-contained node, and the entire board can be flipped over and used as module on larger project-specific “base boards”.