If you were wondering why I am pushing the FRDM-KL25Z boards hard to the micro-amps, then have a look at this:
The five boards are the first set of prototypes with a FRDM-KL25Z for a battery operated wireless sensor network based on the nRF24L01+ 2.4GHz transceiver.
The boards are not optimized for size in this stage yet. I plan to make another revision for the FRDM-KL05 or FRDM-KL02Z, as the final application does not need USB functionality, at least not in the leaf nodes. Then things can be moved to a small board with the ARM processor on the same board (so no need for the FRDM board in the final design). But the FRDM boards allow me to make fast prototype rounds so I can concentrate on what is important for the project: to get the wireless sensor nodes up and running :-).
The heart of the sensor node is the 2.4 GHz nRF24L01+ wireless transceiver. A network stack for it is already in progress, and the low-level driver is already available on GitHub. PHY, MAC, NWK and APP are working with initial functionality.
The network stack is using a simple packet format:
Things are challenging as the nRF24L01+ can send only up to 32 bytes in a single packet over the air. So every byte counts. What works great up to now is simple message sending, including the implementation of a serial-to-wireless (and back) bridge. The application can use standard I/O channels to communicate. This this I can remotely control a sensor node:
The radio packets are passed to the Radio module which implements a state machine. The radio module uses the transceiver interrupts and has internal queues for packet buffering:
There are two ways of kicking the state machine: either with a local task/thread in the radio module (e.g. with using an RTOS), or with non-blocking Process() calls from the upper layers: that way the stack nicely works both with an RTOS or bare metal :-).
Things are progressing nicely, and once things are sound and stable, I plan to provide it as Processor Expert components: then it will super easy to configure and use it :-).