Programming the BeagleBone Black with Python

This entry is part 4 of 4 in the series Getting Started with BeagleBone Black. 

This post was written by Rui Santos and Luís Perestrelo authors of BeagleBone For Dummies.

Building a surveillance system with a PIR sensor, the BeagleBone Black and Python.

The BeagleBone Black is an outstanding tool for projects that involve the Internet. Access is easy (simply connect it to the router through an Ethernet cable ), and both Python and JavaScript feature libraries that greatly simplifies matters.

PIR sensors are quite neat devices that are able to detect motion. Their output pin, which will be connected to the BeagleBone Black sends a digital signal HIGH whenever somebody passes by, and is LOW whenever else. Automatic lights in public places are built on this concept.

The project sends you an email whenever motion is detected.

beaglebone black pir motion sensor

Parts Required

Here’s a list with everything you need:

This is our complete guide to program the ESP32 with Arduino IDE, including projects, tips, and tricks!  SIGN UP NOW »

This is our complete guide to program the ESP32 with Arduino IDE, including projects, tips, and tricks! SIGN UP NOW »

Schematics

NOTE: You can read my tutorial on how to modify a cheap PIR motion sensor to operate at 3.3V.

bbb_pir_sensor

Python Code

You can click here to download this Python script.

NOTE: You can only use this example with Gmail. And don’t forget to replace the example below with your own credentials…

#!/usr/bin/python
 
#import libraries
import smtplib

import Adafruit_BBIO.GPIO as GPIO
import time
 
#create a variable called PIR, which refers to the P8_11 pin
PIR = "P8_11"
 
#initialize the pin as an INPUT
GPIO.setup(PIR, GPIO.IN)
GPIO.add_event_detect(PIR, GPIO.RISING)

def send_email():
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    my_email = "REPLACE_WITH_YOUR_EMAIL@gmail.com"
    my_password = "REPLACE_WITH_YOUR_PASSWORD"
    destination = "REPLACE_WITH_YOUR_EMAIL@gmail.com"
    text = "Motion has been detected at your house!"
    
    server.login(my_email, my_password)
    server.sendmail(my_email, destination, text)
    server.quit()
    print("Your email has been sent!")
       
#loop forever
while True:
    #sends an email when motion has been detected
    if GPIO.event_detected(PIR):
        send_email() 
    time.sleep(0.05) #loop every 50 miliseconds to not overburden the CPU

View raw code

Conclusion

Now you’ve built your own surveillance system that sends you an email when the PIR sensor detects movement!

email

If you have any questions post them in the comments below. Special thanks to Luís Perestrelo for helping Rui Santos putting this series together!

Want to learn more about the BeagleBone Black?

You can buy our book BeagleBone For Dummies on Amazon!


Learn how to program and build projects with the ESP32 and ESP8266 using MicroPython firmware DOWNLOAD »

Learn how to program and build projects with the ESP32 and ESP8266 using MicroPython firmware DOWNLOAD »


Enjoyed this project? Stay updated by subscribing our weekly newsletter!

8 thoughts on “Programming the BeagleBone Black with Python”

  1. How about a camera? Can you have it snap a picture on given intervals and upload it via ftp? Or combine IR and camera to send a picture of 5 the IR goes off? Thanks.

Leave a Comment

Download our Free eBooks and Resources

Get instant access to our FREE eBooks, Resources, and Exclusive Electronics Projects by entering your email address below.