OpenMV MicroPython OpenMV MicroPython OpenMV MicroPython
  • Home
  • Tutorial
  • Libraries
  • Boards
  • Shields
  • Sensors
  • Language
  • CPython
  • Internals
  • Changelog
  • License
/
  • English
  • 简体中文
  • 繁體中文
  • Deutsch
  • 日本語
  • Español
  • Русский
  • Français
  • 한국어
  • Italiano
  • Português
  • Nederlands
  • Română
  • Hrvatski
  • Čeština
  • Polski
  • Suomi
  • Svenska
  • Magyar
  • Türkçe
  • 토론
  • 튜토리얼
    • 1. 빠른 시작
    • 2. Python 개요
    • 3. 하드웨어 제어
    • 4. 비전 센서
    • 5. 이미지 처리
    • 6. NumPy
    • 7. 머신러닝
    • 8. Asyncio
    • 9. 네트워킹
    • 10. 웹 서버
    • 11. Bluetooth
      • 11.1. Bluetooth를 사용하는 이유
      • 11.2. BLE 스택
      • 11.3. 무선과 링크 계층
      • 11.4. 광고와 스캔
      • 11.5. 연결
      • 11.6. 서비스와 특성(characteristic)
      • 11.7. GATT 작업
      • 11.8. aioble 모듈
      • 11.9. 주변장치로 동작하기
      • 11.10. 센트럴로 동작하기
      • 11.11. L2CAP 채널
      • 11.12. 동시 역할과 다중 연결
      • 11.13. 페어링 및 본딩
      • 11.14. 마무리
    • 12. 호스트 프로토콜
    • 13. 도구
    • 14. 프로덕션
  • 라이브러리
  • 보드
  • 실드
  • 센서
  • 언어
  • CPython
  • 내부 구조
  • 변경 로그
  • 라이선스

이 페이지에서

  • 11.3.1. 무선 통신(radio)
  • 11.3.2. 링크 계층
  • 11.3.3. 카메라와 상대방이 공유하는 것
  • 11.3.4. Python이 이 모든 것에서 보는 것
micropython-doc 0 0
이 페이지 편집
  1. OpenMV MicroPython /
  2. OpenMV Cam 튜토리얼 /
  3. 11. Bluetooth /
  4. 11.3. 무선과 링크 계층
소스 보기 ChatGPT 에서 열기 Claude 에서 열기 Perplexity 에서 열기

11.3. 무선과 링크 계층¶

BLE 스택의 최하위 두 계층은 Python의 관점에서 거의 전적으로 자동입니다 – 무선 실리콘과 그 위에서 MicroPython이 동작하는 계층들이 채널 선택부터 손실된 패킷의 재전송까지 모든 것을 처리합니다. 그럼에도 그들이 내리는 선택 중 세 가지는 사용자 대상 API로 드러납니다: 전력, 거리, 처리량입니다.

11.3.1. 무선 통신(radio)¶

BLE는 Wi-Fi, 전자레인지, 그리고 대부분의 다른 근거리 무선과 같은 2.4 GHz 산업-과학-의료(ISM) 대역을 사용합니다. 이 대역은 폭 2 MHz의 40개 채널로 나뉩니다.

  • 40개 채널 중 세 개는 광고(advertising) – 자신의 존재를 듣고 있는 누구에게나 알리는 짧은 브로드캐스트 – 를 위해 예약되어 있습니다. 이들은 대역 전체에 걸쳐 분산 배치되어, 청취자가 셋 모두를 빠르게 훑을 수 있고 어느 한 채널의 간섭만으로 장치가 완전히 통신 불능이 될 가능성이 낮습니다.

  • 서른일곱 개는 데이터 채널입니다. 두 장치가 연결되면 이 채널들에서 패킷을 교환하며, 연결 시점에 양쪽이 합의한 의사 난수 시퀀스에 따라 채널 사이를 도약(hop)합니다. 적응형 주파수 도약(adaptive frequency hopping)은 어느 쪽이든 채널을 나쁜 채널(심한 Wi-Fi 간섭, 전자레인지, 이웃 BLE 네트워크)로 표시하여 시퀀스가 그 채널을 건너뛰게 할 수 있습니다.

2400 MHz부터 2480 MHz까지의 수평 주파수 축에 40개의 좁은 채널 슬롯이 그려져 있습니다. 그중 대역의 하단 가장자리, 중앙, 상단 가장자리에 있는 세 개의 슬롯이 "advertising channels"로 강조 표시되어 있습니다. 나머지 37개는 "data channels"로 표시되어 있습니다.

2.4 GHz 대역의 40개 BLE 채널. 셋은 광고용이고, 나머지는 열린 연결에서 트래픽을 운반합니다.¶

무선은 짧은 패킷 – 길어야 몇 밀리초 – 을 전송하고 그 사이에는 잠듭니다. 그 잠듦이 바로 이 기술을 저에너지(low energy)로 만드는 요소입니다. 일반적인 BLE peripheral은 실제로 전송하는 시간이 전체의 1퍼센트에 훨씬 못 미치며, 나머지 시간에는 예정된 이벤트 사이에 무선이 전원 차단 상태로 있습니다.

11.3.2. 링크 계층¶

링크 계층은 다른 장치의 상대편과 통신하는 BLE의 최소 단위입니다. 이것은 네 가지 일을 처리합니다.

  • 패킷 프레이밍. 각 패킷은 짧은 헤더(채널 액세스 주소, 패킷 길이, 제어 비트), 페이로드, 그리고 CRC를 운반합니다. 수신자는 CRC를 확인하고 손상된 것은 무엇이든 버립니다.

  • 주소 지정. 모든 BLE 장치는 무선상에서 자신을 식별하는 48비트 장치 주소(device address)를 가집니다. 일부는 공용(public)입니다 – 제조사가 할당한 하드웨어 식별자로, 영구적으로 추적 가능합니다. 일부는 무작위(random)입니다 – 장치에서 생성되어 주기적으로 교체되며, 도청자가 두 전송을 동일한 물리 하드웨어에 연결하지 못하도록 선택적으로 암호화됩니다. 주소는 광고와 스캔에서 다시 다룹니다.

  • 연결 스케줄링. 두 장치가 연결되면 링크 계층은 도약 시퀀스에서 주기적인 무선 이벤트를 – 고정된 연결 간격(connection interval) 만큼 떨어뜨려 – 스케줄링하고, 위쪽 GATT 계층에서 대기 중인 데이터를 각 이벤트에 채워 넣습니다. 양쪽은 이벤트 사이에 다시 잠듭니다. 연결 간격은 애플리케이션이 요청할 수 있는 조정 항목입니다(연결 참조).

  • 신뢰성. 연결상의 각 패킷은 상대방에 의해 확인 응답(acknowledge)됩니다. 링크 계층은 응답을 받지 못한 것은 무엇이든 재전송하므로, 위쪽 계층들은 순서가 보장되고 손실 없는 바이트 스트림을 보게 됩니다. 네트워킹 측의 UDP – 패킷을 보내고 잘 되기를 바라기와 달리, BLE는 정상 사용 시 별도의 비신뢰 모드를 갖지 않습니다 – 열린 연결상의 모든 패킷은 도착하거나 링크가 끊긴 것으로 선언될 때까지 재시도됩니다.

링크 계층은 또한 한 쌍의 장치가 페어링 중에 키에 합의하고 나면 암호화가 실행되는 곳이기도 합니다(페어링 및 본딩 참조). 암호화된 링크상의 모든 패킷은 위쪽 계층들이 보기 전에 수신측에서 복호화됩니다.

11.3.3. 카메라와 상대방이 공유하는 것¶

양쪽 끝의 무선은 연결 시점에 대화를 좌우하는 몇 가지 매개변수에 합의합니다:

  • 연결 간격(connection interval) – 두 쪽이 패킷을 교환하기 위해 얼마나 자주 깨어나는지로, 7.5 ms에서 4 s까지입니다.

  • peripheral 지연(peripheral latency) – peripheral이 할 말이 없을 때 전력 절약을 위해 연속으로 몇 개의 간격을 건너뛸 수 있는지입니다.

  • 감시 타임아웃(supervision timeout) – 상대방이 잠잠해졌을 때 어느 쪽이든 링크가 끊겼다고 선언하기 전에 얼마나 기다리는지입니다.

  • MTU – 어느 쪽이든 GATT에 전달할 가장 큰 단일 패킷(기본값 23바이트, 협상으로 늘릴 수 있음)입니다.

무선과 링크 계층은 함께 양쪽 무선을 가능한 한 많이 꺼둔 채로 한 장치에서 다른 장치로 신뢰성 있고 순서가 보장된 패킷을 전달하는 일을 책임집니다. 그 위의 모든 계층은 두 엔드포인트 사이에 깨끗하고 사적인 바이트 채널이 존재하는 것처럼 동작할 수 있습니다.

11.3.4. Python이 이 모든 것에서 보는 것¶

거의 아무것도 없습니다. bluetooth와 aioble API는 채널, 도약 시퀀스, 패킷 CRC, 재전송 타이머를 노출하지 않습니다. 이들은 모두 BLE 포트와 무선 내부에서 처리됩니다. 실제로 드러나는 부분은 연결 시점 협상이 노출하는 것들 – 연결 간격, MTU, 주소 유형 – 입니다.

이전
11.2. BLE 스택
다음
11.4. 광고와 스캔

For OpenMV firmware v5.0.0 · based on MicroPython v1.28 · docs built 16 Jun 2026 · Copyright © 2014-2026 by OpenMV, Damien P. George, and others.

Made with Sphinx using the Shibuya theme.