Spisu treści:

Detektor ludzi Raspberry Pi + kamera + kolba: 6 kroków
Detektor ludzi Raspberry Pi + kamera + kolba: 6 kroków

Wideo: Detektor ludzi Raspberry Pi + kamera + kolba: 6 kroków

Wideo: Detektor ludzi Raspberry Pi + kamera + kolba: 6 kroków
Wideo: NAJDROŻSZY LAPTOP ŚWIATA / UMYJMY BRUDASA! #LIVE 81 2024, Listopad
Anonim
Detektor ludzi Raspberry Pi + kamera + kolba
Detektor ludzi Raspberry Pi + kamera + kolba

W tym samouczku omówię kolejne kroki mojego projektu Raspberry Pi IoT -- Wykorzystanie czujnika ruchu PIR, modułu Raspberry Camera do zbudowania prostego urządzenia IoT zabezpieczającego oraz uzyskanie dostępu do dziennika wykrywania za pomocą Flask.

Krok 1: Czujnik ruchu PIR

Czujnik ruchu PIR
Czujnik ruchu PIR

PIR to skrót od „Passive Infrared”, a ten czujnik ruchu wychwytuje ruchy, obserwując widok w podczerwieni i wychwytując zmiany w podczerwieni. Dlatego, gdy liść i człowiek mijają czujnik, wykrywa on tylko człowieka, ponieważ my jako ludzie wytwarzamy ciepło, a tym samym emitujemy promień podczerwony. Dlatego czujnik ruchu jest dobrym wyborem do wykrywania ruchów człowieka.

Krok 2: Konfiguracja czujnika ruchu PIR

Konfiguracja czujnika ruchu PIR
Konfiguracja czujnika ruchu PIR

Istnieją trzy piny dla czujnika ruchu PIR, zasilania, wyjścia i uziemienia. Pod pinami widać etykiety, VCC dla zasilania, Out dla wyjścia i GND dla masy. Gdy czujnik wykryje ruch, pin wyjściowy wyśle sygnał HIGH do pinu Raspberry Pi, z którym łączysz czujnik. W przypadku pinu zasilania chcesz się upewnić, że łączy się z pinem 5 V na Raspberry Pi w celu zasilania. W moim projekcie wybieram połączenie pinu wyjściowego z Pin11 na Pi.

Po podłączeniu wszystkiego możesz wysłać SMS-a do czujnika, uruchamiając skrypty takie jak ten poniżej:

importuj RPi. GPIO jako GPIOimport time GPIO.cleanup() GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Odczytaj dane wyjściowe z czujnika ruchu PIR na pinie 11, podczas gdy True: i =GPIO.input(11) if i==0: #Gdy sygnał wyjściowy z czujnika ruchu jest LOW print "Brak detekcji", i time.sleep(0.1) elif i==1: #Gdy sygnał wyjściowy z czujnika ruchu jest HIGH print " Wykryto ruch", i time.sleep(0.1)

Uruchom skrypt na swoim Pi i połóż ręce lub swojego przyjaciela przed czujnikiem, aby sprawdzić, czy czujnik wykrywa ruch.

Krok 3: Moduł i konfiguracja kamery Raspberry Pi

Moduł i konfiguracja kamery Raspberry Pi
Moduł i konfiguracja kamery Raspberry Pi

Człowiek emituje promieniowanie podczerwone z powodu ciepła, podobnie jak obiekty o wysokiej temperaturze. Dlatego też zwierzęta lub gorące przedmioty mogą również wyzwolić czujnik ruchu. Potrzebujemy sposobu, aby sprawdzić, czy wykrycie jest prawidłowe. Istnieje wiele sposobów implementacji, ale w moim projekcie zdecydowałem się użyć modułu kamery Raspberry Pi do robienia zdjęć, gdy czujnik ruchu wykryje ruch.

Aby użyć modułu kamery, najpierw upewnij się, że styki są podłączone do gniazda kamery w Pi. Rodzaj

sudo raspi-config

na swoim Pi, aby otworzyć interfejs konfiguracyjny i włączyć kamerę w „opcjach interfejsu”. Po ponownym uruchomieniu możesz sprawdzić, czy Pi jest rzeczywiście podłączony do kamery, wpisując

