아두이노 I2C OLED를 붙이고 센서 로그창을 만든 과정

profile_image
작성자 회로기록가다솜
댓글 0건 조회 5회

센서값은 분명히 잘 들어오는데, 노트북을 빼는 순간 상태를 확인할 방법이 없어 답답했던 적이 있습니다. 저는 작은 사물인터넷 센서 노드를 만들면서 이 문제를 꽤 자주 겪었고, 결국 아두이노 I2C OLED를 붙여 현장에서 바로 읽는 로그창을 만들었습니다.

이번 글은 책상 위 실험이 아니라 실제로 며칠 동안 켜 두고 본 사용 후기입니다. 배선은 단순했지만, 막상 써 보니 주소 확인, 화면 갱신 주기, 전원 노이즈, 글자 배치 같은 디테일이 체감 품질을 크게 갈랐습니다.

센서값을 눈으로 확인하고 싶어서 OLED를 붙였습니다

처음 구성한 부품과 비용 감각

제가 사용한 구성은 아두이노 나노 호환 보드, 0.96인치 I2C OLED, 온습도 센서, 5V USB 어댑터, 브레드보드 점퍼선이었습니다. OLED 모듈은 구매처와 칩셋에 따라 차이가 있지만, 제가 구입한 보급형은 몇 천원대라서 테스트용으로 부담이 적었습니다. 사물인터넷 장치에서 기록과 상태 확인이 중요하다는 맥락은 라이프로그 서비스 개념과도 닿아 있습니다.

아두이노 자체가 입문형 임베디드 실습에 널리 쓰이는 이유는 복잡한 개발 환경보다 회로와 코드를 빠르게 이어 볼 수 있기 때문입니다. 기본 개념이 필요하다면 아두이노 설명을 먼저 훑어보면 보드, 입출력, 프로토타이핑의 감이 잡힙니다.

실사용에서 가장 좋았던 점은 시리얼 모니터를 열지 않아도 된다는 것이었습니다. 설치 위치에 가서 USB 전원만 꽂으면 현재 온도, 습도, 센서 상태, 마지막 갱신 시간을 바로 확인할 수 있었고, 센서 연결이 빠졌을 때도 화면에 표시되니 원인 추적이 빨라졌습니다.

  • 장점: 노트북 없이 현장 확인이 가능하고, 부팅 상태와 센서 오류를 즉시 볼 수 있습니다.
  • 단점: 작은 화면이라 긴 문구는 잘리고, 갱신을 너무 자주 하면 I2C 버스 점유가 늘어납니다.
  • 추천 용도: 온습도, 조도, 토양 수분, CO2처럼 숫자 확인이 핵심인 센서 연결 프로젝트에 잘 맞습니다.
  • 피하고 싶은 용도: 많은 그래프나 긴 메시지를 계속 보여줘야 한다면 OLED보다 LCD나 웹 대시보드가 편합니다.
사용 팁: 처음부터 예쁜 화면을 만들기보다 센서명, 값, 단위, 오류 문구 네 가지만 안정적으로 표시하는 것이 훨씬 실용적입니다.

책상 테스트와 현장 사용의 차이

책상 위에서는 USB 케이블이 짧고 손이 가까워서 문제가 잘 드러나지 않습니다. 그런데 케이스에 넣고 벽면 어댑터로 전원을 바꾸면 화면이 한 번씩 깜박이거나, 센서값은 갱신되는데 OLED만 멈춘 듯 보이는 일이 생깁니다. 이때 대부분은 코드 전체가 죽은 것이 아니라 화면 갱신 루틴이 너무 무겁거나 배선 접촉이 흔들린 경우였습니다.

저는 표시 항목을 줄이고, 갱신 간격을 1초로 늦춘 뒤 안정감이 확 좋아졌습니다. 온습도처럼 사람이 눈으로 보는 데이터는 0.1초마다 바뀔 필요가 없습니다. 오히려 숫자가 너무 빠르게 움직이면 현장에서 읽기 어렵고, 화면 수명에도 좋지 않은 느낌이었습니다.

I2C 연결은 네 가닥보다 주소 확인이 먼저였습니다

