Spisu treści:

Kamera do wykrywania ruchu Raspberry Pi 3 z transmisją na żywo: 6 kroków
Kamera do wykrywania ruchu Raspberry Pi 3 z transmisją na żywo: 6 kroków

Wideo: Kamera do wykrywania ruchu Raspberry Pi 3 z transmisją na żywo: 6 kroków

Wideo: Kamera do wykrywania ruchu Raspberry Pi 3 z transmisją na żywo: 6 kroków
Wideo: Donald Tusk: Majonez? Lepiej łączyć niż dzielić. 2024, Listopad
Anonim
Kamera do wykrywania ruchu Raspberry Pi 3 z transmisją na żywo
Kamera do wykrywania ruchu Raspberry Pi 3 z transmisją na żywo

Wstęp

W tym projekcie dowiesz się, jak zbudować kamerę do wykrywania ruchu, której będziesz mógł używać jako fotopułapki, niani/monitoringu dla zwierząt, kamery bezpieczeństwa i wielu innych.

Ten projekt jest podzielony na kilka kroków:

  • Wstęp
  • Konfigurowanie Pi
  • SSH do twojego Pi
  • Wysyłanie adresu IP podczas uruchamiania
  • Instalacja i konfiguracja Motion
  • Wysyłanie filmów wideo z ruchu e-mailem po wykryciu
  • Rozwiązywanie problemów i źródła

Co będziesz potrzebował:

  • Model Raspberry Pi 3 b ~ ~ 35 USD
  • Karta Micro SD 8 GB ~ ~ 10 USD
  • Kamera internetowa USB ~~20 USD (w tym projekcie wykorzystano kamerę internetową Logitech HD c270)
  • kabel micro USB ~ ~ 5 USD
  • albo:
  • akumulator 5 V (bateria podtrzymująca telefon), dzięki czemu Twój projekt jest bezprzewodowy ~~ 20 USD
  • lub
  • adapter ścienny USB ~ ~ 5 USD
  • Połączenie Wi-Fi

Do czego będziesz potrzebować dostępu do konfiguracji:

  • Monitor
  • Mysz i klawiatura
  • Komputer z gniazdem na kartę SD
  • Konwerter karty Micro SD na SD (powinien być dostarczony z kartą micro SD)

Krok 1: Konfiguracja Pi

Konfiguracja Twojego Pi
Konfiguracja Twojego Pi

Teraz skonfigurujmy Twoje Pi

Aby rozpocząć, upewnij się, że masz wszystkie wymagane elementy z ostatniego kroku. Następnie wykonaj kroki na stronie Raspberry Pi dotyczące instalowania Raspbian Jessie na karcie Microsd, które można znaleźć tutaj.

Po zainstalowaniu Raspbian na swoim Pi, nadszedł czas, aby skonfigurować podstawowe funkcje.

Wi-Fi

Pierwszym krokiem do pełnego wykorzystania Pi jest połączenie go z Internetem. Być może wykonałeś już ten krok, lokalizując symbol Wi-Fi w prawym górnym rogu głównego ekranu Pi i logując się tam, lub robiąc to samo przed zainstalowaniem Raspbian w ostatnim kroku. Jeśli nie możesz zalogować się do sieci Wi-Fi z interfejsu pulpitu swojego Pi, możesz postępować zgodnie z instrukcjami tutaj, aby skonfigurować Wi-Fi za pomocą wiersza poleceń.

SSH

Jednym z bardzo przydatnych narzędzi dostępnych podczas korzystania z Pi jest opcja wydawania poleceń Twojemu Pi w tak zwanej konfiguracji bezgłowej. Używając Secure SHell lub SSH, możesz zdalnie sterować swoim Pi z komputera. Dzięki tej metodzie wszystko, czego będziesz potrzebować, aby edytować swoje Pi, to źródło zasilania, aby było włączone, nigdy więcej monitora i klawiatury!

Krok 2: SSH do swojego PI

