설치를 모두 끝냈다면 이제 직접 제어를 시작해 보자



아두이노 디지털 핀 제어

1. 디지털핀의 출력 제어 명령어

1
2
board.digital[13].write(1)
board.digital[13].write(0)
cs


2. 디지털 핀의 값을 읽는 명령어

1
in = board.digital[13].read()
cs



만약 계속해서 board의 함수를 적기 귀찬다면 board.get_pin()함수를 이용하여 Reference를 이용할 수 있다
함수의 파라미터 부분은 [a/d]:[pin#]:[i/o/p/s]로 구분된다 

첫번째 섹션의 a는 아날로그 b는 디지털
두번째 섹션은 핀번호를
세번째 섹션의 i는 입력, o는 출력, p는 PWM제어, s는 서보를 의미한다.


1
2
3
4
5
pin3 = board.get_pin('d:3:o')
pin3.write(1)
 
pin3=board.get-pin('d:3:s')
pin3.write(120)
cs


라즈베리파이로 모터를 제어하기엔 출력전류가 작아 문제가 있어보였다.

그래서 아두이노를 통해 모터를 제어하기로 했다.

Firemata 펌웨어를 이용하여 라즈베리파이로 아두이노를 제어했다.



아두이노 세팅

우선, 아두이노에서 Firmata를 빌드 한다.



예제에 기본으로 내장되 있어 따로 설치할 필요가 없다. 매우 편하다.



라즈베리파이 세팅

다음 라즈베리파이에서 firmata를 설치한다.


1
2
3
4
5
$ sudo apt-get install python-pip python-serial 
# pip과 pyserial을 설치하기위한 명령어 
 
$ sudo pip install pyfirmata 
# firmata 설치
cs



이제 기본적인 세팅은 끝이 났다.



아두이노와 라즈베리파이 연결

아두이노와 라즈베리파이사이 유선통신을 위해 USB포트를 통하여 연결 한다.

그러면 라즈베리파이에 아두이노가 /dev/ttyUSB0으로 인식 될 것이다.


아래의 코드를 라즈베리 파이에서 에러없이 작동 된다면 연결에 성공한 것이다.

1
2
3
$ python
>>> from pyfirmata import Arduino, util
>>> board = Arduino('/dev/ttyUSB0')
cs


+ Recent posts