3_8_I2C 温湿度传感器实验|学习笔记

简介: 快速学习3_8_I2C 温湿度传感器实验。

开发者学堂课程【HaaS 物联网应用开发课程3_8_I2C 温湿度传感器实验】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13834


3_8_I2C 温湿度传感器实验

 

内容介绍

一、HaaS EDU K1 I2c 介绍

二、温湿度传感器介绍

三、I2C HAL API 介绍

四、温湿度传感器实验

 

一、HaaS EDU K1 I2c 介绍

本节课的主题是 I2C 接口的温湿度传感器,这本节课程中先给大家介绍一下 HaaS EDU K1 上的 I2c 接口,接下来会给大家介绍 HaaS EDU 上面内置的温湿度传感器,然后说明 AliOS Things 上面怎样使用 I2C HAL 的接口,最后通过I2C HAL 的接口读取 HaaS EDU K1 上面温湿度传感器的信息。

图片49.png

HaaS EDU K1  采用的是 HaaS 1000芯片,这颗芯片内置了两组 I2C 的总线接口,支持最高速度为1.4M,按照 I2C 协议的规定属于快速Plus的级别,HaaS EDU K1 上内置的所有传感器都接到了第二组的接口上,扩展口上的 I2C 也使用的是I2C1的接口,左边这个图是今天要讲的 I2C 温湿度传感器的电路的原理图,可以看到它接到的其实就 I2C SDA1和 I2C SCL1 这一组接口,然后右边这个图就是扩展口的一个原理图,那这边也可以看到I2C 对应的也是I2C1这一组接口。

 

二、温湿度传感器介绍

现在看一下温湿度传感器的原理以及它的应用,温湿度传感器多以温湿度一体化的探头作为测温元件,将温度和湿度信号采集出来,经过稳压滤波、运算放大、非线性校正、转换、航流及反向保护等电路处理后,转换成与温度或者是湿度线性关系的电流或者电压信号。

图片48.png

关于温湿度传感器的实际应用场景大家可以先想一想,其实周边有非常多的应用场景,比如说在食品行业食品行业中,温湿度传感器对食品的存储来说非常重要,温湿度的不当会带来食物的变质,引发食品安全问题,温湿度的监控有利于相关人员及时对食品的质量进行把控。

古董保存档案管理方面也是有非常多的应用的,比如说国家的博物馆里边会看到有一个玻璃罩子把它罩起来,然后里边其实是有用恒温恒湿的环境去对古董进行保护的,它里边就会用到温湿度传感器。再比如说最早在物联网课程介绍中有提到的温室大棚,植物的生长对于温湿度的要求也极为严格,在不当的温湿度条件下,动植物的生长都会停止,甚至是死亡,利用温湿度传感器、配合气体传感器、光照传感器等可以组成一个数字化的大棚,然后在这里边智能的控制大棚里边的相关参数,使大棚里面的效率达到最大化。在工业控制里面主要是用作暖通空调或者是机房的监控等等,在药品管理里面也非常多的使用,因为根据国家相关的要求,药品保存必须在相应的温湿度下面进行控制。

 图片47.png

HaaS EDU K1 内置的温湿度传感器型号是 Si 7006,它是 Silicon Labs  公司推出的,其内部集成了一个相对湿度传感元件、相对湿度传感元件还有一个 adc 模拟数字转换器,然后还有一些信号处理以及一个 I2c 的控制接口,它采用的是七比特地址模式,地址为0 X40,内部的相对湿度传感器的最大误差是正负5%,它的量程范围是正负82%RH,工作范围在零到百分之百 RH ,温度传感器的最大误差是正负一度,度量程范围在负10度到正85度,它的工作范围在负40度到正125度,工作电压在1.9V~3.6V之间,在功耗方面,3.3V 供电的情况下,每秒采样一次,它的功耗是2.2w。

图片46.png

这一页是 Si7006提供的指令以及指令描述,右边这个是一个指定的 code,然后左边是一个指定的描述,比如说想测量一个相对湿度,那可以向 Ox40从设备发送写操作,所写内容为 Command Code,进行开始测量,等待测量稳定时间之后,再向0x40从设备发送读操作指令 读取测量到的温度/湿度值。

需要注意的是发送测量指令后,需要等待测量结束,否则读取的值是不可信的。读取到的温湿度度需经过如下转换为实际的可读的温湿度,Temp_Code 就是从 Si7006读到的温度值,需要用175.72乘以这个 Code ,再除以6536减去一个46.85,这样才是两侧的实际的一个温度值,单位是摄氏度。相对湿度值则是通过125乘以从 si70006读取回来的相对湿度代码,然后除以6536再减去六,得到的就是相对湿度值。这一页是 si70006测量的一个时间特性,它主要有两大行,第一行是一个转换时间,第二行是开机的时间,然后第一行里边这个怎么看呢?

