Skip to content

温湿度传感器

搜博 SM7820B

准备

  • 犀牛派 X1
  • 搜博 SM7820B 温湿度传感器
  • USB 转 RS485 小板
  • 杜邦线若干

硬件连接

1、因为 A8550PF1 的 PIN 脚没有直出的 RS485 引脚,可通过 USB 转 RS485 转接板使用。

  • USB 转 RS485 设备识别
shell
ls -l /dev/ttyU*

alt text

2、USB 转 RS485 的 A+、B- 分别接入温度传感器的 A、B 引脚

3、犀牛派 X1 的树莓派侧 PIN2、PIN6 分别接入超声波传感器的 VCC、GND 引脚

alt text

测试

搜博温湿度传感器,需要手动发送测量指令后,才会得到测量结果。每发送一次,得到一次结果。

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_PORT

2、使用脚本发送控制指令:sudo ./send_hex.sh /dev/ttyHS1 '010300000002C40B'

shell
./send_hex.sh /dev/ttyUSB0 '010300000002C40B'

/dev/ttyHS1:犀牛派 X1 的 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/ttyUSB0  -b 9600 -H

/dev/ttyUSB0:USB 转 RS485 小板的设备号

-b 9600:设置波特率为 9600 (传感器的默认波特率为 9600)

-H:显示 16 进制数据

alt text

结果分析

通过向温湿度传感器发送问答帧命令后,会返回一个应答帧结果:01 03 04 09 0d 16 8f 27 a8

响应格式如下图:

alt text

其中数据 1 为温度、数据 2 为湿度。根据搜播 SM7820B 说明书提供的计算方式,以计算温度为例:

0a e4 转换为 10 进制为:2317

数据倍率为 100,实际温度则使用 2317 / 100 = 23.17 ℃ , 即当前室内温度为 23.17 ℃ 。