基础实验——2个485传感器并接
RS-485仅是一个电气标准,描述了接口的物理层,像协议、时序、串行或并行数据以及链路全部由设计者或更高层协议定义。
RS-485定义的是使用平衡(也称作差分)多点传输线的驱动器(driver)和接收器(receiver)的电气特性。
多个485并联。通过地址去获取对应数据。比如我想测2个花园的土壤湿度,这时候需要2个485传感器。物联网基础呀,看看怎么用吧。
485并接实验
本次实验我用了2个485传感器。一个噪音一个土壤。别问为啥,问就是我手里就这2个485传感器.
MR开发板
单片机TTL转RS485模块
接线说明
开发板 | TTL转RS485模块 |
---|---|
A3 | TXD |
A2 | RXD |
5v | 5v+ |
GND | GND |
噪声传感器模块——485信号
接线说明
TTL转RS485模块 | 噪音模块 | 开发板 |
---|---|---|
A+ | TXD_A | |
B- | RXD_B | |
5v | 5V | |
GND | GND |
RS485 工业型土壤水分传感器
接线说明
TTL转RS485模块 | 土壤水分传感器 | 开发板 |
---|---|---|
A+ | TXD_A 黄色线 | |
B- | RXD_B 蓝色线 | |
5v | 5V 红色线 | |
GND | GND 绿色线 |
接线效果图:别怀疑,2个传感器都接到转换模块这里
测试代码,通过地址获取噪音和土壤模块的数据
挺简单的,就是别忘了每个传感器的延时,要设置一下。
# main.py -- put your code here!
from pyb import UART,delay
u2 = UART(2, baudrate=9600)
u3 = UART(2, baudrate=9600)
barray_turang = bytearray([0x01,0x03,0x00,0x00,0x00,0x02,0xC4,0x0B]) #问询帧 #土壤地址1询问
barray_zaoyin = bytearray([0x02,0x03,0x00,0x00,0x00, 0x01,0x84,0x39]) #问询帧 #噪音地址2询问
# 注意2个485传感器需要延时不同。
while True:
u2.write(barray_zaoyin)
delay(1000)
if(u2.any()):
u2by=u2.read() # 返回的是答应帧的内容
aa=u2by
fenbei=int.from_bytes(aa[3:5],'big') #高位在前 转换
fenbei=fenbei/10
print("dB",fenbei)
u3.write(barray_turang)
delay(1500)
if(u3.any()):
u3by=u3.read() # 返回的是答应帧的内容
bb=u3by
shuifen = int.from_bytes(bb[3:5],'big') # 土壤湿度
shuifen=shuifen/100
wendu = int.from_bytes(bb[5:7],'big') # 土壤温度
wendu = wendu/100
print(shuifen,"%")
print(wendu,"度")