가을 환절기 라즈베리파이 온습도 센서를 한 달 돌려봤더니

profile_image
작성자 환경센서기록가수아
댓글 0건 조회 10회

아침에는 창문에 물방울이 맺히고 낮에는 실내가 바싹 마르는 가을 환절기, 같은 방에서도 시간대에 따라 온도와 습도가 크게 달라집니다. 숫자를 가끔 확인하는 정도로는 원인을 찾기 어려워 라즈베리파이와 I2C 온습도 센서를 한 달 동안 계속 가동해 봤습니다.

목표는 단순한 현재값 표시가 아니었습니다. 새벽 결로가 언제 시작되는지, 환기와 난방이 습도에 어떤 변화를 만드는지, 장시간 측정에서 센서 오차와 통신 오류가 얼마나 쌓이는지를 기록했습니다. 계절이 바뀔 때 사물인터넷 환경 센서를 설치하려는 분이라면 부품 선택부터 데이터 판독까지 그대로 응용할 수 있습니다.

가을 공기를 기록하자 센서 숫자의 의미가 달라졌다

온도와 상대습도만 보면 놓치는 새벽 결로

첫 주에는 온도와 상대습도만 1분 간격으로 저장했습니다. 낮에는 23℃ 안팎에 상대습도 45% 수준이었지만, 새벽에 실내 온도가 18℃ 아래로 내려가면 습도가 65%를 넘는 구간이 반복됐습니다. 센서를 창가 가까이 옮기자 같은 시각 상대습도가 방 중앙보다 8~14%p 높게 나타났고, 창틀 표면에는 실제로 얇은 물기가 생겼습니다.

여기서 중요한 값은 이슬점입니다. 상대습도는 현재 온도에 따라 변하므로 60%라는 숫자만으로 결로 위험을 단정할 수 없습니다. 측정한 온도와 습도로 이슬점을 계산한 뒤 창문이나 외벽의 표면 온도가 이슬점보다 낮은지 비교해야 합니다. 예를 들어 실내가 20℃, 상대습도가 65%라면 이슬점은 대략 13℃ 부근입니다. 밤사이 유리 표면이 그 아래로 내려가면 실내 공기가 따뜻해 보여도 물방울이 맺힐 수 있습니다.

제가 사용한 BME280 계열 모듈은 온도·습도·기압을 한 번에 읽을 수 있어 환절기 기록에 편리했습니다. 다만 저가 모듈은 기판 발열과 보정 상태가 제각각이어서 절대값을 맹신하면 안 됩니다. 설치 전 신뢰할 만한 온습도계와 30분 이상 나란히 두고 편차를 확인하고, 일정한 차이가 반복되면 소프트웨어 보정값으로 관리하는 편이 현실적입니다.

  • 방 중앙: 생활 공간의 평균적인 온습도 흐름을 파악하기 좋습니다.
  • 창가 20~30cm 지점: 결로 위험을 빠르게 감지하지만 햇빛과 찬 유리의 영향을 크게 받습니다.
  • 외벽 모서리: 곰팡이가 생기기 쉬운 냉점의 변화를 확인하기 좋습니다.
  • 주방·욕실 입구: 조리와 샤워 뒤 수증기가 다른 방으로 퍼지는 시간을 관찰할 수 있습니다.

센서를 창문에 바로 붙이면 방의 습도가 아니라 차가운 표면 주변의 미세 환경을 측정하게 됩니다. 생활 공간용 센서와 결로 감시용 센서를 구분해 설치해야 데이터 해석이 쉬워집니다.

1분 기록과 10분 기록을 번갈아 써본 차이

1분 간격은 환기 직후 습도가 떨어지는 속도와 가습기 작동 순간을 또렷하게 보여줬습니다. 하지만 하루 1,440행, 한 달이면 센서 하나당 4만 행이 넘습니다. CSV 파일 자체는 크지 않아도 그래프를 자주 만들거나 여러 방의 센서를 합치면 불필요한 잡음이 눈에 띄게 늘어납니다.

