볼트 IoT와 아두이노 우노로 구현하는 무선 LED 밝기 제어 (PWM 6채널)
부품 및 준비물
| 부품 | 수량 |
| Bolt IoT 와이파이 모듈 | 1 |
| 아두이노 우노 | 1 |
| LED | 6 |
| 330Ω 저항 | 6 |
| 하프 사이즈 브레드보드 | 1 |
| 수-수 점퍼 와이어 | 7 |
| USB A-B 케이블 | 1 |
사용 앱 및 서비스
프로젝트 개요
집에서 형광등을 계속 켜두거나 어두운 조명이 필요할 때 불편함을 해결하고자, 볼트 IoT 플랫폼과 아두이노의 6개 PWM 채널을 이용해 최대 6개 LED(형광등 대체)의 밝기를 원격 제어하는 프로토타입입니다.
펄스 폭 변조 (PWM)란?
디지털 신호의 듀티 사이클(ON 시간 비율)을 조절하여 아날로그 전압처럼 제어하는 기법입니다. 아두이노 우노의 PWM 핀(3, 5, 6, 9, 10, 11)을 사용해 LED 밝기를 0~255 단계로 제어합니다.
하드웨어 조립
- LED 캐소드(-) → 브레드보드 GND 라인
- LED 애노드(+) → 330Ω 저항 → 아두이노 PWM 핀 (3, 5, 6, 9, 10, 11)
- 아두이노 GND → 브레드보드 GND 라인
- Bolt TX → 아두이노 RX (D0), Bolt RX → 아두이노 TX (D1)
- Bolt 5V → 아두이노 5V, Bolt GND → 아두이노 GND
주의: 코드 업로드 전 Bolt와 아두이노 간 TX/RX 연결을 분리하세요.
볼트 클라우드 설정
- cloud.boltiot.com 회원가입 및 로그인
- 모바일 앱으로 Bolt 장치 등록
- Device ID 확인
- API 키 활성화 (중요: 외부에 노출 금지)
API 호출로 밝기 제어
볼트 클라우드 UART API를 사용합니다.
1) 시리얼 통신 초기화
https://cloud.boltiot.com/remote//serialBegin?baud=9600&deviceName=
2) LED 켜기 및 밝기 설정
https://cloud.boltiot.com/remote//serialWrite?data=ON <핀번호> &deviceName=
- 핀번호: 1~6 (각각 PWM 핀 3,5,6,9,10,11 매핑)
- PWM값: 0~255
- 예:
data=ON 1 120 (1번 LED를 PWM 120으로 켜기)
- 파라미터 사이와 끝에 공백 필수
3) 응답 확인
https://cloud.boltiot.com/remote//serialRead?till=10&deviceName=
아두이노 코드
boltiot-arduino-helper 라이브러리 필요 (GitHub에서 다운로드 후 라이브러리 추가)
#include <BoltIoT-Arduino-Helper.h>
int pwm_pin[] = {3, 5, 6, 9, 10, 11};
String switchOn(String *data) {
int pin = data[0].toInt(); // 1~6
int pwm = data[1].toInt(); // 0~255
if (pin < 1 || pin > 6) {
return "pin number should be b/w 1 and 6";
}
pin--; // 배열 인덱스 보정
analogWrite(pwm_pin[pin], pwm);
return "Pin " + String(pin) + " was set to pwm value " + String(pwm);
}
void setup() {
for (int p : pwm_pin) pinMode(p, OUTPUT);
boltiot.begin(Serial);
boltiot.setCommandString("ON", switchOn, 2, ' '); // 명령어 "ON", 파라미터 2개, 구분자 공백
}
void loop() {
boltiot.handleCommand();
}
동작 원리
- 아두이노는 시리얼로 볼트로부터 명령 대기
- "ON" 명령 수신 시 파라미터(핀번호, PWM값) 파싱
- 핀 범위 검증 후
analogWrite()로 밝기 제어
- 결과 문자열을 시리얼로 볼트에 응답 → 클라우드에서 확인 가능
회로도
확장 아이디어
- 실제 형광등/조명 제어: 솔리드 스테이트 릴레이(SSR) 또는 PWM 디머 모듈 연동
- 스케줄링: 볼트 클라우드 머신러닝 기능으로 사용 패턴 학습 후 자동 제어
- 센서 연동: 조도 센서로 주변 밝기에 따른 자동 조도 조절