OpenWrt 및 교재 Q&A

블루투스를 이용해서 소켓통신을 하고싶습니다.

페이지 정보

작성자 이상훈 작성일18-01-24 20:07 조회14,743회 댓글8건

본문

우선 안드로이드와 pc 간의

간단한 통신을 하고 싶은데요 안드로이드 예제 소스만 보고있네요

그런데 송신부인 openwrt쪽의 코드는 어떻게 해야할지 감이 안잡힙니다.

검색을 해도 찾기가 원하는 내용을 찾기 힘드네요

혹시 정보있으신분 있으시면 부탁 드립니다.

// 관리자 2018-01-24: 13-05-17 02:41 에 작성된 글입니다

댓글목록

박우재님의 댓글

박우재 작성일

블루투스 통신을 하시려면 openwrt에 블루투스 기능을 넣으셔야 겠죠.
사용하시는 기기 자체에 블루투스 기능이 없다면 USB 블루투스 동글로 하시는 방법 밖에 없을 겁니다.
동글을 usb로 꼽고 openwrt에 블루투스 드라이버(모듈)을 설치하신후,
블루투스 어플리케이션을 제작하시거나 쉘에서 통신을 하실 수 있을겁니다.

http://h-wrt.com/en/doc/bluetooth
참고하세요.

http://translate.google.co.kr/translate?sl=de&tl=en&js=n&prev=_t&hl=ko&ie=UTF-8&eotf=1&u=http%3A%2F%2Fneophob.com%2F2008%2F07%2Fdiplomarbeit-embedded-linux-german%2F

// 관리자 2018-01-24: 13-05-19 07:10 에 작성된 글입니다

이상훈님의 댓글

이상훈 작성일

현재 블루투스 동글 사용중이구요
아래에서 알려주신 아이폰과 블루투스 페어링하여 테더링하는 예제를통해
핸드폰으로 페어링 까지는 마친 상태입니다.
근데 이이후에 어떻게 진행을 해야 할지 막막해서요
첫번째 링크에 들어가서 쭉진행하엿는데  obex관련 패키지가 설치가 안되더라구요
어플리 케이션을 제작하라고 하셧는데 어떤식으로 제작해야될지 좀 알려주실수 없을까요?

// 관리자 2018-01-24: 13-05-19 22:54 에 작성된 글입니다

박우재님의 댓글

박우재 작성일

어플리케이션은 원하시는 언어로 사용하시면 되죠. 먼저 무엇을 하고 싶으신지 대충 설명해 주시면 더 좋을텐데요.
예를 들어 Openwrt로 WakeLan(WOL)명령으로 xx:xx:xx:xx:xx hwid를 가진 기기로 켜는 명령어를 보내고 싶은 프로그램을 만든다고 가정할때,
이건 어디까지나 서버/클라이언트 이므로 서버(Openwrt)쪽 프로그램과 클라이언트(핸드폰)쪽 프로그램이 필요합니다.
통신하기 위해서는 프로토콜이 필요하구요.

Openwrt쪽의 프로그램은 Daemon(항상 떠있는 프로그램)형태로 Auto-Paring 기능과 WOL를 실행하는 루틴을 포함해야겠죠.
저같으면 Python으로 하겠습니다. pybluez라는 패키지가 있는데 따로 openwrt 패키지 형태로 컴파일 하셔야 합니다.

https://code.google.com/p/pybluez/source/browse/#svn%2Ftrunk%2Fbluez

소스 받으셔서 크로스 컴파일해서 일단 Openwrt에 파이썬위에 pybluz라이브러리를 설치하시고 아래 샘플과 같은 파이썬 파일 만드셔서 실행해 보시기 바랍니다.

https://code.google.com/p/pybluez/source/browse/trunk/examples/simple/rfcomm-server.py

클라이언트쪽은 아이폰에서 파이썬을 돌릴수 있는 방법이 있는지 모르겠네요. 아이폰에서 파이썬을 돌릴수 있다면 pybluez라이브러리를 설치하고,

https://code.google.com/p/pybluez/source/browse/trunk/examples/simple/rfcomm-client.py

이걸 실행합니다.

만약에 파이썬을 실행할수없다면 ios프로그램을 만드셔야 합니다.

http://msftguy.blogspot.kr/2010/05/on-bluetooth-in-40.html#more

