2016-09-21 3 views
0

광고 패킷이 거리 범위의 모든 사람에게 전송되는 곳을 읽었습니다. 그러나 다른 장치가이를 수신하기 위해 스캔해야합니까? 그렇지 않으면 수신 할 수 있습니까?BLE 장치는 스캔하지 않을 때 광고 패킷을 읽습니까? (자동 연결)

문제 : 5 개 또는 6 개의 BLE 장치 사이에 피코넷을 설정한다고 가정 해 봅니다. 어떤 점에서 나는 노예와 하나의 주인 사이에 약간의 연결이있다. 그런 다음 기기 중 하나가 며칠 동안 제거/차단되면 네트워크가 켜지 자마자 네트워크에 다시 연결하고 싶습니다.

자동 연결 기능에 대해 읽었지만 실제로 설정할 때 장치가 수동 스캔보다 실제로 느린 (백그라운드에서) 백그라운드 스캔을 만듭니다. 이것은 autoConnect가 다시 켜지는 장치를 작동 시키려면 다시 광고해야한다고 결론 내릴 수 있습니다. 그러므로 autoconnect가 백그라운드에서 저속 스캔을 실제로 실행하는 경우 어떻게 든 스캔하지 않으면 즉시 adv 패킷을받을 수없는 것처럼 보입니다. 말이 돼?

그렇다면 주변에 어떤 방법이 있습니까? 내 말은, 즉시 범위로 되돌아 오는 장치를 감지 할 수 있습니까?

답변

0

"인스턴트"가 없습니다. 당신은 지연, 타임 아웃, 재전송, 재밍 등과 같은 무선 프로토콜에 대해 이야기하고 있습니다. 항상 지연이 있습니다. 중요한 것은 응용 프로그램에서 수용 가능한 것으로 간주되는 것입니다.

라디오 송수신 장치는 한 번에 하나의 채널에서 수신, 대기 또는 전송 중입니다. 송수신은 전력 소비를 의미합니다.

Central이 유휴 상태 일 때 (연결을 전혀 처리하지 않음) 스캔 만 수행하면됩니다. 그것은 풀 타임으로 할 수 있습니다 (사양에 따라 듀티 사이클되어야 함). 피어 주변 장치로부터 처음으로 전송할 때 광고 패킷을 실제로받을 것으로 예상 할 수 있습니다.

Central이 여러 주변 장치에 대한 연결을 유지 관리 할 때 트랜시버 시간은 유지 관리 할 모든 연결간에 공유됩니다. 백그라운드 스캐닝은 낮은 우선 순위로 간주되며 나머지 송수신기 시간 중 일부를 사용합니다. 그런 다음 Central이 듣지 않는 동안 광고 Peripheral은 ADV 패킷을 보낼 수 있습니다.

여기에 통계 마법을 제공 :

사양은 두 개의 광고 이벤트 사이의 간격은 (사이비) 임의 지연을 통해 확장해야했다. 이렇게하면 Central (스캐너) 및 Peripheral (광고주)가 어느 시점에서 서로를 볼 수있게됩니다. 이 임의의 지연이 없으면 타이밍 할당이 고조파가 될 수 있지만 위상이 서로 다르게 나타날 수 있습니다.

중앙 및 주변 장치 (advInterval, advDelay, scanWindow, scanInterval) 및 무선 링크 품질에 사용되는 매개 변수에 따라 주어진 시간이 지나면 노드에 연결할 수있는 확률을 계산할 수 있습니다. 이것은 독자에게 연습 문제로 남아 있습니다 ... :)

마지막으로, "내 주변 장치가 내 중앙에 다시 연결되는 경우, 95 %의 경우에 300ms 후" ?

+0

설명해 주셔서 감사합니다. 네, 사실 저는 즉시 말하면 조금 과장되었습니다. 요점은이 배경 스캔 (autoConnect = 1 일 때)이 1 초 정도의 간격을 가지고 있다는 것을 읽을 수 있기 때문입니다. 그것은 나에게는 너무 길지만 300ms는 괜찮을 것이다. autoConnect 스캔 빈도를 높일 수 있습니까? (우선 순위를 조금 높여야합니까?) –

+0

장치 및 구현에 따라 다릅니다. 사양에 정의 된 검색 기간은 "권장 값"입니다.제한 사항은 제조업체의 펌웨어/스택에 의해 적용되거나 적용되지 않을 수 있습니다. 알았어. – Nipo

+0

. 스캐닝 할 때이 불일치 가능성에 대해서도 생각하고있었습니다. 광고주가 지속적으로 광고하도록 설정할 수 있으므로 마스터가 시간 창에서 광고를 보지 못할 가능성이 적습니다. 그러나 최소 광고 간격은 20ms 인 것으로 보입니다. 이 장치/스택 종속 또는 아마도 내가 20ms보다 낮아질 수 없을 것이라고 생각합니까? –

관련 문제