图片45.png

这是一个测试的一个条件,比如说要测量的是12比特的一个相对湿度,那基本上正常情况下大概十毫秒左右就可以测量成功了,最长的情况下可能会花费12毫秒,商店时间也非常重要,在供电电压大于1.9V 的时候,如果是室温25度的时候,它一般情况下18毫秒就可以上电成功,最长可能会经过25毫秒才可以上电成功。

在供电电压1.9V 之上,在所有 si70006工作范围之内,然后它的一个最长的一个上线时间是80毫秒左右,这一页的信息非常重要,为什么呢?因为在控制芯片进行测量的时候,必须要等到芯片上电完成之后才能开始测量,开始测量之后也必须等它两侧稳定之后才能开始读取它的测量值,否则读取到的测量值可能是不准确的。

 

三、I2C HAL API 介绍

图片44.png

本页里面的表格就是 AliOS Things 提供的I2C HAL 层提供的 API,用 hal_i2c_init 对12C 端口进行初始化,

hal_i2c_master_send 或者 hal_i2c_master_recv master 来对I2C 端口进行读或者写,最后假如说不需要12C 端口,就需要用 hal_i2c_finalize 关闭指定12C 端口。I2C 接口函数的声明都是在 include/aos/hal/i2c.h 里面,它里面定义了一些常用的比如说 I2C 的主从模式、设定等。

 

四、温湿度传感器实验

接下来的这个实验是通过 I2C 接口控制 si70006 两侧周围环境的温湿度信息并从 si70006把温湿度信息读取回来,打印到日志中。直接来看代码好了。

图片43.png

为了方便这边提前写好了一段代码,先来看一下它的一个主程序的逻辑,同样是在 application 下面的 example hello world demo 中的APP demo.c 里边来呼叫 si70006的一些 API ,比如首先先呼叫 si70006 int 对 si70006进行一个初始化,然后在 while 循环中会去呼叫 si70006_get_Humidity,然后来获取周围环境的湿度信息,然后再调用 si70006 temperature来获取周围环境的温度信息,获取成功之后会把相对湿度信息和温度信息打印出来,同样是一秒钟一次,来看一下 si70006的 int 中的实现,这个地方可以看到最后就呼叫一个 hell I2C neat,然后传入一个有I2C 的 nev 到 hal_I2C 的实现层,呼叫这个 API 之后,I2C 端口就被初始化了,然后看一下它的参数,这个地方传入的是一,前面有提到 si70006 是接到 Haas 1000芯片的I2C1这一组接口的,然后它的地址模式是七比特地址模式,SQL的频率是400k,主机端口是 master 的模式,从设备的地址是 si70006 的地址,让看一下它是0 X40,si70006 _int 函数看完之后,来看一下 si70006_getHumidity,这里边它是通过呼叫 hell master 的这个 API,然后传送一个 code 给 si70006,它传送的这个 code 看一下它的值是多少?

它是0xf5,刚刚有看到0xf5则是让 si70006去测量环境的相对湿度值,发送完这个code之后,会等待一个30毫秒的时间,这个就是等待 si70006测量稳定的,前面有看到 si70006测量稳定的时间大概是在十几毫秒,不到20毫秒,所以等待30毫秒的时间应该是足够的。接下来再通过呼叫 hell xc receive 然后来从 si70006读取两个 BAT 的数据回来,数据读回来之后,还要根据在 PPT 中提到的一个公式125乘以这个读取回来的数据,然后除以一个6535,然后再减去6,然后这样就是它正确的相对湿度值。

再来看一下获取温度的这个 API,同样的是发送一个 command code 给 si70006,这个 command code 是0fx3,它就是让 si70006去量测周围环境的温度,量测完成之后,同样要等待一个量测稳定的时间,然后再呼叫hal_i2c_master_recv,从 si7006夺取两个 beat 的数据回来,读取回来之后经过这个正确的换算公式得出来的就是周围环境的温度,那来看一下 si70006 提供相关 API 的驱动是在哪个地方?它是在 component sensor drivers 下边,来看一下这个目录,前面有给大家介绍过在 sensor drivers drv 下边有很多传感器的驱动已经集成了,如果大家在外接一个传感器的时候,可以先来这个地方看一下,这个传感器对应的AliOS Things 驱动性操作系统里面是不是已经集成了,如果集成了就可以直接拿过来使用,那来看一下说要怎么样使用这些传感器?在 drv 下面有一个 Drv.mk 这个文件来看一下,其实可以看到说每个传感器的驱动都用一个红来包起来了,来搜索一下 si7006,它的驱动是用 aus sensor_TEMP_SI7006这个红包起来的,所以在 hello world demo.mk 里面去设置这个红,把它设置成 y ,这样再去引用组件就可以呼叫到 si7006提供的这些的 API 了,可以来看一下代码是怎么写的?

