最近在做一个基于STM32的无线温湿度系统,无线模块用的NRF24L01,采集数据用的DHT11.基本上发射端和接收已经调通,然而接收到的温度值较为稳定,湿度值一直会不断下降,一直在乱跳,然后湿度值降到15%就稳定了,明显湿度值是错误的。用串口显示发射端采集到的温湿度值和在接收端显示的温湿度值一模一样。
猜测1:可能错误原因和发射端的温湿度采集代码有关
用了原子哥的精英板子做发射端,DHT11的数据口也加了上拉电阻的了。接收端用的是STM32F103C8T6,接OLED用于显示数据值,驱动OLED为模拟IIC形式,然而OLED的SDA和SCL没有加上拉电阻,不知道是不是和这个有关?
猜测2:可能和OLED的SDA和SCL没有加上拉电阻有关?
请各位大佬帮我分析一下问题所在,谢谢拉.
调下代码,分析i2c数据;逻辑分析仪截取i2c数据,分析i2c数据。
I2C通讯是需要外加上拉电阻的,具体值根据通讯速率、负载电容、寄生电容计算,一般选择2.2K - 10K。
I'am crazy! I just do what I should do!!!
IIC需要上拉,内部没有的话,就得外部加。可以先用10K试试。采集波形, 根据传感器手册,和标准协议对比一下,看看有什么差别。
OLED是显示器件,显然与温湿度测量值无关,去检查温湿度传感器的代码和硬件电路吧。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
硬件电路应该没什么问题,加了上拉电阻了,代码我重新写一下看看。