아두이노 MKR FOX 1200 시그폭스 날씨 스테이션 - 저전력 IoT 솔루션
부품 및 소모품
| 부품 |
수량 |
| 아두이노 MKR Fox 1200 |
1 |
| DHT11 온습도 센서 (3핀) |
1 |
앱 및 온라인 서비스
| 서비스 |
| Sigfox (백엔드 포털) |
| ThingSpeak API |
| 아두이노 IDE |
| 아두이노 웹 에디터 |
| 아두이노 IoT 클라우드 |
프로젝트 소개
소개: 아두이노 MKR Fox 1200 시그폭스 기상 관측소

시그폭스(Sigfox)는 2009년 설립된 프랑스 기업으로, 전기 계량기, 스마트 워치, 세탁기 등 지속적으로 켜져 있고 소량의 데이터를 전송하는 저전력 객체를 연결하는 무선 네트워크를 구축합니다.
시그폭스는 ISM(산업·과학·의료) 무선 대역인 유럽 868MHz, 미국 902MHz를 사용하는 독자 기술을 채택했습니다. '초협대역(Ultra Narrowband)'이라 불리는 광역 신호는 고체 물체를 자유롭게 통과하며, '저전력 광역 네트워크(LPWAN)'로 불리는 극소 전력을 소모합니다. 네트워크는 원홉 스타 토폴로지 기반이며 이동통신 사업자가 트래픽을 전달합니다. 지하 객체에도 도달할 수 있어 광범위한 커버리지가 가능합니다.
이 튜토리얼에서는 시그폭스 기반의 간단하면서 효율적인 기상 관측소를 만듭니다.
필요 자료
- 아두이노 MKR Fox 1200
- DHT-11 센서 (실드 타입 또는 단일 센서)
- DHT-22 센서 사용 가능 (DHT-11과 같은 라이브러리 사용, 더 정밀)
- 시그폭스 개발자 계정
- ThingSpeak 계정
1단계: 아두이노 MKR Fox 1200 시작하기

공식 가이드 페이지: https://www.arduino.cc/en/Guide.MKRFox1200
보드 등록 절차:
- SigFox 최초 설정 따라하기
- https://backend.sigfox.com/activate 접속해 보드 등록 및 인터넷 연결
이 단계를 건너뛰면 ThingSpeak 대시보드나 기타 서비스에 연결할 수 없습니다.
2단계: ThingSpeak 계정 생성

ThingSpeak 가입 후 새 채널 생성. 채널이 시그폭스 백엔드에서 데이터를 수신하려면 API 키를 시그폭스 백엔드 시스템의 URL에 추가해야 합니다. API 키 페이지에서 키를 복사해 시그폭스 백엔드 페이지에 입력하세요. 자세한 내용은 다음 단계를 참조하세요.
3단계: 하드웨어 및 회로 구성

단일 DHT-11 센서 또는 DHT-11 실드 사용 가능. 단일 센서 사용 시 VCC와 데이터 핀 사이에 10kΩ 저항 연결 필요. 실드 사용 시 아두이노 보드에 직접 장착 가능. 회로는 간단합니다: DHT-11에 5V와 GND 연결, 데이터 핀을 아두이노 MKR Fox 1200의 1번 핀에 연결.
DHT 라이브러리 예제 코드로 테스트하세요. 시리얼 모니터에서 "Temp"와 "Humi" 값이 정상적으로 읽히면 다음 단계로 진행하세요.
4단계: 시그폭스 개발자 포털에 콜백 명령 추가

- 시그폭스 백엔드 포털 접속
- Device Type → Callbacks 클릭
- Type: DATA, Uplink 선택
- Channel: URL 선택
- "Custom payload config"에 다음 추가:
status::uint:8 temp::int:16:little-endian t::int:16:little-endian h::int:16:little-endian
- "Use HTTP method": GET 선택
- Callback URL에 다음 추가 (#############를 본인의 ThingSpeak API 키로 변경):
https://api.thingspeak.com/update?api_key=###############&field1={customData#temp}&field2={customData#t}&field3={customData#h}&field4={snr}
5단계: 전체 코드 및 소프트웨어

아두이노 IDE에 다음 라이브러리 설치:
- ArduinoLowPower
- Sigfox
- DHT
#include <ArduinoLowPower.h>
#include <Sigfox.h>
#include <DHT.h>
백엔드 콜백 데이터의 변수명은 아두이노 코드 내 변수와 일치해야 합니다.
t = dht.readTemperature();
msg.t = convertoFloatToInt16(t, 60, -60);
h = dht.readHumidity();
msg.h = convertoFloatToUInt16(h, 110);
[...]
msg.moduleTemperature = convertoFloatToInt16(temperature, 60, -60);
[...]
SigFox.write((uint8_t*)&msg, 12);
코드는 DHT-11 센서에서 온도·습도 데이터를 읽어 정수형으로 변환한 후 SigFox.write 명령으로 ThingSpeak 플랫폼에 전송합니다.
아두이노 코드 (GitHub)
코드 업로드 후 테스트하세요. 배터리로 구동 가능하며, 와이파이 없는 환경(예: 보트)에서 시그폭스 네트워크로 데이터 전송에 활용할 수 있습니다.
코드
GitHub
아두이노 MKR Fox 1000 및 DHT-11 코드: https://github.com/masteruan/SigFoxThingSpeak