【物联网智能网关-01】通过AD采集获取温湿度

简介:

无论是机房管理系统,还是面向农村温室大棚的管理系统,温湿度采集模块是必不可少的。常见的温湿度模块从通信接口上来说,一般有三种,第一种是单总线方式(我以前写了两篇博文来介绍这方面的内容《DHT11温湿度传感器通信: 》),第二种是串口方式(RS232或RS485,后续我会写博文介绍),第三种就是AD方式。

    这三种方式,各有优缺点,第一种往往价格比较便宜,但是温湿度传感器要和采集芯片必须很近才成,并且必须要实现单总线相关的代码,开发和调试相对比较复杂;第二种使用相对最容易,一般情况下直接和PC通信居多,不过价格也是最高的;第三种价格适中,并且传输的距离也比单总线方式要远的多。

    AD方式的温湿度传感器和另两种有所不同,前两种一般温湿度已经处理好,通过协议解析就可以直接获取温湿度的数值。而AD方式采集的只是电压值,需要根据一定的公式进行数据计算,才能获取最终的温湿度值。

        今天我们就介绍如何用紫藤207物联网智能网关的AD接口采集AMT1001温湿度传感器的温湿度数值。

紫藤207物联网智能网关一共有8路AD通道,对应的管脚为PA4、PA6、PA5、PB1、PA0、PC3、PC2和PC0,分别对应AnalogInput类的0~7通道(AnalogChannel.ANALOG_0~ AnalogChannel.ANALOG_7),当然这个几个管脚除了可以作为AD输入通道外,还可以作为IO入、IO出和PWM输出(仅PB1和PB5两路)。

    需要说明的是,该AD通道可采集的电压范围是0~3.3V(所有采集通道的总电路不要超过20mA),注意不要超出该范围,以免对芯片造成永久的损害(具体指标可以参见STM32F207相关数据手册)。

    下面简单介绍一下AMT1001温湿度传感器(如下图):    

    传感器采用四线方式,5V供电,并提供了一些以供计算的标准参数。对湿度采集来说,非常简单,相应管脚直接输出0~3V的电压值,然后直接查表就可以很容易计算出湿度值来。而温度采集却不同,输出的电压范围大概是0~0.8V,变化非常小,并且不能通过这个电压值,直接查表获取温度值,而是间接计算出电阻值,然后再查表获取相关温度值。

    温度采集除了这些和湿度采集不同外,还需要外加一个电阻,该电阻的阻值要和传感器模块中的温敏电阻25度时的阻值一样(主要目的是便于计算)。外接电阻和温敏电阻其实是串联在一起,AD采集的就是这10K上的电压值。那么温敏电阻的阻值就可以这样计算:假设10K上的电压值为V,那么温敏电阻上的电压就是5-V(因为模块供电电压为5V),根据等比公式就可以知道当前温敏电阻的值R= (5 - V) / V * R0。

    紫藤207模块和ATM1001模块电路连接图如下(图中的电阻就是10K):

   

    相关代码如下:

  //湿度

    static double ConvertHumidity(double value)

    {

        double V = (value / 4096) * 3.3;

        return DataTransition(V, AMT1001_Voltage, AMT1001_Humidityvalue);

    }

   //温度

    static double ConvertTemperature(double value)

    {

        double V = (value / 4096) * 3.3;

        double R = (5 - V) / V * AMT1001_R;

        return DataTransition(R, AMT1001_Resistance, AMT1001_Temperaturevalue);

    }  

    为了便于演示,我把相关的温湿度值除了通过串口输出外,还直接显示在LCD上,其核心代码如下。

    screen.DrawRectangle(Color.Black, 0, 60, 70, 200, 200, 0, 0, Color.Black, 0, 0, Color.Black, 0, 0, 255);

    screen.DrawText("温度: " + T.ToString("F2") + " ℃?",font, Colors.Green,60,70);

    screen.DrawText("湿度: " + H.ToString("F2") + " %", font, Colors.Blue, 60, 120);

    screen.Flush();

    screen 是一个位图对象(Bitmap)。

   程序运行后的最终效果图如下:

   

本文源码:http://www.sky-walker.com.cn/MFRelease/Sample/YF_AMT1001.rar

MF简介:http://blog.csdn.net/yefanqiu/article/details/5711770

MF资料:http://www.sky-walker.com.cn/News.asp?Id=25






本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/855235,如需转载请自行联系原作者

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
存储 编解码 物联网
超小型模块:IDO-SOM2D01可应用于物联网智能网关等领域
IDO-SOM2D01 是基于 SigmaStar SSD201 SoC(ARM Cortex A7 内核)的超小型 SOM (System On Module)模块。
229 0
超小型模块:IDO-SOM2D01可应用于物联网智能网关等领域
|
传感器
【物联网智能网关-01】通过AD采集获取温湿度
AD方式的温湿度传感器和另两种有所不同,前两种一般温湿度已经处理好,通过协议解析就可以直接获取温湿度的数值。而AD方式采集的只是电压值,需要根据一定的公式进行数据计算,才能获取最终的温湿度值。
1077 0
【物联网智能网关-02】获取摄像头数据+显示
开发了一套扩展库,用户只要几行代码,就可以完成和传感器的通信,从而获取数据。YFSoft.Hardware.Camera.PTC01.dll就是一种这样的库。
711 0
【物联网智能网关-03】GPRS模块中文短信收发
支持PDU方式收发短信(支持中文)、彩信发送、二进制方式 GPRS数据收发、短信按类型提取、短信删除和短信事件通知等等功能。
1050 0
|
C# 图形学 芯片
【物联网智能网关-04】WinForm for .NET MF 功能一览
 .Net Micro Framework界面开发官方标准功能仅支持WPF方式,并且所谓的WPF开发和Windows平台上的WPF有很大的区别,即不支持可视化界面设计,也不支持XML方式界面格式定义,另外提供的控件也很少,又不含事件处理,所以使用上相对繁琐,需要自己写很多额外代码。
852 0
|
芯片
【物联网智能网关-05】扫描键盘编程设计
.NET Micro Framework模拟器提供了5个模拟按键(上、下、左、右和确认按键),所以一般.NET MF开发板也只需要提供5个按键就可以了,而这5个键,也是直接和CPU的pin脚相连,用GPIO的输入相关的函数就可以操作了,使用非常简单。
549 0
|
定位技术 Windows
【物联网智能网关-06】GPS定位+星图显示(WinForm库应用实例)
GPS不仅可以双向通信,还可以以二进制格式收发数据,并且可以配置需要发送数据的种类和发送间隔,当然必要的时候,还可以用专门的工具,更新GPS模块的固件。
1086 0
|
物联网 芯片
【物联网智能网关-07】PCF8591 AD转换模块I2C通信实现
最早接触I2C接口是在2007年初次接触.NET Micro Framework的时候,当时并没有和实际的硬件打交道,而是从软件层面封装了一个可以进行I2C总线虚拟通信的模拟器
673 0
【物联网智能网关-08】TinyGUI和WPF汉字显示技术比较
TinyGUI是我在2010上半年的时候,基于.NET Micro Framework系统开发的一个轻量级图形库,虽然TinyGUI运行需要的资源少,运行快,但是不支持汉字显示
781 0
【物联网智能网关-09】CAN总线通信演示(TinyGUI触屏)
CAN是Controller AreaNetwork 的缩写,ISO国际标准化的串行通信协议。最早应用在汽车上,在欧洲是汽车网络的标准协议,目前已经广泛应用在工业自动化、智能家居、船舶、纺织和医疗设备等领域
913 0

相关产品

  • 物联网平台