Martin Mander
Published © GPL3+

1986 PiNG Video Doorbell

The PiNG Video Doorbell is powered by a Raspberry Pi and uses Google Duo to video call you on your phone when a visitor presses the button.

IntermediateFull instructions provided5 hours10,361
1986 PiNG Video Doorbell

Things used in this project

Hardware components

Raspberry Pi 3 Model B+
Raspberry Pi 3 Model B+
×1
pHAT BEAT
Pimoroni pHAT BEAT
×1
Microsoft HD-3000 Webcam
×1
Wireless Doorbell Button (Optional)
×1
Pico HAT Hacker
Pimoroni Pico HAT Hacker
×1
5V 2.5A Switching Power Supply
Digilent 5V 2.5A Switching Power Supply
×1
Wide Angle Lens
×1
Limit Switch, Rod Lever
Limit Switch, Rod Lever
×2
Jumper wires (generic)
Jumper wires (generic)
×1
6 Core Alarm Cable
×1
Speaker: 0.25W, 8 ohms
Speaker: 0.25W, 8 ohms
×1
Terminal Block Connector
×1

Software apps and online services

Google Duo

Hand tools and fabrication machines

Rotary Tool
Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Custom parts and enclosures

Use a Project Box or Upcycle some Old Tech!

It's your doorbell, fit it into whatever case you like.

Schematics

Basic Connection Diagram

You may need a 10k resistor on the doorbell button if you have long cables!

Code

Basic code for the PiNG Video Doorbell

Python
#!/usr/bin/python
# Ensure PyUserInput is installed
# Ensure webcam is connected, Duo is running full screen and audio sources are set

from time import sleep
import RPi.GPIO as GPIO
from pymouse import PyMouse
from pykeyboard import PyKeyboard

m = PyMouse()
k = PyKeyboard()

sleep(2)

GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Doorbell Button
GPIO.setup(9, GPIO.OUT) # Indicator LED

while True:
    if ( GPIO.input(22) == 1):
        print ("Doorbell Pressed")
        GPIO.output(9,True)
        m.click(276,372) # Click in the Duo text box
        sleep(0.5)
        k.tap_key('Delete',n=6,interval=0.05) # Delete existing characters
        k.type_string("Father") # Type name of Duo contact
        sleep(0.2)
        k.tap_key('Return') # Hit Return to select contact
        sleep(1.5)
        m.click(683,445) # Click on Video Call button
        GPIO.output(9,False)
        for count in range(0, 30):    
            GPIO.output(9, True)
            sleep(0.8)
            GPIO.output(9, False)
            sleep(0.8)
    else:
        sleep(0.05)

Credits

Martin Mander

Martin Mander

16 projects • 21 followers
I love the design and ambition of vintage technology, and the usability and potential of new - my passion is bringing the two together.

Comments