게시글 상세
목록으로NRF52832-초저전력 테스트 SPS30 미세먼지 센서
조회수: 4
작성자: june9152
등록일: 2026-05-09 03:11
수정일: 2026-05-09 09:26
nRF52832 + SPS30 초저전력(Low-Power) 테스트 결과 공유
작성자: 박영준 대표 (주식회사 제이)
안녕하세요. 이번에 LCN-100 보드에 SPS30 미세먼지 센서를 붙여서 초저전력 테스트를 진행했습니다.
보통 센서 슬립 명령만 쓰기도 하는데, 이번엔 배터리 효율을 끝까지 뽑아보려고 물리적으로 전원을 완전히 차단(Power-Cycle)하는 방식으로 구현했습니다. 5초 간격으로 껐다 켰다 하면서 누설 전류까지 잡는 게 포인트입니다.
핵심 로직 (5s/5s Cycle)
- Sleep 구간: SPS30 전원 OFF (P0.08 LOW) + I2C 핀 LOW 강제 구동
- Operate 구간: 전원 ON → 100ms 부팅 대기 → I2C 측정 시작 명령 전송
1. 누설 전류 방지 (이게 핵심입니다)
센서 전원을 껐을 때 I2C 라인(SDA/SCL)을 그대로 두면, 센서 내부 다이오드를 통해 전류가 질질 샐 수 있습니다. 그래서 슬립 모드 진입 전에 아예 핀을 출력 LOW로 묶어버리는 처리를 추가했습니다.
// 센서 전원 끌 때 I2C 핀도 같이 LOW로 내려야 전류가 안 샙니다. static void i2c_pins_to_low_power(void) { NRF_P0->OUTCLR = (1UL << I2C_SCL_PIN) | (1UL << I2C_SDA_PIN); NRF_P0->PIN_CNF[I2C_SCL_PIN] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) | (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos); NRF_P0->PIN_CNF[I2C_SDA_PIN] = ... // 동일 설정 }
2. EasyDMA 제약 사항 (삽질 포인트)
nRF52 TWIM은 EasyDMA를 쓰기 때문에 const로 선언하면 데이터가 Flash에 들어가서 전송이 안 됩니다. 반드시 RAM 주소를 써야 합니다.
/* !! const 붙이면 안 됨 !! RAM(.data 섹션)에 위치해야 함 */
static uint8_t sps30_cmd_start[] = { 0x00, 0x10, 0x03, 0x00, 0xAC };
3. 결과 및 결론
DCDC 컨버터까지 활성화하니 확실히 전력 소모가 확 줄어드네요. 이번에 정리한 핀 제어 로직은 나중에 J-AIR 제품화할 때 표준으로 써도 될 것 같습니다.
전체 코드는 아래 레포에 올려뒀으니 참고하세요!
🔗 GitHub: NRF52832_LOWEnergyTest.git
Copyright © J Co., Ltd. All Rights Reserved.