생활
ST M0 Discovery에서 온습도를 측정하고 싶습니다.
ST M0 Discovery에서 온습도를 측정하고 싶은데 어떤 센서를 써야 하는지요?
Arm coretex M0로 측정할 수 있는 온습도 모두 측정 가능한 센서(I2C통신이 되는 센서)를 추천해 주시면 감사하겠습니다.
또..기본 동작을 확인할 수 있는 예제도 주시면 더더욱 감사하겠습니다.
55글자 더 채워주세요.
1개의 답변이 있어요!
제가 사용했던 온도 습도를 측정할 수 있는 모듈로 설명드리겠습니다.
제품은 HDC-1080이라는 모델로 I2C 통신으로 데이터를 계측할 수 있는 센서 모듈입니다.
검색하시면 쉽게 찾을 수 있습니다.
측정하는 소스를 올렸습니다.
생성된 프로젝트의 main.c에서 추가된 부분만 확인하시면 될 것 같네요.
#include "main.h" #include "i2c.h" #include "gpio.h" unsigned char buffer[5]; //for HDC1080 on the I2C unsigned int rawTemp; unsigned int rawHumi; float HDC1080_Temp; float HDC1080_Humi; void SystemClock_Config(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); //Config the HDC1080 to perform acquisition separately HAL_Delay(15); buffer[0] = 0x02; //pointer buffer[1] = 0; //MSB byte buffer[2] = 0; //LSB byte HAL_I2C_Master_Transmit(&hi2c1, 0x40 << 1, buffer, 3, 100); while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //trigger temperature measurment buffer[0] = 0x00; HAL_I2C_Master_Transmit(&hi2c1, 0x40 << 1, buffer, 1, 100); HAL_Delay(20); HAL_I2C_Master_Receive(&hi2c1, 0x40 << 1, buffer, 2, 100); rawTemp = buffer[0] << 8 | buffer[1]; //combine 8-bit of 2ea into 1 16-bit HDC1080_Temp = (( (float)rawTemp / 65536 ) * 165.0 - 40 ); //trigger humidity measurment buffer[0] = 0x01; HAL_I2C_Master_Transmit(&hi2c1, 0x40 << 1, buffer, 1, 100); HAL_Delay(20); HAL_I2C_Master_Receive(&hi2c1, 0x40 << 1, buffer, 2, 100); rawHumi = buffer[0] << 8 | buffer[1]; //combine 8-bit of 2ea into 1 16-bit HDC1080_Humi = (( (float)rawHumi / 65536 ) * 100.0 ); HAL_Delay(100); } /* USER CODE END 3 */ }도움이 되시길 바랍니다.