아두이노 I2C 센서와 아날로그 센서, 한 달 써본 차이
책상 위에서는 두 센서가 모두 멀쩡했는데, 베란다까지 2m 케이블을 늘이자 결과가 완전히 달라졌습니다. 아두이노에 I2C 온습도 센서와 아날로그 온도 센서를 동시에 연결해 한 달 동안 기록해 보니, 단순히 ‘디지털이 더 정확하다’거나 ‘아날로그가 더 쉽다’고 말하기 어려웠습니다.
I2C 센서는 배선이 깔끔하고 값을 바로 활용하기 편했지만 통신 오류에 대비해야 했습니다. 아날로그 센서는 코드가 단순하고 응답이 빨랐지만 전원 노이즈, 기준 전압, 케이블 길이에 따라 측정값이 흔들렸습니다. 실제 사물인터넷 프로젝트에서는 센서 사양보다 설치 환경과 유지보수 방식이 선택을 좌우했습니다.
I2C 센서와 아날로그 센서의 첫 일주일
배선 네 가닥의 편리함과 한 가닥의 착시
테스트에는 아두이노 계열 5V 보드, 주소를 사용하는 I2C 온습도 모듈, 전압으로 온도를 출력하는 아날로그 센서 모듈을 사용했습니다. 기록 주기는 10초로 맞추고 같은 플라스틱 케이스 안에 센서를 약 4cm 간격으로 배치했습니다. 아두이노의 기본 개념과 활용 범위가 낯선 독자라면 보드가 센서 입력을 읽고 프로그램에 따라 처리하는 소형 제어 장치라고 이해하면 충분합니다.
I2C 센서는 VCC, GND, SDA, SCL 네 선을 연결해야 했지만 다른 I2C 장치를 추가할 때 같은 버스를 공유할 수 있었습니다. 반면 아날로그 센서는 출력선 하나를 A0에 꽂으면 끝나는 것처럼 보였습니다. 그러나 실제로는 안정적인 전원과 접지, ADC 기준 전압까지 고려해야 하므로 선이 적다고 설계 요소도 적은 것은 아니었습니다.
브레드보드에서 20cm 점퍼선을 사용할 때는 둘 다 안정적이었습니다. 하지만 USB 케이블을 저가형 충전기로 바꾸자 아날로그 센서 값이 약 1~2℃ 범위에서 빠르게 출렁였습니다. I2C 센서는 정상 값이 계속 들어오다가 간헐적으로 읽기 실패가 발생했습니다. 전자는 ‘흔들리는 숫자’로, 후자는 ‘값이 없는 순간’으로 문제가 나타난 셈입니다.
- I2C 센서 장점: 온도와 습도처럼 여러 측정값을 구조화된 데이터로 한 번에 받을 수 있고, 제조사가 제공한 보정값을 내부에서 적용하는 제품이 많았습니다.
- I2C 센서 단점: 주소, 풀업 저항, 타임아웃을 이해해야 하며 버스가 멈췄을 때 단순 재측정만으로 복구되지 않는 경우가 있었습니다.
- 아날로그 센서 장점: ADC 한 채널만 확보하면 읽기 코드가 짧고, 통신 프로토콜을 몰라도 빠르게 시제품을 만들 수 있었습니다.
- 아날로그 센서 단점: 전원 품질과 ADC 분해능의 영향을 직접 받으며 보정하지 않은 숫자를 실제 온도로 오해하기 쉬웠습니다.
같은 온도인데 숫자가 달랐던 이유
첫날 실내 기준으로 I2C 센서는 24.6℃, 아날로그 센서는 환산 결과 25.4℃를 표시했습니다. 어느 쪽이 틀렸다고 바로 판단하지 않고 30분 이상 안정화한 뒤 별도의 기준 온도계와 나란히 비교했습니다. 센서 자체 오차뿐 아니라 기판의 전압 레귤레이터, LED, 마이크로컨트롤러에서 발생한 열도 결과에 영향을 주기 때문입니다.
I2C 모듈은 센서 칩에서 이미 디지털 변환과 보정을 거친 값을 전달했습니다. 아날로그 센서는 출력 전압을 아두이노의 ADC 숫자로 읽은 다음 데이터시트의 기울기와 영점 전압을 적용해야 했습니다. 기본 코드에서 5.0V를 기준 전압으로 가정했지만 실제 보드의 5V 핀은 부하 상태에 따라 약간 달라졌고, 이 차이가 온도 환산값에 그대로 반영됐습니다.
사용 팁: 센서 두 개의 표시값이 다르면 코드에 임의의 보정값부터 더하지 마세요. 충분한 안정화 시간, 실제 전원 전압, 설치 위치를 먼저 확인한 뒤 여러 온도 구간에서 오차가 일정한지 살피는 편이 안전합니다.
- 업로드 직후 10~20분의 측정값은 예열 구간으로 분리했습니다.
- 같은 시각에 두 센서와 기준 온도계의 값을 기록했습니다.
- 실내가 차가운 아침과 따뜻한 오후 데이터를 각각 확보했습니다.
- 오차가 일정하면 오프셋을, 온도에 따라 커지면 기울기를 점검했습니다.
- 보정 전 원본값도 함께 저장해 나중에 계산식을 다시 적용할 수 있게 했습니다.
30일 기록에서 드러난 정확도와 장애 방식
평균값보다 놓치기 쉬운 결측과 순간 노이즈
한 달치 로그를 모으고 나니 두 센서의 평균 온도 차이는 생각보다 크지 않았습니다. 문제는 평균 뒤에 숨은 데이터 품질이었습니다. I2C 센서는 대부분 매끄러운 곡선을 만들었지만 장시간 구동 중 몇 차례 응답이 끊겼습니다. 아날로그 센서는 데이터가 비는 일은 거의 없었으나 릴레이가 작동하거나 USB 전원에 부하가 걸릴 때 뾰족한 스파이크가 생겼습니다.
이 차이는 사물인터넷 서비스에서 특히 중요합니다. 생활 데이터를 시간 순서대로 축적하는 개념은 라이프로그 서비스 설명에서도 확인할 수 있는데, 센서 프로젝트 역시 단일 숫자보다 연속 기록의 완전성이 가치가 있습니다. 냉장고 온도 감시처럼 임계값 초과가 중요한 장치라면 순간 노이즈가 거짓 경보를 만들 수 있고, 온실 환경 기록처럼 추세가 중요한 장치라면 긴 결측 구간이 분석을 방해합니다.
저는 I2C 읽기에 성공 여부를 나타내는 상태값을 함께 저장하고, 연속 세 번 실패할 때만 센서 초기화를 시도했습니다. 아날로그 값에는 최근 다섯 번 중 가운데 값을 취하는 중앙값 필터를 적용했습니다. 평균 필터는 큰 잡음 하나에 끌려갔지만 중앙값 필터는 순간 스파이크를 제거하면서 온도 변화 속도도 크게 늦추지 않았습니다.
| 비교 항목 | I2C 온습도 센서 | 아날로그 온도 센서 |
|---|---|---|
| 초기 배선 | 전원 포함 네 선, 버스 공유 가능 | 전원과 출력선, ADC 핀 개별 사용 |
| 출력 형태 | 보정된 디지털 데이터 | 전압을 직접 환산한 데이터 |
| 주요 장애 | 응답 지연, NACK, 버스 정지 | 노이즈, 기준 전압 오차, 접지 전위차 |
| 코드 부담 | 라이브러리는 편하지만 예외 처리가 필요 | 읽기는 단순하지만 보정 계산이 필요 |
| 장거리 연결 | 용량 증가와 파형 열화에 민감 | 전압 강하와 유도 잡음에 민감 |
| 확장성 | 주소가 다르면 같은 두 신호선에 추가 | 센서마다 ADC 채널 또는 멀티플렉서 필요 |
케이블을 2m로 늘리자 선택 기준이 바뀌었다
책상 테스트를 끝낸 뒤 두 센서를 베란다 쪽으로 옮기고 약 2m 케이블로 연결했습니다. I2C는 본래 보드 내부나 가까운 부품 사이 통신에 잘 맞는 방식이므로 케이블이 길어지면 선로 용량과 주변 잡음의 영향을 받습니다. 속도를 낮추고 SDA와 GND, SCL과 GND가 가깝게 배치되도록 배선을 바꾸자 오류 빈도가 줄었지만, 짧은 점퍼선만큼 마음 놓을 수준은 아니었습니다.
아날로그 센서는 통신 오류 메시지가 없는 대신 값의 흔들림이 더 커졌습니다. 출력선 옆으로 AC 전원선이 지나갈 때 변화가 두드러졌고, 센서 가까이에 바이패스 커패시터를 배치하고 신호와 접지를 한 쌍으로 묶자 개선됐습니다. 여기서 중요한 점은 커패시터를 아두이노 쪽에만 달지 않고 센서 전원 핀 가까이 배치하는 것입니다. 긴 케이블 끝에서 발생하는 순간 전압 변화를 그 자리에서 완화해야 효과가 있었습니다.
두 방식 모두 2m에서 무조건 실패하거나 성공하는 것은 아닙니다. 케이블 종류, 풀업 저항, 통신 속도, 센서 출력 임피던스, 주변 모터와 릴레이 유무에 따라 결과가 크게 달라집니다. 제 환경에서는 I2C 속도를 낮춘 설정과 오류 복구 코드를 함께 썼을 때 기록 품질이 더 좋았지만, 케이블을 더 늘려야 한다면 I2C를 그대로 끌기보다 센서 근처에 별도 마이크로컨트롤러를 두고 장거리용 통신 방식으로 넘기는 구성을 선택하겠습니다.
- I2C 쪽에서 해본 조치: 통신 속도 낮추기, 중복 풀업 확인, 짧은 분기 배선 사용, 읽기 타임아웃 설정, 실패 횟수 기록하기.
- 아날로그 쪽에서 해본 조치: 실측 전원 전압 반영, 센서 근처 디커플링, 중앙값 필터 적용, 릴레이 배선과 신호선 분리하기.
- 공통 조치: 센서와 보드의 접지 연결 확인, 원본 데이터 보존, 오류가 발생한 시각과 주변 장치 동작을 함께 기록하기.
센서가 가끔 이상한 값을 보낼 때 정상값으로 덮어쓰면 원인을 찾기 어렵습니다. 측정값, 성공 여부, 재시도 횟수, 마지막 정상 수신 시각을 별도 필드로 남기면 현장 장애를 훨씬 빨리 좁힐 수 있습니다.
빠른 시제품과 오래 켜둘 장치의 선택은 달랐다
가격표보다 개발 시간을 함께 계산해 본 결과
부품 판매처에 따라 가격 차이가 크지만, 일반적인 아날로그 온도 센서는 비교적 저렴한 편이고 온습도 보정 기능을 갖춘 I2C 모듈은 그보다 비용이 더 들 수 있습니다. 처음에는 센서 한 개 가격만 보고 아날로그 방식이 유리하다고 생각했습니다. 하지만 여러 대를 조립하면서 보정 시간, ADC 채널 수, 필터 코드, 테스트 공수를 더하자 전체 비용의 인상이 달라졌습니다.
I2C 센서는 검증된 라이브러리 덕분에 첫 화면에 값을 띄우는 시간이 짧았습니다. 다만 라이브러리가 모든 장애를 처리해 주지는 않았습니다. 반환값 검사 없이 예제 코드를 그대로 사용하면 통신 실패가 0이나 비정상적인 극값으로 저장될 수 있습니다. 디바이스 제어 소프트웨어의 역할이 궁금하다면 디바이스 드라이버 통합개발환경의 개요를 참고할 만합니다. 센서 라이브러리도 하드웨어와 응용 코드 사이를 이어 준다는 점에서는 비슷하지만, 실제 프로젝트에서는 예외 처리 책임이 개발자에게 남습니다.
아날로그 센서는 라이브러리 의존성이 낮아 코드가 오랫동안 유지되기 편했습니다. 대신 보드를 5V 제품에서 3.3V 제품으로 바꾸거나 ADC 분해능이 다른 마이크로컨트롤러로 이전할 때 환산식을 다시 검증해야 했습니다. 보드 교체 가능성이 크다면 전압 기준과 ADC 최대값을 상수로 박아 두지 말고 설정값으로 분리하는 것이 좋았습니다.
- 센서 한 개의 구매가뿐 아니라 필요한 저항, 커넥터, 케이블 비용을 더합니다.
- 동일 센서를 여러 개 연결할 때 주소 또는 ADC 채널이 충분한지 확인합니다.
- 보정에 걸리는 시간과 기준 측정 장비의 비용을 개발비에 포함합니다.
- 통신 실패나 이상값이 생겼을 때 현장에서 자동 복구할 수 있는지 시험합니다.
- 보드 변경 후에도 기존 데이터와 같은 단위를 유지할 수 있는지 검증합니다.
주말 제작자와 무인 운영자에게 권하는 서로 다른 구성
주말에 방 온도를 측정하고 OLED나 웹 대시보드에 빠르게 표시하려는 분이라면 저는 I2C 센서를 먼저 권합니다. 온도와 습도를 한 모듈에서 읽을 수 있고 배선을 공유해 화면이나 다른 센서를 추가하기 편합니다. 사용 전에는 주소 검색 코드로 장치를 확인하고, 읽기 실패 시 마지막 값을 무한정 재사용하지 않도록 유효 시간을 두세요. 실패한 값은 화면에 숫자 대신 ‘센서 확인’으로 표시하는 편이 오작동을 숨기지 않습니다.
반대로 통신 라이브러리를 최소화한 단순 제어기, 빠른 변화 감지 장치, 교육용 ADC 실습을 만들려는 분이라면 아날로그 센서가 더 재미있고 직접적입니다. 전압과 실제 물리량의 관계를 눈으로 확인할 수 있으며 샘플링과 필터 효과도 쉽게 실험할 수 있습니다. 다만 제품에 넣기 전에는 USB 전원만 쓰지 말고 실제 사용할 어댑터, 릴레이, 모터를 모두 작동시킨 상태에서 노이즈를 측정해야 합니다.
저처럼 한 달 이상 무인으로 데이터를 쌓으려는 독자라면 I2C 센서에 타임아웃, 오류 카운터, 자동 재초기화를 붙인 구성이 관리하기 편합니다. 반면 회로 원리를 배우면서 측정값이 만들어지는 과정을 직접 다루고 싶은 독자라면 아날로그 센서에 실측 기준 전압과 간단한 필터를 적용해 보세요. 전자는 완성 속도와 확장성을, 후자는 투명한 동작과 학습 효과를 우선하는 선택입니다.
- 빠른 실내 IoT 제작: 보정된 I2C 온습도 센서와 상태 확인 코드를 선택합니다.
- 장기간 무인 기록: I2C 오류 로그, 타임아웃, 재시도 상한, 재초기화 절차를 추가합니다.
- 전자회로 학습: 아날로그 센서의 출력 전압을 멀티미터와 ADC 값으로 함께 확인합니다.
- 모터 주변 설치: 어떤 센서든 전원 분리, 접지 경로, 케이블 배치를 먼저 검토합니다.
- 먼 거리 측정: 센서 신호선을 무작정 연장하기보다 센서 가까이에서 디지털화한 뒤 장거리 통신으로 전달합니다.

- 다음글라즈베리파이와 5V I2C 센서를 함께 쓴다면 26.09.03
등록된 댓글이 없습니다.
