Raspberry Pi 3와 BLE( Bluetooth Low Energy ) 디바이스(여기선 Arduino 101) 간에 BLE 통신을 연결해서 사용할 수 있게 해주는 gattlib 라이브러리를 테스트해보았습니다.
최종 수정 - 2017.8.3
gattlib 라이브러리 설치
1. libbluetooth-dev 패키지를 비롯해 필요한 것들을 설치합니다.
pi@raspberrypi:~ $ sudo apt-get install libbluetooth-dev libreadline-dev cmake |
2. gattlib를 컴파일하여 설치합니다.
pi@raspberrypi:~ $ git clone https://github.com/labapart/gattlib.git |
3. 진행하기 전에 다음 포스팅에 소개한 대로 Arduino 101에 LED 예제를 업로드 해야 합니다.
Arduino 101의 Bluetooth Low Energy(BLE) 예제를 안드로이드 폰과 테스트
http://webnautes.tistory.com/901
4. hcitool로 Arduino 101의 맥어드레스를 확인해둡니다.
pi@raspberrypi:~/gattlib/build $ sudo hcitool -i hci0 lescan |
gattlib 라이브러리 예제 테스트
1. gattlib 라이브러리에서는 6개의 예제 코드를 제공하고 있습니다.
여기에서는 이중에 3가지만 테스트해보았습니다.
현재 위치에는 컴파일된 바이너리 파일이 있고 실제 코드 위치는 ~/gattlib/examples/입니다.
pi@raspberrypi:~/gattlib/build $ cd examples/ |
2. ble_scan
BLE 디바이스 검색 및 제공하는 서비스와 characteristic를 출력해줍니다.
여기선 서비스 이름이 안나오지만 98:4F:EE:0F:4E:1E가 앞에서 검색했던 Arduino 101의 맥어드레스입니다.
pi@raspberrypi:~/gattlib/build/examples/ble_scan $ sudo ./ble_scan |
3. discover
지정한 맥어드레스를 가진 디바이스에서 제공하는 서비스와 characteristic를 출력해줍니다.
pi@raspberrypi:~/gattlib/build/examples/discover $ ./discover 98:4F:EE:0F:4E:1E |
3. read_write
characteristic에 값을 기록하거나 값을 읽어오는 예제입니다.
3-1.예전과 다르게 동작해서 진행하기 전에 Arduino 101의 LED 예제 코드의 일부를 다음처럼 수정해서 다시 업로드해야 합니다.
// 라즈3와 연결되어 있는 동안 루프를 돈다. |
3-2. ~/gattlib/examples/read_write/read_write.c에 있는 코드도 일부 수정했습니다.
노란색 줄부분이 빠진 듯해서 추가해주었습니다.
if (strcmp(argv[2], "read") == 0) { |
3-3. 라즈베리파이 3에서 예제 컴파일을 진행해줍니다.
pi@raspberrypi:~/gattlib/examples/read_write $ mkdir build |
3-4. 이제 Arduino IDE에서 시리얼 모니터를 실행시켜 둡니다.
Arduino 101의 동작을 모니터링하기 위해서입니다.
3-5. 라즈베리파이에서 LED 제어를 위한 Characteristic에 1을 기록하면
pi@raspberrypi:~/gattlib/examples/read_write/build $ ./read_write 98:4F:EE:0F:4E:1E write 19b10001-e8f2-537e-4f6c-d104768a1214 1 |
시리얼 모니터에서 Arduino 101에서 처리한 상황을 확인할 수 있습니다.
Connected to central: B8:27:EB:DA:FA:66 라즈3와 연결됨 |
3-6. write를 read로 바꾸면 Characteristic 상태값을 읽어올 수 있습니다.
pi@raspberrypi:~/gattlib/examples/read_write/build $ ./read_write 98:4F:EE:0F:4E:1E read 19b10001-e8f2-537e-4f6c-d104768a1214 |
3-7. 라즈베리파이에서 LED 제어를 위한 Characteristic에 0을 기록하고
pi@raspberrypi:~/gattlib/examples/read_write/build $ ./read_write 98:4F:EE:0F:4E:1E write 19b10001-e8f2-537e-4f6c-d104768a1214 0 |
시리얼 모니터에서 확인해봅니다.
Connected to central: B8:27:EB:DA:FA:66 라즈3와 연결됨 |
'Arduino 101' 카테고리의 다른 글
Raspberry pi 3와 Arduino 101 간에 Bluetooth(BLE) 테스트 (0) | 2017.08.02 |
---|---|
Arduino 101의 Bluetooth Low Energy(BLE) 예제를 안드로이드 폰과 테스트 (6) | 2017.08.02 |
Windows에서 Genuino 101 ( Arduino 101) 보드 처음 사용해보기 (0) | 2017.08.02 |
Android에서 Arduino 101에 연결된 LED 제어 및 상태값 읽어오기 ( Bluetooth LE 프로그래밍 ) (23) | 2017.03.20 |
Raspberry Pi 3와 Arduino 101간에 BLE 제어 및 정보 가져오기 ( python 라이브러리 사용 ) (27) | 2016.12.06 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!