Raspberry Pi 3 bewegingsdetectiecamera met live feed - Ajarnpa
Raspberry Pi 3 bewegingsdetectiecamera met live feed - Ajarnpa
Anonim
Raspberry Pi 3 bewegingsdetectiecamera met live feed
Raspberry Pi 3 bewegingsdetectiecamera met live feed

Invoering

In dit project leer je hoe je een bewegingsdetectiecamera bouwt die je kunt gebruiken als cameraval, huisdier-/babyfoon, beveiligingscamera en nog veel meer.

Dit project is georganiseerd in verschillende stappen:

  • Invoering
  • Je Pi. instellen
  • SSHing naar je Pi
  • Uw IP-adres e-mailen bij opstarten
  • Motion installeren en instellen
  • Video's van beweging e-mailen bij detectie
  • Problemen oplossen en bronnen

Wat je nodig hebt:

  • Een Raspberry Pi 3-model b ~~$35
  • 8GB Micro SD-kaart ~~$10
  • USB-webcam ~~$20 (dit project gebruikte een Logitech HD Webcam c270)
  • micro-usb-kabel ~~$5
  • of:
  • oplaadbare 5 volt batterij (back-up batterij van de telefoon), dit maakt uw project draadloos ~~ $ 20
  • of
  • usb-muuradapter ~~$5
  • Een wifi-verbinding

Waartoe je toegang nodig hebt om in te stellen:

  • Een monitor
  • Een muis en toetsenbord
  • Een computer met een SD-kaartsleuf
  • Een Micro SD naar SD-kaart converter (moet bij uw micro SD-kaart worden geleverd)

Stap 1: Uw Pi. instellen

Uw Pi. instellen
Uw Pi. instellen

Laten we nu uw Pi. instellen

Zorg er om te beginnen voor dat u alle vereiste items van de laatste stap hebt. Volg daarna de stappen op de Raspberry Pi-website voor het installeren van Raspbian Jessie op uw Microsd-kaart, die u hier kunt vinden.

Zodra je Raspbian op je Pi hebt geïnstalleerd, is het tijd om enkele basisfuncties in te stellen.

Wifi

De eerste stap om het meeste uit uw Pi te halen, is door hem met internet te verbinden. Je hebt deze stap misschien al voltooid door het wifi-symbool in de rechterbovenhoek van het hoofdscherm van je Pi te zoeken en daar in te loggen, of door hetzelfde te doen voordat je Raspbian in de laatste stap installeert. Als u zich niet kunt aanmelden bij uw WiFi-netwerk vanaf de desktopinterface van uw Pi, kunt u de instructies hier volgen om WiFi in te stellen via de opdrachtregel.

SSH

Een erg handig hulpmiddel dat je ter beschikking staat bij het gebruik van je Pi, is de optie om commando's aan je Pi te geven in een zogenaamde headless setup. Door een Secure SHell of SSH te gebruiken, kunt u uw Pi op afstand bedienen vanaf een computer. Met deze methode is alles wat je nodig hebt om je Pi te bewerken een stroombron om hem aan te houden, geen monitor en toetsenbord meer!

Stap 2: SSHing in uw PI

SSHing in uw PI
SSHing in uw PI
SSHing in uw PI
SSHing in uw PI

SSHing naar je Raspberry Pi is eenvoudig en erg handig, omdat je met het proces opdrachten aan je Pi kunt geven vanaf elke computer met niets meer dan een wifi-verbinding.

Om SSH naar je Pi te sturen, moet je deze 3 eenvoudige stappen volgen.

Eerst moet je SSH op je Pi inschakelen. Open hiervoor een opdrachtvenster in je Pi en typ in:

sudo raspi-config

Met deze opdracht kunt u een configuratiemenu openen. vanaf daar wil je de pijl-, tab- en enter-toetsen gebruiken om eerst naar de interface-opties te gaan, vervolgens om SSH in te schakelen, evenals de camera, en vervolgens de pi af te sluiten en opnieuw op te starten.

