Spisu treści:
- Krok 1: Konfiguracja Pi
- Krok 2: SSH do swojego PI
- Krok 3: Wyślij e-mailem swój adres IP podczas rozruchu
- Krok 4: Instalacja i konfiguracja Motion
- Krok 5: Wysyłanie filmów e-mailem z ruchu po wykryciu
- Krok 6: Rozwiązywanie problemów i źródła
Wideo: Kamera do wykrywania ruchu Raspberry Pi 3 z transmisją na żywo: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
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
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 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
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
#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
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:
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:
ESP32-CAM Budowanie własnego samochodu robota z transmisją wideo na żywo: 4 kroki
ESP32-CAM Budowanie własnego samochodu-robota z transmisją wideo na żywo: Chodzi o to, aby opisany tutaj samochód-robot był jak najtańszy. Dlatego mam nadzieję, że ze szczegółowymi instrukcjami i wybranymi podzespołami do taniego modelu dotrę do dużej grupy docelowej. Chciałbym przedstawić Wam mój pomysł na samochód-robot
DIY System alarmowy SMS do wykrywania ruchu: 5 kroków (ze zdjęciami)
System alarmowy SMS z detekcją ruchu DIY: W tym projekcie połączę tani czujnik ruchu PIR z modułem GSM TC35, aby zbudować system alarmowy, który wyśle do Ciebie „ALARM WŁAMANIA”. SMS, gdy ktoś próbuje ukraść Twoje rzeczy. Zacznijmy
Jak zbudować system wykrywania ruchu za pomocą Arduino: 7 kroków
Jak zbudować system wykrywania ruchu za pomocą Arduino: Zbuduj licznik produkcji ruchu i obecności za pomocą Feather HUZZAH zaprogramowanego za pomocą Arduino i zasilanego przez Ubidots. Skuteczne fizyczne wykrywanie ruchu i obecności w inteligentnych domach i inteligentnej produkcji może być bardzo przydatne w aplikacjach od
Transmisja na żywo/nagrywanie wideo na OBS: 5 kroków
Przesyłanie strumieniowe na żywo / nagrywanie wideo na OBS: Ta instrukcja uczy, jak przesyłać strumieniowo lub nagrywać wideo na żywo bezpośrednio z ekranu komputera. Istnieje wiele sposobów na transmisję na żywo i jeszcze więcej sposobów nagrywania, ale ten przewodnik skupi się na platformie streamingowej, OBS. Każdy rozsądnie nowoczesny komp
Analizator wzorców ruchu wykorzystujący wykrywanie obiektów na żywo: 11 kroków (ze zdjęciami)
Analizator wzorców ruchu wykorzystujący wykrywanie obiektów na żywo: W dzisiejszym świecie sygnalizacja świetlna jest niezbędna dla bezpiecznej drogi. Jednak wiele razy sygnalizacja świetlna może być denerwująca w sytuacjach, gdy ktoś zbliża się do światła, gdy zmienia ono kolor na czerwony. To marnuje czas, zwłaszcza jeśli światło jest pr