The intention is to create an animal camera to video the wildlife of the garden and the window cill bird feeder. The idea is that the camera could be used outside (night or day) powered by battery then be moved indoors to the window cill to record the bird feeder where it can be powered by mains.
This is the 3rd version of the animalcam / trailcam with the older versions showing the progression and further useful information. Previous versions can be found here:
To create this I’ve used a raspberry pi A,* powered by battery (which can be disconnected when connected to the mains) along with a pi noIR camera that has a moveable IR filter to give reasonable colour in the day and respond to IR light in the dark.
The trailcam comprises of a main breakout board with the other elements attached separately – this helped me to construct the project in sections and allows for a level of upgrade later on. I ran in to issues on the previous version where the female to female jumpers kept coming off, resulting in a bunch of wires that I had no idea where they went, so this time I’ve soldered on JST connectors and colour coded them.
In its current form, the trailcam simply uses pikrellcam to record video when it detects motion. In the dark, a PIR sensor is activated which turns on an I.R. lamp, pikrellcam then records the motion event as if it were daylight. A switchable I.R. filter is fitted to the camera which enables good quality day time video and I.R. sensitive night time video.
The facility for bypassing the software motion detection is built in so that the recording of video can be triggered by the PIR if required.
I’ve cobbled this together using the how-to’s, programs, diagrams and general knowledge of some very clever and generous people that have taken the time to make their information public knowledge online. Despite my limited skill level it actually works!
The following are the main personal blogs and websites that I’ve used for help. In addition, the suppliers as noted in section 7 have really useful websites and blogs to go with their products.
South Somerset Weather
This was the original inspiration and also has some great videos.
It’s a huge lump in terms of capacity, physical size and weight however it has performed flawlessly in the last couple of years. It takes a while to charge but holds it really well and lasts long enough to power the pi all night as well as for an hour or so to get the videos off of it in the morning.
It needs a pretty hefty power supply and I went with the recommended, branded one – this is also really handy for powering a pi2 with Wi-Fi when not charging the battery.
The PIR sensor is a pretty standard piece of kit – I got mine from Tandy however they’re really common and stocked by the usual suspects (adafruit, pimoroni, Modmypi,maplin)
In the first version I had the PIR sensor triggering the recording however for this version I’ve altered it so that it just turns the IR lamp on leaving the motion detection in the software to do its thing..
I had hoped that the PIR would “see” through the plastic on the box however it wasn’t happening so I ended up removing the defractor / lens, drilling a hole through the box to push the sensor through then stick the lens on the outside. It does increase the chance of letting water through however there isn’t really much choice and a big chunk of gaffer tape should sort it out.
I modified the control program from raspberry pi spy to run the previous version of the trail cam however this version only needs to turn the light on an off, hence why it is a bit of a mess.
# By : Raspberry Pi Spy
# Author : Matt Hawkins
# Date : 21/01/2013
# By : G
# Date : 24/04/2016
# Import required Python libraries
import RPi.GPIO as GPIO
# Use BCM GPIO references
# instead of physical pin numbers
# Define PIR GPIO to use on Pi
GPIO_PIR = 22
print "PIR Running (CTRL-C to exit)"
# Set PIR pin as input
GPIO.setup(GPIO_PIR,GPIO.IN) # Echo
Current_State = 0
Previous_State = 0
# Define GPIO for lamp control
GPIO_LIGHT_ON = 17
# Set lamp on GPIO as output
GPIO.setup(GPIO_LIGHT_ON,GPIO.OUT) # Echo
print "Waiting for PIR to settle ..."
# Loop until PIR output is 0
Current_State = 0
print " Ready"
# Loop until users quits with CTRL-C
while True :
# Read PIR state
Current_State = GPIO.input(GPIO_PIR)
if Current_State==1 and Previous_State==0:
# PIR is triggered
print " Motion detected!"
print " Light on"
# Capture a 5 second video
# print " Record start"
# Record previous state
elif Current_State==0 and Previous_State==1:
# PIR has returned to ready state
print " Light off"
print " Ready"
# Wait for 10 milliseconds
print " Quit"
# Reset GPIO settings