零基础学ESP32:GY-30光照传感器——让ESP32精准测量环境亮度!

发布时间:2026/10/2 8:20:18
零基础学ESP32:GY-30光照传感器——让ESP32精准测量环境亮度! 前面我们学过光敏电阻能感知光线强弱但它的输出只是一个相对值——数值大就暗数值小就亮不知道具体有多亮。今天要学一个更专业的传感器——GY-30光照传感器它能直接输出精确的亮度数值单位勒克斯Lx而且精度高达1Lx智能路灯、农业大棚、摄影测光、自动调光屏幕……这些需要精确测量光照强度的场景用的都是GY-30这类专业光照传感器。今天这节课我们就用ESP32 GY-30精准测量环境光照强度第一步找到课程看看成品效果打开逗脑IDE点击顶部“文档”在“课程” → “ESP32 MicroPython”分类下找到测试光照传感器GY-30这节课。打开课件你会看到本节课的最终效果终端实时打印环境光照值用手遮住传感器数值明显下降移开手数值恢复。第二步GY-30是什么GY-30是一款基于BH1750FVI芯片的数字光照强度传感器。核心参数参数说明芯片型号BH1750FVIROHM原装供电电压3~5V数据范围0~65535 Lx转换精度16位AD转换器测量精度1勒克斯Lx接口I2C只需2根数据线最大优势直接数字输出省略复杂的计算省略标定不像光敏电阻需要自己换算GY-30直接给出以勒克斯Lx为单位的亮度值接近人眼视觉灵敏度测量结果非常直观。第三步动手接线GY-30模块使用I2C接口接线非常简单GY-30引脚连接ESP32说明VCC3.3V电源正极GNDGND电源地SCLGPIO15I2C时钟线SDAGPIO4I2C数据线第四步代码——读取光照值frommachineimportPin,I2Cimporttime# 定义全局变量GY30_ADDR0x23# 光线传感器I2C地址G_i2cI2C(0,sclPin(15),sdaPin(4),freq1_000_000)definit_gy30():初始化GY-30传感器G_i2c.writeto(GY30_ADDR,chr(0x01))# 通电运行G_i2c.writeto(GY30_ADDR,chr(0x07))# 复位G_i2c.writeto(GY30_ADDR,chr(0x10))# 连续读取模式1Lx分辨率defget_gy30_val():读取光照值gyG_i2c.readfrom(GY30_ADDR,2)# 读取2字节数据gy30float(gy[0]8|gy[1])/1.2# 合并字节并换算returngy30defmain():init_gy30()whileTrue:print(光照值 %.2f Lx%get_gy30_val())time.sleep(0.5)if__name____main__:main()代码逻辑步骤操作说明1发送0x01通电运行2发送0x07复位3发送0x10设置连续读取模式1Lx精度4读取2字节数据合并为16位数值5除以1.2换算为标准勒克斯值关键点传感器返回的原始值需要除以1.2才得到标准的勒克斯Lx值。这是因为BH1750芯片的测量单位与标准单位之间有1.2倍的换算系数。第五步保存运行测一测光照保存代码到开发板命名 gy30.py点击运行按钮终端开始打印光照值。试试看环境光照值参考夜晚室内昏暗10~50 Lx室内日光灯下100~300 Lx室内靠窗500~1000 Lx室外阴天1000~5000 Lx室外晴天10000~100000 LxGY-30 vs 光敏电阻光敏电阻GY-30输出相对值0~4095绝对亮度Lx精度低高1Lx单位无单位勒克斯Lx需要标定需要不需要接口ADCI2C价格便宜稍贵适合场景简单的光控开关精确测光GY-30能做什么应用场景用途智能路灯根据光照强度自动开关灯农业大棚监测光照自动补光智能窗帘光线过强自动拉窗帘摄影测光精确测量环境亮度屏幕调光根据环境光自动调节屏幕亮度气象站记录每日光照数据结合之前学过的课程组合效果GY-30 OLED实时显示光照值GY-30 继电器天黑自动开灯GY-30 WiFi远程查看光照数据全程回顾步骤操作效果找到课程文档→课程→ESP32MicroPython→测试光照传感器了解GY-30认识原理BH1750芯片 I2C接口理解“直接数字输出”的优势动手接线VCC→3.3V, GND→GND, SCL→GPIO15, SDA→GPIO4硬件就位打开代码点击“打开”按钮代码进入编辑器保存运行CtrlS → 选择ESP32 → 运行开始测量光照测试光照用手遮住/移开传感器数值实时变化