Step #1: Setup Raspberry PiPrevNext
Setting up a Raspberry Pi from scratch is beyond the scope of this project, but fear not, help awaits. You can find web tutorials but I recommend you read the book "Getting Started With Raspberry Pi" by Matt Richardson and Shawn Wallace. This book will help you not just with the PiLarm project, it will also help you discover the capabilities of the Raspberry Pi, so you can combine its various powers into your own new and interesting creations.
Thus guided, connect your Pi to the internet so you can download the libraries and code needed for the following steps, and so the Pi can tweet and email its intruder pictures.
Step #2: Install GPIOPrevNext
This library will let you control the Pi's GPIO pins to use the passive infrared sensor and the keypad as inputs and use the revolving light as an output. Use the following three terminal commands to install it:
sudo apt-get update
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
Step #3: Install fswebcamPrevNext
If you are using a third party webcam like the Playstation Eye, fswebcam will let you use it to take still photos. If you use the raspberry Pi camera, look at their instructions for installation instead. Use the command:
sudo apt-get install fswebcam
You can take a picture manually with the command:
fswebcam -r 640x480 -d /dev/video0 testpicture.jpg
Then use the "ls" command to see if your picture appeared in the working directory.
Step #4: Install mgp123PrevNext
mpg123 is a command line audio player that alarmd.py uses to play audio files such as, "System armed," and "Motion detected. Please enter passcode."
sudo apt-get install mpg123
Step #5: Add PiLarm CodePrevNext
Now add the code that I created to perform the PiLarm functions. It is located at:
To put the code on a headless Pi (no monitor, SSHing in over the network), you can use git. The Pi doesn't come with git, but you can install it:
sudo apt-get install git-core
And then use the "clone" command to download it to your Pi:
git clone https://github.com/BabyWrassler/PiLarm.git
You'll now have a directory called PiLarm containing the python files and audio files for the PiLarm.
Set alarmd.py and keypadd.py to run on boot by adding the following lines to /etc/rc.local just before the line that reads "exit 0".
python /home/pi/Alarm/keypadd.py &
python /home/pi/Alarm/alarmd.py &
Familiarize yourself with the code. Compare it to the flowcharts above and see how the statements in the code work.
Line 96 in keypadd.py contains the passcode (1912) used to arm and disarm the system. Line 97 is the haltcode (5764), used to gracefully shutdown the Pi and prepare it to be unplugged.
If you are using the Raspberry Pi Camera Module, refer back to their instructions to see what commands you will need to put into alarmd.py in place of the fswebcam commands.
Step #6: Setup TwitterPrevNext
Set up an "App" to get a Twitter API key: https://dev.twitter.com/apps/new
For the "Access Level," choose "Read and Write". This will give you the "Consumer Key," "Consumer Secret," "Access Token," and "Access Secret" that you will plug in as values for the function that creates the TweetPony API object (line 10 in alarmd.py, which currently reads "api = tweetpony.API(consumerkey = "abcd", consumersecret = "efgh", accesstoken = "ijkl", accesstoken_secret = "mnop")").
Step #7: Solder Up Perma-ProtoPrevNext
The Perma-Proto from Adafruit is great because it comes with a connector for the Pi's GPIO. The pins are labeled on the board by the connector, which makes connecting things easy.
Connect the Pi's 3.3V power pin to the Perma-Proto's positive power rail, and the Pi's ground pin to the Perma-Proto's ground rail. Then its just a matter of neatly and carefully routing wires to get everything connected. I use male and female headers as connectors for things like the passive infrared sensor, but you can solder them directly if you like.
Notice that the speaker amplifier is on the Perma-Proto to get power from its power rail, but it is not connected to the Pi through the GPIO header. The audio cable connects the amp separately, and the speaker connects to the amp's screw terminals.
The matrix keypad has a rather short attached cable, so be sure to plan your layout before soldering.
Step #8: Full System TestPrevNext
You may be eager to get things into a box and finish the project, but you should test the components before mounting them in a cramped enclosure that will make troubleshooting difficult.
If your revolving light gives you trouble, it may be a polarity issue. I tested mine on a breadboard first, manually connecting the TIP120 to power or ground to see how to correctly connect it.
If you have trouble with the code, it may be because something is connected to the wrong pin, or because you forgot to set up a constant such as the Twitter keys. To troubleshoot the code, use Python's "print" command to print the contents of variables to the console or to mark events in the code as having executed. To see the console for alarmd.py or keypadd.py, you'll need to SSH into your Pi and run them yourself with a "sudo python keypadd.py" or "sudo python alarmd.py" command.
Step #9: Mount in EnclosurePrevNext
Most alarm systems are installed as permanent fixtures, but I designed this one to be portable for added versatility and ease of repurposing. I chose the smallest box that would fit everything.
The Raspberry Pi Camera Module wasn't available when I built the first PiLarm, but they are easy to come by now. If you use this module, figure out how you are going to mount it. If you mount it to the alarm system enclosure by just drilling a hole for the lens, you may limit aiming the camera. Consider either mounting the camera module on a swivel or making the whole enclosure aim-able with a small tripod.
If you use a USB webcam, just stick it to the box with double-sided tape, preferably covering most of the cable hole.
The box works better upside down, so treat the lid as the bottom.
Before mounting anything, drill holes for the Pi's standoffs, the Perma-Proto's standoffs, the speaker grill, LEDs, PIR, USB jack, webcam cable, and revolving light wires. You don't want to get shavings in a connector or accidentally drill through something expensive.
For the keypad cable, drill a row of 1/8" holes right next to each other. Use a utility knife to cut out the material between, creating a slot.
Double-sided tape will hold the camera and revolving light in place. The keypad has its own adhesive. The speaker bolts to the case while the Perma-Proto and Pi use the circuit board stand-offs.
When choosing places for the circuit boards, be sure to allow enough room for the cables. Don't kink cables or put strain on connectors. Cables should have gentle curves and connectors should not be under any pressure. The cable on the PS3 camera is fairly long, but can be coiled neatly without much trouble.
Step #10: Share, Inspire OthersPrevNext
Congratulations on finishing! Send us pictures or video of your completed project. Let us know how you customized the design to suit different needs. Show your project to some folks whom you think might be inspired to become makers themselves.