SSH w swoim PI
SSH w swoim PI
SSH w swoim PI
SSH w swoim PI

SSH do Twojego Raspberry Pi jest łatwe i bardzo przydatne, ponieważ proces ten pozwala na wydawanie poleceń Twojemu Pi z dowolnego komputera z jedynie połączeniem Wi-Fi.

Aby SSH do swojego Pi, musisz wykonać te 3 proste kroki.

Najpierw musisz włączyć SSH na swoim Pi. Aby to zrobić, otwórz okno poleceń w swoim Pi i wpisz:

sudo raspi-config

To polecenie pozwala wejść do menu konfiguracyjnego. stamtąd będziesz chciał użyć klawiszy strzałek, tabulatora i enter, aby najpierw przejść do opcji interfejsu, a następnie włączyć SSH, a także kamerę, a następnie wyjść i ponownie uruchomić pi.

Następnie musisz znaleźć adres IP swojego Pi. W terminalu poleceń wpisz:

sudo ifconfig

Twój adres IP powinien znajdować się w wyskakującej sekcji wlan0, tuż pod link encap:ethernet. Na powyższym obrazku demonstracyjnym adres IP to 192.168.1.10.

Na koniec musisz otworzyć wbudowaną aplikację terminala na komputerze Mac lub znaleźć i postępować zgodnie z instrukcjami dotyczącymi aplikacji ssh innej firmy dla systemu Windows. W aplikacji Terminal wpisz:

ssh pi@TWÓJ ADRES IP

Jeśli nie zmieniłeś hasła w Raspi-config, twoje hasło do wprowadzenia po wyświetleniu monitu będzie domyślnym hasłem: raspberry.

Stamtąd powinieneś już iść!

Krok 3: Wyślij e-mailem swój adres IP podczas rozruchu

Wyślij e-mailem swój adres IP podczas rozruchu
Wyślij e-mailem swój adres IP podczas rozruchu

W tym kroku skupimy się na tym, jak uzyskać dostęp do Raspberry Pi, niezależnie od sieci, w której się znajdujesz. W zależności od sieci zmienia się adres IP Pi. A jeśli nie masz konfiguracji monitora, musisz połączyć się z Pi, aby uruchomić protokół wykrywania ruchu, zmienić preferencje ruchu lub uzyskać dostęp do czegokolwiek innego na urządzeniu. Aby rozwiązać ten problem, napiszemy skrypt w Pythonie, który po uruchomieniu wyśle nam e-mail z aktualnym adresem IP IP Pi. Skrypt Pythona jest następujący i był przechowywany w katalogu oznaczonym "background".

#rozpocznij w katalogu domowym

cd ~

#utwórz folder w tle

tło mkdir

#utwórz skrypt Pythona

sudo nano emailip.py

#wpisz w emailip.py

importuj gniazdo

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

połącz(("8.8.8.8", 80))

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

importuj smtplib

z e-mail. MIMEMultipart import MIMEMultipart

z e-mail. MIMEText import MIMEText

fromaddr = "TWÓJ ADRES"

toaddr = "ADRES ODBIORU"

msg = MIMEMultipart()

msg['Od'] = fromaddr

msg['Do'] = toaddr

msg['Temat'] = "Adres IP"

body = xmsg.attach(MIMEText(ciało, 'zwykły'))

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

serwer.starttls()

server.login(fromaddr, "TWOJE HASŁO")

tekst = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

serwer.zakończ()

#to robi to po ponownym uruchomieniu

sudo nano /etc/rc.local

#wejdź w /etc/rc.local

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

śpij 3

Gotowe

_IP=$(nazwa hosta -I) || prawda

if ["$_IP"]; następnie

printf "Mój adres IP to %s\n" "$_IP"

python /home/pi/Tło/emailip.py &

fi

wyjście 0

#i jesteś skończony

Krok 4: Instalacja i konfiguracja Motion