Vervolgens moet je het IP-adres van je Pi vinden. Typ in een opdrachtterminal:

sudo ifconfig

En uw IP-adres zou in het wlan0-gedeelte moeten staan dat verschijnt, direct onder Link encap:ethernet. In de demo-afbeelding hierboven is het IP-adres 192.168.1.10.

Ten slotte moet je ofwel de ingebouwde terminal-app op een Mac openen, of instructies voor een ssh-app van derden voor Windows zoeken en volgen. Typ in de Terminal-app:

ssh pi@UW IP-ADRES

Als u het wachtwoord niet hebt gewijzigd terwijl u zich in Raspi-config bevindt, dan is uw wachtwoord dat u moet invoeren wanneer daarom wordt gevraagd het standaardwachtwoord: raspberry.

Vanaf daar zou je goed moeten zijn om te gaan!

Stap 3: E-mail uw IP-adres bij opstarten

E-mail uw IP-adres bij opstarten
E-mail uw IP-adres bij opstarten

In deze stap zullen we ons concentreren op hoe u toegang krijgt tot uw Raspberry Pi, ongeacht het netwerk waarop u zich bevindt. Afhankelijk van het netwerk verandert het IP-adres van de Pi. En als u geen monitorconfiguratie hebt, moet u naar de Pi ssh-en om het bewegingsdetectieprotocol te activeren, bewegingsvoorkeuren te wijzigen of toegang te krijgen tot iets anders op het apparaat. Om dit probleem op te lossen, zullen we een python-script schrijven dat ons bij het opstarten het huidige IP-adres van de Pi e-mailt. Het python-script is als volgt en werd opgeslagen in een map met de aanduiding "achtergrond".

#start in homedirectory

cd ~

#maak achtergrondmap

mkdir achtergrond

#maak pythonscript

sudo nano emailip.py

#schrijf in emailip.py

stopcontact importeren

s = socket.socket(socket. AF_INET, socket. SOCK_DGRAM)

s.connect(("8.8.8.8", 80))

print(s.getsockname()[0])x = s.getsockname()[0]s.close()

smtplib importeren

van e-mail. MIMEMultipart import MIMEMultipart

van e-mail. MIMEText import MIMEText

fromaddr = "UW ADRES"

toaddr = "ADRES ONTVANGST"

msg = MIMEMultipart()

msg['Van'] = vanaddr

msg['Naar'] = paddr

msg['Onderwerp'] = "IP-adres"

body = xmsg.attach(MIMEText(body, 'plain'))

server = smtplib. SMTP('smtp.gmail.com', 587)

server.starttls()

server.login(fromaddr, "UW WACHTWOORD")

tekst = bericht.as_string()

server.sendmail (fromaddr, toaddr, tekst)

server.quit()

#dan doet dit het bij opnieuw opstarten

sudo nano /etc/rc.local

#voer in /etc/rc.local

terwijl ! /sbin/ifconfig wlan0 | grep -q 'inet-adr:[0-9]';

slaap wel 3

gedaan

_IP=$(hostnaam -I) || waar

als ["$_IP"]; dan

printf "Mijn IP-adres is %s\n" "$_IP"

python /home/pi/Background/emailip.py &

fi

uitgang 0

#en je bent klaar

Stap 4: Motion installeren en instellen

Motion installeren en instellen
Motion installeren en instellen

#update foto

sudo apt-get update

sudo apt-get upgrade

#downloaden

sudo apt-get install motion

#bewerk dit bestand nu met de volgende wijzigingen

sudo nano /etc/motion/motion.conf

#om een standaard voor deze tutorial in te stellen, verander

#################

daemon aan

stream_localhost uit

webcontrol_localhost uit

ffmpeg_output_movies aan

target_dir /var/lib/motion

##################

#lokale webbrowser streaming-opties

##################