vcgencmd get_camera

i pokaże ci status. Ostatnim krokiem jest zainstalowanie modułu picamera, wpisując

pip zainstaluj picamera

Po wszystkich ustawieniach możesz przetestować kamerę, uruchamiając skrypty takie jak ten poniżej:

z picamera importuj PiCamera

od czasu importuj uśpij kamera = PiCamera() camera.start_preview() uśpij(2) camera.capture('image.jpg') camera.stop_preview()

Obraz zostanie zapisany jako „image.jpg” w katalogu takim samym, jak ten w skrypcie aparatu. Zauważ, że chcesz się upewnić, że jest tam 'sleep(2)', a liczba jest większa niż 2, aby kamera miała wystarczająco dużo czasu na dostosowanie warunków oświetlenia.

Krok 4: Połącz czujnik ruchu PIR i moduł kamery

Ideą mojego projektu jest to, że czujnik ruchu i kamera będą zwrócone w tym samym kierunku. Za każdym razem, gdy czujnik ruchu wykryje ruch, kamera zrobi zdjęcie, abyśmy mogli później sprawdzić, co powoduje ruchy.

Scenariusz:

importuj RPi. GPIO jako GPIOz datetime import datetime import czasu z picamera import PiCamera

GPIO.oczyszczanie()

GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Odczytaj wyjście z komunikatu czujnika ruchu PIR = 'start' counter = 0 log_f = open('static/log.txt', 'w') log_f.close()

kamera = PiCamera()

pic_name = 0

kamera.start_podgląd()

czas.sen(2)

podczas gdy prawda:

i=GPIO.input(11) if i==0: #Gdy sygnał wyjściowy z czujnika ruchu jest NISKI jeśli licznik > 0: end = str(datetime.now()) log_f = open('static/log.txt', ' a') wiadomość = wiadomość + '; end at ' + end + '\n' print(message) log_f.write(message) log_f.close() final = 'static/' + str(pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture(final) counter = 0 print "Brak intruzów", i time.sleep(0.1) elif i==1: #Gdy wyjście z czujnika ruchu jest HIGH if counter == 0: current = str(datetime.now()) message = 'Wykryto człowieka:' + 'start od ' + bieżący licznik = licznik + 1 print "Wykryto intruza", i time.sleep(0.1) camera.stop_preview()

Katalogi dla 'log.txt' i obrazków są 'statyczne', co jest niezbędne do działania Flask.

Krok 5: Konfiguracja dla kolby

Konfiguracja dla kolby
Konfiguracja dla kolby

Flask to mikro web framework napisany w Pythonie i oparty na zestawie narzędzi Werkzeug i silniku szablonów Jinja2. Jest łatwy do wdrożenia i utrzymania. Aby uzyskać lepszy tutorial do Flask, polecam ten link: Flask Mega Tutorial

Główny skrypt, „routes.py”, mojego projektu:

z folderu app import appFlaskz kolby import render_template, przekieruj import os

APP_ROOT = os.path.dirname(os.path.abspath(_file_)) # odnosi się do application_top

APP_STATIC = os.path.join (APP_ROOT, "statyczny")

@appFlask.route('/', method=['GET', 'POST'])

def view(): log_f = open(os.path.join(APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines() final_logs = do logowania logów: final_logs.append(log. strip()) name = str(len(final_logs)-1)+'.jpg' return render_template('view.html', logs=final_logs, filename=name)

Plik HTML „view.html” znajduje się na górnym pasku (ponieważ kiedy kopiuję tutaj kody HTML, w rzeczywistości zmienia się on w FORMAT HTML…)

A struktura projektu powinna wyglądać jak poniżej (ale oczywiście plików jest więcej niż te):

iotproject\ appfolder\ route.py szablony\ view.html static\ log.txt 0-j.webp

Krok 6: Wynik

Wynik
Wynik

W przypadku tej implementacji, po poprawnym skonfigurowaniu wszystkiego, powinieneś mieć dostęp do swojego Raspberry Pi, wpisując jego adres IP w przeglądarce, a wynik powinien wyglądać jak obrazek na górnym pasku na tym etapie.