Instalowanie i konfigurowanie ruchu
Instalowanie i konfigurowanie ruchu

#aktualizacja pi

aktualizacja sudo apt-get

sudo apt-get upgrade

#pobieranie

sudo apt-get install motion

#teraz edytuj ten plik z następującymi zmianami

sudo nano /etc/motion/motion.conf

#aby ustawić standard dla tego samouczka, zmień

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

demon włączony

stream_localhost wyłączony

webcontrol_localhost wyłączony

ffmpeg_output_movies włączone

katalog_docelowy /var/lib/motion

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

#lokalne opcje przesyłania strumieniowego w przeglądarce internetowej

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

stream_maxrate 100 #Umożliwi to przesyłanie strumieniowe w czasie rzeczywistym, ale wymaga większej przepustowości i zasobów

framerate 60 #Umożliwi to przechwycenie 60 klatek na sekundę #im wyższa wartość, tym wolniejsze przetwarzanie wideo

szerokość 640 #Zmienia to szerokość wyświetlanego obrazu

wysokość 480 #Zmienia to wysokość wyświetlanego obrazu

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

#wysyłanie e-mailem ustawień wideo w …/motion.conf

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

#delete "; " przed linią, średnik komentuje linię

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

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

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

#astetyka

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

#wybory opisane w pliku

output_pictures zlokalizować_ruch_style

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

#to zmień

sudo nano /etc/default/motion

#powiedzieć

start_motion_daemon=tak

#ostatni, uruchom B**** w górę

uruchomienie ruchu usługi sudo

#możesz zmienić polecenie na "stop" lub "restart"

Krok 5: Wysyłanie filmów e-mailem z ruchu po wykryciu

Wysyłanie filmów e-mailem z ruchu po wykryciu
Wysyłanie filmów e-mailem z ruchu po wykryciu

E-mail po wykryciu ruchu:

#zacznij w domu

katalog ~

#utwórz skrypt python alertu ruchu

sudo nano /home/pi/tło/motionalert.py

#pisać

importuj smtplib

from datetime import datetime

z e-mail. MIMEMultipart import MIMEMultipart

z e-mail. MIMEText import MIMEText

fromaddr = "TWOJADRES"

toaddr = "ADRES ODBIORU"

msg = MIMEMultipart()

msg['Od'] = fromaddr

msg['Do'] = toaddr

msg['Temat'] = "Wykryto ruch"

body = 'Wykryto ruch.\nCzas: %s' % str(datetime.now())

msg.attach(MIMEText(ciało, 'zwykły'))

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

serwer.starttls()

server.login(fromaddr, "TWOJE HASŁO")

tekst = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

serwer.zakończ()

E-mail Wideo ruchu po zapisaniu wideo:

#zacznij od homedircd ~

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

importuj smtplib

z e-mail. MIMEMultipart import MIMEMultipart

z e-mail. MIMEText import MIMEText

z e-mail. MIMEBase import MIMEBase

z koderów importu poczty e-mail

fromaddr = "TWÓJ E-MAIL"

toaddr = "ADRES E-MAIL, NA KTÓRY WYSYŁASZ"

msg = MIMEMultipart()

msg['Od'] = fromaddr

msg['Do'] = toaddr

msg['Temat'] = "Kamera ruchu aktywowana"

body = „Wideo wykrytego ruchu”

msg.attach(MIMEText(ciało, 'zwykły'))

importuj system

ścieżka główna = '/var/lib/motion'

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

filelist = [f dla f na liście plików, jeśli os.path.isfile(f)]

najnowszy = max(lista plików, klucz=lambda x: os.stat(x).st_mtime)

nazwa pliku = najnowszy

importuj system

ścieżka główna = '/zmienna/lib/ruch'

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

filelist = [f dla f na liście plików, jeśli os.path.isfile(f)]

najnowszy = max(lista plików, klucz=lambda x: os.stat(x).st_mtime)

załącznik = otwórz(najnowsze, "rb")

