本文主要是介绍ESP32 485风速,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ESP32 485风速
- 材料及接线
- 示例程序
- 获取风速
- 风级提醒
气象站基础呀
RS-485仅是一个电气标准,描述了接口的物理层,像协议、时序、串行或并行数据以及链路全部由设计者或更高层协议定义。
RS-485定义的是使用平衡(也称作差分)多点传输线的驱动器(driver)和接收器(receiver)的电气特性。
材料及接线
ESP32
单片机TTL转RS485模块
接线说明
开发板 | TTL转RS485模块 |
---|---|
22 | TXD |
23 | RXD |
5v | VCC |
GND | GND |
485风速
采用工业级芯片,高精度进口光照传感器。采用RS485硬件接口,协议层兼容标准的工业Modbus-Rtu协议。
被广泛应用于温室、环境保护、气象站、船舶、码头、养殖等环境的风速测量。
接线说明
TTL转RS485模块 | 485风速 | 开发板 |
---|---|---|
A+ | TXD_A 绿线 | |
B- | RXD_B 蓝线 | |
V+ 棕线 | 外接12V适配器电,接开发板没用 | |
GND 黑线 | 外接12V适配器的地线,接开发板没用 |
PS:基本485的接线都一样了
示例程序
获取风速
量程:0-70m/s,分辨率 0.1m/s
from machine import UART
#ESP32可以映射引脚,初始化的时候设置就行,串口号一般设置成2(0和1尽量别用。)
import time
uart= UART(2, baudrate=4800, bits=8, parity=None, rx=22,tx=23, stop=1, timeout=100)
barray = bytearray([0x01,0x03,0x00,0x00,0x00, 0x01 ,0x84 ,0x0A]) #问询帧while True:uart.write(barray)time.sleep(1)#print(uart.read()) if(uart.any()):u2by=uart.read() # 返回的是答应帧的内容aa=u2byprint(aa)fs10 = int.from_bytes(aa[3:5],'big') # 风速fs=fs10/10 #实际值得10倍,要除以10print(fs,"m/s")
串口输出风速值
b'\x01\x03\x02\x00\x00\xb8D'
0.0 m/s
b'\x01\x03\x02\x00\x00\xb8D'
0.0 m/s
b'\x01\x03\x02\x00\x00\xb8D'
0.0 m/s
b'\x01\x03\x02\x00\x00\xb8D'
0.0 m/s
b'\x01\x03\x02\x00\x01y\x84'
0.1 m/s
b'\x01\x03\x02\x00\x18\xb8N'
2.4 m/s
b'\x01\x03\x02\x00\x18\xb8N'
2.4 m/s
b'\x01\x03\x02\x00%y\x9f'
3.7 m/s
b'\x01\x03\x02\x00%y\x9f'
3.7 m/s
b'\x01\x03\x02\x00.8X'
4.6 m/s
b'\x01\x03\x02\x000\xb8P'
风级提醒
相关知识,风速对应的风级。
风级 | 名称 | 风速m/s |
---|---|---|
0 | 无风 | 0.0-0.2 |
1 | 软风 | 0.3-1.5 |
2 | 清风 | 1.6-3.3 |
3 | 微风 | 3.4-5.4 |
4 | 和风 | 5.5-7.9 |
5 | 劲风 | 8.0-10.7 |
6 | 强风 | 10.8-13.8 |
7 | 疾风 | 13.9-17.1 |
8 | 大风 | 17.2-20.7 |
9 | 烈风 | 20.8-24.4 |
10 | 狂风 | 24.5-28.4 |
11 | 暴风 | 28.5-32.6 |
12 | 飓风 | >32.6 |
根据上表,我们可以做一个风级提醒了
if 0.0<=fs<0.2:print:("0级:当前无风,无事发生")
elif 0.3<fs<1.5:print("1级:软风哦")...# 。
懂我意思吧,案例如下
from machine import UART
#ESP32可以映射引脚,初始化的时候设置就行,串口号一般设置成2(0和1尽量别用。)
import time
uart= UART(2, baudrate=4800, bits=8, parity=None, rx=22,tx=23, stop=1, timeout=100)
barray = bytearray([0x01,0x03,0x00,0x00,0x00, 0x01 ,0x84 ,0x0A]) #问询帧while True:uart.write(barray)time.sleep(1)#print(uart.read()) if(uart.any()):u2by=uart.read() # 返回的是答应帧的内容aa=u2by#print(aa)fs10 = int.from_bytes(aa[3:5],'big') # 土壤湿度fs=fs10/10print(fs,"m/s")if 0.0<=fs<0.2:print("无事发生")elif 0.3<fs<1.5:print("软风哦")#...else:print("大风,大风")
无事发生
0.0 m/s
无事发生
0.4 m/s
软风哦
1.2 m/s
软风哦
1.2 m/s
软风哦
0.7 m/s
软风哦
0.7 m/s
软风哦
1.4 m/s
软风哦
3.2 m/s
大风,大风
3.2 m/s
大风,大风
1.9 m/s
大风,大风
这篇关于ESP32 485风速的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!