반대로 10분 간격은 장기 추세를 보기에는 충분했지만, 짧게 문을 열어 환기한 날에는 최저 습도와 회복 시간을 놓치기도 했습니다. 그래서 최종적으로는 평상시 5분, 습도가 70%를 넘거나 5분 사이 5%p 이상 변하면 1분으로 기록 주기를 바꿨습니다. 이런 적응형 기록은 저장 공간을 줄이면서도 사건 전후 데이터를 남기는 실용적인 방법입니다.

  1. 처음 3일은 1분 간격으로 측정해 공간의 변화 폭을 확인합니다.
  2. 센서 원본값과 보정값을 별도 열에 저장해 나중에 보정 기준을 바꿀 수 있게 합니다.
  3. 온도, 상대습도, 기압, 이슬점, 측정 시각, 오류 상태를 한 행에 기록합니다.
  4. 습도 급상승과 통신 재시도 횟수에는 이벤트 표시를 추가합니다.
  5. 일주일 단위 파일과 하루 평균 요약 파일을 분리해 장기 그래프 작성을 가볍게 만듭니다.

이처럼 생활 환경을 시간 흐름으로 축적하는 방식은 라이프로그 서비스의 개념과도 맞닿아 있습니다. 다만 사람의 행동을 기록할 때는 데이터가 과도하게 세밀해지지 않도록 주의해야 합니다. 온습도만 저장하고 카메라나 음성 정보는 결합하지 않는 식으로 프로젝트 범위를 명확히 정하는 것이 좋습니다.

I2C 센서와 라즈베리파이를 오래 켜두며 바꾼 것들

부품값보다 설치 위치와 전원 품질이 결과를 좌우했다

시험 구성은 라즈베리파이, BME280 모듈, 짧은 점퍼선, 5V 정격 전원 어댑터, 통풍구가 있는 케이스로 단순하게 잡았습니다. BME280 모듈은 판매처와 기판 구성에 따라 대략 수천 원대부터 만 원대까지 보이지만, 같은 이름으로 BMP280이 섞여 판매되는 경우가 있습니다. BMP280은 습도를 측정하지 않으므로 칩 표기와 상품 설명을 모두 확인해야 합니다.

센서는 라즈베리파이의 3.3V, GND, SDA, SCL에 연결했습니다. 모듈에 전압 조정 회로가 있다고 적혀 있어도 I2C 신호선의 풀업 전압이 몇 볼트인지 확인하는 편이 안전합니다. 라즈베리파이 GPIO는 3.3V 논리를 사용하므로, 5V로 당겨지는 SDA·SCL을 그대로 연결하면 오동작이나 손상 위험이 있습니다. 멀티미터로 대기 상태 신호선 전압을 확인하면 애매한 모듈을 훨씬 안전하게 다룰 수 있습니다.

센서를 라즈베리파이 케이스 위에 붙였을 때는 실제 방 온도보다 약 1.5~2.3℃ 높게 기록됐습니다. 프로세서와 전원 회로의 열이 센서까지 전달된 탓입니다. 20cm 정도 떨어뜨리고 공기가 드나드는 작은 차양 안에 넣자 편차가 줄었습니다. 직사광선, 난방기 바람, 가습기 분무가 닿는 자리도 피해야 합니다. 센서 가격을 올리기 전에 열원에서 분리하고 공기 흐름을 확보하는 것이 우선입니다.

구성 요소권장 선택피해야 할 조건확인 방법
온습도 센서BME280·SHT3x 계열습도 기능이 없는 BMP280 오인 구매I2C 스캔과 습도 레지스터 확인
배선실내용 20~30cm 이하브레드보드 점퍼선을 수 미터 연장오류 횟수와 신호 상승 시간 관찰
전원정격이 분명한 안정적 어댑터전압 강하가 큰 낡은 케이블저전압 경고와 재부팅 기록 확인
센서 위치열원에서 떨어진 통풍 공간라즈베리파이 방열판 바로 위기준 온도계와 30분 동시 측정
저장 방식CSV 또는 SQLite와 주기적 백업쓰기 중 전원 차단에 취약한 단일 파일재부팅 뒤 최근 레코드 검사

아두이노를 센서 노드로 사용하려는 독자는 아두이노의 구성과 특징을 먼저 살펴보면 보드와 센서의 역할을 구분하기 쉽습니다. 아두이노는 짧은 주기로 센서를 읽고 값을 전달하는 데 유리하고, 라즈베리파이는 파일 저장·그래프 생성·웹 대시보드 운영에 편리합니다. 두 장치를 함께 쓴다면 어느 쪽이 기준 시각과 오류 복구를 담당할지도 미리 정해야 합니다.

한 달째 나타난 I2C 통신 오류를 기록으로 잡았다

