0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Wildesbeast 来源:网络整理 作者:SingleYork 2019-11-23 12:02 次阅读

大家好,今天笔者要跟大家分享一款“温湿度计”的制作,一说到温湿度检测,或许大家第一个想到的就是DHT11了吧,单总线接口,操作方便,或者就是SHT2X系列的,IIC总线接口,编程也是比较简单。但是你们可能想错了,笔者今天要介绍的主角不是他们。

我们在设计产品的时候,很多时候不仅仅要考虑到体积,同时也要考虑成本,然而上面两类传感器,DHT11的体积显然是比较大的,SHT2X系列的传感器,成本也会让人望而生畏。那么,有没有一款体积又小,价格又相对比较便宜的温湿度传感器呢?答案自然是肯定的!这不,今天笔者要给大家介绍的这款也是由奥松电子出品的温湿度传感器AHT10,既体积小,价格又相对比较便宜,当然,最重要的是精度也不差!

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

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

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

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

为了便于SMT加工,主要元件基本都放置在了板子的背面,我们再来看下板子的正面,是由一个OLED模块和4个按键组成:

主控MCU是用的STC8A8K64S4A12这款最新出的单片机,OLED模块用的中景园的IIC接口的0.96寸OLED模块,分辨率是128*64;

ATH10的控制也很简单,直接IIC接口,除电源线外,另外只需2根线(SCL和SDA)即可,只是这里需要注意几点:

产品在电路使用中主机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()函数的原型分别如下图所示:

跟OLED相关的驱动,基本都是由中景园提供的例程,然后做了一些不同大小字体匹配的修改,大家要是有什么不明白的地方,可以直接查看官方提供的资料,在此笔者也就不多说什么了。

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

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

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

3、 设置字体及字号,然后输入我们要取模的汉字或字符,点击“生成字模”即可:

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

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

接下来,我们就要来看下ATH10的驱动程序,关于AHT10的驱动,官网也提供了基本的例程,所以,笔者也是基于官网例程,再根据身硬件做了一些小改动,官网例程链接:http://www.aosong.com/class-36.html。

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

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

在AHT10初始化的时候,我们是要配置系统寄存器的一些参数,所以应该是写,自然,这里首先就应该发送0x70,至于第二条指令0xe1,就是初始化命令了,后面跟着的0x08和ox00也是跟系统配置相关的指令,关于这几条指令的具体含义官方手册上并没有明确说明,因此,我们只需要知道按照这种方式发送指令就好了。

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

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

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

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

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

从上图中我们可以知道,在主机发送读指令后,从机会返回6个byte的数据,分别是状态(8bit)、湿度数据(8bit)、湿度数据(8bit)、湿度数据(高4bit)、温度数据(低4bit)、温度数据(8bit)、温度数据(8bit),于是,我们在程序中设置了6个变量,用来存储这几个数据,并且,我们将温湿度的原始数据,也分别用一个变量来保存:

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2515

    文章

    47683

    浏览量

    738663
  • OLED
    +关注

    关注

    116

    文章

    5944

    浏览量

    221029
  • DHT11
    +关注

    关注

    19

    文章

    264

    浏览量

    57110
收藏 人收藏

    评论

    相关推荐

    DHT11温湿度计 实时温湿度记录曲线 记录存盘 上下限报警 .....

    ``DHT11温湿度计 实时温湿度记录曲线 记录存盘 上下限报警单片机采用超小SOP-8单片机,型号STC15F104W。上位机通讯芯片CH340T,并搭配DHT11传感器进行采集温湿度。虽然硬件
    发表于 04-29 11:15

    【CANNON申请】蓝牙温湿度计

    以后用于产品中。项目描述:通过STH221温湿度计,测得环境温度,通过蓝牙与上位机连接,上传温度数据。在此过程中,学习STM32F4,学习蓝牙通讯。
    发表于 01-26 13:55

    求 推荐一款温湿度传感器

    各位大虾:本人正在做一款空气净化器,温湿度传感器老是选不好,主要是湿度传感器的读数离实际太远。用了一款型号为HTU21D的温湿度传感器,温度
    发表于 09-06 16:58

    蓝牙温湿度计常用的场景

      目前市面上的蓝牙温湿度计有的直接带显示屏有的是不带显示屏,采用低功耗蓝牙技术般使用锂亚电池的蓝牙温湿度计能用2-3年的时间。如云里物里的S1和S3两蓝牙
    发表于 01-05 16:46

    怎样去设计种基于Arduino和DHT11传感器的数字温湿度计

    怎样才能将DHT11温湿度传感器与Arduino开发板和LCD显示屏连接呢?怎样去设计种基于Arduino和DHT11传感器的数字温湿度计?并在LCD上显示其值?
    发表于 07-27 07:58

    怎样去设计种基于ESP8266与点灯科技平台的温湿度计

    物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)、设计目标二、电路展示三、存在的问题四、代码五、需要注意的问题、设计目标前阵子偶然接触到点灯科技平台
    发表于 07-29 06:36

    怎么实现基于ESP8266与点灯科技平台的温湿度计的设计?

    怎么实现基于ESP8266与点灯科技平台的温湿度计的设计?
    发表于 10-28 07:04

    基于涂鸦智能平台做的套物联网温湿度计

    开源协议: CC-BY-NC-SA 3.0简介: 基于涂鸦智能平台做的套物联网温湿度计,采用彩云朵朵的形式,谐音【财运多多】,通过RGB彩灯来提供室内外环境的温湿度情况,还能当个小夜灯使用。描述B
    发表于 02-28 12:15

    【天启教育M1开发板试用体验】MQTT温湿度计

    【目的】建立温湿度计,并通过MQTT上传到服务器1、连接wifi:2、设置mqtt服务器连接信息:3、连接成功后,获取温湿度,并上传给服务器:4、用mqttx监控订阅test的主题收到数据:【积木程序图】
    发表于 09-15 09:44

    基于51单片机和AHT10温湿度传感器的温湿度计源码

    一款基于51单片机和AHT10温湿度传感器的温湿度计源码。
    发表于 10-09 08:39

    温湿度计校准_温湿度计选购指南

    本文主要阐述了温湿度计校准的方法及选购指南。
    发表于 02-28 11:13 2283次阅读

    温湿度计怎么使用_温湿度计怎么调

    本文首先阐述了温湿度计的使用方法,其次介绍了温湿度计的调节,最后介绍了家用指针式温湿度计调校方法。
    发表于 02-28 11:16 9.8w次阅读

    工业级温湿度传感器与日常温湿度计的区别

    。如今,民用温湿度传感器的应用也越来越普遍,但是,工业级温湿度传感器仍然占据着主导地位。 都是用于温湿度测量,工业级温湿度传感器和普通的温湿度计
    发表于 06-12 16:29 2255次阅读

    低功耗温湿度传感器HCP2D-3V在电子温湿度计中的应用

    。如今,民用温湿度传感器的应用也越来越普遍,但是,工业级温湿度传感器仍然占据着主导地位。 都是用于温湿度测量,工业级温湿度计和普通的温湿度计
    的头像 发表于 09-29 11:52 1706次阅读

    温湿度计(物联网)开源

    电子发烧友网站提供《温湿度计(物联网)开源.zip》资料免费下载
    发表于 11-08 09:37 1次下载
    <b class='flag-5'>温湿度计</b>(物联网)开源