<div class="post-body entry-content" style="width:570px;font-size:13.2px;line-height:1.4;color:#222222;font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;"> <div class="separator" style="clear:both;text-align:center;"><br> </div> <div class="separator" style="clear:both;text-align:center;">IOT 첫걸음</div> <div class="separator" style="clear:both;text-align:center;"><br></div> <div class="separator" style="clear:both;text-align:center;"><iframe class="YOUTUBE-iframe-video" frameborder="0" height="266" src="https://www.youtube.com/embed/Ts0AmsukiW4?feature=player_embedded" width="320"></iframe></div><br><br>개요 :<br><br>라즈베리 파이로 거리를 측정해 1미터 미만이면 사진을 찍어 페이스북 페이지로<br>업로드<br><br><br>거리부분만 수정해 문앞에 설치하면 페북으로 출입자 사진을 남기게 된다.<br><br> 파이썬 처음 사용해보는데 상당히 마음에 든다.<br><br> 자바만 하고 처음 C 계열 잡아보는데 나쁘지 않은듯.(PHP 는 하도 오래되어서 기억안남 ;; )<br><br>최초 센서와 카메라 사용법은 동영상 참고 <br><br>라즈베리파이 2 에선 WebOPi 2.7 버전까지는 에러가 있어 정상작동하지 않는다. (삽질 유발자)<br><br>노비스로 os 설치하면 패치가 적용되긴 하는데 (희안하게 노드가 늘어나 보이긴 하지만)<br><br>나는 이미지로 설치해버렸기 때문에 적용되지 않는듯?<br><br>동영상 주의점 - 3.3 볼트로 초음파 측정기 작동안함 , 5볼트로 UCC 세팅후 정상작동<br><br>동영상 주의점 2 - 트위터에서 토큰 얻어오는 페이지가 바뀌었는지 페이지 접근이 안되어서 페이스북으로 전환<br><br><br>페이스북 api 는 <a target="_blank" href="http://nodotcom.org/python-facebook-tutorial.html" style="text-decoration:none;color:#888888;" target="_blank">http://nodotcom.org/python-facebook-tutorial.html</a> 페이지 와<br><a target="_blank" href="https://developers.facebook.com/docs/facebook-login?locale=ko_KR" style="text-decoration:none;color:#888888;" target="_blank">https://developers.facebook.com/docs/facebook-login?locale=ko_KR</a> 를 참고<br><br><br><br>파일을 2부분으로 나누어서 사진촬영 및 페이스북 전송부로 분할<br><br><br>1. 사진촬영<br><br>실험하고 싶으신 분은 주석지우시길 , 설정 없으면 한글주석 에러남.<br><br>import RPi.GPIO as GPIO<br>import time as t<br>from datetime import datetime<br>import subprocess<br><br><br>trigger = 17 #갈색선<br>echo = 18 $빨간선<br><br>GPIO.setmode(GPIO.BCM)<br>GPIO.setup(trigger , GPIO.OUT)<br>GPIO.setup(echo , GPIO.IN)<br>#파일 누적폴더<br>filepath = "/home/pi/python/imgCapture"<br>#파일명 기본</div> <div class="post-body entry-content" style="width:570px;font-size:13.2px;line-height:1.4;color:#222222;font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;">filenamePrefix = "Capture"<br># 기준거리 (센티)<br>distanceConfig = 100<br><br>while True :<br> #초기화<br><span class="Apple-tab-span" style="white-space:pre;"> </span>distance =0<br><span class="Apple-tab-span" style="white-space:pre;"> </span>GPIO.output(trigger , True)<br><span class="Apple-tab-span" style="white-space:pre;"> </span>t.sleep(0.00001) #시간 중요 , 길어지면 엄한 값이 나옴,<br><span class="Apple-tab-span" style="white-space:pre;"> </span>GPIO.output(trigger , False)<br><span class="Apple-tab-span" style="white-space:pre;"> </span><br><span class="Apple-tab-span" style="white-space:pre;"> </span>while GPIO.input(echo) == 0:<br><span class="Apple-tab-span" style="white-space:pre;"> </span>signaloff = t.time()<br><span class="Apple-tab-span" style="white-space:pre;"> </span>while GPIO.input(echo) == 1:<br><span class="Apple-tab-span" style="white-space:pre;"> </span>signalon = t.time()<br><span class="Apple-tab-span" style="white-space:pre;"> </span>distance = (signalon - signaloff) * 17000<br><br><span class="Apple-tab-span" style="white-space:pre;"> </span>print distance #최초 거리 출력 <br> <br><span class="Apple-tab-span" style="white-space:pre;"> </span>if distance < distanceConfig : <span style="font-size:13.2px;line-height:12.32px;">#기준거리 이상이면 </span><br><span class="Apple-tab-span" style="white-space:pre;"> </span>print "Capture start"<br><br><span class="Apple-tab-span" style="white-space:pre;"> </span>time = datetime.now()<br><span class="Apple-tab-span" style="white-space:pre;"> </span>filename = filepath + "/" + filenamePrefix +"-%04d%02d%02d-%02d%02d%02d.jpg" % ( time.year ,time.month ,time.day, time.hour ,time.minute ,time.second )<span class="Apple-tab-span" style="white-space:pre;"> </span><span style="font-size:13.2px;line-height:12.32px;">#현재시간으로 파일명</span><br><span class="Apple-tab-span" style="white-space:pre;"> </span>command = "raspistill -t 1 -o %s" % (filename) <span style="font-size:13.2px;line-height:12.32px;"># 촬영시 1초 </span><br><span class="Apple-tab-span" style="white-space:pre;"> </span>subprocess.call(command , shell = True )<br><span class="Apple-tab-span" style="white-space:pre;"> </span>print "Captured %s" % filename<br><span class="Apple-tab-span" style="white-space:pre;"> </span><br><br><span class="Apple-tab-span" style="white-space:pre;"> </span>command = "python faceBook2.py %s %f" % (filename, distance) <span style="font-size:13.2px;line-height:12.32px;"> </span><span style="font-size:13.2px;line-height:12.32px;"># 페이스북 전송부</span><br><span class="Apple-tab-span" style="white-space:pre;"> </span>subprocess.call(command , shell = True )<br><br><span class="Apple-tab-span" style="white-space:pre;"> </span>t.sleep(5) <span style="font-size:13.2px;line-height:12.32px;"># 연속촬영 방지 5초 딜레이</span><br><br><span class="Apple-tab-span" style="white-space:pre;"> </span>t.sleep(1) <span style="font-size:13.2px;line-height:12.32px;"># 거리측정 1초 딜레이</span><br><div><br></div> <div><br></div> <div>2. 페이스북 전송 </div> <div> <div>#systest.py</div> <div>import sys</div> <div>import facebook</div> <div><br></div> <div>def main(): </div> <div> cfg = {</div> <div> "page_id" : "페이지아이디", </div> <div> "access_token" : "페이지접속토큰" </div> <div> }</div> <div> </div> <div> img = sys.argv[1]</div> <div> msg = 'distance = ' + sys.argv[2] </div> <div> print ("msg = "+msg) <span style="font-size:13.2px;line-height:12.32px;"> </span><span style="font-size:13.2px;line-height:12.32px;"># 거리 파라미터</span></div> <div><span style="font-size:13.2px;line-height:1.4;"> print ("img = "+img)</span><span style="font-size:13.2px;line-height:12.32px;"> #</span><span style="font-size:13.2px;line-height:12.32px;"> 이미지 파라미터</span></div> <div> api = get_api(cfg) # 페북 api </div> <div> api.put_photo(</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>image=open(img)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>,message=msg</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>) # 페북 페이지에 이미지와 텍스트 전송</div> <div><br></div> <div>def get_api(cfg):</div> <div> graph = facebook.GraphAPI(cfg['access_token']) <span style="font-size:13.2px;line-height:12.32px;"># 페북 페이지 접속 </span></div> <div> return graph </div> <div><br></div> <div>if __name__ == "__main__":</div> <div> main()</div></div> <div><br></div> <div>실험결과 <a target="_blank" href="https://www.facebook.com/dongDevTest/?ref=aymt_homepage_panel" style="text-decoration:none;color:#888888;" target="_blank">https://www.facebook.com/dongDevTest/?ref=aymt_homepage_panel</a> 에 정상 업로드를 확인 </div><br><br><br>--삽질 1 : 파이 카메라를 터치패드 접속부에 넣고 환경설정에서 카메라 활성화 안되서 골머리 썩음, 설명서 잘 보자.<br><br>--삽질 2 : 토큰 착각해서 엉뚱한것 넣었다. 영문이라 읽기 싫어도 잘 읽자.<br><br><br><div style="text-align:center;">전체 라즈베리파이 (작다!)</div> <div class="separator" style="clear:both;text-align:center;"><a target="_blank" href="http://4.bp.blogspot.com/-ewHcu19UpJw/VjeE09YFTHI/AAAAAAAAFRk/_39Adr8rfDw/s1600/12193412_187362811606251_6872190816060587892_n.jpg" style="text-decoration:none;color:#888888;margin-left:1em;margin-right:1em;" target="_blank"><img border="0" height="320" src="http://4.bp.blogspot.com/-ewHcu19UpJw/VjeE09YFTHI/AAAAAAAAFRk/_39Adr8rfDw/s320/12193412_187362811606251_6872190816060587892_n.jpg" width="239" style="border:1px solid rgb(238,238,238);padding:5px;" alt=""></a></div> <div class="separator" style="clear:both;text-align:center;"><br></div> <div style="text-align:center;"> 초음파 측정기 GPIO 부분 </div> <div style="text-align:center;">(검 : 전원 , 갈 : 트리거 , 빨:에코 , 주:접지)</div> <div class="separator" style="clear:both;text-align:center;"><a target="_blank" href="http://3.bp.blogspot.com/-JXElCovrJG0/VjeE0-IrGiI/AAAAAAAAFRo/5tDs-OuSsQ8/s1600/12195823_187362894939576_4671048924826083492_n.jpg" style="text-decoration:none;color:#888888;margin-left:1em;margin-right:1em;" target="_blank"><img border="0" height="239" src="http://3.bp.blogspot.com/-JXElCovrJG0/VjeE0-IrGiI/AAAAAAAAFRo/5tDs-OuSsQ8/s320/12195823_187362894939576_4671048924826083492_n.jpg" width="320" style="border:1px solid rgb(238,238,238);padding:5px;" alt=""></a></div> <div class="separator" style="clear:both;text-align:center;"><br></div> <div class="separator" style="clear:both;text-align:center;">초음파 거리 측정기 </div> <div class="separator" style="clear:both;text-align:center;"><a target="_blank" href="http://1.bp.blogspot.com/-IAF64KwYRxE/VjeE04MazVI/AAAAAAAAFRg/dWH0pKR2aK0/s1600/12208803_187362858272913_1817604977851336089_n.jpg" style="text-decoration:none;color:#888888;margin-left:1em;margin-right:1em;" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-IAF64KwYRxE/VjeE04MazVI/AAAAAAAAFRg/dWH0pKR2aK0/s320/12208803_187362858272913_1817604977851336089_n.jpg" width="239" style="border:1px solid rgb(238,238,238);padding:5px;" alt=""></a></div><br><br><br>독학은 힘들다.<br>하지만 재미있다.<br><br><a target="_blank" href="http://recipes.egloos.com/" style="text-decoration:none;color:#888888;" target="_blank">http://recipes.egloos.com/</a> 친절한 임베디드 개발자 되기<br><br>입문자에게 유용한 사이트<br><br><br>다음은 모터제어에 도전해 보자.</div>
야근 없으면 이런거 하면서 실력이 는다. 역시 야근이 없어야 됨 . 
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.