초반 며칠은 오류가 없었지만 장시간 가동하면서 간헐적으로 센서 읽기 실패가 발생했습니다. 프로그램이 예외와 함께 종료되면 그 뒤 데이터가 통째로 비어 버리기 때문에, 읽기 성공 여부를 숫자와 함께 저장하도록 코드를 바꿨습니다. 한 번 실패하면 0.5초 뒤 재시도하고, 세 번 연속 실패하면 I2C 장치 검색 결과와 시간을 로그에 남긴 뒤 프로세스를 다시 시작했습니다.

여기서 실패값을 0℃나 습도 0%로 저장해서는 안 됩니다. 실제 측정값처럼 그래프에 포함되어 일평균을 왜곡하기 때문입니다. 데이터베이스에는 NULL 또는 별도 상태 코드를 넣고, 화면에는 ‘측정 실패’로 표시하는 것이 낫습니다. 센서가 반환할 수 있는 정상 범위도 검사해 갑작스러운 125℃ 같은 비정상값은 원본 로그에만 남기고 통계에서는 제외했습니다.

I2C는 보드 내부나 짧은 거리 통신에 알맞지만 배선이 길어지고 주변에 모터, 릴레이, 긴 전원선이 있으면 노이즈에 민감해집니다. 케이블을 1m 이상 늘려야 한다면 무작정 풀업 저항을 낮추기보다 버스 속도를 100kHz 이하로 낮춰 보고, 접지와 커넥터 상태를 먼저 점검해야 합니다. 더 긴 거리라면 센서 옆에 마이크로컨트롤러를 두고 RS-485나 유선 네트워크로 전송하는 구조가 안정적입니다.

  • 주소 확인: 부팅할 때 I2C 스캔 결과에서 예상 주소가 보이는지 검사합니다.
  • 재시도 제한: 무한 반복 대신 2~3회만 재시도하고 실패 상태를 남깁니다.
  • 값 검증: 물리적으로 불가능한 범위와 직전 값 대비 급격한 변화를 구분합니다.
  • 서비스 복구: systemd의 재시작 정책으로 프로그램 종료 뒤 자동 복구되게 합니다.
  • 시간 동기화: 네트워크 시각이 맞기 전에 저장된 레코드에는 별도 표시를 둡니다.
  • 저장장치 보호: 매 측정마다 강제 쓰기하지 말고 버퍼와 안전한 종료 절차를 활용합니다.

오류를 숨기는 자동 재시작만 넣으면 시스템은 살아 있어도 원인은 영원히 찾기 어렵습니다. 재시작 직전의 센서 주소, 예외 종류, 전원 경고, 재시도 횟수를 함께 남겨야 배선 문제와 소프트웨어 문제를 나눌 수 있습니다.

센서 라이브러리를 수정하거나 커널 인터페이스까지 확인해야 한다면 디바이스 드라이버 통합개발환경의 개요도 배경지식을 넓히는 데 도움이 됩니다. 초보 프로젝트에서는 검증된 라이브러리로 시작하되, 읽기 함수가 실패할 때 어떤 예외나 반환값을 내놓는지는 반드시 문서와 코드에서 확인해야 합니다.

원룸 창가와 여러 방 주택은 다른 방식이 편했다

데이터를 행동으로 바꾸는 환기·가습 기준

그래프를 오래 모아도 행동 기준이 없으면 숫자 구경으로 끝납니다. 한 달 기록에서 가장 효과가 컸던 것은 ‘습도 몇 퍼센트면 무조건 환기’ 같은 단일 규칙이 아니라 실외 조건과 시간대를 함께 보는 방식이었습니다. 비 오는 날 외부 공기가 더 습한데 창문을 오래 열면 실내 습도가 오히려 높아질 수 있고, 건조한 오후에는 5~10분의 짧은 맞통풍만으로도 습도가 빠르게 내려갔습니다.

난방을 시작한 날에는 온도가 오르면서 상대습도가 급격히 낮아졌지만 공기 중 수분이 즉시 사라진 것은 아니었습니다. 이때 가습기를 곧바로 강하게 켜면 밤에 온도가 내려간 뒤 창가 결로가 심해질 수 있습니다. 실내 평균 습도와 창가 센서의 이슬점을 함께 보고, 가습기 목표를 45~55% 정도의 완만한 범위로 운영하는 편이 안정적이었습니다. 집의 단열, 거주 인원, 조리 빈도에 따라 적정 범위는 달라질 수 있습니다.

