【EV Board (MM32L0136C7P)测评】温湿度传感器应用
本帖最后由 wuxiubo 于 2022-12-11 15:56 编辑申请到了开发板,拿到板子也是有段时间了,今天拿出来先做个简单的传感器实验,使用其硬件的IIC读取下SHT20温湿度传感器。
先看下配置,管脚上是使用了PB10和PB11,目前板载资源是非常的丰富的,所以很多的管脚是占用的情况。
可以看原理图,其实这两个管脚是分配给了LED灯的,所以运行起来是比较奇怪的,两个灯会一直闪烁的。
static uint8_t app_i2c_rx_buf; /* I2C rx buffer. */
static uint8_t app_i2c_tx_buf; /* I2C tx buffer. */
static I2C_MasterXfer_Type app_i2c_xfer;
/*
* Declerations.
*/
void app_i2c_init(void);
bool app_i2c_write(uint8_t txlen, uint8_t *txbuf);
bool app_i2c_read(uint8_t rxlen, uint8_t *rxbuf);
float TemValue,RhValue;
void SHT20_ReadValues(void)
{
uint8_t tem,rh;
uint16_t Tdata=0,RHdata=0;
uint8_t cmd;
cmd=SHT20_Trig_T;
app_i2c_write(1,&cmd);
delay_ms(100);
app_i2c_read(3,tem);
cmd=SHT20_Trig_RH;
app_i2c_write(1,&cmd);
delay_ms(100);
app_i2c_read(3,rh);
Tdata = tem;
Tdata <<= 8;
Tdata += tem & 0xfe;
RHdata = rh;
RHdata <<= 8;
RHdata += rh & 0xfe;
TemValue = Tdata * 175.72f / 65536 - 46.85f;
RhValue = RHdata * 125.0f / 65536 - 6.0f;
}
void SHT20_SoftReset(void)
{
uint8_t cmd=0xfe;
app_i2c_write(1,&cmd);
delay_ms(100);
// HAL_Delay(100);
}代码上我们按照基础的案例进行修改即可,主要就是读写函数,目前也都给你弄好了的。
读取就是把原有的函数全部注释,然后我们直接加上我们的函数即可。
仿真可以直接看到读数的,后面我们还可以利用这块段码屏进行一个显示操作。
硬件接线图,可以看到两边还用排针进行了引出,非常的方便。
运行效果:
学习啦,感谢分享{:lol:} 我们常用的调试用的温湿度传感器是两用的吗 感觉大部分的小型微型的传感器都是用的iic通讯方式 代码感觉时序上没有啥规律性啊 可以进行精简吗 看了一下实验现象 好像是实现了一个小灯匀间隔闪烁是吗 看了一下代码在读取传感器的过程中 闪灯的目的是什么呢 好像没有读取数据的显示单元这个如何能判定采集数据的正确呢 很完整的设计,后期学习借鉴一下。 MM32L0136C7P性能怎么样? 不如dht11,dht11价格便宜。
wakayi 发表于 2023-1-5 09:10
看了一下实验现象 好像是实现了一个小灯匀间隔闪烁是吗
可能闪灯是表示正在读取数据 使用的温湿度精度怎么样 怎么一次性读取多个sht20传感器? 这个sht20的效果还可以的吗? 这个湿度需要校准的吗? 使用的是硬件iic的吗? dht11的性价比最高了。 这个可以把数据上传到网络吗? 这个可以应用在物联网设备上,降低功耗使用。
页:
[1]
2