Skip to content

Yanshee传感器 5 知冷暖的温湿度传感器

UBTEDU edited this page Oct 31, 2018 · 2 revisions

课程目标

通过本课程,我们要学会温湿度传感器的基本原理、使用方法和应用场景。另外我们也会学会在机器人领域的温湿度传感器是如何被利用的。最后,我们要通过一个提醒穿衣的实验课来增强大家对温湿度传感器实际应用的能力。

课程引入原因

我们每天都会听天气预报或者看手机上的温度提醒,来决定第二天抑或最近几天穿多少衣服,带不带伞,甚至适不适合出去旅游等等。我们的皮肤可以感受到温度的高低和变化,大脑很快做出反应,夏天或者冬天维持在一个合适的体温之内。而机器人可以通过更加精密元器件——温湿度传感器来获得更加精准的温湿度数据,进而规划自己的行为或者帮助人类实现相应的数据分析决策。

基础概念及知识点介绍

温度

温度(temperature)是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。温度只能通过物体随温度变化的某些特性来间接测量,而用来量度物体温度数值的标尺叫温标。

湿度

湿度,表示大气干燥程度的物理量。在一定的温度下在一定体积的空气里含有的水汽越少,则空气越干燥;水汽越多,则空气越潮湿。空气的干湿程度叫做“湿度”。在此意义下,常用绝对湿度、相对湿度、比较湿度、混合比、饱和差以及露点等物理量来表示;若表示在湿蒸汽中水蒸气的重量占蒸汽总重量(体积)的百分比,则称之为蒸汽的湿度。人体感觉舒适的湿度是:相对湿度低于70%。

天气预报原理

我们通过卫星气象云图分析,得到未来天气的下雨、云、风力、气压等结果,经过地面观测站等测量地表温度和海洋湿度等。最后通过数学模型来达到预测天气的目的。目前我国已初步建成天基、地基、空基相结合的气象立体观测系统。天基观测主要由卫星来完成、空基观测主要由探空气球、探空火箭来完成;地面观测由陆地和海洋观测站完成。全国气象部门已有国家级地面气象观测站2423个,国家级无人自动气象站473个,区域自动气象站55488个,新一代天气雷达站181个,在轨运行气象卫星7颗。全国的观测人员会定时观测云、天空状况、温度、湿度、气压和风力等等,对大气的实时状况进行观测。观测数据迅速通过专业的通信网络传递汇集,通过高速计算机对这些观测数据进行处理,得到反映全国天气实况的特制图表——天气图等各类图表,供天气预报员进行分析使用。预报员通过分析天气图,研究各类天气图表,结合气象卫星,雷达探测资料,进行综合分析、判断后,作出未来不同时间段的具体天气预报。

总线接口协议

CPU和外部设备之间都会通过总线来通讯,例如:IIC、GPIO、UART、PWM、ADC、IIS、SPI等等我们最常用的就是前三种,我们Yanshee机器人里面用的和传感器通信的总线就是IIC。下面我们详细介绍下IIC总线的原理和使用方法。

IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。(图为总线开始和停止标志表述)

常用温度传感器介绍

DHT11、DS18B20等。DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。

DS18B20是一种单总线数字温度传感器,测试温度范围-55℃-125℃,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。单总线,意味着没有时钟线,只有一根通信线。单总线读写数据是靠控制起始时间和采样时间来完成,所以时序要求很严格,这也是DS18B20驱动编程的难点。

环境准备

硬件需求

Yanshee机器人一台、温湿度传感器一个、HDMI线、HDMI显示器

软件需求

树莓派Rasbian系统、python环境

实物图

常用温湿度传感器:举例:DS18B20。

Yanshee配套的温湿度传感器:

温湿度sensor

Yanshee身上的温湿度传感器安装图

Yanshee身上的温湿度传感器

工作原理

温度传感器集成了测温元件和AD转换电路等,将热敏电阻值等元器件对周围环境温度的感知变化转换成为数字的温度值,经单片机通过IIC总线读取传感器的温度值,最好使用数码管或者液晶显示器等显示出来,供Yanshee机器人使用。

原理图框架

举例:通过python编程实现温湿度传感器应用场景体验

基础实验:

基本数据读取,我们通过Yanshee SDK API进行python代码编程。然后执行相关代码:

#!/usr/bin/python
# _*_ coding: utf-8 -*-

importtime
importRobotApi

RobotApi.ubtRobotInitialize()
#------------------------------Connect----------------------------------
gIPAddr =""
robotinfo = RobotApi.UBTEDU_ROBOTINFO_T()
#The robot name you want to connect
robotinfo.acName="Yanshee_0A7E"
ret = RobotApi.ubtRobotDiscovery("SDK", 15, robotinfo)
if (0!= ret):
print ("Return value: %d"% ret)
exit(1)

gIPAddr = robotinfo.acIPAddr
ret = RobotApi.ubtRobotConnect("SDK", "1", gIPAddr)
if (0!= ret):
print ("Can not connect to robot %s"% robotinfo.acName)
exit(1)

#---------------------------Read Sensor Value---------------------------

environment_sensor = RobotApi.UBTEDU_ROBOTENV_SENSOR_T()
whileTrue:
        time.sleep(2)
        ret = RobotApi.ubtReadSensorValue("environment",environment_sensor ,12)
if ret !=0:
print("Can not read Sensor value. Error code: %d"% (ret))  
else:
print("Read Environment Sensor tempValue: %d "% (environment_sensor.iTempValue))    

#---------------------------Disconnect----------------------------------
RobotApi.ubtRobotDisconnect("SDK","1",gIPAddr)
RobotApi.ubtRobotDeinitialize()

高级实验:智能家居中的Yanshee

作为家庭中的智能助手,当检测到室温高于25℃的时候提醒主人开空调或风扇(也可以连接无线开关或遥控器来控制家电),当温度低于20℃的时候,提醒保持室温或通过无线通信自行调整家电来控制室温。

应用场景

生活中测量室温、农业上测量种植物大棚温度和湿度、工业上各种安全作业温度等等全部都离不开温湿度传感器,因此温湿度传感器是我们最为常用的传感器之一,基本上各行各业都有它们的身影。

拓展阅读

后续有了温湿度传感器我们就可以通过它获得机器人感受到的温度等参数来做出自己的行为规范或者为主人做出各种行为决策建议。它就像是机器人的体表监控器,让机器人变的更加聪明智慧。

Clone this wiki locally