Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
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
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 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
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
#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
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
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: