CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·방탄소년당 ·일본산당 ·자전거당 ·개발한당 ·이륜차당 ·AI당 ·안드로메당 ·소시당 ·콘솔한당 ·골프당 ·소셜게임한당 ·걸그룹당 ·나스당 ·키보드당 ·퐁당퐁당 ·노젓는당 ·곰돌이당 ·갖고다닌당 ·육아당 ·위스키당 ·디아블로당 ·클다방 ·바다건너당 ·라즈베리파이당 ·찰칵찍당 ·PC튜닝한당 ·IoT당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·물고기당 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·가상화폐당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

개발한당

질문 iOS 기반 폰에 연결할 블루투스(4.0 BLE) 주변기기 개발해보신 분 계실까요 8

2021-05-04 16:31:06 112.♡.107.77
짱구아빠

이런 질문을 아질게에 해야 하는지 여기에 해야 하는지 모르겠습니다만... 


블루투스 기반으로 동작하는 주변 기기를 만들려고 합니다.

제품으로 나와 있지도 않고, 팔수 있을 정도는 아니더라도 개인적으로라도 사용하려는 용도가 있어서

아두이노를 알아보다가 esp32 보드들이 있어서 이걸 구매해서 열심히 들여다보고 있는데요...

제가 생각했던것이 실제 블루투스 동작과 좀 많이 다르더라고요? ;ㅅ;


제가 계획한 주변 기기의 블루투스 동작은 다음과 같습니다.

1. 블투 기기의 전원을 켜고 버튼을 누른다 (Server로 동작)

2. 스마트폰 (특히 아이폰)에서 블루투스 연결에 들어가면 기기 이름이 뜬다

3. 블루투스 연결을 탭하면 (비번 없이) 기기가 연결된다

4. 기기의 연락처 정보/위치 정보 등을 블투 기기에서 받아갈수 있다

5. 다시 1~3을 반복하면 복수개의 스마트폰을 연결할수 있다 (멀티페어링? 멀티커넥트?)


이렇게 계획하고 esp32 보드를 구매해서 블루투스 예제들을 돌려보니

PC와 안드로이드 기기에서는 2번이 문제가 없는데, 아이폰에서는 절대 추가 목록에 나오질 않네요?

구글링 해보니 다음의 내용을 찾았습니다.

------

블루투스 2.0 연결

스마트폰 장치 켜기 - 외부 블루투스 검색 - 검색된 블루투스와 페어링(비밀번호 유/무) - 사용앱에서 블루투스 연결


블루투스 4.0 연결 

1. 블루투스 4.0 BLE의 설정이 페어링 없이 연결인 경우(기본 설정)

a. 스마트폰 장치 켜기 - 외부 블루투스 검색 - - 검색된 블루투스와 페어링 시도 - 오류 메시지 표시

b. 스마트폰 장치 켜기 - 사용앱에서 블루투스 4.0 BLE만 검색 - 블루투스 연결 


2. 블루투스 4.0 BLE의 설정이 비밀번호 이용 페어링 연결인 경우(특정 사용자 한명만 사용)

a. 스마트폰 장치 켜기 - 외부 블루투스 검색 - 블루투스4.0과 비밀번호 사용 페어링 - 사용앱에서 검색 불가

b. 스마트폰 장치 켜기 - 사용앱에서 블루투스 4.0 BLE만 검색  - 블루투스와 비밀번호 사용 페어링 - 블루투스 연결


블루투스 4.0 BLE의 비밀번호 사용 페어링의 경우 기존에 사용하던 블루투스 2.0과 같이 스마트폰 블루투스 장치 프로그램을 통해 연결을 할 수 있다(2-a의 경우). 하지만 연결되는 순간 블루투스 4.0 BLE 모듈은 장치의 연결을 위한 advertising기능을 중지하게 되고 이는 사용앱에서 블루투스 4.0 BLE 장치의 검색을 불가하게 만들어 정작 앱에서는 연결을 할 수 없게 된다.  


모듈에 따라 advertising 여부를 설정하는 옵션이 있을 수 있으나 특정 사용자 한명만 지속적인 연결을 하는 상황에서 다른 사용자가 접속할 수 있도록 advertising 한다는 것 자체는 이치에 맞지 않게된다.


다시 한번 언급하지만, 블루투스 4.0 BLE는 블루투스 2.0의 기능을 향상시킨 업그레이드 버전이 아니라 사용 용도가 다른 별개의 제품으로 취급해야 한다. 


블루투스 2.0은 사용자 한명의 지속적인 연결과 데이터 전송 및 수신을 목적으로 하였다면 블루투스 4.0 BLE는 불특정 다수의 단속적인 연결, 즉 데이터 전송 및 수신 시에만 연결하고 다음 사용자를 위해 연결을 끊는데 적합하게 만들어 졌다. 이렇게 함으로써 배터리로 구동되는 장치의 경우 전력 소모를 줄일수 있게된다. 하지만 한번에 전송할 수 있는 패킷의 양도 극도로 줄여놓았다(20byte 임, 모듈의 펌웨어에 따라 다를 수 있음).


출처: https://postpop.tistory.com/13?category=744994

-----------

그외에도 찾아보니 iOS는 Bluetooth 4.0 BLE만 지원하기 때문에 2.0과 같은 방식은 더 이상 지원하지 않는다고 하던데 맞는지요?

위의 글 2-b 와 중간에 진하게 표시한 부분의 얘기라면, 비번을 설정해서 연결 가능하게 하더라도, 1대 이상 연결이 불가하다는 얘기 맞지 않나요?

그냥 블투 연결하고 정보 표시할 용도인데... 굳이 앱을 만들어서 앱에서 검색하고 연결할 필요가 없는데 말입니다.


글이 길었습니다만 질문을 요약하자면...


1. 아이폰에서 앱을 사용하지 않고 블루투스로 검색해서 추가할수 있는 멀티페어링 기기를 만들수 있나?

2. (1번이 가능하다면) esp32 보드가 아니라 다른 개발 방법이 필요한가?

입니다.


iOS에서 안되는거라고 생각하기엔 제 아이폰에 블루투스로 연결된 제품들이 너무 많은데 말입니다. ;;

짱구아빠 님의 게시글 댓글
SIGNATURE
세상에 공짜는 없다.
서명 더 보기 서명 가리기
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [8]
윈드로머
IP 220.♡.0.252
05-04 2021-05-04 17:56:05 / 수정일: 2021-05-04 17:57:24
·
위에 아티클처럼 BLE는 '페어링'이 없습니다.
2.0을 Bluetooth Classic 이라고 하는데, iOS 앱에서 다룰 수 있는건 BLE 뿐이죠.

여튼 질문에 대한 답변은 iOS는 BLE뿐 아니라 클래식 지원합니다. 멀티페어링은 기기 펌웨어에서 구현하면 됩니다.
블투쪽을 더 공부하시고, 클래식과 BLE는 완전 다른거라고 생각하시고 공부하시면 될 것 같습니다.

추가로, iOS 설정-블루투스에 검색되는건 클래식입니다. BLE 목록 안나옵니다. BLE는 전용앱에서 검색합니다 보통.
대부분 안드로이드에서는 클래식, BLE 다 검색되서 나옵니다.
짱구아빠
IP 121.♡.194.132
05-06 2021-05-06 00:17:18
·
@윈드로머님 멀티페어링은 기기에서 여러대의 블루투스 client를 저장하면 되는건가요?
블투쪽이 제가 예상했던것과 많이 다르더군요. 말씀하신대로 클래식과 BLE는 완전히 다르다는건 잘 알겠습니다.
그럼 블투 목록에 나오는것이 다 클래식이라면, 요즘 나오는 기기들 중에 앱에서 연결하면 목록에도 나오는 것들은 두개 다 지원하는것이겠군요.
친절한 답변 감사합니다.
Chiro
IP 220.♡.47.90
05-05 2021-05-05 10:32:12
·
클래식에서는 데이터 전송은 주로 SPP를 이용했는데 iOS에서 SPP를 지원하지 않고
대신 BLE의 GATT를 지원합니다. 안드로이드는 둘 다 지원하구요.
사용하신 아두이노 기기가 BLE를 지원하는지 스펙을 확인할 필요가 있습니다.

BLE를 사용해서 임의의 데이터 전송을 하려면 (당연히) 전용앱을 만들어야 합니다.
다행히 프레임웍에서 지원이 잘 되어 있어서 단순한 기능이라면 개발이 어렵지 않습니다.
아래 사이트를 살펴보면 도움이 될 겁니다.
안드로이드: https://developer.android.com/guide/topics/connectivity/bluetooth-le?hl=ko#java
iOS: https://www.raywenderlich.com/231-core-bluetooth-tutorial-for-ios-heart-rate-monitor

