ASRock BC-250 보드 RAZER CORE X CHROMA 에 설치하기 5

주문 제작 하였던 브라켓이 도착하였다.  재질은 철이 아니고 알루미늄이라 그런지 상당히 가볍고 잘못하면 휘어질 것 같은 느낌이 든다. 제작하고 수령하기 까지 거의 3주라는 긴 시간이 걸렸다. 원래 이렇게 까지 걸리진 않는데 원인은 가공 엔지니어로 부터 온 메일을 확인하지 않고 3일이나 흐른 뒤에 답장을 하였고, 연말 기간도 걸려서 늦어져 버렸다. BC-250 카드에 기존 브라켓을 제거하고 새로 설계한 브라켓을 달아보니 아주 잘 맞았다. 버튼도 잘 눌리고 이더넷, USB, DP 포트 모두 사용에 문제가 없다. 이렇게 보고 나서 알아차린 부분이지만 하단 쪽에 고정 다리를 추가한다는 것을 빼먹었다. 다시 만드는 건 금액도 만만치 않았기 때문에 수정해서 발주를 다시 넣지는 않을 예정이고 튼튼하게 고정하기 위해 다른 솔루션을 찾아 보려고 한다. 사실 브라켓을 설계한 건 설치 문제도 있지만 완성된 시스템이 외관상으로 봤을 때 튀는 부분 없이 완성도가 높아 보이길 원했기 때문이다. 이렇게 보니 모양도 그럴싸하고 원래 이런 제품일지도 모른다는 착각도 든다. 타공 모양도 벌집 모양으로 했으면 더 완벽했겠지만 만드는 동안에는 그런 생각 없이 만들었기 때문에 큰 후회는 없다. 장착 되어있던 USB 허브 보드 대신 사용될 PCB도 도착하였다. 기존 허브 보드와 비교하자면 사이즈만 많이 커졌지만 브라켓과 호환이 되는지 확인하였고 장착하는 데는 문제가 없을 것으로 예상하고 있다.  지금 보니 오디오 앰프가 꼭 있어야 했는지 살짝 욕심이 과했다는 생각도 든다. 조립에 사용될 부품들은 아직 수급 중이며 차근차근 조립을 해 나갈 예정이다. 먼저 설계했던 PSU 전원 컨트롤 보드는 다음과 같이 장착 되었고 주요 동작에는 큰 이상이 없으나 몇 가지 수정 사항이 생겼다. 수정 사항은 허브 보드을 새로 설계하면서 발생한 것으로 두 보드 간에 별도의 통신 선이 연결된다. 사실 이렇게 기능을 분리할 필요는 없었는데 첫 번째로 만든 보드에서 하드웨어 적으로 누락된 기능이 있기 때문에 허...

[Raspberry Pi] - rc카 만들기 #2 Servo Motor




#2 서보모터의 제어



rc 카의 주행 방향을 책임지는 서보모터를 제어해 보도록 하겠다.
라즈베리에는 GPIO 핀이있는데 이 핀들은  납땜없이 라즈베리와 현실세계를 연결해준다.
이런 점이 아두이노와 라즈베리 파이의 매력 중 하나라고 할 수 있다.
서보모터에는 3선이 달려있는데 전원선과 신호선으로 구분된다.
서보모터의 경우 갈색(그라운드), 적색(전원), 황색(신호) 이다.
또는 검정색(그라운드), 적색(전원), 흰색(신호)으로 된 것도 있다.
여기서 사용할 서보모터는 일반적으로 4.5~6V 의 전원으로 작동된다.

서보모터를 제어하는 방법으로는 여러가지가 있다.


  • PWM 제어
서보를 제어하기 위해선 PWM이 필요한데 RPi.GPIO 라이브러리에 포함되어 있다
터미널을 열고 RPi.GPIO 라이브러리를 설치한다.
sudo apt-get install RPi.GPIO
PWM 파이선 예제



  • ServoBlaster 제어

sudo apt-get install git
git clone git://github.com/richardghirst/PiBits.git
cd PiBits/ServoBlaster/user
make servod
sudo ./servod

서보블라스터를 실행하면 사용 방법이 나온다.
사용가능한 핀을 확인한뒤 서보모터를 라즈베리 파이에 연결해준다.
적색(전원) - 4pin(5V)
갈색(그라운드) - 6pin(Ground)
황색(신호) - 7pin(GPIO4)


이제 서보모터를 움직여 보자. 값은 50에서 250사이의 값을 입력해주면 된다.
echo 0=150 > /dev/servoblaster

서보 블라스터 파이썬 예제





  • pigpio 제어
sudo pigpiod
아래 예제를 사용하면 서보블라스터와 동일 하게 작동하지만 
값은 500us에서 2500us 이다.

pigpio 파이썬  예제 


  • 듀얼쇼크와의 연동

이 예제들을 살짝 바꿔서 키입력으로 방향을 제어 할 수도 있고 컨트롤러를 이용해 제어 할수도 있다.
여기선 플레이스테이션 컨트롤러인 듀얼쇼크 4를 이용해 보도록 하겠다.
Raspberry Pi에서 듀얼쇼크4(Dual Shock 4)를 이용하기 위해서는 라이브러리가 필요하다.
블루투스가 필요하기 때문에 블루투스 설치부터 시작하겠다.
(라즈베리 파이3은 동글을 따로 구매할 필요없다. 내장으로 충분히 먼 거리까지 컨트롤 가능하다.)


블루투스 설치 (최신 버전에는 이미 포함되어있다.)
sudo apt-get install pi-bluetooth

ds4drv 설치 (듀얼쇼크4(Dual Shock 4)가 작동 할 수 있는 환경을 만들어준다.)
sudo apt-get install python-dev python-setuptools
sudo pip install ds4drv

개발자 버전
git clone http://github.com/chrippa/ds4drv.git
cd ds4drv
sudo python setup.py install

실행
ds4drv가 실행되었을때 듀얼쇼크 4의 Share + PS 를 누르고 있으면 LED가 뻔쩍이면서 페어링 모드가 된다. 그 상태에서 잠시 기다리면 페어링이 완료된다.
sudo ds4drv



듀얼 쇼크의 조작 확인은 이 곳의 마지막 예제를 통해 쉽게 확인 할 수 있다.
https://www.pygame.org/docs/ref/joystick.html
위 페이지에 설명 된 함수들을 잘 이용하면 충분히 듀얼쇼크로 서보모터를 제어 할 수 있다.

버튼 다운 이벤트를 이용한 키입력 확인




듀얼쇼크의 왼쪽 Axis의 상,하는 27T 모터의 전,후진 오른쪽 Axis의 좌,우는 서보모터의 회전을 담당하도록 한다.


MAX MID MIN은 직접 해보면서 적합한 값을  찾아야한다.
position은 조이스틱으로 부터 받은값을 MIN에서 MAX 사이의 값으로 만들어준다. 

서보컨트롤 by 듀얼쇼크4 파이썬 예제


영상에서는 왼쪽 Axis 를 이용하였다.







Thx.





Comments

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[AD보드] - 맥북 패널을 모니터로 만들기 ( LP154WP4-TLA1 )

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결