A bit over a month ago I restarted my tiny-hardware hacking with the goal to build an open source RF tag to track birds. The tag should be able to collect some sensor data and transmit the data over RF. The whole thing is supposed to weigh as little as possible, the goal being sub 1 gram including battery, waterproofing, and harness. The use of the tag would be in the context of the Motus int’l bird tracking network and it would be used by ornithologists (not me torturing backyard birds).
I’ll follow up with a background post (that’s going to be long) but the target feature set for the first tag is:
- stm32wle5 microcontroller
- 433Mhz FSK communication (Motus compatible)
- accelerometer
- barometer/altimeter
- rechargeable battery
- solar cell
I threw everything into Kicad and out came a prototype from Osh Park:
The idea of the prototype is that the right half with the solar cell and battery would be placed on the back of the left half on the real tag. Having everything on one side for a first prototype makes it easier to test and hack.
The stm32wle5 is pretty obvious in this photo and the RF section is below it, plus a footprint for an accelerometer, which is not populated on this board. The upper part behind the red/black wires has the bq25504 energy harvesting chip, which uses the solar cell power to charge the Lithium Manganese MS621FE battery.
The main part I wanted to test was the power section. How the charging from solar works and how the battery behaves when transmitting. These tiny batteries are really made to power RTC clocks or other stuff that sips uA of power, not mA of TX power. First I looked at the power required by a transmission. The following scope capture shows the current (blue trace) for transmissions at 14dBm, 10dBm, 5dBm, 0dBm, -5dBm, and -9dBm. That’s 20mA for 14dBm down to 7mA at -9dBm. My conclusion was that 0dBm is the lowest worth going and 5dBm looks like a good spot to aim for.
Next with battery. Well, actually, the battery can’t power that. It’s ESR is>80Ohm. So the board has about 30uF of capacitance and it’s really the capacitor that powers the transmission. The following scope shot shows a wakeup cycle with one transmission (that’s where the blue current trace maxes out). The cyan trace shows the voltage, which drops dramatically during transmission as the capacitor discharges. Afterwards the voltage climbs up slowly again as the battery recharges the cap.
The packet sent in these test cases has just 5 bytes of payload, longer packets cause more voltage drop or need more capacitance. There’s a tradeoff with having more capacitance, which is leakage. The max kind’a is a 300uF tantalum capacitor, which is available in a 1210 size, so doesn’t yet weigh too much, and leaks ~3uA(!). Going bigger means more leakage and pretty quickly that drains the battery overnight!
I had a lot of ‘fun’ with the bq25504’s undervoltage lockout. As you can guess, I had it too high and the voltage sag during TX triggered it. And then getting the chip to turn on again is rather tricky. I’m still not sure I understand all of it…
The solar cell is pretty amazing. It weighs 0.09g and seems to charge the battery pretty rapidly even in overcast conditions. I didn’t do detailed tests 'cause I realized I didn’t like the LiMn batteries at all.
The TX RF section worked out and I could receive packets using the std Motus receivers. That’s all I really wanted to know as I hadn’t spent much time optimizing that aspect.
The weight of all the parts except for the PCB were in-line with what I expected. The PCB, being 1.6mm thick is way too heavy and of course way too large in this configuration.
So overall some good lessons learned and ready for a prototype “real tag” that actually weighs ~1g.