[아두이노] 라이브러리 없이 SHT30 온습도 센서 직접 제어하기 (Arduino/I2C)
대부분 아두이노에서 센서를 다룰 때는 전용 라이브러리를 사용합니다. 하지만 산업 현장이나 임베디드 환경에서는 메모리 절약, 디버깅 편의성, 그리고 예외 처리 강화를 위해 데이터시트를 직접 해석하여 구현하는 경우가 많습니다. 특히 PLC, 산업용 제어기기, 펌웨어 개발에서는 라이브러리 의존성을 줄이는 것이 시스템 안정성 측면에서 큰 장점이 됩니다. 이번 글에서는 Wire.h 만 사용하여 SHT30 센서를 직접 제어하는 방법을 정리해 보겠습니다. 1. SHT30의 통신 메커니즘 이해하기 SHT30은 I2C 기반 디지털 온습도 센서입니다. 라이브러리 내부에서 실제로 수행되는 동작은 생각보다 단순합니다. MCU와 센서는 아래 순서대로 통신합니다. Single Shot Mode 동작 순서 I2C START 조건 생성 센서 주소( 0x44 ) 전송 측정 명령어( 0x2C06 ) 전송 센서 내부 측정 완료까지 대기 측정 결과 6바이트 읽기 Raw 데이터를 온습도로 변환 즉, 라이브러리란 결국 이 과정을 함수로 감춰놓은 것에 불과합니다. 2. SHT30 기본 배선 Arduino UNO 기준 SHT30 Arduino UNO VCC 3.3V ~ 5V GND GND SDA A4 SCL A5 3. 중요한 특징: I2C 주소는 제조 단계에서 결정됨 SHT30 모듈은 일반적으로 아래 두 가지 주소 중 하나를 사용합니다. ADDR 핀 상태 I2C 주소 LOW 0x44 HIGH 0x45 문제는 알리익스프레스 등에서 판매되는 일부 SHT30 모듈은: ADDR 핀이 외부로 노출되지 않거나 PCB 내부에서 GND/VCC로 고정되어 있는 경우가 많다는 점입니다. 즉: 사용자가 주소를 변경할 수 없는 경우가 존재 제조 단계에서 주소가 사실상 결정됨 이라는 특징이 있습니다. 따라서 여러 개의 SHT30을 동시에 연결하려면: 0x44 0x45 주소 조합을 고려해야 하며, 동일 주소 센서를 여러 개 연결해야 하는 경우에는: I2C 멀티플렉서(TCA9548A) 별도 I2C 버스 RS485 기반 센서 등을...