일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Raspberry Pi
- PuTTYgen
- SSH
- thonny
- 라즈베리파이3
- IoT Central
- vscode
- w5500-evb-pico
- Azure
- adafruitio
- x.509
- RP2040
- ubuntu
- nodejs
- Ethernet
- ChatGPT
- W5100S-EVB-Pico
- WIZnet
- aws
- circuitPython
- micropython
- raspberrypi
- PIR
- Linux
- Private Key
- W5500
- openssl
- W5100S
- putty
- Python
- Today
- Total
Develop Note
[RaspberryPi3] Servoblaster를 이용한 서보 모터 제어 본문
라즈베리파이3에서 Servoblaster를 이용해 서보 모터를 제어하는 방법을 정리한다.
0. Pan-Tilt 서보 모터 (SG90 * 2)
서보 모터는 다음과 같이 두 대를 결합하여 pan tilt 형식으로 사용 가능한 제품을 사용하였다.
1. ServoBlaster 설치
* 관련 링크:
https://github.com/richardghirst/PiBits/tree/master/ServoBlaster
ServoBlaster는 라즈베리파이용 소프트웨어로, GPIO Pin들을 통해 여러 개의 서보 모터를 제어할 수 있게 하는 인터페이스를 제공한다.
// ServoBlaster 설치 $ git clone https://github.com/richardghirst/PiBits $ cd PiBits/ServoBlaster/user/ $ sudo make install // Servoblaster 데몬 실행 $ sudo ./servod Board model: 2 GPIO configuration: P1 (40 pins) Using hardware: PWM Using DMA channel: 14 Idle timeout: Disabled Number of servos: 8 Servo cycle time: 20000us Pulse increment step size: 10us Minimum width value: 50 (500us) Maximum width value: 250 (2500us) Output levels: Normal Using P1 pins: 7,11,12,13,15,16,18,22 Servo mapping: 0 on P1-7 GPIO-4 1 on P1-11 GPIO-17 2 on P1-12 GPIO-18 3 on P1-13 GPIO-27 4 on P1-15 GPIO-22 5 on P1-16 GPIO-23 6 on P1-18 GPIO-24 7 on P1-22 GPIO-25
데몬을 실행하면 위와 같이 각 GPIO 에 mapping된 서보 모터와 제어 가능한 범위에 대한 정보를 출력한다.
사용자에 따라 제어 범위와 값을 직접 수정/사용할 수 있다.
2. 서보 모터 연결
각 모터는 다음과 같이 점퍼 케이블 6개를 이용해 각각 연결하였다.
3. 서보 모터 제어
제어 방법은 간단하다.
먼저 Servoblaster 데몬을 실행했을 때 출력되는 정보 중 Servo mapping에서 연결한 GPIO에 대한 pin 정보를 확인한다.
여기에서는 두 서보 모터를 각각 GPIO 17, 18번에 연결했으므로
제어할 번호는 1, 2번이 된다.
제어 가능 범위는 50(min)에서 250(max) 이며, 퍼센트(0~100%)로도 제어 가능하다.
// 1번 -> GPIO17 연결 모터 제어 $ echo 1=50% > /dev/servoblaster $ echo 1=200 > /dev/servoblaster
// 2번 -> GPIO18 연결 모터 제어 $ echo 2=43% > /dev/servoblaster $ echo 2=140 > /dev/servoblaster
입력한 대로 모터가 움직이는지 확인해 본다.
* 모터 조립 상태에 따라 최대/최소 제어 범위가 맞지 않을 수 있으므로,
중간 값부터 차례로 제어해 본 다음 최대/최소 값으로 제어해 본다.
범위 이상의 값으로 계속 제어할 경우 서보 모터에 무리가 갈 수도 있다고 한다.
'개발 (Ko) > Raspberry Pi' 카테고리의 다른 글
[RaspberryPi3] Pi camera 사용 - 연결 및 테스트 (0) | 2017.10.28 |
---|---|
[RaspberryPi3] 블루투스 사용하기 (Command line) (3) | 2017.10.28 |
[RaspberryPi3] WiringPi를 이용한 서보 모터 PWM 제어 (0) | 2017.10.28 |
[RaspberryPi3] 라즈베리파이3에 WiringPi 설치하기 (1) | 2017.10.28 |
[RaspberryPi3] 라즈베리파이3 - 라즈비안(Raspbian) OS 설치 (0) | 2017.10.27 |