• ESP32 485温湿压、噪声4合1传感器测试


    ESP32 485温湿压、噪声4合1传感器测试


    气象站有许多485传感器(毕竟工业级传感器放到外面还是很放心的。)传感器多了接线就不方便,所以买了一个4和1的传感器来测试。此传感器可以测温度,湿度,气压和噪音。我们一起来玩玩吧。

    RS-485仅是一个电气标准,描述了接口的物理层,像协议、时序、串行或并行数据以及链路全部由设计者或更高层协议定义。
    RS-485定义的是使用平衡(也称作差分)多点传输线的驱动器(driver)和接收器(receiver)的电气特性。


    材料及接线

    ESP32在这里插入图片描述
    单片机TTL转RS485模块
    在这里插入图片描述
    接线说明

    开发板TTL转RS485模块
    22TXD
    23RXD
    5vVCC
    GNDGND

    485温湿压、噪声4合1传感器

    温湿压、噪声

    在这里插入图片描述

    • 技术指标
      ·供电:DC12V
      ·工作环境:-40~80℃,湿度≤100%无凝露
      ·通信接口:RS485
      ·工作电流:4mA@DC12V
      ·最短数据间隔:0.5S
      ·壳体材料:高分子工程塑料
    • 传感器参数
    参数测量范围分辨率精度
    温度-40—80℃0.1℃±0.3℃
    湿度0-100%RH0.1%RH±3.0 RH
    气压30—110kPa0.01Kpa±0.02Kpa
    噪声30—120dB0.1dB±1.5dB

    接线说明

    TTL转RS485模块4合1传感器开发板
    A+TXD_A 黄线
    B-RXD_B 绿线
    红-12V外接电源
    蓝-GND 外接电源

    PS:基本485的接线都一样了

    示例程序

    这个传感器的地址是一样的哈,默认102(0x66)

    在这里插入图片描述

    寄存器地址(十六进制)参数名称备注
    0x00温度读取数值/100
    0x01湿度读取数值/100
    0x02大气压Uint16 读取数值/100
    0x03噪声读取数值/10
    0x04地址地址范围:0X01-0XFF默认地址0x66(102)
    0x05波特率0x01:4800 - 0x02:9600- 0x03:56000-0x04:115200

    地址相同我们改寄存器地址。比如我们来测一下噪音试试,修改寄存器低位就行

    from machine import UART
    import time
    
    uart= UART(2, baudrate=9600, bits=8, parity=None, rx=22,tx=23, stop=1, timeout=100) 
    
    barray = bytearray([0x66,0x03,0x00,0x03,0x00, 0x01 ,0x7c ,0x1d])  #问询帧
    
    while True:
        uart.write(barray)
        time.sleep(1)
        #print(uart.read()) 
        if(uart.any()):
          u2by=uart.read()        # 返回的是答应帧的内容
          aa=u2by
          print(aa)
          zaoyin10 = int.from_bytes(aa[3:5],'big')  # 风速
          zaoyin=zaoyin10/10  #实际值得10倍,要除以10
          print(zaoyin,"dB")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    串口输出噪音,那么OK了 把值全读出来吧

    在这里插入图片描述

    from machine import UART
    import time
    
    uart= UART(2, baudrate=9600, bits=8, parity=None, rx=22,tx=23, stop=1, timeout=100) 
    
    
    barray0 = bytearray([0x66,0x03,0x00,0x00,0x00, 0x01 ,0x8c ,0x1d])  #温度
    barray1 = bytearray([0x66,0x03,0x00,0x01,0x00, 0x01 ,0xdd ,0xdd])  #湿度
    barray2 = bytearray([0x66,0x03,0x00,0x02,0x00, 0x01 ,0x2d ,0xdd])  #气压
    barray3 = bytearray([0x66,0x03,0x00,0x03,0x00, 0x01 ,0x7c ,0x1d])  #噪音
     
    dict={}   # 建立一个空字典
    dict["tem"]=barray0
    dict["hum"]=barray1
    dict["bpre"]=barray2
    dict["noise"]=barray3
    while True:
      for key in dict:  # 遍历这个字典
        uart.write(dict[key])
        time.sleep(5)
        #print(uart.read()) 
        if(uart.any()):
          u2by=uart.read()        # 返回的是答应帧的内容
          aa=u2by
          ##print(aa)
          fio = int.from_bytes(aa[3:5],'big')  # 4和1传感器度数
          #print(key)
          if key == "tem":
            tem=fio/100
            print("当前%s : %s 度"%(key,tem))
          if key == "hum":
            hum=fio/100
            print("当前%s is: 百分之%s "%(key,hum))
          if key == "bpre":
            bpre=fio/100
            print("当前%s is: %s 帕斯卡"%(key,bpre))
          if key == "noise":
            noise=fio/10
            print("当前%s is: %s 分贝"%(key,noise))
    # 为了测试方便看,中英文混搭,自己写尤其是用到项目上不要这样写,尽量用英文
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    效果如下:还是很舒服的。。
    在这里插入图片描述

  • 相关阅读:
    如何自制一本电子书,安利一个平台
    Tauri-Vue3桌面端聊天室|tauri+vite3仿微信|tauri聊天程序EXE
    使用StreamSets提供接口 实现零代码微服务
    【附源码】计算机毕业设计SSM社区生鲜配送系统
    浙江某华智能停车综合管理系统未授权访问漏洞复现 CNVD-C-2023-517991
    MM32F0020 UART1硬件自动波特率的使用
    基础课8——知识图谱
    cloudstack中SecondaryStorageManagerImpl
    如何写好设计文档
    python tempfile 模块使用
  • 原文地址:https://blog.csdn.net/weixin_45020839/article/details/126341602