IOT 첫걸음
개요 :
라즈베리 파이로 거리를 측정해 1미터 미만이면 사진을 찍어 페이스북 페이지로
업로드
거리부분만 수정해 문앞에 설치하면 페북으로 출입자 사진을 남기게 된다.
파이썬 처음 사용해보는데 상당히 마음에 든다.
자바만 하고 처음 C 계열 잡아보는데 나쁘지 않은듯.(PHP 는 하도 오래되어서 기억안남 ;; )
최초 센서와 카메라 사용법은 동영상 참고
라즈베리파이 2 에선 WebOPi 2.7 버전까지는 에러가 있어 정상작동하지 않는다. (삽질 유발자)
노비스로 os 설치하면 패치가 적용되긴 하는데 (희안하게 노드가 늘어나 보이긴 하지만)
나는 이미지로 설치해버렸기 때문에 적용되지 않는듯?
동영상 주의점 - 3.3 볼트로 초음파 측정기 작동안함 , 5볼트로 UCC 세팅후 정상작동
동영상 주의점 2 - 트위터에서 토큰 얻어오는 페이지가 바뀌었는지 페이지 접근이 안되어서 페이스북으로 전환
페이스북 api 는
http://nodotcom.org/python-facebook-tutorial.html 페이지 와
https://developers.facebook.com/docs/facebook-login?locale=ko_KR 를 참고
파일을 2부분으로 나누어서 사진촬영 및 페이스북 전송부로 분할
1. 사진촬영
실험하고 싶으신 분은 주석지우시길 , 설정 없으면 한글주석 에러남.
import RPi.GPIO as GPIO
import time as t
from datetime import datetime
import subprocess
trigger = 17 #갈색선
echo = 18 $빨간선
GPIO.setmode(GPIO.BCM)
GPIO.setup(trigger , GPIO.OUT)
GPIO.setup(echo , GPIO.IN)
#파일 누적폴더
filepath = "/home/pi/python/imgCapture"
#파일명 기본
filenamePrefix = "Capture"
# 기준거리 (센티)
distanceConfig = 100
while True :
#초기화
distance =0
GPIO.output(trigger , True)
t.sleep(0.00001) #시간 중요 , 길어지면 엄한 값이 나옴,
GPIO.output(trigger , False)
while GPIO.input(echo) == 0:
signaloff = t.time()
while GPIO.input(echo) == 1:
signalon = t.time()
distance = (signalon - signaloff) * 17000
print distance #최초 거리 출력
if distance < distanceConfig :
#기준거리 이상이면 print "Capture start"
time = datetime.now()
filename = filepath + "/" + filenamePrefix +"-%04d%02d%02d-%02d%02d%02d.jpg" % ( time.year ,time.month ,time.day, time.hour ,time.minute ,time.second )
#현재시간으로 파일명 command = "raspistill -t 1 -o %s" % (filename)
# 촬영시 1초 subprocess.call(command , shell = True )
print "Captured %s" % filename
command = "python faceBook2.py %s %f" % (filename, distance)
# 페이스북 전송부 subprocess.call(command , shell = True )
t.sleep(5)
# 연속촬영 방지 5초 딜레이 t.sleep(1)
# 거리측정 1초 딜레이
2. 페이스북 전송
#systest.py
import sys
import facebook
def main():
cfg = {
"page_id" : "페이지아이디",
"access_token" : "페이지접속토큰"
}
img = sys.argv[1]
msg = 'distance = ' + sys.argv[2]
print ("msg = "+msg) # 거리 파라미터
print ("img = "+img) # 이미지 파라미터
api = get_api(cfg) # 페북 api
api.put_photo(
image=open(img)
,message=msg
) # 페북 페이지에 이미지와 텍스트 전송
def get_api(cfg):
graph = facebook.GraphAPI(cfg['access_token']) # 페북 페이지 접속
return graph
if __name__ == "__main__":
main()
--삽질 1 : 파이 카메라를 터치패드 접속부에 넣고 환경설정에서 카메라 활성화 안되서 골머리 썩음, 설명서 잘 보자.
--삽질 2 : 토큰 착각해서 엉뚱한것 넣었다. 영문이라 읽기 싫어도 잘 읽자.
전체 라즈베리파이 (작다!)
초음파 측정기 GPIO 부분
(검 : 전원 , 갈 : 트리거 , 빨:에코 , 주:접지)
초음파 거리 측정기
독학은 힘들다.
하지만 재미있다.
http://recipes.egloos.com/ 친절한 임베디드 개발자 되기
입문자에게 유용한 사이트
다음은 모터제어에 도전해 보자.