센서 한 개만 있다면 사흘씩 위치를 바꿔 공간별 특성을 조사할 수 있습니다. 월요일부터 수요일까지 창가, 목요일부터 토요일까지 침실 중앙처럼 기록하고 이동 시각을 메모하면 됩니다. 다만 서로 다른 위치의 값을 같은 연속 데이터처럼 합치지 말고 위치 ID를 별도 열에 저장해야 합니다. 센서 두 개 이상을 쓸 때도 각 장치에 이름과 보정값을 부여하면 나중에 교체가 쉬워집니다.

  1. 새벽 두 시간 이상 상대습도 70%를 넘으면 창가와 외벽 표면을 직접 확인합니다.
  2. 환기 전후 10분 동안 온도·습도 변화를 비교해 효과적인 환기 시간을 찾습니다.
  3. 가습기 작동 중 센서값이 5분 안에 급상승하면 분무가 직접 닿는지 살핍니다.
  4. 실내 이슬점과 창가 표면 온도의 차이가 2℃ 안쪽이면 결로 위험 알림을 냅니다.
  5. 센서값이 이웃 센서와 계속 5%p 이상 다르면 위치 영향과 보정 상태를 재점검합니다.

작게 시작할 사람과 집 전체를 기록할 사람의 선택

원룸이나 작업실 한 곳만 관리하려는 사람에게는 라즈베리파이 한 대와 I2C 온습도 센서 한 개면 충분합니다. 배선을 30cm 안쪽으로 유지하고 센서를 본체 열에서 떼어 놓은 뒤, 5분 간격 CSV 저장과 하루 한 번 그래프 생성부터 시작해 보세요. 화면이나 클라우드를 처음부터 붙이기보다 오류 로그와 이슬점 계산을 먼저 완성하는 편이 실제 생활에 도움이 됩니다.

비용도 이 구성이 가장 단순합니다. 이미 라즈베리파이가 있다면 센서 모듈, 케이블, 통풍 케이스 정도만 추가하면 되고, 별도 모니터 없이 SSH로 설정할 수 있습니다. 인터넷 장애 때도 로컬 파일에는 기록이 남도록 구성하고, 일주일에 한 번 다른 저장장치로 복사하면 초보자에게도 관리 부담이 크지 않습니다.

  • 측정 지점은 사람이 주로 머무는 높이와 창가 중 한 곳을 먼저 선택합니다.
  • 파일명에 날짜를 넣고 장치명·위치·보정값은 헤더나 설정 파일에 기록합니다.
  • 그래프는 온도와 습도만 겹치지 말고 이슬점과 오류 횟수도 별도 축으로 표시합니다.
  • 알림은 순간값이 아니라 기준 초과가 10~20분 지속될 때 보내도록 설정합니다.

거실·침실·베란다처럼 여러 공간을 동시에 관리하려는 사람에게는 각 방에 저전력 마이크로컨트롤러와 센서를 두고 중앙 라즈베리파이가 데이터를 모으는 구성이 편합니다. 긴 I2C 배선을 집 안에 끌기보다 센서 노드를 분산하면 통신 불안과 설치 난도가 줄어듭니다. 무선 연결을 쓴다면 끊긴 동안 측정값을 임시 저장했다가 재연결 후 전송하도록 설계해야 빈 구간이 줄어듭니다.

여러 방 구성에서는 값 자체보다 센서 간 일관성이 중요합니다. 설치 전에 모든 센서를 같은 상자 안에 1~2시간 두고 편차를 기록하고, 장치별 보정 계수를 적용하세요. 창가 노드는 결로 경보에, 거실 노드는 생활 쾌적도에, 베란다 노드는 외기 변화의 참고값에 초점을 두면 같은 숫자를 억지로 동일한 기준에 맞추지 않아도 됩니다.

  • 각 노드에 고유 ID를 부여하고 방 이름은 중앙 서버에서 매핑합니다.
  • 무선 장애에 대비해 최소 하루치 측정값을 노드 내부에 임시 저장합니다.
  • 센서 교체 날짜와 보정 이력을 남겨 장기 그래프의 갑작스러운 단차를 설명합니다.
  • 외부 접속이 필요하면 기본 비밀번호를 바꾸고 공개 포트보다 VPN 등 보호된 경로를 사용합니다.
  • 원룸 사용자는 짧은 I2C 배선과 로컬 기록을, 여러 방 사용자는 분산 센서 노드와 중앙 수집을 선택하는 것이 가을 환절기 데이터를 가장 안정적으로 남기는 방법입니다.

가을 환절기 라즈베리파이 온습도 센서를 한 달 돌려봤더니

댓글목록

등록된 댓글이 없습니다.