湿度传感器
目的
上一讲我们学习了DHT11温湿度传感器,今天我们用一个精度更高的数字温湿度传感器AM2321。AM2321 数字温湿度传感器是一款含有己校准数字信号输出的温湿度复合型传感器,结合OLED屏的使用,通过OLED显示读取到的温湿度。
设备
Microduino-CoreSTM32小巧精悍,其内核来自于ARM公司具有突破性的Cortex-M3内核的32位闪存微控制器。该内核是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。
Microduino Weather模块集成了三种传感器,分别是光照强度传感器(TSL2561),数字气压传感器(BMP180),数字温湿度传感器(AM2321)。采用I2C接口与核心相连。广泛用于气象监测。
Microduino-Oled是基于SSD1306的0.96吋128x64 OLED显示模块。采用I2C接口,3.3V 电源供电。像素为128*64(128列*64行)。
- 其他硬件设备
- OLED转接线 一根
- USB数据线 一根
文档
- AM2321传感器产品手册: 文件:AM2321.pdf
原理
AM2321传感器
传感器特性:
- 超小体积
- 超低功耗
- 超低电压工作
- 卓越的长期稳定性
- 标准 I2C 及单总线输出
AM2321传感器引脚分配如下:
传感器性能:
如下所示:
AM2321传感器I2C通信协议
- 主机发送读帧格式:START+ (I2C 地址+W )+功能码( 0x03) +起始地址+寄存器个数+STOP。
- 主机读取返回数据:START+ (I2C 地址+R )+连续读取传感器返回的数据+STOP。
- 传感器响应帧格式:功能码( 0x03) +寄存器个数+数据+CRC。
例如读取温湿度:
主机发送的报文格式:
传感器响应返回的报文格式:
原理图
AM2321温湿度传感器模块集成在了Microduino-Weather扩展板 上,所以无需外部接线,直接通过I2C与其通信即可。
Microduino-CoreSTM32/zh叠加在Microduino-Weather扩展板上,OLED屏通过转接线与Microduino-Weather扩展板连接。
注意:数据线需插在Microduino-CoreSTM32/zh上,不能插在扩展板上,不然会无法下载程序。
AM2321温湿度传感器位置:
程序
需要用到的库:
测试程序:
程序说明:
- AM2321_Read(unsigned char *buffer,unsigned char n)用于读取温度和湿度。buffer的第一个字节为功能码0x03,第二个字节为读取数据的个数,温度和湿度分别由两个字节表示。
从传感器读回的温湿度值,只要把数值转化成十进制数再除以 10 便是对应的温湿值,对应的温度单位为℃,湿度单位为%RH。
- OLED_displayHT(int16 H,int16 T)函数用于显示读取出来的温湿度值。函数把获取的温湿度值得百十个为分别用转化对应的ASCII码,并送显。
- OLED_showStr(int16 y,int8 *str,int16 size)用于在0-6行中的某一行显示字符串,没行最多只能显示16个字符。
调试
步骤一:数据线连接到Microduino-CoreSTM32/zh,OLED显示屏通过传接线连接到Microduino-Weather扩展板。
步骤二:下载AM2321库,把AM2321文件夹拷贝到Maple IDE安装文件下的libraries中,打开测试程序sensor2_humiditySensor。
步骤三:编译程序,下载程序。
步骤四:打开串口监视界面,观察串口监视界面和OLED显示屏上温湿度变化。
结果
室温下温湿度值稳定,通过给传感器加温加湿后,温湿度上升,使AM2321温湿度传感器再次处于室温条件下,温湿度值又慢慢恢复到之前室温稳定值,期中温度值得上升和回降相对缓慢。