재료

  • 라즈베리파이 1개
  • 서보 모터 1개
  • 점프와이어 3개

    앞에서는 라즈베리파이에 아두이노를 연결해서 LED를 조작해보았습니다. 지난번 포스팅을 통해 아두이노를 이용해서 제가 <손에 잡히는 아두이노>에서 구현했던 내용을 라즈베리파이에서도 모두 할 수 있을 것 같았어요. 그러나 매번 아두이노를 통해서 구현하는 것은 아두이노만 사용했을 때에도 가능했던 일이어서 라즈베리파이만의 능력을 보여주기 어려웠던 것 같습니다. 그래서 이번에는 라즈베리파이만을 이용해서 조작해보려고 합니다.

    라즈베리파이에는 GPIO 핀들이 있어요. GPIO 핀은 General Purpose Input/Output Pin의 약자입니다. 말 그대로 일반적인 목적ㅇ로 사용되는 입출력핀인거죠. 이 GPIO핀을 이용해서 키 입력을 받을 수도 있고 명령에 따라서 다른 출력 장치들이 작동할 수 있게 조작도 가능합니다. 우리는 이 GPIO 핀에 대해서 알아보고 이 핀을 이용하여 이번에는 LED 대신에 서보 모터를 조작해보도록 해봐요!

                   


STEP1. 준비물

연결이 준비된 라즈베리파이, 서보모터,  점프 와이어 3개



STEP2. 회로도

    제가 쓴 라즈베리파이3는 B+ 모델이어서 핀이 40개입니다. 그래서 아래의 핀을 확인해주셔서 알맞은 핀에 꽂아주시면 됩니다.

핀이 각각 어떤 역할을 하는지 잘 파악하시고 아래와 같이 회로도를 작성해주세요.



STEP3. 코드

코드는 라즈베리파이 모니터에 보이는 Terminal을 켜서 입력하시면 됩니다. 파이썬으로 작성할거에요.

먼저 코드를 입력하기 전에 아래와 같은 작업이 필요합니다.

        sudo apt-get update

        sudo apt-get install python-rpi.gpio

그런 후에 아래의 코드는 nano 파일이름.py를 치신 후에 작성해주시면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)
p=GPIO.PWM(18,50)
p.start(0)
 
try:
  while True:
    p.ChangeDutyCycle(1)
    print "Servo angle : 1"
    time.sleep(1)
    p.ChangeDutyCycle(4)
    print "Servo angle : 4"
    time.sleep(1)
    p.ChangeDutyCycle(7)
    print "Servo angle : 7"
    time.sleep(1)
except KeyboardInterrupt:
  p.stop()
GPIO.cleanup()
cs

 실행은 sudo python 파일이름.py를 치시면 됩니다. 

STEP4. 결과 확인

    키보드의 버튼이 눌릴때마다 interrupt가 걸려서 멈추고 그 전에는 계속 반복해서 저 angle이 수행될 거에요. 생각보다 간단하죠?:-)


댓글 0

MADE BY

김민정

사물인터넷, 아두이노
아두이노 없이 LED 조작하기현재글 라즈베리파이와 아두이노 연결하기 이전글