[STM32] 10. HTS221, 온습도 센서 제어하기(B-L475E-IOT01A1 개발보드 활용하기)

반응형

2022.04.11 - [Hardware&Firmware/STmicroelectronic(STM)] - [STM32] 9. B-L475E-IOT01A1 개발보드 드라이버 활용방법(B-L475E-IOT01A1 개발보드 활용하기)

 

[STM32] 9. B-L475E-IOT01A1 개발보드 드라이버 활용방법(B-L475E-IOT01A1 개발보드 활용하기)

https://vuzwa.tistory.com/entry/STM32-8-UARTB-L475E-IOT01A1-%EA%B0%9C%EB%B0%9C%EB%B3%B4%EB%93%9C-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0-HAL-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84-LL-%EB%93%9C%EB%9D%BC%E..

vuzwa.tistory.com

 

B-L475E-IOT01A1 보드에는 많은 센서와 통신모듈이 있다. 그중에 온도와 습도를 측정하는 HTS221를 제어해보자. 우선 회로를 살펴보면 별거 없다 간단하다. CS(Chip Select)이 High에 고정되어 있고, DRDY(Data ReaDY output signal) 핀은 MCU의 PD15번에 연결되어있다. IC의 제어는 I2C와 SPI 중 선택할 수 있고 여기서는 I2C에 연결되어있다. BSP도 I2C로 되어있다.

코드는 간단하다. BSP에서 제공해주는 코드를 가져와서 쓰기만하면된다. 음 사실 데이터 시트를 보고 하나씩 구현해보는 것도 학습에 도움이 되겠지만.. 이게 생각보다 시간을 많이 잡아먹는다. 빠르게 개발을 해야 한다면.. BSP를 잘 활용하는 것도 하나의 방법이라고 생각한다. 개발을 막 배우기 시작했을 때는 하나하나 구현해 내는 재미랄까. 즐거움이랄까 암튼 뭐 그런 거에 빠져 살았었는데 돌아보니.. 꼭 그래야만 했나 싶다 그 시간에 다른 걸 할걸.............. 휴 아무튼 

 

코드를 보자.

 

23번째 줄부터 시작이다. "stm32l475e_iot01_hsensor.c" 파일에 BSP_HSENSOR_Init() 함수를 불러와서 초기화를 한다. 0을 리턴하면 초기화 성공이기 때문에 24번째 줄을 실행한다. 여기부터는 hts221.c에서 불러오는 함수들이다. HTS221_H_ReadID(HTS221_DEVICE_ID) 함수를 호출해 센서의 ID 값을 확인한다. 이 부분은 데이터 시트에 나와있다. HTS221의 ID 값은 0xBC다.

다음으로 센서의 습도 감지 기능과 온도감지 기능에 관련된 레지스터들을 초기화한다. 코드의 자세한 부분은 직접 들어가서 확인하기 바란다!

 

여기까지 완료되면 31, 32번째 줄에서 온도와 습도 값을 읽어와 temp와 humi에 각각 저장한다. 아래 영상은 동작을 보여준다!

 

 

 

흠... 27도라고? 습도는 뭐 그렇다 쳐도 지금 내방 온도가 27도라고..? 이건 뭐 비교대상이 없어서 확인할 길이 없다......... 데이터 시트를 다 뒤져보고 HTS221 application note를 확인해봐도.. 이상한 부분이 없다. 믿어야지 뭐 ㅎㅎㅎ 아무튼 그렇단다.

 

ST에서 제공하는 BSP를 조금만 수정하면 다른 MCU에서도 충분히 활용 가능하다. 이게 말이 쉽지 어느 정도 수준에 올라와야 가능한 일이기는 하지만 뭐 아무튼 가능은 하다. 

 

다음 센서는 LPS22HB에 대해 알아보자!

 

 

- 끝 -

반응형