• ESP32 485光照度



    气象站基础呀

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


    材料及接线

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

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

    485光照度

    采用工业级芯片,高精度进口光照传感器。采用RS485硬件接口,协议层兼容标准的工业Modbus-Rtu协议。

    在这里插入图片描述
    在这里插入图片描述

    接线说明

    TTL转RS485模块485温湿度传感器开发板
    A+TXD_A 黑线
    B-RXD_B 黄线
    5v5V 红线
    GNDGND 绿线

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

    示例程序

    获取光照度

    此485传感器范围0~200000Lux

    勒克斯(lux,法定符号lx)照度单位,1 勒克斯等于 1流(lumen,lm)的光通量均匀分布于 1㎡ 面积上的光照度。
    1 lx大约等于1烛光在1米距离的照度,我们在摄像机参数规格中常见的最低照度(MINIMUM.ILLUMINATION),表示该摄像机只需在所标示的LUX数值下,即能获取清晰的影像画面,此数值越小越好,说明CCD的灵敏度越高。同样条件下,黑白摄像机所需的照度远比尚须处理色彩浓度的彩色摄像机要低10倍。

    一般情况:夏日阳光下为100,000 lx;阴天室外为10000 lx;室内日光灯为100 lx;距60W台灯60CM桌面为300lx;电视台演播室为1000 lx;黄昏室内为10 lx;夜间路灯为0.1 lx;烛光(20CM远处)10~15 lx。

    PS:我买的485光照是可以测室外的毕竟范围有20Wlx 而夏日的阳光就有10Wlx。所以如果测的是室外,买的时候问清楚量程。 室内的是0~65535lx
    在这里插入图片描述

    
    from machine import UART
    #ESP32可以映射引脚,初始化的时候设置就行,串口号一般设置成2(0和1尽量别用。)
    import time
    uart= UART(2, baudrate=9600, bits=8, parity=None, rx=22,tx=23, stop=1, timeout=100) 
    barray = bytearray([0x01,0x03,0x00,0x02,0x00, 0x02 ,0x65 ,0xcb])  #问询帧
    
    while True:
        uart.write(barray)
        time.sleep(1) 
        if(uart.any()):
          u2by=uart.read()        # 返回的是答应帧的内容
          aa=u2by
          G10 = int.from_bytes(aa[3:5],'big')  # 十位
          G1= int.from_bytes(aa[5:7],'big')  # 个位
          GZ=G10*10+G1
          print(GZ,"LUX")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    串口输出光照值,我在室内测的哈
    在这里插入图片描述

    修改地址

    除此之外我们同样可以配置地址。
    在这里插入图片描述
    如下地址配置成功,我现在的传感器地址就是00

    >>> from machine import UART
    >>> uart= UART(2, baudrate=9600, bits=8, parity=None, rx=22,tx=23, stop=1, timeout=100) 
    >>> barray = bytearray([0x00,0x06,0x00,0x20,0x00, 0x01 ,0x48 ,0x11])
    >>> uart.write(barray)
    8
    >>> u2by=uart.read()
    >>> print(u2by)
    b'\x00\x06\x00 \xe1\xfd'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    我们可以测一下

    from machine import UART
    #ESP32可以映射引脚,初始化的时候设置就行,串口号一般设置成2(0和1尽量别用。)
    import time
    uart= UART(2, baudrate=9600, bits=8, parity=None, rx=22,tx=23, stop=1, timeout=100) 
    barray = bytearray([0x00,0x03,0x00,0x02,0x00, 0x02 ,0x64 ,0x1A])  #问询帧
    
    while True:
        uart.write(barray)
        time.sleep(1) 
        if(uart.any()):
          u2by=uart.read()        # 返回的是答应帧的内容
          aa=u2by
          G10 = int.from_bytes(aa[3:5],'big')  # 十位
          G1= int.from_bytes(aa[5:7],'big')  # 个位
          GZ=G10*10+G1
          print(GZ,"LUX")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    看吧毫无疑问,是好使的~
    在这里插入图片描述

  • 相关阅读:
    Java程序连接 Mysql 超时问题 - 数据包过大,导致超时,# 配置网络超时时间 socketTimeout: 1800000
    ICBINP - “I Can‘t Believe It‘s Not Photography“
    浏览器和nodejs事件循环(Event Loop)区别
    如何一个模型走天下?集成训练多数据集,打造通用目标检测模型方法详解
    .NET异步编程模式(二)
    纯前端模拟后端接口异步获取数据
    Redis(一)安装与配置
    《ARM》cortex-A7核UART实验小作业
    可观察性支柱:探索日志、指标和跟踪
    Qt解析JSON
  • 原文地址:https://blog.csdn.net/weixin_45020839/article/details/126122091