하기 기록은 E4DS Maker의 "너의 온도를 보여줘" 이벤트에 응모한 게시글을 블로그에 백업차 복사하였다. USB 온습도 센서라고 해봐야 CP2102모듈과 남는 PIC MCU에 I2C 통신을 해서 온습도 값을 읽어낼수 있게 만든 모듈이다. 타겟 디자인은 라디오노드 사의 UA10 모델이었다. VB.NET으로 시리얼 통신을 하여 데이터를 읽어내 그래프화 하고 저장할 수 있도록 구현되었고, 이후엔 ESP모듈을 이용 원격으로 온습도를 주기적으로 측정해 웹서버에 HTTP로 전송하고 웹페이지를 통해 확인이 가능하도록 구현이 완료된 상태이다. 이 부분엔 대해선 나중에 별도로 작성해 보려고 한다. 요새 IOT센서 업체들은 대부분 자사 클라우드 사이트를 제공하기에 자체적으로 구현해보았다.


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 code

read command 이후에 적어도 1.5ms 이상 기다리라고 권장하지만 더 여유있게 30ms 대기 후 데이터를 읽도록 했다.

사진(9) 구현된 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프로그램과 통신하는 기본기적인 내용을 마스터 할 수 있었고, 이를 응용해 필요한 곳에 적절히 개발하여 사용하면 될 것이라 생각한다.

 

2022년 4월 2일 열정상과 웨비나x콘테스트 상에 입상하였다. 출품하신 분들을 보면 기발하고 뛰어난 아이디어가 많았고, 그에 비해 내가 한거야 뭐.. 조촐한 수준이라고 볼 수 있겠다. 4월 29일(27일로 변경됨)에 띵작과 기발했상 발표와 전반적인 콘테스트 리뷰가 진행 된다고 한다. 아래 링크로 접속하면 관련 출품작들을 살펴볼 수 있다.

e4ds에 감사드리며.. 간략하게 e4ds에 대해서 설명하자면 전자엔지니어를 위한 교육,기술,뉴스 등 종합 포털사이트라 할 수 있다. 기술뉴스나 최신트렌드의 웨비나 등을 지속적으로 제공하고 있어 애용하고 있다.


2022-04-27 E4DS에서 1차 콘테스트 수상 발표와 2차 콘테스트 소개가 진행 되었다.

Show me the 띵s : 헬스케어 (Healthcare) - 콘테스트 - e4ds make

 

+ Recent posts