LinkedIn YouTube Facebook
Szukaj

Wstecz
SoM / SBC

[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.

 Ten punkt został szczegółowo opisany w artykule p.t. [PROJEKT] Raspberry PI 3 oraz kamera 8 Mpix – pierwsze kroki.

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:

  1. https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.png
Autor: Patryk Mądry