python读取RS485接口的TH10S-B温度传感器数据

本文介绍了如何通过Python的pyserial库连接并读取TH10S-B温度传感器的数据。在Windows 11系统中,使用RS485USB转换器无需额外驱动。详细步骤包括安装和配置serial包,发送和接收数据,以及解析返回的16进制数据来获取温度和湿度信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备TH10S-B温度sensor一个

准备RS485 USB转换器一个

 

连线,插到电脑USB口,设置端口:

可以用商家的软件测试下传感器是否正常:

进入正题,解析RS485数据首先安装serial包,使用serials.Serial()时我遇到个错误

报错module 'serial' has no attribute 'Serial'

解决办法,卸载serial,重新安装pyserial

pip uninstall serial
pip install pyserial

正式代码如下:

import serial
import time

temp_send = '01 03 00 00 00 02 C4 0B'

ser = serial.Serial("COM3", 9600)

# 发送的数据转为2进制b'\x01\x03\x00\x00\x00\x02\xc4\x0b'
temp_send = bytes.fromhex(temp_send)
print(temp_send)
while True:
    if ser.is_open:
        print('port open ok')
        ser.write(temp_send)
        time.sleep(0.1)
        # 获取返回的缓冲data,获取的是buffer_data的长度    9
        buffer_data = ser.in_waiting
        # print(buffer_data, 'buffer_data')
        if buffer_data:
            # 返回的数据为2进制:b'\x01\x03\x04\x01\x08\x022\xfa\xb8'
            return_data = ser.read(buffer_data)
            # print('返回的数据2进制:', return_data)
            # 二进制转换为16进制:010304010802307b79
            return_data_hex = str(return_data.hex())
            print('返回的数据转换为16进制:', return_data_hex)
            # 对返回的数据进行解析,获取温度和湿度数据
            print("当前温度为:", int(return_data_hex[6:10], 16)/10)
            print("当前湿度为:", int(return_data_hex[10:14], 16)/10)
            time.sleep(1)

 安装完运行结果:

TH10S-B厂商手册对返回收据解析说明如下:

实际上我看不懂这个手册。哈哈

问了商家,温度和湿度对应的位置,搞定。

 

 最后说明,我使用的是win11系统,所以RS485 USB转接头是免驱动的,如果是win7的可能要安装驱动才能用,买的时候商家会给驱动。

 另外后期打算用树莓派读取温度湿度等数据,可以应用到设备工业领域。

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值