Skip to main content

How To Build a Person-Detecting Doorbell with Raspberry Pi

Detecting Doorbell with Raspberry Pi
(Image credit: Tom's Hardware)

I don’t have a doorbell, and while I could go out and buy a wireless one - I never pass up an opportunity to over-complicate something for the sake of learning to do something new. Today we’re dipping our toes into home security by building an automatic person-detecting doorbell system using a security camera and a Raspberry Pi.

While we’re using a doorbell sound effect in today’s project, this technology can be easily adapted to monitor other areas of your home, alerting you with a sound effect if someone’s in your garage, backyard, or anywhere else you can put a camera. 

Here’s how to use a Raspberry Pi, a security camera, and a bit of machine learning to detect if someone’s at your door and play a doorbell sound effect.

What You’ll Need For This Project 

How to Turn a Raspberry Pi into a Person-Detecting Doorbell

Before you get started, get your Raspberry Pi set up. If you haven’t done this before, see our article on how to set up a Raspberry Pi for the first time or how to do a headless Raspberry Pi install (without the keyboard and screen). For this project, we recommend a headless Raspberry Pi install.

1. Install git. We’ll need it to download the code from GitHub.

sudo apt-get update
sudo apt-get -y install git

2. Clone the repository to your home directory. This will ensure we have all the code and audio files we need to run the project.

cd ~/
git clone https://github.com/rydercalmdown/person_detecting_doorbell.git

3. Run the “make install” command to install all project dependencies. This script will take care of installing lower level dependencies, as well as the Python libraries you need for the project to run. The machine learning library we’re using to detect people is packaged within one of the Python libraries, so it may take a few minutes to install.

cd ~/person_detecting_doorbell/
make install

(Image credit: Tom's Hardware)

4. Set the 3.5mm audio output to be the default audio output in raspi-config. You do this by launching raspi-config (entering sudo raspi-config at the command prompt) and navigating to System Options -> Audio -> Headphones 1. The pi allows for audio to be outputted to either the 3.5mm analog output, or over the HDMI port. If you do not have a monitor attached, Headphones may be the only option.

sudo raspi-config
# Navigate to System Options -> Audio -> Headphones 1

(Image credit: Tom's Hardware)

5. Plug your speakers into your Raspberry Pi using a 3.5mm cable. 

(Image credit: Tom's Hardware)

6. Test your speakers by playing the doorbell audio file. You should hear a doorbell sound from your speakers. In my case I’m using a megaphone, but feel free to use whatever speakers you have available.

mpg321 /home/pi/person_detecting_doorbell/src/audio/doorbell.mp3

(Image credit: Tom's Hardware)

7.  Flash the custom RTSP firmware to your Wyze camera using this tutorial. Installing RTSP support allows us to connect to the camera and grab frames directly with Python. You will need a Wyze V2 camera and a microSD card.

8. Get the RTSP URL value from your Wyze application, and edit the RTSP_URI variable in the Makefile to point the Raspberry Pi to your camera. You can find the RTSP URL in the “Advanced Settings” section of your Wyze application on your phone.

cd ~/person_detecting_doorbell/
nano Makefile
# STREAM_URI=rtsp://your_username:your_passport@camera_ip_address/live

9. Install your camera facing your front door. You can place it anywhere you like, but I have mine mounted outside. Keep in mind the Wyze V2 is not weather proof, so I’m keeping mine in a covered area. 

(Image credit: Tom's Hardware)

10. Run the “make run” command on the pi to start the doorbell system. When a person is detected in the frame, the doorbell will ring continuously with a 5 second delay in between rings until the person leaves the frame. 

(Image credit: Tom's Hardware)

You can adjust the delay between rings in app.py, and modify the doorbell sound effect by replacing the .mp3 file within the repository. Now all that’s left to do is wait for people to arrive.

Pro tip: use a sound effect of barking dogs instead of a doorbell to make this more of a security system than a doorbell.

  • jasonkaler
    or for 1/50th of the cost, you could use an arduino with a PIR and an audio amp
    Reply
  • Findecanor
    The legality of installed cameras is complex where I live. It might not even be legal depending on available spots to place the camera. An ugly sign would be needed to notify visitors of the camera. Then I'd have to destroy parts on the RPi so that it couldn't be turned into a recording device. Last, the camera would need to be put in a rigid housing from where it can't be vandalised or stolen.

    I think a much better solution would be to use a proximity sensor of some kind, avoiding all of the above issues.
    Reply