Introduction: Fast Video Doorbell / Intercom on Raspberry Pi
Hello everyone! I came across some nice software to make a fast video / 2-way audio doorbell with a Raspberry Pi, and found a way to fit all the components in a small case. I will show you how to build it, including how to make push notifications work when you press the button.
See the following video for a quick demo.
The hardware build requires a bit of drilling and soldering. The software portion is pretty straightforward with no coding required (unless you want to customize the sample programs). But it does require a Mac and XCode. See the following video that documents all the steps.
Supplies
Step 1: Drill Holes in the Plastic Case and Paint
Grab the plastic case, and mark the spots where to drill some holes as per the diagram.
Then drill the three small holes for where the speaker will be, so the sound can come out. Next drill the bigger hole on top right to place the button. Check your button diameter to pick the proper drill size.
After drilling, the edges around the holes tend to have a bit of an edge, so just cut around holes with a box cutter to make it all flat.
You can leave your case transparent, or if you want to give it a paint job now is a good time. A primer paint for cars works well.
Step 2: Prepare and Attach Wires for Speaker and Button
Now let's prepare the speaker cables. They are really long and so they probably would be tricky to fit into the case. So shorten them by cutting and soldering them back together, and fitting a heat shrink wrap, as show in the picture.
Next, strip some extra jumper wires and attach and solder them to the button.
Step 3: Attach Button, Speaker and Camera Module to Case Cover
At this point all the components are ready to be attached to the case cover. First install the button.
Then the speaker: attach its wires, remove the adhesive band, and press it in place.
And then attach the camera module, which clicks nicely into the special case fittings.
Step 4: Prepare and Solder Audio Out Wire
Now for audio out, cut and strip another jumper wire (male so it connects with female wire on speaker), and pull it through the hole near the audio.
And then solder it to the audio out pin from the 3.5 millimeter audio jack.
See the image of the back of the Pi with the red arrow to see the exact location of the pin.
Step 5: Connect All the Wires and Close the Case
Now is the time to push the Raspberry Pi into the base of the case and connect up all the wires.
See the diagram image of Raspberry Pi pin numbers. Connect speaker power to Pin #1. Speaker ground to #6. Button wires to pin #7 and #9.
And of course connect the white speaker wire to the wire we soldered to the back of the Pi.
Then close the case shut.
Step 6: Install a Fresh OS on Raspberry Pi
For your Raspberry Pi 3 (or 3+), download and unzip Raspbian Stretch.
Apparently you should not install the latest Raspberry Pi OS because the audio player has an issue. I would hope that at some point it will be resolved.
Download and install the Raspberry Pi Imager.
Connect and format your microSD card. Then launch the Raspberry Pi Imager.
Pick a custom OS to install, and navigate to the Raspbian Stretch file you had downloaded and unzipped.
Select your microSD card, and click on "WRITE".
When it's finished, plug the microSD card into your Raspberry Pi.
Connect a monitor with the HDMI cable, and connect a USB mouse and keyboard. Then power up the Raspberry Pi.
Step 7: Configure Pi to Connect to WiFi and Get the Camera to Work Properly
Once it's up and running, go though the initial dialogs and get connected to WiFi.
Then click on the Raspberry icon on the upper left, then "Preferences", then "Raspberry Pi Configuration".
Then click on "Interfaces". Enable camera. Click OK and accept to reboot.
To check the camera is working, open up a Console by clicking on the black console icon on the top left.
Type the following.
raspistill -o cam.jpg
Then open up File Manager by clicking on the yellow folder icon on the top left.
And double click on cam.jpg to check whether the image is correct.
Step 8: Configure and Check the Speaker
Right click on the Volume icon in the upper right corner and select "Analog".
Now left click on the same volume icon and set volume. I suggest setting it to about 80%.
Next, let's open up a console again, and run the following command:
speaker-test
You should hear white noise.
If you want to hear a proper sound, type the following command:
aplay /usr/share/sounds/alsa/Front_Center.wav
Now you should hear a human voice.
Step 9: Configure the Microphone
Right click on the volume icon again, and then click on "USB Device Settings".
Then click on the "Sound card" drop down menu, and select "USB PnP sound device".
Click on "Select Controls...", and select both "Microphone" and "Auto Gain Control, then click on "Close".
Now set the microphone slider to about 80% as well and click ok. You might find the microphone is quite bad and creates quite a bit of white noise. You can always come back to this setting and reduce the slider, but then you will have a harder time to hear sounds from the doorbell.
At this point our raspberry pi is properly built and configured, so it's time to to take care of software.
Step 10: Download the Seajei SDK and Run the Raspberry Pi Sample
Open up the raspberry pi browser, and type seajei.com.
Scroll down a bit and click on "Free SDK".
In the next page scroll down a bit and click on "Download SDK". It will get downloaded to your Downloads folder.
Open up File Manager, and go to your Downloads folder.
Right click on the Seajei SDK zip file, then click on extract here. Then move the Seajei SDK folder to the desktop.
Next, open a Console, and navigate to the doorbell demo with the following command (adjust of you have a different SDK version):
cd Desktop/Seajei-3.1.8/SamplePrograms/RaspberryPi/Doorbell
Look at what's in README by typing:
cat README
Then as mentioned in there run the sudo apt update command, and copy paste the other sudo apt command and run it. You can run the whole thing in one line like so:
sudo apt update; sudo apt install libopus-dev libssl-dev portaudio19-dev
When that's all done, run the build script for your Pi 3, which is the following command:
./build_pi_3_4.sh
And then run the doorbell executable by typing:
./doorbell
Take note of the device ID, because you will need it to connect from the iOS app. In my case it's "vmy9dj".
This is a good time to check the pi button is working. Click a few times on it and check that you get the "Button triggered" message.
Step 11: Run the IOS Sample
Now let's get the iOS app going. I assume you already have XCode and a developer account with Apple.
Go to the same seajei.com site on your Mac, and download the SDK.
Unzip it and go to SamplePrograms/iOS/SeajeiDemoApp. Double click on the SeajeiDemoApp.xcodeproj project file so it opens in XCode.
You'll have to set your team in signing & capabilities to be able to compile.
Then select your target. It can be the simulator or an iOS device. Compile and run the app.
Once the app first runs, you need to set that device ID we saw in the Raspberry Pi sample program. For me it was "vmy9dj". Put whatever it was for you.
Then click on "CONNECT" and it should work. The video can look a bit funky on the simulator, so best is to run the app on an actual device.
Unfortunately at this point if you push on the Pi button, you won't see a notification. That's because notifications require your app to be set up for it in iTunes Connect.
So to fix that let's get to the next step!
Step 12: Get IOS Push Notifications to Work
Quick note: for notifications to work, you'll need an iOS device. They won't work if you run the demo app in the simulator.
Go back to the Seajei SDK, and open up the SeajeiDeveloperGuideIOS.pdf file. In there, go to push notifications at the bottom.
Follow all the steps so that at the end you have a .p12 file. Send it to support@seajei.com, and they will get back to you with a token to use. For me it took less than a day.
Once you received the new token, which is just a string, go back to your Raspberry Pi, open up a Console, and go to the Doorbell sample program:
cd Desktop/Seajei-3.1.8/SamplePrograms/RaspberryPi/Doorbell
Edit doorbell.c with your favorite editor. A nice and simple one to use is geany. Just type:
geany doorbell.c
Then scroll down a bit to company token, and replace the free trial token with your new one.
Save and exit, and run the build_pi_3_4.sh script again. Then run the doorbell program again.
Next, go back to your iOS demo app to replace the token there too. It is located in the PhoneAppViewController.m file. Scroll down just a bit to find it.
Re-compile and launch the app.
Put in the device ID again. If it's already there, it seems like you need to still click on it and then close the dialog where you set it or otherwise it might not work.
Now push the Pi button and you should see the notification.
Now you could call it a day, but wouldn't it be nice if the doorbell works automatically anytime it powers up? Here is one last step for that!
Step 13: Make the Doorbell Sample on Raspberry Pi Start Automatically When Powering Up
Go back to your Raspberry Pi, and to the doorbell sample:
cd Desktop/Seajei-3.1.8/SamplePrograms/RaspberryPi/Doorbell
And again look inside README with the cat README command.
There you see at the end 4 commands to run to make things work. So just copy paste and run them all. Or just run this single long command:
cp doorbell /home/pi/Desktop; sudo cp raspidoorbell.service /lib/systemd/system; sudo systemctl start raspidoorbell.service; sudo systemctl enable raspidoorbell.service
Run "sudo systemctl daemon-reload" if you are asked to.
And that's it! Reboot your Pi, and you should see the camera module's red light come on automatically, which indicates the doorbell program is running.
Now one small problem is that when the doorbell program starts automatically as a service and you want to edit doorbell.c and compile and run it, it will fail because it can only run one at a time. In that case you first need to stop the service by running this command:
sudo systemctl stop raspidoorbell.service
Step 14: Grab a Drink!
You deserve it!
17 Comments
5 months ago
What is the issue that you can not use a Pi 4?
1 year ago
Nice Doorbell, but where is the Wifi Adapter? Rasp Pi3 doesnt have onbrd wifi or?
2 years ago
How do you power the unit? I have a built-in doorbell with wires that lead back to the main intercom, and I'd love to re-use those wires. They're small, solid core copper that won't push much current though.
Reply 2 years ago
I don't know the power specifications of your built-in doorbell wires, but the Raspberry Pi Power Supply voltage is 5 Volts, and current is 2.5A. Raspberry Pi recommends at least 2 amps of current. Looks like typical doorbell wiring is somewhere around 6 to 24 Volts. So I guess you'd have to use a transformer... Or maybe get a $5 Pi 0 and hook it up to your wires and see what happens (worst case you'll be out $5)...
Question 2 years ago
Hi, at step 12, how much does a token cost?
Answer 2 years ago
Well you can just request one. They do have a rate of 0.0012 per minute of streaming, but told me they would only charge if I exceed 1000 minutes a month, so should be plenty to tinker around.
Reply 2 years ago
Ah, I though you work for Seajei LLC, sorry. Understood, thank you.
Question 2 years ago on Step 14
Is there a cheaper way to do this than a pi?
Answer 2 years ago
Another thing about Pi 0 though: it doesn't have a 3.5 mm headphone jack to solder the speaker wire to. So you'd have to find another way to play the audio. You could use the HDMI audio out, or see some other ways here: https://www.raspberrypi.org/forums/viewtopic.php?t=230488
Answer 2 years ago
Sorry not that I know of... You could use a Pi 0 they go for as low as $5.
2 years ago
Excellent project! How can I do this project with a PC?
Reply 2 years ago
I think right now in the SDK there are only libraries for iOS, Raspberry Pi, Linux, and some other linux-based platforms like Mips and PowerPC.The site says Android is coming soon, but no mention of PC...
2 years ago
Is there a way to get this to work on an android device instead of an IOS device?
Reply 2 years ago
Definitely so, but a different one as those two are completely different operating systems.
Reply 2 years ago
Just looked at the seajei website and they are currently developing for Android, so I don't think this will work as yet
2 years ago
Nice project. Thanks for sharing.
Reply 2 years ago
Glad you liked it it was fun doing it ;)