티스토리 뷰


"라즈베리파이 쿡북" 책을 보면서, 실습을 진행하고 있는데, 쿡북시리즈다 보니 구체적인 내용이 부족하다.

부족한 내용은 산딸기마을 http://www.rasplay.org/?p=2049 싸이트를 참조해서 진행한다.


- GPIO 핀들이 많이 있는데, 데이터 통신하는 방법에 따라서 여러가지 핀들이 있다.

  일단은 지나가고, 나중에 해당 데이터 통신을 할때 자세히 알아봐야 겠다.

  ex. I2C (http://mintnlatte.tistory.com/201), UART (http://ko.wikipedia.org/wiki/UART)



1. GPIO 커넥터 안전하게 사용하기

 1) 전원 구성

    - 라즈베리파이 동작 전원은 3.3V이고 그 이상 전원에는 보호하는 기능이 없다.

 2) 전류 사용

     - 3.3V 전원 핀에는 최대 30mA 전류를 사용할 수 있다.

 3) 과전압, 과전류 조심

     - 전원이 공급시 금속 물체가 GPIO 커넥터에 닿지 않도록 한다.



2. RPi.GPIO vs WiringPi

 - GPIO를 다루기 위해서 어떤 라이브러리를 사용해야 하는 것인가? 지금보고 있는 책이 RPi.GPIO 라이브러리를 사용해서 실습을 진행하고 있어서,

  따라가고 있기는 했는데... 둘 중에 어떤게 더 나은지 모르겟다 ㅎㅎㅎ

 - Python 언어를 지원하는게 RPi.GPIO 라이브러리만 가능한지 알았는데, WiringPi 라이브러리 또한 찾아보니까 라이브러리가 있다.

   WiringPi2 버전(https://github.com/WiringPi/WiringPi2-Python)이 새로 나왔고 기존에 버전 1은 deprecated된 상태이다.

 - 나중에 좀 라즈베리파이가 익숙해지면, WiringPi 모듈을 사용해보자 !!!



3.  LED를 사용한 Output 테스트

 - GPIO 관련 프로그램 실행은 항상 루트 권한으로 해야한다.

 - 목표 : LED가 깜빡이는 프로그램을 만들려고 한다.

 

1) 회로

   - LED를 1.7V보다 큰 전원에 연결하면 망가지 우려가 있다.

   - LED와 GPIO에 안전한 전류가 흐르려면, LED 사용 시, 전력원과 LED 사이에 직렬 저항을 사용해야 한다.

   - 준비물 : 빵판,  Pi Cobbler, 리본케이블, 점퍼 와이어2, 1kΩ 1 개, 빨간색 LED 1개


2) 소스

 - https://github.com/gregor77/raspberrypi/blob/master/code/gpio_basic/led_blink.py

 - github에 공개된 소스를 그대로 사용하니, cleanup를 수행하라는 메세지가 출력되는 등의 몇가지 이슈가 있었다.

   -> 해당 이슈는 FAQ 메뉴에 정리하겠다.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

print "Setup LED pins as outputs"

#GPIO.cleanup()
GPIO.setwarnings(False)
GPIO.setup(18, GPIO.OUT)

count = 0
while (True):
    GPIO.output(18, True)
    time.sleep(0.5)
    GPIO.output(18, False)
    time.sleep(0.5)
    count = count + 1

    if count == 5:
	key = raw_input('press 5 to exit program.')
	print ("input key = " + key)
	if key == "5":
	   print ("end LED blink")
	   break
	else:
	   print ("restart LED blink")
	   count = 0
	
GPIO.cleanup()


3) 실행 화면




[참고 자료]

 



'Raspberry Pi > GPIO' 카테고리의 다른 글

라즈베리파이 GPIO : LED 밝기 제어하기  (0) 2015.06.12
댓글