참고로, Nordic 모듈은 (nRF52 등) BLE 위에서 UART 처럼 통신할 수 있는 펌웨어와 리퍼런스 앱을 제공합니다.
이것을 사용하면 PC 터미널에서 B/T 보드와 UART 연결을 하고 임의의 데이터를 자유롭게 송수신할 수 있어서
빠르게 샘플 개발이 가능합니다.
짱구아빠
IP 121.♡.194.132
05-06 2021-05-06 00:22:22
·
@Chiro님 블투 관련 글들을 찾아보다보니 GATT가 나오던데, 아두이노 소스에서도 BLE 소스를 보니 지원되는거 같더군요.
앱을 만드는게 어려운건 아니겠지만, 굳이 앱을 만들 필요가 없는 기기라 좀 고민되는 사항입니다.
혹시, 위에 인용한 글에서 2-a처럼 비밀번호를 표시하게 하고 앱이 아닌 기기에서 추가하게 되면, 특정 사용자 한명만 사용 가능하다고 나와있는데.. 기기 하나를 추가한 후 기기에서 추가로 비밀번호를 출력하고 다른 기기에서 또 연결할수 있는지 아시나요? (아니면 가능한지의 여부라도..) ;;
말씀하신 Nordic 모듈은 아직 찾아보지는 못했는데, esp32를 쓰는 이유가 블투 외에 다른 모듈이 이미 개발되서 통합으로 나오는 보드가 있어서 쓰는 것이거든요..
2-a 방법으로 여러대를 연결할수 있다면 이쪽이 더 빠를거 같아서 다시 질문드렸습니다. ;ㅅ;
자세한 답변 감사합니다. ^^
Chiro
IP 1.♡.8.213
05-06 2021-05-06 13:03:55
·
@짱구아빠님 제가 아두이노는 잘 몰라서... ESP32와 BLE의 관계가 명확하지 않았었습니다.
검색해보니 multiple client 지원이 된다고 하네요. (BLE는 8 개까지..)
https://esp32.com/viewtopic.php?t=11490
그런데 이 경우에도 각 client에 대해서 비밀번호를 적용할 수 있는지는, 이것도 ESP32의 기능에 속하는 문제라
관련 커뮤니티나 지원사이트를 찾아보셔야겠네요.
핸드폰 입장에서는 ESP32 서버 한 대와만 연결하면 되므로 특이사항이 없고, ESP32에서 여러 폰과의 연결을
관리해야 하는 문제이니까요.
(여러대의 핸드폰을 순차적으로 각각 연결-정보전달-연결종료 하는게 아니고 동시에 여러대가 연결 상태에 있어야
하는 것이죠?)

아이폰에서는 2-a 방법이 불가능하고 (폰의 B/T 설정에서는 클래식 연결만 관리할겁니다),
BLE의 본 목적에도 맞지 않습니다.

그리고 생각하시는 기능이, 연결된 스마트폰의 정보 (전화번호, 위치 등)를 ESP32로 전달하는 것이 맞나요?
전용앱이 없이 자동으로 저런 정보를 전달해 줄 방법이 없을텐데요.
짱구아빠
IP 121.♡.194.132
05-06 2021-05-06 23:33:31 / 수정일: 2021-05-06 23:40:29
·
@Chiro님 와... 역시 먼저 해보신 분의 경험이 가장 도움이 되네요.
알려주신 링크도 정말 감사하고, 8개까지 가능하다니 일단 더 찾아보도록 하겠습니다.

제가 생각하는 기기는 동시에 여러대 연결할 필요는 없고 또 계속 연결할 필요도 없는 설계입니다.
만약 3대를 연결했다고 하면 블투쪽에서 적정한 슬립 타임 이후에 1대씩 연결해보고 그 중에 연결된것이 있는지만 확인해보면 되는거거든요.

아이폰에서 2-a 방법이 불가능하다면.. 대략 난감합니다만.. ㅠㅠ (제가 안드폰을 쓰면 필요 없을수도 있는것을..)
일단 아두이노쪽 소스를 좀 보고 시도해보고.. 안되면 앱을 만들 궁리를 해보겠습니다.
(클래식으로 구현하는 것도 생각해봤는데.. 기기 특성은 BLE로 하는게 맞긴 하거든요..)

아, 마지막에 쓰신 단락을 생각해보니... 앱을 만들어야 하겠네요... 블투 연결시에 주는 값은 ID같은 값일테니..ㅠㅠ
(하아.. 기기 블투 코드 짜는것도 이리 어려운데.. 앱까지 만들어야 하다니 ㅠ)
윈드로머
IP 220.♡.0.252
05-07 2021-05-07 09:12:32
·
@짱구아빠님 참고로 iOS에서는 mac address 를 얻을 수 없어서 블투에서 구분자를 받을 수 있는 부분을 따로 구현하셔야 합니다. ios 에서는 블투 기기의 mac 을 내부에서만 사용하고, 푸쉬 토큰처럼 무효화 하기 전까지 유지되는 반영구적 값으로 제공합니다.
짱구아빠
IP 110.♡.55.99
05-07 2021-05-07 10:31:35
·
@윈드로머님 그..그렇군요! 알려주셔서 감사합니다. 제가 이래서 클리앙을 끊을수없.. 쿨럭
그럼 블투기기에서 iOS 기기마다 다른 값으로 구분해서 저장하고 앱에서 데이터를 받아서 사용하는 방법으로 개발해야 하는군요.
제 실력이.. 그만큼 되야 할텐…
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.