Computing stuff tied to the physical world

Final MPS schematic and PCB

In case you’ve reached this page via Google or a direct URL, first a brief overview:

The “Micro Power Snitch” is a battery-less circuit which sends out wireless data packets using energy harvested from a Current Transformer, for example. There is an 8-week series of articles about how this all started, what problems arose, and how they were solved: 12345678.

With that out of the way, here is the final design for the Micro Power Snitch – version 1:


There is a 2×3 header which also doubles as jumper block:

  • for normal use with a C.T. and 50..60 Hz AC, use a jumper between pins 3 and 4
  • with a high-impedance DC input (max ≈ 3.6V), jumper 3-to-5, and 2-to-4 instead

The DC configuration quadruples the reservoir capacitor by placing C1 and C2 in parallel i.s.o. in series. This could be used with a small solar cell, for example. Depending on the cell, add a 3.6V @ 1W zener to limit the cell’s output voltage and absorb excess energy.

Here is a corresponding PCB design – it measures 1.2″ x 1.9″ (≈ 30×48 mm):


Some additional component notes:

  • C1 and C2 are 470 µF here, but some larger reservoir capacitors will also fit
  • note the orientation of Q1 (BC549C) and Q2/Q3 (TP2104 MOSFETs)

The demo software has been extended a bit further and now has the following behaviour:

  • a packet is sent out once every second as long as there is enough power
  • the RF settings are: txPower 18 (0 dBm), 868 Mhz, group 42, node ID 61
  • each packet is 5 bytes (more can be appended later)

The packet contents are: a unique 4-byte identification (derived from the unique 16-byte hardware ID in each LPC810 µC), followed by a sequence/type byte. The lower six bits are “000001”, to tag this node as being an MPS v1. The two upper bits are incremented on each transmission and can be used on the receiving end to detect occasional missed packets.

This introduces a new convention that node ID “61” is reserved for nodes which send but never need to receive any data. The first five bytes then identify each node and its type. You can have as many “61” nodes in the WSN as you like without running out of node IDs.

Here is some sample output (received using this code, but with encryption disabled):

OK 803d5ca3cfef01 (144+34:3)
OK 803d5ca3cfef41 (144+38:3)
OK 803d5ca3cfef81 (144+46:3)
OK 803d5ca3cfefc1 (144+26:3)
OK 803d5ca3cfef01 (144+42:3)

Where: 80=broadcast, 3d=from-61, then 4 unique bytes, then the counter/type byte.

That’s it…

So there you have it. Once the MPS is connected to a C.T. such as this one, and clipped over one (not two!) wires of an AC mains cable, it will report whenever there is more than about 500W @ 230VAC (or 250W @ 115VAC) power going through the wire. Forever!

The MPS was initially created as proof of concept, but (as often with such ideas) has moved well beyond that stage. There is a lot of accumulated knowledge in this design by now, on how to make a µC + RF combination work off an energy source which is very low power and only available intermittently, so startup and shutdown become critical design aspects.

In a way, this project really has only just started. It could also be used outdoors, powered by a very small solar cell, for example. A supercap or battery could be added to last much longer, at which point the spare “AUX” pin could be used to read out some sensor.

The code so far is only about 1 KB, leaving plenty of room in that LPC810 µC to add a lot more smarts. Who knows – it might be possible to estimate actual power levels from either the Vdd voltage or how fast it recovers after a packet transmission. The transmit power could be adjusted to reflect how much energy there is, which would allow the receiver to deduce a very rough power level via the strength of the received signal. Weaker transmits could be mixed with stronger ones, to sail even closer to the edge.

Simple as it may be, this circuit can be used in all sorts of creative new ways. The hardware is just a start – your imagination and software implementation ideas can take it anywhere!

The code and all design files are available as open source – create, share, and enjoy!

[Back to article index]