2015년 8월 19일 수요일

아두이노 블루투스

라즈베리파이와 아두이노를 연결하는 유선 USB 케이블의 거추장 스러움을 없애는 가장 손쉬운 방법이 블루투스를 사용하는 것입니다.

아두이노에서 사용 가능한 블루투수는 아래 사진과 같은 녀석이구요. 아두이노 부품 중에서는 상대적으로 비싼 가격입니다. 3만원 정도.


이것을 사용하는 방법은 간단합니다.
우선 연결한 블루투스 동글을 라즈베리 파이에 꽂고 위 장치를 아두이노에 연결 합니다.


사진상으로는 잘 확인이 되지 않지만 아두이노에 전원을 넣으면 블루투스 'STATE' LED 가 깜빡거리게 됩니다. 페어링 대기를 나타 냅니다.

이 상태에서 라즈베리 파이에서 페어링을 하고 연결 해 주면 됩니다.

1. 블루투스 동글 동작 확인
  - hcitool 명령어를 사용해서 라즈베리파이에 꽂은 동글 동작을 확인합니다.
$ hcitool dev
Devices:
hci0 00:02:72:AB:XX:XX
2. 장치 찾기
  - 역시 hcitool 를 사용해서 페어링 모드의 디바이스를 검색합니다.
$ hcitool scan
Scanning ...
 20:14:12:23:XX:XX Bluetooth_Bee_V3
3. 페어링
  - bluez-simple-agent 로 페어링 합니다.
$ bluez-simple-agent hci0 20:14:12:23:XX:XX
  - 페어링 할때 페어링 코드가 '0000' 같은 단순 코드가 아닌 경우에는
    /usr/bin/bluez-simple-agent 의 내용을 변경합니다.
capability = “KeyboardDisplay” 를 “DisplayYesNo” 로 변경 
  - 기본 Key 는 '1234' 입니다.

4. 신뢰할 수 있는 디바이스 추가

  - 부팅 때 마다 페어링 하지 않기 위해 신뢰할 수 있는 장치에 추가 합니다.
$ bluez-test-device trusted 20:14:12:23:XX:XX yes
5. rfcomm 설정 추가
  - 블루투스 설정 파일 중 rfcomm.conf 를 수정해 줍니다.
$ sudo vi /etc/bluetooth/rfcomm.conf
rfcomm1 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device 20:14:12:23:XX:XX;
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment "Connection to Bluetooth serial module";
}
6. 연결
  - rfcomm 사용을 위해 bluez-test-serial 로 연결 합니다.
$ bluez-test-serial connect 20:14:12:23:XX:XX
  - 만약 2개 이상의 블루투스 동글을 사용한다면 동글 선택 옵션을 줘야 합니다.
$ bluez-test-serial -i hci1 connect 20:14:12:23:XX:XX

이렇게 하면 /dev/rfcomm1 을 통해 라즈베리와 아두이노가 통신을 합니다.

기존에 USB 연결을 해서 /dev/ttyACM0 을 사용해서 Serial 통신 코드를 작성 하셨다면 코드상의 'ttyACM0' 를 'rfcomm1' 으로 변경 하는 것 만으로 모든 것이 완료 됩니다.

* 주의 : 2개의 동글을 사용할 경우 PIN 코드가 0000 이 아닌 장치에 대해서는 2개 동글에 모두 페어링을 해 둬야 합니다.

참고 사이트
[1] http://www.uugear.com/portfolio/bluetooth-communication-between-raspberry-pi-and-arduino/
[2] http://gregrob.ca/blog/2012/07/configure_bluetoothv3/

댓글 없음: