React Native BLE Serial 구현하기

영문 버전 : https://goo.gl/R58pFo

안드로이드와 iOS 블루투스 연결에 대해서 정리해 봅니다.

현재 하드웨어는 완성된 상태고, 앱에서 블루투스 연결을 시도하는 상태에서 기기 인식을 못하는 증상이 발견되어 해결하는 과정입니다.

블루투스는 현재 버전 5 까지 나와 있습니다만, iOS에서는 BLE 버전(버전 4)만 지원하는데 현재 하드웨어에 시리얼 신호를 블루투스로 변환하는 모듈(제품 페이지)이 V2 입니다.

블루투스 버전 : https://en.wikipedia.org/wiki/Bluetooth

제품에서는 시리얼 신호 (TX/RX)가 나오므로 이를 단순히 BLE 신호로 바꿔주면 되지만, BLE 즉, 버전4에서부터 시리얼 프로토콜이 빠졌기 때문에 문제가 복잡해 집니다.

요약하면 BLE 칩 제조사마다 이를 지원하기 위한 우회로를 만들고 모바일에서는 이에 상응하는 구현을 해야 하는 겁니다. 결국 칩 제조사가 내놓은 가이드라인을 따라 직접 구현하던가, 칩을 이용하여 모듈을 만드는 업체들에서 구현해서 배포하던가 하는데, 이 내용은 펌웨어에 대한 지식이 필요해 보입니다.

블루투스 칩 관련 참고 자료

결국 BLE – UART 모듈을 검색하고, 이 중에서 모바일 쪽 소스코드(혹은 라이브러리)를 제공하는 업체로 좁히게 되는데, 어떤 업체는 안드로이드만 제공하는 경우도 있었습니다.

그래서, 가장 많이 사용하는 모듈을 수배했고, 결국 HM-10 이라는 싸고, 많이 쓰이는 모듈을 발견했습니다. 마침 사무실에도 하나 있었구요.  다음 주에 모듈을 장착하면 테스트 해 볼 예정이고, iOS 소스, 안드로이드 소스 모두 있습니다.

iOS sourcecode : https://github.com/hoiberg/HM10-BluetoothSerial-iOS

한가지 아쉬운 점은 react-native-bluetooth-serial 모듈을 쓰면 쉽게 링크될 것이라고 생각했는데, 직접 네이티브와 연결해야 한다는 것인데요, 이참에 공부해야겠습니다.

2017. 2. 4 여기까지

기존 V2 버전을 HM-10 모듈로 교체하니 iOS 에서 패킷이 잘 들어오네요. 위의 소스코드가 바로 설치되어 문제 없이 테스트 했습니다.

다음은 안드로이드를 테스트 해야하는데, 이건 나중에 해도 되니 일단 소스코드 링크만.

https://github.com/danasf/hm10-android-arduino

2017. 2. 13 추가.

 

__ to be continued..