이걸 참고하시면 되겠네요.

rfcomm프로토콜에 대해서 잘 모르지만 만약 간단한 프로토콜이라면 앱스토어에 있는 rfcomm 채팅 프로그램에 의해 원하시는 프로그램이 돌아갈 수도 있습니다.

https://itunes.apple.com/app/bluetooth-sms-hd-send-free/id432048017?mt=8

이것은 rfcomm 프로토콜 문서를 찾아보시거나 직접해보시는 방법밖에는 없을것 같습니다.

// 관리자 2018-01-24: 13-05-21 06:07 에 작성된 글입니다

박우재님의 댓글

박우재 작성일

아 찾아 보니 이미 패키지가 있군요.
https://dev.openwrt.org/browser/packages/lang/pybluez

opkg install pybluez 하면 openwrt쪽은 될것 같네요.

// 관리자 2018-01-24: 13-05-21 06:23 에 작성된 글입니다

이상훈님의 댓글

이상훈 작성일

아 우선 목표는 freescale 보드를 이용해 적외선 센서를 통해 값을 받아서 블루투스 통신으로 간단한 값을

openwrt에 전송하고 그 값을 저장하고자 하고있습니다.

그런데 freescale보드쪽 작업이 완료 되지않아서 안드로이드와의 통신으로 대신 해보려고 합니다.

현재 c언어로 작업한 openwrt와 안드로이드 간의 간단한 소켓으로 통신을 하고 있는데 이와함께 freescale 보드와

openwrt간의 통신을 함께 하고 싶습니다. 이해가 되셨는지 모르겠네요...

그리고 지금 저희는 gediter를 통해 C언어로 코딩작업을 하고있는데 파이썬과는 많이 다를까요?

파이썬을 사용해본사람이 없어서요..

// 관리자 2018-01-24: 13-05-22 04:03 에 작성된 글입니다

박우재님의 댓글

박우재 작성일

C언어로 원래 작업하셨으면 계속 그걸로 하시는게 좋구요. 시간나시면 파이썬 한번 시도해 보시기 바랍니다.

파이썬 쉽습니다.


openwrt 측에서 opkg install python pybluez 실행하시고 필요한 의존성패키지들을 전부 설치해 줍니다.
그리고 위 rfcomm server 데몬을 실행시킵니다.

안드로이드 쪽은
https://code.google.com/p/python-for-android/downloads/list

여기에서
https://code.google.com/p/python-for-android/downloads/detail?name=PythonForAndroid-r7b1.apk&can=2&q=
https://code.google.com/p/python-for-android/downloads/detail?name=PyBluez-0.19-py2.6-linux-armv.egg&can=2&q=
이걸 핸드폰에 깔고 rfcomm client를 적절하게 바꿔서 실행시킵니다.

rfcomm 프로토콜 참조
http://www.microvision.co.kr/bluetooth/lecture/lecture_protocol_2.htm
http://tistory.izyou.net/2460681


어짜피 통신은 rfcomm 프로토콜을 사용하므로 C냐 파이썬이냐는 관계없습니다. 편한걸로 하세요.

// 관리자 2018-01-24: 13-05-22 05:11 에 작성된 글입니다

이상훈님의 댓글

이상훈 작성일

지금 궁극적인 목표가 안드로이드 - openwrt - 보드 통신후 보드가 보내준 짧은 데이터를 txt 파일에 저장을 하려고 하는데요

현재 안드로이드와 openwrt와는 통신이 가능한 상태입니다.

그래서 openwrt에 올린 서버.c라는 코드에 openwrt와 보드의 통신을 할수있는 기능을 추가 하고 싶은데요

구글링을 해봐도 bluetooth로 어떻게 코드를 짜야해야알지 막막하네요..

// 관리자 2018-01-24: 13-05-23 11:23 에 작성된 글입니다

박우재님의 댓글

박우재 작성일

검색해보세요. rfcomm c example

나오네요.

http://reynold4linux.blogspot.kr/2010/07/bluetooth-rfcomm-example-in-c.html

분석과 코딩은 본인이해야죠.

위에 프로토콜 설명 잘되어 있으니까 잘 보시면돼요.

// 관리자 2018-01-24: 13-05-23 22:04 에 작성된 글입니다