Battery powered fingerprint reader

This project is about a battery powered fingerprint sensor I placed just outside the door of my house. The last person leaving the house or the first entering it would use the sensor so the controller could arm/disarm the alarm but of course can be used to control anything (e.g. opening the door). Since the controller gets the id of the fingerprint when there is a match, would also know who is entering the house so greeting the person by name out loud (kind of funny :P).

If battery powered, the sensor cannot of course stay always on since consuming around 150mAh. This is why I've attached a button to the project so the person using it can press the button, the node wakes up, the sensor turns on and the person can put the finger on it. After that, the board goes back to sleep. I've also added a buzzer to shortly beep in case of a positive match.

3: MCP1302 voltage regulator to provide 3.3v out of the 3 AA batteries (4.5v). I preferred using this configuration since the FPM10A works so so when the voltage is below 3v. The regulator is placed in the booster position so to measure the battery level

4: battery measurement, resistors 1M and 300k ohm

5: since the FPM10A has to be powered on only on demand and an arduino pin cannot provide enough current, I'm using a pn2222a transistor connected to an arduino pin on one side through a 220ohm resistor (with a 10k resistor going to ground) and the FPM10A gound on the other side

6: button for waking up the board and starting the fingerprint sensor

7: 3 AA battery pack

8: buzzer

This is the code I'm using (from the NodeManager's development branch):

Basically the node sleeps and wakes up every hour to report battery and signal level. When the button (attached to pin 3) is pressed, the node wakes up and the FPM10A is powered on by PowerManager (which turns HIGH pin A1 so saturating the transistor and activating the sensor). If there is a fingerprint match, then the fingerprint id is sent back to the gateway and the node goes back to sleep. Before doing so a short "bip" is sent to the buzzer.
If nothing happens for 15 seconds, the node goes back to sleep regardless.

Hi,
nice project.
for power savings i generally use load switch, p-mosfet instead bjt (like your transistor). but that depends on the circuit, voltages etc.
just curious, as you're using 1Mhz clock, have you measured power consumption ? Sometimes it's not worth to use 1mhz.

@scalz thanks for advice first of all. Agree, the 1Mhz clock was unnecessary for this project but I usually leverage this configuration not because of the power consumption but mainly to allow the board running with 2 AA batteries way below 3V. But for sure an over complication here @crankycoder the fingerprint sensor should be able to keep track of 200+ fingerprint which have to be enrolled first (through a windows utility or an ad-hoc arduino sketch). Regarding the library in NodeManager I've integrated the Adafruit's one, the one on sparkfun seems designed for a different sensor.

@monte i was just wondering if it could use the sparkfun, since you can do an enroll without saving it to the internal and have the template it generates dumped to a var. Then you can do a finger capture without having it try to identify and dump that to a var.

@scalz forgot to mention, other reason why I'm using a 1Mhz bootloader is because having other nodes at 1Mhz in my network for running on batteries below 2.8v, the gateway is 1Mhz as well and I've always noticed issues when mixing 1Mhz and 8Mhz nodes with RFM69 radio. Since 2.2.0 they can at least kind of communicate but due to the different speed I guess, sometimes something gets lost. With NRF24L01 mixing looks good instead.