주소 스캔부터 하고 배선을 고정했습니다

I2C OLED는 보통 VCC, GND, SDA, SCL 네 가닥이면 연결됩니다. 그래서 쉬워 보이지만, 실제로 시간을 잡아먹은 부분은 배선보다 I2C 주소였습니다. 제가 받은 OLED는 기본 주소가 0x3C였고, 예전에 쓰던 다른 모듈은 0x3D로 잡힌 적이 있습니다. 라이브러리 예제 주소와 실제 모듈 주소가 다르면 화면은 아무것도 나오지 않습니다.

아두이노 우노나 나노 계열에서는 SDA가 A4, SCL이 A5인 경우가 많습니다. 반면 ESP32나 일부 개발 보드는 핀을 코드에서 지정할 수 있어 편하지만, 그만큼 예제 코드를 그대로 복사하면 다른 핀으로 잡히는 실수가 생깁니다. 저는 새 모듈을 꽂을 때마다 주소 스캐너를 먼저 돌리고, 주소가 잡힌 뒤에야 화면 출력 예제로 넘어갔습니다.

개발 환경에서 라이브러리와 드라이버가 맞물리는 구조는 단순해 보여도 은근히 중요합니다. 용어가 낯설다면 디바이스 드라이버 통합개발환경의 개요처럼 하드웨어와 소프트웨어를 이어 주는 계층을 이해해 두면, 왜 라이브러리 선택이 표시 안정성에 영향을 주는지 감이 옵니다.

  1. 1순서: OLED만 연결하고 I2C 주소 스캐너로 0x3C 또는 0x3D가 보이는지 확인합니다.
  2. 2순서: 사용하는 라이브러리 예제에서 주소값을 실제 스캔 결과와 맞춥니다.
  3. 3순서: OLED 출력이 된 뒤 센서를 추가해 같은 I2C 버스에서 충돌이 없는지 봅니다.
  4. 4순서: 케이스에 넣기 전 점퍼선을 살짝 흔들어 화면 끊김이 있는지 확인합니다.
현장 팁: I2C 장치를 여러 개 붙일 때는 한 번에 모두 연결하지 말고, 하나씩 추가하면서 주소와 동작을 기록해 두는 편이 빠릅니다.

화면 갱신 코드는 생각보다 버스를 바쁘게 만듭니다

처음에는 센서값을 읽을 때마다 OLED 전체를 지우고 다시 그렸습니다. 기능은 됐지만, 표시가 미세하게 깜박였고 센서 읽기 타이밍도 들쭉날쭉했습니다. 화면이 작다고 해서 부담이 없는 것은 아니었습니다. 특히 SSD1306 계열 OLED는 화면 버퍼를 다루는 방식 때문에 전체 갱신을 자주 하면 코드가 불필요하게 바빠집니다.

제가 안정적으로 쓴 방식은 센서 읽기 주기와 화면 갱신 주기를 분리하는 것이었습니다. 센서는 2초마다 읽고, 화면은 1초마다 현재 상태를 다시 그리되, 에러가 있을 때만 문구를 바꿨습니다. 숫자 표시도 소수점 두 자리에서 한 자리로 줄이니 화면이 훨씬 읽기 쉬웠습니다.

  • 온습도: 1~2초 갱신이면 충분했고, 소수점 한 자리 표시가 가장 보기 편했습니다.
  • 조도: 주변 빛 변화가 빠르면 0.5초 갱신도 괜찮지만, 로그 저장 주기와는 분리하는 편이 좋았습니다.
  • 토양 수분: 값이 천천히 변하므로 5초 이상 간격도 충분했습니다.
  • 네트워크 상태: 와이파이 연결 여부, 업로드 성공 여부는 아이콘보다 짧은 문구가 현장에서 더 빨리 읽혔습니다.
표시 항목추천 형식써 보니 좋았던 이유
센서값T 24.8C / H 51%짧고 단위가 보여서 현장 확인이 빠릅니다.
I2C 상태OLED OK / SEN OK어느 장치가 끊겼는지 바로 구분됩니다.
업로드MQTT OK / WAIT사물인터넷 프로젝트에서 서버 문제와 센서 문제를 나눠 볼 수 있습니다.
시간12:31:08값이 멈췄는지 판단하기 좋습니다.

