Micropython学习交流群 学习QQ群:786510434 提供多种固件下载和学习交流。

Micropython-扇贝物联 QQ群:31324057 扇贝物联是一个让你与智能设备沟通更方便的物联网云平台

Micropython学习交流群 学习QQ群:468985481 学习交流ESP8266、ESP32、ESP8285、wifi模块开发交流、物联网。

Micropython老哥俩的IT农场分享QQ群:929132891 为喜欢科创制作的小白们分享一些自制的计算机软硬件免费公益课程,由两位多年从事IT研发的中年大叔发起。

Micropython ESP频道

Micropython ESP32 控制GY-30(BH1750芯片)光强度光照度模块和0.91寸I2C oled显示屏(SSD1306驱动)


Micropython开发ESP32开发板之控制GY-30(BH1750芯片)光强度光照度模块和0.91寸I2C oled显示屏(SSD1306驱动)

一、目的


        这一节我们学习如何使用我们的ESP32开发板来学习控制GY-30(BH1750芯片)光强度光照度模块和0.91寸I2C oled显示屏(SSD1306驱动)。


二、环境


        ESP32 + Thonny + GY-30模块 + 0.91寸oled屏幕 + 几根杜邦线 + Win10


GY-302 BH1750 光强度光照度模块

66c1f6ababdb45c59f3a26fb12ba8b4f.png

数字光强度检测

型号:GY-302

尺寸:13.9mm X 18.5mm

采用ROHM原装BH1750FVI芯片

供电电源  :3-5v

数据范围:0-65535

传感器内置16bitAD转换器

直接数字输出,省略复杂的计算,省略标定

不区分环境光源

接近于视觉灵敏度的分光特性

可对广泛的亮度进行1勒克斯的高精度测定



接线方法:

————————————————

0d469d3c4c404b72877efbcd3bf11d1b.png

三、示例代码


oled驱动,请查看上一篇文章(物联网开发笔记(85))获取,谢谢!


示例代码如下:

from machine import Pin,I2C
from ssd1306 import SSD1306_I2C
import time
 
gy30_addr = 0x23  # 光线传感器I2C地址
oled_addr = 0x3c  # oled屏幕I2C地址
 
i2c = I2C(0,scl = Pin(15),sda = Pin(4),freq = 1_000_000)
i2c1 = I2C(1,scl = Pin(12),sda = Pin(13),freq = 1_000_000)
oled = SSD1306_I2C(128,32,i2c1,oled_addr)  # 0.91寸分辨率128*32
 
#print(hex(i2c.scan()[0]),hex(i2c.scan()[1]))  # 打印器件I2C地址
 
def Gy_30_Init():
    # 第1张写法
    # i2c.writeto(gy30_addr,b'\x01') # 通电运行
    # i2c.writeto(gy30_addr,b'\x07') # 复位
    # i2c.writeto(gy30_addr,b'\x10') # 横向分辨率连续读取 1 Lx 120ms
    
    # 第2张写法
    i2c.writeto(gy30_addr,chr(0x01)) # 通电运行 
    i2c.writeto(gy30_addr,chr(0x07)) # 复位
    i2c.writeto(gy30_addr,chr(0x10)) # 横向分辨率连续读取 1 Lx 120ms
    
def Gy_30():
    gy = i2c.readfrom(gy30_addr,2) #0-65535 1 8bit 2  int 16 char 8
    gy30 = float(gy[0] << 8 | gy[1])/1.2 #左移动,可以理解为乘法 gy[0]*0xff 
    time.sleep_ms(200)
    return gy30
 
def main():
    Gy_30_Init()
    oled.contrast(255) #0-255
    while True:
        #print("光照值 = %.2f Lx"%Gy_30())
        oled.fill(0)
        #oled.text("gy-30 = %.2f Lx"%Gy_30(),10,8)  # 显示gy-30 = 259.33 Lx
        oled.text("gy-30 lighting  \n",10,8)  # 第一行显示gy-30 lighting
        oled.text("* %.2f Lx *"%Gy_30(),14,18)  # 第二行显示* 259.33 Lx *
        oled.show()
 
 
if __name__ == "__main__":
    main()

四、演示效果

6b5e103c600d40c4a54ee018bae460fa.png


来源:https://blog.csdn.net/zhusongziye/article/details/129293358


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 ESP56.com All Rights Reserved

执行时间: 0.007253885269165 seconds