React Native BLE Serial with HM-10

한글 버전 :

Let’s summarize the connection between Android and iOS Bluetooth.

Currently, the hardware part is complete, but the bluetooth module is not recognized by iOS devices.

Bluetooth is currently up to version 5, but iOS only supports BLE version (version 4). Current module (product) that converts serial signal to Bluetooth supports only V2.

Since the serial signal (TX / RX) comes out from the product, you can simply change it to the BLE signal, but the problem becomes complicated because the serial protocol has been expelled since version 4 (BLE).

About Bluetooth :

In summary, every chip maker has to create a workaround to support SPP(Serial Port Service) and a corresponding implementation on each mobile platform. And mobile developer need to implement according to the guideline provided by the chip manufacturer, or the makers of the module using the chip implement and provide to the developers. Anyway the implementation seems to require knowledge of the firmware.

BLE chip etc

Eventually, we searched for the BLE-UART module and narrowed it down to the provider which supports mobile source code (or library), some of which only provided Android.

So, I wanted the most used modules, and eventually I found a cheap, heavily used module called HM-10. There was one in the office. I will test it with the module next week, both iOS and Android sources.

iOS sourcecode :

One disappointing thing is that I thought it would be easy to link with the react-native-bluetooth-serial module, but I have to connect directly with the native.

2017. 2. 4

I replaced current V2 version with the HM-10 module, no problem with connection and packet receiving on iOS. The above source code was used and tested without any problems.

Next, we need to test Android, which is not urgent.

The source code link :

2017. 2. 13 추가.

__ to be continued


React Native Tip

리액트 네이티브로 개발을 하면서, 리액티브 개발이 정말 편하다는 것을 느끼지만, 그동안 객체지향이나 MVC 패턴을 워낙 오래 사용했던지라 가끔 벽에 부딪히는 것은 어쩔 수 없는 듯 하다.

그동안 제일 어려웠던 건, 리덕스와 비지니스 로직을 연결하는 방법이었던 것 같은데, 매번 비즈니스 로직을 독립된 클래스로 만들어서 싱글톤으로 사용했더랬다. 여기에 대해서는  좀 더 고민을 하고 결론이 나면 나중에 정리하고 싶다.

❤ 18 업뎃> 오늘 기준으로 (개발 3개월 차 ㅎㅎ) 위에 대해 부연하자면.. Realm DB 스키마와 그 클래시 관련 로직을 담는 모델 클래스를 제외하고는 모든 로직이 리듀서로 들어갔고, 그게 그렇게 나쁘게 보이지는 않다는 겁니다. 하지만, 아직도 코드가 어글리 한데, 이에 대한 원인은.

‘한 액션 처리를 여러 리듀서 파일에서 가능하다는 것’

을 그동안 몰랐었던 데 대부분 있습니다. 자바 스크립트 언어 자체에 대한 깊이가 없으니, import, export 도 새롭고 시행착오도 많았고, 그 대표적인 케이스가 어떤 액션이 있을 때 이를 꼭 한군데서 처리해야될 것 같은 편견이었던 것 같습니다.

별것 아닌 이 부분을 알고나니 모델 클래스를 따로 만들려는 마음보다는 리듀서를 깔끔하게 정리하고자 하는 의욕이 더 강해지는 걸 느낄 수 있었습니다.

</3 18 업뎃> // 리액트 코딩을 하다보니.. 글도 이렇게 쓰게 되더라는 ..ㅎㅎ

이 글에서는 이보다는 간단한, 컴퍼넌트에 기본 값을 주는 방법에 대해 오늘 내린 결론을 정리한다.

컴퍼넌트에 기본 값을 준다.