stream_maxrate 100 #Dit maakt realtime streaming mogelijk, maar vereist meer bandbreedte en bronnen

framerate 60 #Hierdoor kunnen 60 frames per seconde worden vastgelegd #hoe hoger dit wordt, hoe langzamer de videoverwerking

breedte 640 #Dit verandert de breedte van de weergegeven afbeelding

hoogte 480 #Dit verandert de hoogte van de weergegeven afbeelding

##################

#e-mailen van video-instellingen in …/motion.conf

##################

#verwijder de "; " voor de regel, de puntkomma geeft commentaar op de regel uit

on_event_start python /home/pi/background/motionalert.py %f

on_movie_end python /home/pi/background/motionvid.py %f

##################

#astectics

##################

#keuzes beschreven in het bestand

output_pictures location_motion_style

##################

#dan veranderen

sudo nano /etc/default/motion

#zeggen

start_motion_daemon=ja

#laatste, start de B**** up

sudo service beweging starten

#u kunt de opdracht wijzigen in "stop" of "restart"

Stap 5: Video's e-mailen vanuit beweging bij detectie

Video's e-mailen vanuit beweging bij detectie
Video's e-mailen vanuit beweging bij detectie

E-mail wanneer beweging wordt gedetecteerd:

#start thuis

dircd ~

#create motion alert python script

sudo nano /home/pi/background/motionalert.py

#schrijven

smtplib importeren

van datetime import datetime

van e-mail. MIMEMultipart import MIMEMultipart

van e-mail. MIMEText import MIMEText

fromaddr = "UWADRES"

toaddr = "ONTVANGSTADRES"

msg = MIMEMultipart()

msg['Van'] = vanaddr

msg['Naar'] = paddr

msg['Subject'] = "Beweging gedetecteerd"

body = 'Er is een beweging gedetecteerd.\nTijd: %s' % str(datetime.now())

msg.attach(MIMEText(body, 'plain'))

server = smtplib. SMTP('smtp.gmail.com', 587)

server.starttls()

server.login(fromaddr, "UWWACHTWOORD")

tekst = bericht.as_string()

server.sendmail (fromaddr, toaddr, tekst)

server.quit()

E-mail Video van beweging wanneer video is opgeslagen:

#begin bij homedircd ~

#create motion video python scriptsudo nano /home/pi/background/motionvid.py

smtplib importeren

van e-mail. MIMEMultipart import MIMEMultipart

van e-mail. MIMEText import MIMEText

van e-mail. MIMEBase import MIMEBase

van e-mailimport-encoders

fromaddr = "UW E-MAIL"

toaddr = "EMAILADRES DAT U NAAR VERZENDT"

msg = MIMEMultipart()

msg['Van'] = vanaddr

msg['Naar'] = paddr

msg['Subject'] = "Bewegingscamera geactiveerd"

body = "Video van bewegingsdetectie"

msg.attach(MIMEText(body, 'plain'))

importeer os

rootpath = '/var/lib/motion'

filelist = [os.path.join(rootpath, f) voor f in os.listdir(rootpath)]

bestandslijst = [f voor f in bestandslijst als os.path.isfile(f)]

nieuwste = max(bestandslijst, key=lambda x: os.stat(x).st_mtime)

bestandsnaam = nieuwste

importeer os

rootpath = '/var/lib/motion'

filelist = [os.path.join(rootpath, f) voor f in os.listdir(rootpath)]

bestandslijst = [f voor f in bestandslijst als os.path.isfile(f)]

nieuwste = max(bestandslijst, key=lambda x: os.stat(x).st_mtime)

bijlage = open(nieuwste, "rb")

part = MIMEBase('applicatie', 'octet-stream')

part.set_payload((bijlage).read())

encoders.encode_base64(deel)

part.add_header('Content-Disposition', "attachment; bestandsnaam= %s" % bestandsnaam)

msg.attach(deel)

server = smtplib. SMTP('smtp.gmail.com', 587)