휴대용 로그창으로 쓸 때 선택이 갈린 지점

케이스, 밝기, 전원에서 체감 차이가 났습니다

OLED를 붙인 뒤 가장 먼저 바꾼 것은 코드가 아니라 케이스 구멍 위치였습니다. 화면을 보려고 케이블을 당기다 보니 점퍼선이 빠지는 일이 있었고, 작은 OLED는 각도가 조금만 틀어져도 글자가 덜 선명해 보였습니다. 저는 케이스 상단에 화면을 고정하고, USB 포트와 센서 통풍구가 서로 간섭하지 않게 배치했습니다.

밝기는 처음에는 최대로 두었지만, 실내에서 계속 켜 두니 오히려 눈에 강했습니다. 현장 점검용이라면 밝기를 조금 낮추고 필요한 정보만 표시하는 쪽이 안정적입니다. OLED는 번인 우려도 있어서 같은 문구를 장시간 고정하기보다, 상태 줄 정도만 주기적으로 바꾸거나 일정 시간 뒤 화면을 줄이는 방식이 마음 편했습니다.

전원도 무시하기 어렵습니다. 센서, OLED, 와이파이 모듈을 함께 쓰면 순간 전류가 늘고, 저가 USB 케이블에서는 전압 강하가 생길 수 있습니다. 화면이 이상하게 깜박인다면 코드보다 먼저 케이블, 접지, 브레드보드 접촉, 풀업 저항 상태를 확인하는 것이 좋았습니다.

  • 케이스: 화면을 보는 방향과 센서가 공기를 만나는 방향을 따로 생각해야 합니다.
  • 밝기: 실내 상시 표시라면 최대 밝기보다 중간 밝기가 읽기 편했습니다.
  • 전원: USB 어댑터를 바꾸는 것만으로 화면 깜박임이 사라진 경우가 있었습니다.
  • 배선: SDA와 SCL은 짧고 단정하게 두는 편이 안정적이었습니다.

두 상황이라면 서로 다르게 만들겠습니다

만약 여러분이 책상 위에서 아두이노 센서 연결을 배우는 단계라면, OLED는 꼭 붙여 보라고 말하고 싶습니다. 시리얼 모니터에만 기대면 센서값이 코드 안에서만 존재하는 느낌인데, 작은 화면에 값이 뜨는 순간 전자회로가 하나의 기기처럼 느껴집니다. 이때는 저렴한 0.96인치 I2C OLED, 기본 예제, 주소 스캐너 조합으로 충분합니다.

반대로 이미 라즈베리파이나 ESP32로 사물인터넷 장치를 운영하고 있고, 데이터를 서버에 올리는 것이 목적이라면 OLED를 상시 화면으로 쓰기보다 현장 진단창으로 쓰는 편이 낫습니다. 평소에는 업로드 상태와 에러 코드만 간단히 보여 주고, 자세한 그래프와 긴 로그는 웹 대시보드나 저장 파일에서 보는 방식이 더 안정적입니다.

  1. 처음 배우는 독자: 아두이노, I2C OLED, 온습도 센서 하나로 시작해 화면에 값이 뜨는 흐름을 먼저 경험하는 선택이 좋습니다.
  2. 운영 장치를 만드는 독자: OLED에는 현재 상태, 마지막 성공 시간, 오류 코드만 남기고 데이터 분석은 별도 저장소로 넘기는 선택이 더 오래 갑니다.

저는 지금도 새 센서 모듈을 테스트할 때 작은 OLED를 먼저 꽂습니다. 화면이 화려해서가 아니라, 센서가 살아 있는지, I2C 통신이 잡혔는지, 코드가 어디에서 멈췄는지 가장 빠르게 말해 주기 때문입니다. 초보자에게는 자신감을 주는 표시창이고, 운영자에게는 노트북을 꺼내기 전 문제 범위를 줄여 주는 작은 계기판에 가깝습니다.

아두이노 I2C OLED를 붙이고 센서 로그창을 만든 과정

댓글목록

등록된 댓글이 없습니다.