Tag Archives: ircam

Handheld Infra Red Camera code

Motion detect code:

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time

# Set pins to BOARD
GPIO.setmode(GPIO.BOARD)

#PIR setup
#set up PIR pin
PIR_PIN = 15
#set PIR pin as input
GPIO.setup(PIR_PIN, GPIO.IN)

#relay setup
# Set relay pin
GPIO_LIGHT_ON = 11
# Set relay pin as output
GPIO.setup(GPIO_LIGHT_ON,GPIO.OUT)

def MOTION(PIR_PIN):
				GPIO.output (GPIO_LIGHT_ON,1)
				print "light on"
				time.sleep(10)
				while GPIO.input(PIR_PIN)==1:
					time.sleep(2)
					GPIO.output (GPIO_LIGHT_ON,0) 

print "PIR Module test press Ctrl+C to exit"
time.sleep(2)
print "ready"

try:
	GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION)
	while 1:
		time.sleep(100)
except KeyboardInterrupt:
				print "quit"
				GPIO.cleanup()

Main button control code:

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import os
import sys
from time import sleep
import subprocess as sp

# Set pins to BOARD
GPIO.setmode(GPIO.BOARD)

#set up BUTTON 1 - RED
BUTTON_RED_PIN = 37
#set PIR pin as input
GPIO.setup(BUTTON_RED_PIN, GPIO.IN)

#set up BUTTON 2 - GREEN
BUTTON_GREEN_PIN = 31
#set PIR pin as input
GPIO.setup(BUTTON_GREEN_PIN, GPIO.IN)

#set up BUTTON 3 - YELLOW
BUTTON_YELLOW_PIN = 33
#set PIR pin as input
GPIO.setup(BUTTON_YELLOW_PIN, GPIO.IN)

#set up BUTTON 4 - BLUE
BUTTON_BLUE_PIN = 32
#set PIR pin as input
GPIO.setup(BUTTON_BLUE_PIN, GPIO.IN)

#set up BUTTON 5 - BLACK
BUTTON_BLACK_PIN = 36
#set PIR pin as input
GPIO.setup(BUTTON_BLACK_PIN, GPIO.IN)

#set up pin 12 for PWM (screen control)
GPIO.setup(12, GPIO.OUT)
#GPIO.PWM(12, 1000)
pwm = GPIO.PWM(12, 1000)
pwm.start(50)

# set record states
rkd_state = 0
rkd_state_blue = 0
rkd_state_black = 0
rkd_state_green = 0

# set filter pins
Motor1A = 16
Motor1B = 13
Motor1E = 7
GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)	

# set up the variables for running motion detect
extProc = 1

def BUTTON_RED(BUTTON_RED_PIN):
				os.system('sudo poweroff')

def BUTTON_GREEN(BUTTON_GREEN_PIN):
				global rkd_state_green
				global extProc
				if rkd_state_green == 0:
					print "Green on"
					os.system('echo "motion_enable on" > /home/pi/pikrellcam/www/FIFO')
					extProc = sp.Popen(['python','motion.py']) # runs motion.py 
					status = sp.Popen.poll(extProc) # status should be 'None'
					rkd_state_green = 1
				elif rkd_state_green == 1:
					print "Green off"
					sp.Popen.terminate(extProc) # closes the process
					status = sp.Popen.poll(extProc) # status should now be something other than 'None' ('1' in my testing)
					os.system('echo "motion_enable off" > /home/pi/pikrellcam/www/FIFO')
					rkd_state_green = 0	
				
def BUTTON_YELLOW(BUTTON_YELLOW_PIN):
				global rkd_state
				if rkd_state == 0:
					os.system('echo "record on" > /home/pi/pikrellcam/www/FIFO')
					rkd_state = 1
				elif rkd_state == 1:
					os.system('echo "record off" > /home/pi/pikrellcam/www/FIFO')
					rkd_state = 0
					
def BUTTON_BLUE(BUTTON_BLUE_PIN):
				global rkd_state_blue
				if rkd_state_blue == 0:
					pwm.ChangeDutyCycle(0)
					rkd_state_blue = 1
				elif rkd_state_blue == 1:
					pwm.ChangeDutyCycle(100)
					rkd_state_blue = 0

def BUTTON_BLACK(BUTTON_BLACK_PIN):
				global rkd_state_black
				if rkd_state_black == 0:
					GPIO.output(Motor1A,GPIO.LOW)
					GPIO.output(Motor1B,GPIO.HIGH)
					GPIO.output(Motor1E,GPIO.HIGH)
					sleep(0.1)
					GPIO.output(Motor1E,GPIO.LOW)
					rkd_state_black = 1
				elif rkd_state_black == 1:
					GPIO.output(Motor1A,GPIO.HIGH)
					GPIO.output(Motor1B,GPIO.LOW)
					GPIO.output(Motor1E,GPIO.HIGH)
					sleep(0.1)
					GPIO.output(Motor1E,GPIO.LOW)
					rkd_state_black = 0		
try:
				GPIO.add_event_detect(BUTTON_RED_PIN, GPIO.RISING, callback=BUTTON_RED, bouncetime=300)
				GPIO.add_event_detect(BUTTON_GREEN_PIN, GPIO.RISING, callback=BUTTON_GREEN, bouncetime=300)
				GPIO.add_event_detect(BUTTON_YELLOW_PIN, GPIO.RISING, callback=BUTTON_YELLOW, bouncetime=300)
				GPIO.add_event_detect(BUTTON_BLUE_PIN, GPIO.RISING, callback=BUTTON_BLUE, bouncetime=300)
				GPIO.add_event_detect(BUTTON_BLACK_PIN, GPIO.RISING, callback=BUTTON_BLACK, bouncetime=300)
				while 1:
					time.sleep(100)
except KeyboardInterrupt:
				print "quit"
				GPIO.cleanup()