hello world demo.mk 经过两步操作就可以使用 si7006的 API 了。首先通过 NAME components 加等于 sensor,把 sensor 这个组件给包进来,然后需要定义 aos sensor tmp si7006等于 y,这样在编译组件的时候,就可以把 si7006的驱动给编译进去了,编译进去之后,就可以呼叫 si7006开头的这些 API 了。

接下来看一下整个代码的执行效果,现在编译一下,编译之前先对工程进行清理,然后再整个工程进行编译。

完成之后,使用 aos 进行收入,同样选择一下 UR 的 pot,完成之后来看一下它的一个执行效果,可以看到它已经周期性的打印温湿度的信息了。

通过后面的一个蜂鸣器的口对它进行吹气,看看温湿度的信息会不会发生变化,可以看到相对湿度已经从最开始的二十多变到了现在的五十多,再来等一下看看它的相对湿度值会不会变小,可以看到它的相对湿度值已经开始在向下走了。

图片42.png

相关文章
|
SQL Java 数据库连接
mybatis报错 resultMapException
mybatis报错 resultMapException
675 0
mybatis报错 resultMapException
|
数据采集
JSoup 爬虫遇到的 404 错误解决方案
JSoup 爬虫遇到的 404 错误解决方案
|
5月前
|
人工智能 监控 Java
《揭秘!Spring AI 1.0与Micrometer的深度对话如何重塑性能监控新格局》
Spring AI 1.0是专为AI工程设计的Java应用框架,融合了Spring生态的可移植性和模块化理念。它通过ChatClient接口支持20多种AI大模型(如Anthropic、ZhiPu等),简化复杂AI应用开发。同时,其向量存储抽象接口兼容多种数据库(如Azure Cosmos DB、Weaviate),助力高效数据管理。集成Micrometer后,框架可监控关键性能指标,如模型响应延迟、Token使用情况、调用频率及工具调用成功率,帮助企业优化成本、提升性能与用户体验。这一创新框架为企业构建智能化、个性化服务提供了强大支持。
150 0
|
8月前
|
人工智能 编解码 测试技术
阿里云通义千问发布多款AI大模型 多模态、长文本能力全面升级!
阿里云通义千问发布多款AI大模型 多模态、长文本能力全面升级!
|
存储 算法 数据安全/隐私保护
基于A律压缩的PCM脉冲编码调制通信系统simulink建模与仿真
本项目展示了一种基于MATLAB 2022a的脉冲编码调制(PCM)算法,用于将模拟信号转换为数字信号。A律压缩是非均匀量化方法之一,适用于语音信号编码,能够提高信噪比和编码效率。核心代码已提供,并附有详细中文注释和操作视频。A律压缩通过调整量化间隔来适应人耳的听觉特性,减少量化噪声,实现高质量的语音通信。此技术广泛应用于电话通信、VoIP和数字音频处理等领域。
|
11月前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3172 36
微服务架构解析:跨越传统架构的技术革命
|
数据采集 监控 大数据
大数据时代的数据质量与数据治理策略
在大数据时代,高质量数据对驱动企业决策和创新至关重要。然而,数据量的爆炸式增长带来了数据质量挑战,如准确性、完整性和时效性问题。本文探讨了数据质量的定义、重要性及评估方法,并提出数据治理策略,包括建立治理体系、数据质量管理流程和生命周期管理。通过使用Apache Nifi等工具进行数据质量监控和问题修复,结合元数据管理和数据集成工具,企业可以提升数据质量,释放数据价值。数据治理需要全员参与和持续优化,以应对数据质量挑战并推动企业发展。
3121 3
|
敏捷开发 数据可视化 持续交付
敏捷开发方法:理论与实践
【8月更文第22天】随着信息技术的发展,软件项目的复杂度不断提高,传统的瀑布式开发模式越来越难以适应快速变化的市场需求。为了解决这些问题,敏捷开发方法应运而生。本文将探讨敏捷开发的核心理念、敏捷宣言与原则、Scrum框架、Kanban方法以及相关的敏捷实践与工具。
1603 2
|
安全 机器人 Java
|
传感器 开发框架 JavaScript
HaaS EDU K1全流程体验阿里云物联网平台开发
最近入手了新玩具 HaaS EDU K1,它丰富的传感器支持、支持python和js语言的轻应用开发非常吸引我,得益于HaaS云端一体开发框架,我这种非嵌入式开发出身的小白也能够体验物联网平台开发的魅力。今天结合官方案例体验阿里云物联网平台开发。
1333 17
HaaS EDU K1全流程体验阿里云物联网平台开发