server.starttls()

server.login(fromaddr, "UW WACHTWOORD")

tekst = msg.as_string()

server.sendmail (fromaddr, toaddr, tekst)

server.quit()

Stap 6: probleemoplossing en bronnen

Problemen oplossen en bronnen
Problemen oplossen en bronnen

Probleemoplossen:

Omdat dit project meerdere fasen kent, zijn er meerdere punten waarop het mis kan gaan. Hieronder vindt u enkele van de mogelijke fouten die kunnen optreden en hoe u deze kunt oplossen.

  • Bij het instellen van je pi om je het huidige IP-adres te e-mailen, is het cruciaal om het rc.local-bestand te bewerken zoals eerder getoond, omdat dit een kleine vertraging mogelijk maakt voordat het programma wordt geactiveerd na het opnieuw opstarten. Anders is de pi nog niet verbonden met wifi en wordt de e-mail niet verzonden.
  • Zorg er bij het bewerken van het motion.conf-bestand voor dat u de puntkomma's voor bepaalde parameters verwijdert. De puntkomma onderdrukt een bepaalde actie, anders wordt de wijziging niet doorgevoerd.
  • Het motion.conf-bestand is zeer goed georganiseerd en gedetailleerd. Voel je vrij om de instellingen naar wens te wijzigen, maar begrijp dat ze het succes van het motion capture-systeem kunnen beïnvloeden.
  • Na het instellen van de e-mailwaarschuwing en e-mailvideo-opties, is het belangrijk op te merken dat de e-mail van de bewegingsdetectievideo iets langer duurt dan het verzenden van de eerste waarschuwings-e-mail. Dit komt omdat de video een paar seconden eindigt nadat er geen beweging meer is gedetecteerd, en omdat de e-mailbijlage groot genoeg kan zijn om een paar minuten nodig te hebben om te ontvangen. In sommige gevallen, als beweging gedurende een zeer lange tijd wordt volgehouden, kan het te groot zijn om überhaupt te verzenden. Daarom is het altijd een goed idee om de livestream te controleren na ontvangst van de eerste waarschuwingsmail.

Waarom beweging?:

Toen we voor het eerst aan dit project begonnen, hebben we verschillende bronnen overwogen. Eerst hebben we overwogen om de PiCam te gebruiken, een camera-eenheid die speciaal is gebouwd voor de Raspberry Pi. De PiCam is zeker een capabel apparaat en heeft veel toepassingen, maar het is beperkt tot het gebruik van programma's die er speciaal voor zijn ontworpen en is relatief duur in vergelijking met goedkope multifunctionele webcams. Om dit project toegankelijk te maken voor een groter publiek, hebben we daarom besloten om een gewone USB-webcam te gebruiken. Het volgende probleem was welke software te gebruiken. We dachten aanvankelijk aan OpenCV, gratis software die veel verschillende soorten Computer Vision- en beeldvormingsprojecten mogelijk maakt. Een van de problemen hier is dat OpenCV een enorm bestand is dat veel geheugen in beslag neemt en lang moet worden ingesteld. De opstelling heeft ook meerdere fasen, waardoor er nog meer ruimte is voor fouten. We ontdekten dat Motion voor ons specifieke project eenvoudiger was in te stellen en aan het werk te krijgen, maar veel robuuster in de uitvoering ervan.

bronnen

Codebronnen:

www.techradar.com/how-to/computing/how-to-b…

pimylifeup.com/raspberry-pi-webcam-server/

www.pyimagesearch.com/2015/06/01/home-surve…

naelshiab.com/tutorial-send-email-python/

www.raspberrypi.org/documentation/linux/us…

learn.adafruit.com/adafruits-raspberry-pi-…

learn.adafruit.com/adafruits-raspberry-pi-…

pinout.xyz/pinout/i2c

Fotocredits:

SSH Slak:

Mail-logo:

Logitech-webcam:

SSH-venster: