[IOT-006][기초] Wi-Fi·Bluetooth·저전력 통신 고르기
페이지 정보

본문
[이번 수업]
IoT 무선 통신은 요구사항이 먼저입니다. 32바이트를 1초마다 보내는 장치와 1시간마다 보내는 장치는 전력·지연 요구가 다릅니다. Wi-Fi, Bluetooth Low Energy(BLE), Thread, LoRaWAN을 비교하고 하루 전송량으로 후보를 좁힙니다.
[선수지식]
IOT-001의 전압·전류와 IOT-005의 직렬 통신을 알면 좋습니다. 비트와 바이트, IP 네트워크의 뜻을 읽을 수 있으면 충분합니다.
[학습목표]
1. 데이터량·주기·거리·전력으로 무선 요구사항을 적는다.
2. Wi-Fi·BLE·Thread·LoRaWAN의 용도를 구분한다.
3. 순수 데이터량을 계산하고 실제 측정 항목을 찾는다.
[핵심개념]
먼저 한 메시지의 크기, 전송 주기, 허용 지연, 장애물이 있는 거리, 장치 수, 배터리 수명, 양방향 통신, 게이트웨이와 인터넷 유무를 적습니다. 사용하는 주파수 대역의 지역 규정과 인증도 확인해야 합니다. 사양표의 최대 속도·거리만으로는 벽, 안테나, 간섭, 재전송, 절전 주기의 영향을 알 수 없으므로 실제 장소에서 측정합니다.
Wi-Fi는 IEEE 802.11 계열 무선 LAN입니다. 기존 액세스 포인트와 IP망에 직접 연결하기 쉽고 큰 데이터나 펌웨어 파일을 전송할 때 유리합니다. 배터리 장치는 연결 유지·재접속·송수신 때의 소비 전류를 재야 합니다.
Bluetooth LE는 가까운 휴대전화나 게이트웨이와 작은 센서 데이터를 주고받을 때 자주 씁니다. 연결하지 않고 광고 패킷을 방송하거나, 연결 뒤 GATT의 서비스와 특성으로 값을 읽고 쓰고 알림을 받을 수 있습니다. Bluetooth Classic과 전력 특성·프로파일이 같다고 가정하면 안 됩니다.
Thread는 전력 효율적인 IEEE 802.15.4 무선 위에 IPv6를 쓰는 메시 네트워크입니다. 건물 안의 여러 저전력 장치를 잇는 데 알맞으며 다른 IP망과 연결할 때 경계 라우터가 필요합니다. 잠자는 종단 장치와 계속 패킷을 전달하는 라우터의 전력 역할은 다릅니다.
LoRaWAN은 배터리 장치를 넓은 지역의 게이트웨이와 잇는 저전력 광역망입니다. 작고 드문 텔레메트리에 맞지만 큰 파일이나 즉시 응답이 필요한 제어에는 맞지 않을 수 있습니다. 채널·출력·데이터율은 국가별 지역 파라미터를 따라야 합니다. 한 제품에서 BLE로 현장 설정, Wi-Fi로 업데이트, 저전력망으로 센서 전송처럼 여러 방식을 함께 쓸 수도 있습니다.
[따라하기]
아래를 `radio_budget.py`로 저장합니다.
```python
payload_bytes = 32
interval_seconds = 60
seconds_per_day = 24 * 60 * 60
messages = seconds_per_day // interval_seconds
daily_bytes = messages * payload_bytes
print(f"하루 메시지: {messages}개")
print(f"순수 데이터: {daily_bytes}바이트 ({daily_bytes / 1024:.1f} KiB)")
```
macOS·Linux는 `python3 radio_budget.py`, Windows PowerShell은 `python radio_budget.py`로 실행합니다.
```text
하루 메시지: 1440개
순수 데이터: 46080바이트 (45.0 KiB)
```
이 값은 센서 본문만 계산한 하한입니다. 실제 무선량에는 주소·헤더·인증 태그·확인 응답·재전송·연결 유지가 더해집니다. 전력은 데이터량만으로 결정되지 않으므로 개발 보드의 전류를 절전, 깨우기, 연결, 송신 상태별로 측정하고 각 상태의 시간을 곱해 에너지 예산을 만듭니다.
[흔한 실수]
광고의 최대 거리와 속도를 실제 환경의 보장값으로 쓰지 않습니다. BLE와 Bluetooth Classic을 같은 방식으로 설계하지 않습니다. 모든 메시 장치가 항상 저전력이라고 가정하지 말고 라우터 역할을 확인합니다. 연결 끊김, 게이트웨이 장애, 혼잡, 중복·순서 뒤바뀜을 시험합니다. 허가되지 않은 출력이나 지역 주파수 설정도 사용하지 않습니다.
[보안 주의]
장치마다 고유한 신원과 키를 발급하고 기본 비밀번호·공유 키를 재사용하지 않습니다. 안전한 초기 등록 뒤 상호 인증과 암호화를 켜고, 링크 보안만 믿지 말고 애플리케이션 메시지의 권한과 재전송 방지도 확인합니다. 광고 식별자는 추적 위험을 줄이도록 최소화하거나 회전시킵니다. 키 교체·펌웨어 업데이트·보안 상태 보고 절차를 제품 수명 전체에 둡니다. 실습은 본인 소유의 로컬·격리 장치에서만 하며 다른 무선망을 탐색하거나 방해하지 않습니다.
[직접 해볼 과제]
`payload_bytes`를 512, `interval_seconds`를 5로 바꿔 하루 순수 데이터량을 계산하세요. 거리·전원·허용 지연·게이트웨이 유무를 가정하고 후보 두 개를 고른 뒤 선택 이유와 반드시 실측할 항목을 각각 세 가지 적습니다.
[확인문제]
1. 무선 방식 선택 전에 메시지 크기와 전송 주기를 계산해야 하는 이유는 무엇인가요?
2. Bluetooth LE의 광고와 GATT 연결은 어떤 상황에서 구분해 쓰나요?
3. Thread와 LoRaWAN은 네트워크 범위와 기반 구조에서 어떻게 다른가요?
[다음 학습]
6번 순환을 마쳤습니다. 다음 CORE-007에서는 문제를 더 작은 단계로 나누고 복잡도를 관리하는 중급 학습을 시작합니다.
[공식 참고 자료]
- IEEE 802.11-2024: https://standards.ieee.org/ieee/802.11/10548/
- Bluetooth LE 입문: https://www.bluetooth.com/bluetooth-le-primer/
- Thread 개요: https://threadgroup.org/What-is-Thread/Overview
- LoRaWAN 표준 개요: https://lora-alliance.org/lorawan-for-developers/
- IoT 장치 보안 기준: https://csrc.nist.gov/pubs/ir/8259/a/final
IoT 무선 통신은 요구사항이 먼저입니다. 32바이트를 1초마다 보내는 장치와 1시간마다 보내는 장치는 전력·지연 요구가 다릅니다. Wi-Fi, Bluetooth Low Energy(BLE), Thread, LoRaWAN을 비교하고 하루 전송량으로 후보를 좁힙니다.
[선수지식]
IOT-001의 전압·전류와 IOT-005의 직렬 통신을 알면 좋습니다. 비트와 바이트, IP 네트워크의 뜻을 읽을 수 있으면 충분합니다.
[학습목표]
1. 데이터량·주기·거리·전력으로 무선 요구사항을 적는다.
2. Wi-Fi·BLE·Thread·LoRaWAN의 용도를 구분한다.
3. 순수 데이터량을 계산하고 실제 측정 항목을 찾는다.
[핵심개념]
먼저 한 메시지의 크기, 전송 주기, 허용 지연, 장애물이 있는 거리, 장치 수, 배터리 수명, 양방향 통신, 게이트웨이와 인터넷 유무를 적습니다. 사용하는 주파수 대역의 지역 규정과 인증도 확인해야 합니다. 사양표의 최대 속도·거리만으로는 벽, 안테나, 간섭, 재전송, 절전 주기의 영향을 알 수 없으므로 실제 장소에서 측정합니다.
Wi-Fi는 IEEE 802.11 계열 무선 LAN입니다. 기존 액세스 포인트와 IP망에 직접 연결하기 쉽고 큰 데이터나 펌웨어 파일을 전송할 때 유리합니다. 배터리 장치는 연결 유지·재접속·송수신 때의 소비 전류를 재야 합니다.
Bluetooth LE는 가까운 휴대전화나 게이트웨이와 작은 센서 데이터를 주고받을 때 자주 씁니다. 연결하지 않고 광고 패킷을 방송하거나, 연결 뒤 GATT의 서비스와 특성으로 값을 읽고 쓰고 알림을 받을 수 있습니다. Bluetooth Classic과 전력 특성·프로파일이 같다고 가정하면 안 됩니다.
Thread는 전력 효율적인 IEEE 802.15.4 무선 위에 IPv6를 쓰는 메시 네트워크입니다. 건물 안의 여러 저전력 장치를 잇는 데 알맞으며 다른 IP망과 연결할 때 경계 라우터가 필요합니다. 잠자는 종단 장치와 계속 패킷을 전달하는 라우터의 전력 역할은 다릅니다.
LoRaWAN은 배터리 장치를 넓은 지역의 게이트웨이와 잇는 저전력 광역망입니다. 작고 드문 텔레메트리에 맞지만 큰 파일이나 즉시 응답이 필요한 제어에는 맞지 않을 수 있습니다. 채널·출력·데이터율은 국가별 지역 파라미터를 따라야 합니다. 한 제품에서 BLE로 현장 설정, Wi-Fi로 업데이트, 저전력망으로 센서 전송처럼 여러 방식을 함께 쓸 수도 있습니다.
[따라하기]
아래를 `radio_budget.py`로 저장합니다.
```python
payload_bytes = 32
interval_seconds = 60
seconds_per_day = 24 * 60 * 60
messages = seconds_per_day // interval_seconds
daily_bytes = messages * payload_bytes
print(f"하루 메시지: {messages}개")
print(f"순수 데이터: {daily_bytes}바이트 ({daily_bytes / 1024:.1f} KiB)")
```
macOS·Linux는 `python3 radio_budget.py`, Windows PowerShell은 `python radio_budget.py`로 실행합니다.
```text
하루 메시지: 1440개
순수 데이터: 46080바이트 (45.0 KiB)
```
이 값은 센서 본문만 계산한 하한입니다. 실제 무선량에는 주소·헤더·인증 태그·확인 응답·재전송·연결 유지가 더해집니다. 전력은 데이터량만으로 결정되지 않으므로 개발 보드의 전류를 절전, 깨우기, 연결, 송신 상태별로 측정하고 각 상태의 시간을 곱해 에너지 예산을 만듭니다.
[흔한 실수]
광고의 최대 거리와 속도를 실제 환경의 보장값으로 쓰지 않습니다. BLE와 Bluetooth Classic을 같은 방식으로 설계하지 않습니다. 모든 메시 장치가 항상 저전력이라고 가정하지 말고 라우터 역할을 확인합니다. 연결 끊김, 게이트웨이 장애, 혼잡, 중복·순서 뒤바뀜을 시험합니다. 허가되지 않은 출력이나 지역 주파수 설정도 사용하지 않습니다.
[보안 주의]
장치마다 고유한 신원과 키를 발급하고 기본 비밀번호·공유 키를 재사용하지 않습니다. 안전한 초기 등록 뒤 상호 인증과 암호화를 켜고, 링크 보안만 믿지 말고 애플리케이션 메시지의 권한과 재전송 방지도 확인합니다. 광고 식별자는 추적 위험을 줄이도록 최소화하거나 회전시킵니다. 키 교체·펌웨어 업데이트·보안 상태 보고 절차를 제품 수명 전체에 둡니다. 실습은 본인 소유의 로컬·격리 장치에서만 하며 다른 무선망을 탐색하거나 방해하지 않습니다.
[직접 해볼 과제]
`payload_bytes`를 512, `interval_seconds`를 5로 바꿔 하루 순수 데이터량을 계산하세요. 거리·전원·허용 지연·게이트웨이 유무를 가정하고 후보 두 개를 고른 뒤 선택 이유와 반드시 실측할 항목을 각각 세 가지 적습니다.
[확인문제]
1. 무선 방식 선택 전에 메시지 크기와 전송 주기를 계산해야 하는 이유는 무엇인가요?
2. Bluetooth LE의 광고와 GATT 연결은 어떤 상황에서 구분해 쓰나요?
3. Thread와 LoRaWAN은 네트워크 범위와 기반 구조에서 어떻게 다른가요?
[다음 학습]
6번 순환을 마쳤습니다. 다음 CORE-007에서는 문제를 더 작은 단계로 나누고 복잡도를 관리하는 중급 학습을 시작합니다.
[공식 참고 자료]
- IEEE 802.11-2024: https://standards.ieee.org/ieee/802.11/10548/
- Bluetooth LE 입문: https://www.bluetooth.com/bluetooth-le-primer/
- Thread 개요: https://threadgroup.org/What-is-Thread/Overview
- LoRaWAN 표준 개요: https://lora-alliance.org/lorawan-for-developers/
- IoT 장치 보안 기준: https://csrc.nist.gov/pubs/ir/8259/a/final
- 이전글[CORE-007][중급] 운영체제와 애플리케이션의 경계 이해하기 26.09.02
- 다음글[MOBILE-006][기초] 로컬 저장·캐시·오프라인 흐름 이해하기 26.09.02
댓글목록
등록된 댓글이 없습니다.
