1. 개요
실내 공간이나 온습도의 변화를 알기 위해 보통 시중 판넬형 온습도 센서를 사용하지만, 보통 판넬형으로 사람의 눈으로 직접 관측 후 파악하고 기록되어 변화를 파악할 수는 없다. 시중에 비슷한 제품을 구매하기 보다 온습도 센서를 직접 사용해보기로 하였다. 보유하고 있는 PIC MCU와 온습도 센서를 이용해 자체 개발해 간단하게 PC에 연결하여 측정하고 기록을 남길 수 있는 USB타입의 센서를 제작을 진행해 보도록 한다.
2. USB 센서 하드웨어 구성
PC와 USB 통신을 하기 위해 USB-RS232C 모듈을 사용한다. CP2102를 사용한 이 모듈은 USB마이크로 커넥터를 포함해 작게 만들어진 모듈로 바로 MCU와 연결하여 사용할 수 있다는 장점이 있다.
사진(1) 온습도 센서 구성도(USB스틱 사이즈에 맞게 작게 제작)
MCU UART 포트는 CP2102와 연결되고, CP2102커넥터핀에서 분기하여 USB A타입으로 연결한다. 그리고 센서인 AM2320와 MCU의 I2C포트로 연결시킨다. 온습도 센서는 AM2320 모듈을 사용하였다. 온도와 습도가 모두 측정 가능하고 높은 정확도를 가진다. 사양은 아래와 같다.
사진(2) AM2320 사양
습도는 ±3%, 온도는 ±0.5°의 정확도를 가진다.
사진(3) 구성 회로도
회로는 간단하게 구성되어 있다. 전원은 USB를 통해 공급, 동작확인을 위한 LED, 센서 연결, UART 통신 연결을 한다.
3. 온습도 센서 I2C 인터페이스 구현
사진(4) 디버깅 모습
AM2320은 I2C로 인터페이스 할 수 있는데 주의해야 할 사항이 있다.
1. wake-up 코드 전송 후 대기 2.read command 전송 후 대기 3.data read 3개의 순서를 지켜 전송 해야만 정상적으로 센서의 데이터를 읽어 올 수 있다.
첫 번째로 보내야 할 코드는 다음과 같다
사진(5) wakeup code
센서를 인터페이스 할 때 먼저 센서를 깨우는 코드를 보낸다.
사진(6) 실제 구현된 전송 후 대기 wake up code
Wake up 코드 전송 후 적어도 800uS 이상 기다려야 한다. 여기서는 1ms로 설정하였다.
사진(7) read command code
데이터를 읽기에 앞서, 커맨드 타입, 읽기 시작할 주소, 읽을 바이트 개수를 설정하는 코드를 보낸다
사진(8) 실제 구현된 read command 전송 후 30ms 대기
사진(9) data read code
Data read시에 리턴되는 값은 앞서 read command에서 설정했던 내용도 포함하여 돌려준다. 첫번째 0x03은 function code, 두번째 0x04는 읽을 사이즈, 이후 2바이트는 습도 상위/하위, 이후 2바이트는 온도 상위/하위, 그리고 에러 정정을 위한 crc코드가 2바이트 붙는다.
사진(10) data read
실제 읽어오는데 성공했으며 위와 같은 형식을 나타내는 것을 확인할 수 있다.
4. 하드웨어 조립 및 명령어
USB 스틱 케이스를 시중에 판매하여 구매하였고, PCB 또한 사이즈에 맞추어 제작해 아래와 같이 깔끔하게 제작되었다.
사진(11) 완성된 모습
명령어 |
내용 |
*IDN? |
제품 정보 쿼리 명령 |
TEMP? |
온도 쿼리 명령 |
HUM? |
습도 쿼리 명령 |
사진(12) 명령어
많은 명령어를 필요로 하지 않으므로 간단하게 3종의 명령을 인식한다.
5. PC소프트웨어 개발하여 온/습도 자동 측정과 기록화
*PC 프로그램을 작성하여 측정된 온도/습도 데이터 그래프 화
사진(13) GUI 예시
VISUAL BASIC .NET를 이용해 GUI을 만들고, RS-232C를 이용해 USB 온습도 센서와 통신하여 온,습도 명령을 보내어 읽어 들인 뒤 그래프화 해 로깅 할 수 있도록 개발하였다. 좌측 STOP/START Logging 버튼을 이용해 동작 시킬 수 있으며, 바로 옆 측정 주기 조정 입력이 가능하다. 우측엔 온도/습도 값들을 측정해 기록을 남기고 저장 할 수 있다.
6. 결과
소형 사이즈의 USB로 간단하게 연결하여 온습도를 읽어들 일 수 있는 센서를 제작하였다. CP2102모듈을 사용하였기 때문에 가상 COMPORT가 연결되도록 하였으며, 프로그램까지 함께 개발하여 온도와 습도를 측정화 그래프화하고 기록을 자동화하여 시간별 변화를 관측하고 파악할 수 있도록 제작을 완료할 수 있었다. 비록 반짝이는 아이디어가 반영된 것은 아니나, 온습도 센서를 인터페이스하여 pc프로그램과 통신하는 기본기적인 내용을 마스터 할 수 있었고, 이를 응용해 필요한 곳에 적절히 개발하여 사용하면 될 것이라 생각한다.
첨부파일 : USB 온습도 센서 제작하기.zip