część = MIMEBase('aplikacja', 'strumień oktetowy')

part.set_payload((załącznik).read())

kodery.encode_base64(część)

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

msg.attach(część)

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

serwer.starttls()

server.login(fromaddr, "TWOJE HASŁO")

tekst = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

serwer.zakończ()

Krok 6: Rozwiązywanie problemów i źródła

Rozwiązywanie problemów i źródła
Rozwiązywanie problemów i źródła

Rozwiązywanie problemów:

Ponieważ ten projekt ma wiele etapów, istnieje kilka punktów, w których coś może pójść nie tak. Poniżej znajdują się niektóre z możliwych błędów, które mogą wystąpić, oraz sposoby ich naprawienia.

  • Podczas konfigurowania pi, aby wysłał Ci swój aktualny adres IP, ważne jest, aby edytować plik rc.local, jak pokazano wcześniej, ponieważ pozwala to na niewielkie opóźnienie przed aktywacją programu po ponownym uruchomieniu. W przeciwnym razie pi nie będzie jeszcze podłączony do Wi-Fi, a wiadomość e-mail nie zostanie wysłana.
  • Podczas edycji pliku motion.conf pamiętaj o usunięciu średników przed niektórymi parametrami. Średnik pomija daną akcję, w przeciwnym razie zmiana nie odniesie skutku.
  • Plik motion.conf jest bardzo dobrze zorganizowany i szczegółowy. Możesz swobodnie zmieniać ustawienia zgodnie z własnymi upodobaniami, ale pamiętaj, że mogą one wpłynąć na sukces systemu przechwytywania ruchu.
  • Po skonfigurowaniu opcji alertu e-mail i wideo przez e-mail, należy pamiętać, że wiadomość e-mail o wykryciu ruchu wideo potrwa nieco dłużej niż wysłanie początkowej wiadomości e-mail z ostrzeżeniem. Dzieje się tak, ponieważ wideo kończy się kilka sekund po tym, jak ruch nie jest już wykrywany, a załącznik wiadomości e-mail może być na tyle duży, że odebranie może wymagać kilku minut. W niektórych przypadkach, jeśli ruch utrzymuje się przez bardzo długi czas, może być zbyt duży, aby w ogóle go wysłać. Z tego powodu zawsze dobrze jest sprawdzić transmisję na żywo po otrzymaniu pierwszego e-maila z ostrzeżeniem.

Dlaczego ruch?:

Rozpoczynając ten projekt po raz pierwszy, rozważaliśmy kilka różnych zasobów. Najpierw rozważaliśmy użycie PiCam, który jest kamerą zbudowaną specjalnie dla raspberry pi. PiCam jest z pewnością wydajnym urządzeniem i ma wiele zastosowań, ale ogranicza się do korzystania z programów specjalnie do niego zaprojektowanych i jest stosunkowo drogi w porównaniu z tanimi kamerami wielofunkcyjnymi. Aby więc udostępnić ten projekt szerszej publiczności, zdecydowaliśmy się na użycie zwykłej kamerki USB. Następnym problemem było to, jakie oprogramowanie należy włączyć. Początkowo rozważaliśmy OpenCV, które jest wolnym oprogramowaniem, które pozwala na wiele różnych rodzajów projektów komputerowych i obrazowania. Jednym z problemów jest to, że OpenCV to ogromny plik, który zajmuje dużo pamięci i długi czas konfiguracji. Konfiguracja ma również wiele etapów, pozostawiając jeszcze więcej miejsca na błędy. Odkryliśmy, że w przypadku naszego konkretnego projektu Motion był prostszy w konfiguracji i uruchomieniu, ale znacznie bardziej niezawodny w realizacji.

Źródła

Źródła kodu:

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

pimylifeup.com/raspberry-pi-serwer-kamery/

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

Kredyty fotograficzne:

Ślimak SSH:

Logo poczty:

Kamera internetowa firmy Logitech:

Okno SSH:

Zalecana: