Sigfox & Twilio로 원격 문자 전송 버튼 만들기: Arduino MKR Fox 1200 활용
부품 및 소모품
| 부품 |
수량 |
| Arduino MKR Fox 1200 |
1 |
| 대형 푸시 버튼 |
1 |
| 리튬 폴리머 배터리 또는 AA/AAA 배터리 2개 |
1 |
| 푸시버튼 스위치 |
1 |
앱 및 온라인 서비스
- Sigfox 네트워크 (백엔드 계정 필요)
- Twilio SMS Messaging API (무료 가입 가능)
프로젝트 소개
배경
트럼프 전 대통령이 다이어트 콜라를 주문하던 '빨간 버튼'에서 영감을 받아, Sigfox 네트워크를 활용한 더 나은 버전을 제작했습니다. 거대한 버튼, Arduino MKR Fox 1200, Twilio 계정만 있으면 문자 메시지를 보낼 수 있는 원격 버튼이 완성됩니다.
Sigfox란?
Sigfox는 IoT를 위한 글로벌, 저전력, 장거리 네트워크입니다. 현재 32개국에서 서비스 중이며, 소량의 데이터를 양방향으로 경제적으로 전송할 수 있습니다. 기존 고대역폭 네트워크를 보완하는 역할을 합니다.
1. 하드웨어 요구사항
- Arduino MKR Fox 1200
- 큰 버튼 (푸시버튼 스위치)
- LiPo 배터리 또는 2×AA/AAA 배터리
- 푸시버튼 스위치 (핀 7과 GND 연결, 기본적으로 닫힘 상태, 누르면 열림)
- thethings.io 스티커 (선택)
- 트럼프 가면 (재미용, 선택)
2. 아두이노 코드
GitHub에서 전체 코드 다운로드 가능: https://github.com/aureleq/TrumpButton
핵심 로직: 저전력 라이브러리로 딥 슬립 모드 진입 → 버튼 누름(인터럽트)으로 깨어남 → Sigfox 메시지 전송 → 다시 슬립
// 주요 설정
const uint8_t SWITCH_PIN = 7;
const String payload = "COKE NOW!";
const uint8_t debug = false;
void setup() {
if (debug) { Serial.begin(9600); while (!Serial); }
if (!SigFox.begin()) { Serial.println("실드 오류"); return; }
SigFox.end(); // 최대 절전 모드
pinMode(SWITCH_PIN, INPUT_PULLUP);
LowPower.attachInterruptWakeup(SWITCH_PIN, buttonPressed, RISING);
}
void loop() {
LowPower.sleep(); // 이벤트 발생까지 슬립
Serial.println("버튼 눌림!");
delay(100);
sendString(payload);
}
void sendString(String str) {
SigFox.begin();
delay(100);
SigFox.status();
delay(1);
SigFox.beginPacket();
SigFox.print(str);
int ret = SigFox.endPacket();
if (ret > 0) Serial.println("전송 실패");
else Serial.println("전송 성공");
SigFox.end();
}
void buttonPressed() { } // 인터럽트 핸들러 (비어있음)
3. Twilio 설정
- Twilio 무료 가입
- 'Verified Caller IDs'에 수신할 전화번호 등록
- 생성된 Phone Number, Account SID, Auth Token 기록
4. Sigfox 콜백 설정
Sigfox 백엔드 → Device Type 선택 → Custom Callback 생성:
- Type:
DATA UPLINK
- Channel:
URL
- URL pattern:
https://[AccountSID]:[AuthToken]@api.twilio.com/2010-04-01/Accounts/[AccountSID]/Messages.json
- HTTP Method:
POST
- Content-Type:
application/x-www-form-urlencoded
- Body:
From=[Twilio번호]&To=[수신번호]&Body=covfefe!
버튼을 누를 때마다 "covfefe!" 문자 메시지가 전송됩니다.
5. 검증
버튼을 힘껏 누르고 집사가 음료를 가져다주길 기다리면 됩니다! (테스트 시 실제 문자 수신 확인)
회로도
푸시버튼 스위치를 핀 7과 GND에 연결 (내부 풀업 저항 사용). 배터리로 전원 공급. 외부 풀업/풀다운 저항 불필요.