[PROJEKT] Wyzwalanie migawki ruchem – Raspberry Pi oraz czujnik ruchu PIR
Ostatnim elementem powinno być podłączenie oraz odpowiednia konfiguracja kamery Raspberry Pi HD V2 8MP.
Po zalogowaniu do Raspberry Pi przy pomocy terminala (np. Putty) warto zaktualizować system do najnowszej wersji (może to potrwać kilka minut). Należy zrobić to komendami:
sudo apt-get update sudo apt-get dist-upgrade
Przedstawię teraz prosty program, który po wykryciu ruchu zrobi zdjęcie oraz zasygnalizuje to poprzez zapalenie diody LED. Kod programu został napisany w języku Python. Najpierw należy stworzyć plik o nazwie program.py. Służy do tego komenda:
nano program.py
Pojawi się okno edytora:
Rys 6. Okno edytora
Teraz należy przekopiować poniższy kod. Aby wkleić go w okno edytora należy ustawić kursor na początku pliku, a następnie kliknąć na okno konsoli prawym przyciskiem myszy.
import RPi.GPIO as GPIO import picamera import time camera = picamera.PiCamera() GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.IN) #Czujnik Ruchu GPIO.setup(3, GPIO.OUT) #Dioda LED j=0; while True: i=GPIO.input(11) if i==0: #Gdy czujnik nie wykryje ruchu print "Brak ruchu",i GPIO.output(3, 0) #Turn OFF LED time.sleep(0.5) elif i==1: #Gdy czujnik wykryje ruch print "Wykryto ruch",i GPIO.output(3, 1) #Zapalanie diody LED j=j+1 camera.capture('image%03d.jpg'%j) #zrobienie zdjecia time.sleep(0.5)
Przejdę teraz do analizy programu. Najpierw należy zaimportować biblioteki do obsługi portów GPIO, kamery oraz bibliotekę obsługującą czas:
import RPi.GPIO as GPIO import picamera import time
Kolejnym krokiem będzie zdefiniowane obiektu camera, ustawień portów GPIO oraz deklaracje zmiennych:
camera = picamera.PiCamera() GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.IN) #Czujnik Ruchu GPIO.setup(3, GPIO.OUT) #Dioda LED j=0;
Następnie w pętli nieskończonej umieszczony jest warunek if. Jeżeli na pinie 11 pojawi się stan wysoki, zapalona zostaje dioda LED oraz robione jest zdjęcie. W przeciwnym wypadku zostanie wyświetlony komunikat „Brak ruchu”, a dioda LED zostanie zgaszona. Zdjęcia są kolejno numerowane.
while True: i=GPIO.input(11) if i==0: #Gdy czujnik nie wykryje ruchu print "Brak ruchu",i GPIO.output(3, 0) #Turn OFF LED time.sleep(0.5) elif i==1: #Gdy czujnik wykryje ruch print "Wykryto ruch",i GPIO.output(3, 1) #Zapalanie diody LED j=j+1 camera.capture('image%03d.jpg'%j) #zrobienie zdjecia time.sleep(0.5)
Działanie programu zostało zaprezentowane na poniższym materiale wideo:
Źródła:
- https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.png