如何自己设计一款温湿度计

网友投稿 283 2022-11-24

如何自己设计一款温湿度计

我们先来看一下这款温湿度传感器的参数基本参数,如下图所示:

接下来,我们再来看一下它的尺寸和封装,双列扁平无引脚SMD封装,体积仅有541.6mm,也算的上是非常的小巧了(当然,比SHT20的尺寸32.41.1来说,还是要大了一点,但是比起DHT11的尺寸15.5125.5mm来说,小了就不是那么一点点了):

至于价格方面嘛,DHT11在某宝差异比较大,有2块多的,也有5块多的,在某商城的价格基本在4.5左右(含税),SHT20含税在6块多一点,AHT10在某商城没看到,某宝基本在3.5左右!初步看来,AHT10的性价比似乎要高一些。

好了,关于这几款传感器就简单略过,毕竟他们不是本文的重点,因为今天笔者主要是要跟大家介绍AHT10这款传感器的应用。下图是笔者设计的一款产品,至于产品的用途就不多说了,这款板子上所用到的用于温湿度检测的传感器就是这款AHT10:

产品在电路使用中主机MCU的供电电压必须与传感器一致;

IIC总线上仅能连接单个AHT10,且不能连接其它IIC器件。

好了,硬件部分连线很简单,就不多说了,接下来我们看软体设计部分,我们先来看下OLED界面,即最终我们要显示的效果:

OLED界面设计大致思路是这样的:我们将分辨率为128*64的OLED屏分成8行,其中:

第0-1行,用来显示“温湿度计”4个16*16的汉字;

第3-4行,用来显示温度信息;

第6-7行,用来显示湿度信息;

于是,在程序中我们便可以这样设计:

这里用到了三个显示函数, OLED_ShowCHinese()、OLED_ShowNum()和OLED_ShowString(),分别用来显示汉字、数字和字符,其中OLED_ShowCHinese()函数的原型如下,兼容了1616和3232两种大小的字体:

另外,OLED_ShowNum()函数和OLED_ShowString()函数的原型分别如下图所示:

关于字体取模,笔者也简单说下,利用中景园提供的取模软件,大致操作流程如下:

1、 将取模模式设置为“字符模式”:

2、 设置字模相关的参数:

接下来,我们只需要将取模生产的文件复制到oledfont.h这个字库文件中即可:

当然咯,这个字库文件中本身就给我们提供了不同大小的常用的ASCII表的字库,所以,我们只需要添加其他这个字库中没有的字体即可。大家只要掌握了方法,笔者相信添加字库对大家来说应该是件很简单的事情!最终,笔者的字库文件如下图所示:

接下来,我们就简单分析一下AHT10驱动相关的程序。首先,我们来看下AHT10初始化的指令:

咋一看,可能有点懵逼,但是,结合手册我们就不难理解,首先,我们从手册上知道ATH10的器件地址为0x38,然后它的读写指令格式就是:设备地址(7bit)+ SDA方向位(1bit),其中方向位读R:1,写W:0,指令构成如下图所示:

在初始化的时候,我们需要等待“校准是能位”为1时,才表示传感器已经工作正常了,如果没有读到这个“校准使能位”为1,则重新复位,继续发送初始化指令,若复位10次仍读不到改位为1,不再发送初始化指令,并返回0。从手册上我们知道,这个“校准使能位”是状态位中的bit[3]:

在初始化OK之后,我们就可以开始测量温湿度的值了,从数据手册上我们可以看到,要触发测量的话,我们需要发送如下四条指令:

也就是,我们程序中的0x70、0xac、0x33和0x00这四条指令:

由于传感器在采集时需要时间,所以在主机发出测量指令(0xAC)后,我们需要延时75毫秒以上再读取转换后的数据并判断返回的状态位是否正常。若状态位bit[7]为0表示数据可正常读取,为1时传感器为忙状态,主机需要等待数据处理完成。

当数据可以正常读取时,我们就可以发送0x71这条指令,开始读取数据了,关于这里为什么是0x71而不是别的值,前面已经介绍过了AHT10读写指令构成了,在此就不做过多解释了。还是一样,我们来看下手册上的读指令说明:

接下来,我们就要根据手册提供的温湿度的转换公式,来对温湿度数据进行转换,首先,我们看下手册上的转换公式:

根据上述转换公式,我们可以在程序中做如下计算:

至此,温湿度的采集和显示,就OK了,我们看下最终的温湿度数据转换并在OLED显示的这部分完整代码:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于spring5的那些事:@Indexed 解密
下一篇:Hadoop大数据——mapreduce的join算法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~