2019. 5. 4. 10:18ㆍ전기전자/전자
이번 주제는 디지털 온습도계 주제입니다
요즘 점점 덥고 습해지고
장마철 때가 오면 습도가 높아지기 때문에
식물이나 다른 물건들 관리가 필요해지는
시기가 되므로 디지털 온도계를 만들었습니다
디지털 온도계 만들어놓으면 4계절 내내
유용하게 사용할 수 있습니다
아니면
부화기 같은 장치에도 응용할 수 있겠네요
본론 들어가겠습니다
온도센서는 HDC1080 센서를 이용해서 만들었고
마이크로컨트롤러는 STM32F4 사용했습니다
코딩은 인터넷 자료 참조와
수정을 해서 STM32와 주변장치 호환될 수 있도록
코딩했습니다
먼저 STM32F4 개발 보드 모습입니다
처음 할 때는 아두이노를 사용했으나
비용 대비 성능 (가성비)가 높은 개발 보드가
이만한 게 없으므로
아두이노는 잠시 접어두고 STM32로 갈아탔습니다
물론 이 보드가 아두이노보다 조금 비싸지만
클럭 주파수와 플래시 메모리를 비교하면
아두이노와 성능 차이 10배 이상 납니다
클럭 주파수만 봐도
아두이노 16 MHz
STM32F407 168 MHz
10배 더 차이 납니다
프로그래밍 가능 플래시 메모리는
아두이노 32 kB
STM32F407 1024 kB
32배 차이
넘사벽이네요
대신 예제가 아두이노보다 없으므로 예제가 없는 경우
AVR 아니면 아두이노용 코드를 STM32용으로 포팅을 해야 하기 때문에
어느 정도 부품에 대한 지식과 프로그래밍 실력이 있어야
개발이 가능하다는 단점이 있습니다
먼저 개발 보드의 핀 맵입니다
온도센서는 I2C 1번
PB8 (SCL)
PB7 (SDA)
사용했습니다
LCD와 연결되는 곳은
I2C 3번
PA8 (SCL)
PC9 (SDA)
사용했습니다
HDC1080 온습도계 코드와
I2C를 이용해서 LCD를 제어하는
MCP23017 ic에 대한 코딩입니다
HDC1080 온습도계는 인터넷과 각종 데이터 시트를
활용했고
MCP23017는 호환되는 I2C LCD 제어코드를
수정하여 MCP23017으로 작동되도록
데이터 시트를 참고하여 코딩했습니다
참고로 STM32CubeMx 활용하면
개발 난이도는 중간 정도 됩니다
각 부품의 레지스터 주소와
I2C 나 SPI 같은 통신 주소를 알면
개발 가능합니다
코드는 여기 첨부하겠습니다
TrueStudio 전용 코드입니다
디지털 온도계 전체 사진입니다
왼쪽에서 오른쪽 순으로
STM32F4 개발 보드 - HDC1080 센서(브레드보드에 서있는 부품)
MCP23017 - LCD 순입니다
HDC1080 온도센서 사진입니다
회로는 단순해 보이지만
HDC1080의 스펙을 보면
가장 정확한 값을 나타낼 때 기준으로
온도는 ±0.2 °C
습도는 ±2%
정도 되며 꽤 정확한 것을 알 수 있습니다
I2C IO 확장기 중 하나인 MCP23017입니다
이 부품이 하는 일은 핀이 부족할 경우
I2C 통신을 이용해서
입출력 핀을 확장하는 역할을 합니다
이런 부품을 활용해서 선을 줄이면
선정리를 깔끔하게 할 수 있습니다
MCP23017인 경우에는 다른 PCF8574 같은
포트가 하나인 부품과 달리
포트가 A포트 B포트로 나눠 지기 때문에
프로그래밍 하기 복잡합니다
I2C를 이용하여 IO확장기를 써야 될 상황일 때
포트 2개 활용할 거 아니면
PCF8574 추천합니다
LCD에서는 온습도 출력이 잘되네요
가끔씩 브레드보드에 전원 노이즈가 생겨
불안정하게 출력이 되기도 합니다
디지털 온습도계 테스트 영상입니다
이날 기준 기상청 온도는 14 °C 정도 되고
실내온도는 17 °C 정도 측정되네요
습도는 기상청 기준으로 보면 밖에 습도보다 상대적으로
높았습니다
이상 디지털 온습도계 포스팅을 마치겠습니다