89 lines
2.3 KiB
Python
89 lines
2.3 KiB
Python
import RPi.GPIO as GPIO #Used to Import the LED
|
|
import time #Used to allow wait times
|
|
from picamera import PiCamera #Used to import the Camera
|
|
from gpiozero import MotionSensor #Used to import the MotionSensor
|
|
from datetime import datetime
|
|
from subprocess import call
|
|
import os
|
|
|
|
pir = MotionSensor(4)
|
|
camera = PiCamera() #Camera Initialization
|
|
GPIO.setwarnings(False)
|
|
GPIO.setmode(GPIO.BCM) #Setting the GPIO Mode
|
|
GPIO.setup(22, GPIO.OUT) #LED Flash Output
|
|
GPIO.setup(27, GPIO.OUT) #LED indicator output
|
|
|
|
cwd = os.getcwd() #Sets the Current Working Directory
|
|
|
|
|
|
|
|
|
|
def bugmotion():
|
|
GPIO.output(22, 0) #Sets light off
|
|
|
|
print("\nProgram Running!")
|
|
for i in range(3):
|
|
time.sleep(1)
|
|
GPIO.output(27, 1)
|
|
time.sleep(1)
|
|
GPIO.output(27, 0)
|
|
if i == 3:
|
|
break
|
|
|
|
|
|
#To stabilize sensor and Camera
|
|
time.sleep(2)
|
|
while True:
|
|
|
|
#Waits for Motion from PIR Sensor
|
|
pir.wait_for_motion()
|
|
|
|
print("\nBug detected")
|
|
|
|
#Turns on the LED Flash
|
|
GPIO.output(22, 1)
|
|
|
|
#Sets Img path and filename, Saves to Working directory of Script
|
|
# Grab the current time
|
|
filePath = cwd + "/Pictures/"
|
|
currentTime = datetime.now()
|
|
picTime = currentTime.strftime("%Y-%m-%d-%H-%M-%S")
|
|
picName = "Capture-" + picTime + '.jpg'
|
|
completeFilePath = filePath + picName
|
|
#file_name = cwd + "/Pictures/Capture_" + str(time.time()) + ".jpg"
|
|
print("\nFile Name is: " + completeFilePath)
|
|
|
|
|
|
#Used to wait for 0.1 Seconds for Camera to be ready
|
|
time.sleep(0.1)
|
|
|
|
#Saves File
|
|
camera.capture(completeFilePath)
|
|
|
|
#Sets PIR Sensor back to waiting for motion
|
|
print("\nWaiting for no Motion!")
|
|
pir.wait_for_no_motion()
|
|
|
|
#Used to turn off the LED after 0.2 Secs
|
|
time.sleep(0.2)
|
|
|
|
#Used to turn off the LED
|
|
GPIO.output(22, 0)
|
|
|
|
#Used to stabilize Sensor and allow the Camera to refocus
|
|
time.sleep(2)
|
|
print("\nSystem Ready!")
|
|
|
|
def exit_handler():
|
|
print('Program Shutting Down!')
|
|
GPIO.output(22, 0) # turns off LED
|
|
|
|
bugmotion() #Starts Program
|
|
atexit.register(exit_handler)
|
|
|
|
|
|
|
|
|
|
|
|
|