Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze di Raspberry Pi, Arduino ed ESP32 con altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime esclusive.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e omaggi festivi: Partecipa a omaggi e promozioni speciali durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

4.1.5 Campanello intelligente con videocamera

Introduzione

In questo progetto, creiamo un campanello intelligente con videocamera fai-da-te.

Componenti necessari

In questo progetto, avremo bisogno dei seguenti componenti.

../_images/3.1.19components.png

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Pulsante

ACQUISTA

Modulo Audio e Altoparlante

-

Modulo Fotocamera

ACQUISTA

Schema elettrico

T-Board Name

physical

wiringPi

BCM

GPIO27

Pin 13

2

27

../_images/3.1.19_schematic.png

Procedura sperimentale

Passo 1: Costruisci il circuito.

../_images/3.1.19fritzing.png

Prima di iniziare questo progetto, assicurati di aver completato 3.1.3 Modulo Audio e 3.1.2 Modulo Video.

Passo 2: Accedi alla cartella del codice.

cd ~/raphael-kit/python/

Passo 3: Esegui.

python3 4.1.5_DoorBell.py

Dopo l’esecuzione del codice, quando viene premuto il pulsante, suonerà una campanella e la fotocamera registrerà un video di 5 secondi, che verrà salvato come file visitor.h264 nella directory ~. Se hai uno schermo, puoi anche visualizzare i visitatori in tempo reale.

Codice

Nota

Puoi Modificare/Resettare/Copiare/Eseguire/Fermare il codice qui sotto. Ma prima di farlo, devi accedere al percorso del codice sorgente come raphael-kit/python. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3
from picamera import PiCamera
from pygame import mixer
import RPi.GPIO as GPIO
import time
import os
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')


camera = PiCamera()

BtnPin = 18
status = False

def setup():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(BtnPin, GPIO.IN, GPIO.PUD_UP)
    mixer.init()

def takePhotos(pin):
    global status
    status = True

def main():
    global status
    GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=takePhotos)
    while True:
        if status:
            mixer.music.load(f'{user_home}/raphael-kit/music/doorbell.wav')
            mixer.music.set_volume(0.7)
            mixer.music.play()
            camera.start_preview(alpha=200)
            camera.start_recording(f'{user_home}/visitor.h264')
            print ('Have a visitor')
            time.sleep(5)
            mixer.music.stop()
            camera.stop_preview()
            camera.stop_recording()
            status = False

def destroy():
    GPIO.cleanup()
    mixer.music.stop()
    camera.stop_preview()
    camera.stop_recording()

if __name__ == '__main__':
    setup()
    try:
        main()
    except KeyboardInterrupt:
        destroy()

Spiegazione del Codice

status = False

Questo è un flag utilizzato per registrare se il campanello è stato utilizzato.

GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=takePhotos)

Imposta l’evento di BtnPin, quando viene premuto il pulsante (il segnale di livello cambia da alto a basso), viene chiamata la funzione takePhotos().

if status:
    mixer.music.load(f'{user_home}/raphael-kit/music/doorbell.wav')
    mixer.music.set_volume(0.7)
    mixer.music.play()
    camera.start_preview(alpha=200)
    camera.start_recording(f'{user_home}/visitor.h264')
    print ('Have a visitor')
    time.sleep(5)
    mixer.music.stop()
    camera.stop_preview()
    camera.stop_recording()
    status = False

Qui vengono utilizzati cinque secondi per riprodurre la musica e registrare i video, svolgendo la funzione di campanello.

Immagine del fenomeno

../_images/4.1.5door_bell.JPG