温湿度传感器
搜博SM7820B温湿度传感器
- 套件官方文档:搜博SM7820B
准备
- 犀牛派A1
- 搜博 SM7820B 温湿度传感器
- 其他连接线缆若干
- 外接5V电源
硬件连接
1、传感器需要最低5V供电,但由于犀牛派A1的5vpin以及GND pin脚还在调试中,本实例中通过外部给传感器供电。
2、温湿度传感器的RS485A、RS485B接入犀牛派A1的RS485A、RS485B进行通信。

测试
搜博温湿度传感器,需要手动发送测量指令后,才会得到测量结果。每发送一次,得到一次结果。
1、因测试工具minicom无法设置输入16进制数据来控制传感器测量,因此可以编写脚本进行进制转换后发送数据到串口设备号上来进行控制。脚本内容如下:
shell
#!/bin/bash
# 检查参数数量
if [ "$#" -ne 2 ]; then
echo "使用方法: $0 [串口设备] [十六进制数据]"
exit 1
fi
# 串口设备,例如 /dev/ttyS2
SERIAL_PORT=$1
# 十六进制数据,例如 '1F2E3D4C'
HEX_DATA=$2
# 将十六进制数据转换为二进制流并发送到串口
printf "$HEX_DATA" | xxd -r -p > $SERIAL_PORT2、使用脚本发送控制指令:sudo ./send_hex.sh /dev/ttyHS1 '010300000002C40B'
shell
./send_hex.sh /dev/ttyHS1 '010300000002C40B'/dev/ttyHS1:犀牛派A1的RS485设备号
010300000002C40B:读取温湿度测量数据,也有其他指令如修改波特率,详情请查看搜博产品说明书
3、在aidlux中使用minicom工具接收数据。(如未安装,请通过sudo apt update; apt install minicom安装)。打开minicom:sudo minicom -D /dev/ttyHS1 -b 9600 -H
shell
sudo minicom -D /dev/ttyHS1 -b 9600 -H/dev/ttyHS1:犀牛派A1的RS485设备号
-b 9600:设置波特率为9600(传感器的默认波特率为9600)
-H:显示16进制数据

结果分析
通过向温湿度传感器发送问答帧命令后,会返回一个应答帧结果:01 03 04 0a e4 17 65 76 07 响应格式如下图:

其中数据1为温度、数据2为湿度。根据搜播SM7820B说明书提供的计算方式,以计算温度为例:
将 0a e4 转换为10进制为:2788
数据倍率为100,实际温度则使用2788/100=27.88℃ , 即当前室内温度为27.88℃ 。