GY-30是一款采用了ROHM-BH1750FVI芯片的数字输出的感光模块,可以测量的光照度范围为0~65535勒克斯,最小误差变动为±20%,分辨度为1勒克斯。

GY-30是一个五针脚模块,包含VCC、SCL、SDA、ADDR、GND五个引脚。其中VCC接电源正极,其电压范围在3~5V之间;GND接地;SCL为时钟线;SDA为数据线;并且,SCL和SDA与单片机相连时接上一个5k阻值的上拉电阻;ADDR为寄存器的地址引脚,其接地时器件地址为0100011,接电源正极时器件地址为1011100。

GY-30与STM32单片机之间的通讯采用IIC通讯协议,这里简单讲解一下IIC通讯。

上图中,左边是起始信号,拉高数据线,再拉高时钟线,然后在时钟线为高电平时将数据线拉低,产生起始信号,之后再将时钟线拉低,等待发送数据。右边是停止信号(数据传递结束时,时钟线和数据线都为低电平),先拉高时钟线,在时钟线为高电平时将数据线拉高,产生停止信号。

数据的传递由数据线承载,保证时钟线拉高时,数据线保持稳定。发送数据1,保持时钟线为低电平,将数据线拉高;在数据线拉高过程中,将时钟线拉高,等待几us后,将时钟线拉低。发送数据0与其同理,只需要将数据线保持为低电平即可。

IIC协议在每发送完一条指令之后都会由接受指令的设备产生一个应答;若应答则继续,不应答则停止。

说完IIC同通讯,我们再来具体讲解一下BH1750芯片的通讯流程。

测量流程为:单片机发送器地址(7位)和写命令(1位)→传感器应答→单片机发送测量指令→传感器应答

其读取测量结果流程位:单片机发送器地址和读命令→传感器应答→传感器给单片机发送高8位数据→单片机应答→传感器发送低8为数据→单片机不应答(通讯结束)

下面附上程序代码(这里关于IIC协议的代码就不给出了,网上有很多,我这里采用的是正点原子编写的myiic.c文件)

bh1750.c

//写入
void Single_Write_BH1750(unsigned char REG_Address)
{IIC_Start();                  IIC_Send_Byte(BHAddWrite);   IIC_Send_Byte(REG_Address);    IIC_Stop();
}
//发送
void bh_data_send(u8 command)
{do{IIC_Start();                      IIC_Send_Byte(BHAddWrite);       }while(IIC_Wait_Ack());          IIC_Send_Byte(command);         IIC_Wait_Ack();                  IIC_Stop();
}
//接受
u16 bh_data_read(void)
{u16 buf;u8 a;u8 b;IIC_Start();                       IIC_Send_Byte(BHAddRead);         IIC_Wait_Ack();                  b=IIC_Read_Byte(1);a=IIC_Read_Byte(0);buf=b*256+a;   IIC_Stop();                      return buf;
}
//初始化
void Init_BH1750(void)
{GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStruct); Single_Write_BH1750(0x01);  delay_ms(180);
}

bh1750.h

//各个命令代码的具体含义可以参考相关的使用说明(绝不是因为我看字太多懒得打)
#define ADDR 0x23//0100011
#define BHAddWrite     0x46
#define BHAddRead      0x47
#define BHPowDown      0x00
#define BHPowOn        0x01
#define BHReset        0x07
#define BHModeH1       0x10
#define BHModeH2       0x11
#define BHModeL        0x13
#define BHSigModeH     0x20
#define BHSigModeH2    0x21
#define BHSigModeL     0x23      void Single_Write_BH1750(unsigned char REG_Address);
void Init_BH1750(void);
void bh_data_send(u8 command);
u16 bh_data_read(void);

附上一个我当时做实验的测试结果图

懒人程序下载通道 :

https://download.csdn.net/download/qq_42560288/12673151

如果本文真的帮助到你的话,请动动小手点个赞吧!

STM32F103驱动GY-30(BH1750)光照强度传感器程序讲解(附加程序下载)相关推荐

  1. Labview视觉一键尺寸测量仪,多产品,多尺寸,快速编辑, 测量,导出结果,定制开发,程序讲解,程序通用型高

    Labview视觉一键尺寸测量仪,多产品,多尺寸,快速编辑, 测量,导出结果,定制开发,程序讲解,程序通用型高,支持多种工业相机,源代码,源代码,源代码 ID:69699646352571247cos ...

  2. gy30光照传感器c语言程序,STM32F103驱动GY-30(BH1750)光照强度传感器程序讲解(附加程序下载)...

    GY-30是一款采用了ROHM-BH1750FVI芯片的数字输出的感光模块,可以测量的光照度范围为0~65535勒克斯,最小误差变动为±20%,分辨度为1勒克斯. GY-30是一个五针脚模块,包含VC ...

  3. 【STM32-库函数】光照强度传感器BH1750 GY-30

    下载地址:BH1750光照强度库文件下载 BH1750光照强度传感器(GY-30) 谢谢观看,有问题需要请教的,请加入STM32学习交流群(QQ群号:470804974),本人QQ号297427819 ...

  4. STM32F103ZET6+IIC+BH1750光照强度传感

    STM32F103ZET6+IIC+BH1750光照强度传感 为了加深对IIC协议的理解和应用,接下来,使用STM32驱动BH1750光照强度传感器 准备IIC协议 其实IIC协议还是之前的驱动温湿度 ...

  5. 电气期刊论文实现:考虑斜坡约束、开停机时间约束的电力机组组合(程序讲解)

    电气期刊论文实现:考虑斜坡约束.开停机时间约束的电力机组组合(程序讲解) 程序图 提示:个人电气博文目录链接:学好电气全靠它,个人电气博文目录(持续更新中-) 论文解锁是可以看这个专栏所有文章.一年时 ...

  6. ESP32-C3学习笔记(3):ESP32 C3 IIC总线驱动光照强度传感器(基于ESP-IDF Eclipse)

    一.硬件简介 光照强度传感器使用的是物联网俱乐部的智慧路灯案例扩展板E53_SC1,购买连接 https://item.taobao.com/item.htm?spm=2013.1.w4004-222 ...

  7. ⑧ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 BH1750 光强传感器】

    目录 一.BH1750是什么 二.驱动原理&代码 关于IIC BH1750驱动 三.结语 本章介绍 在ESP8266上使用IIC总线驱动BH1750光强传感器的方法. 一.BH1750是什么 ...

  8. STM32实现光照强度传感器(BH1750)(标准库与HAL库实现)

    目录 元器件类型选择 接线表设计 实现过程 标准库实现 HAL库实现 代码下载 元器件类型选择 单片机选择:STM32F103 光照度模块:维特智能出品的 BH1750 模块被企业封装过,将采集的光照 ...

  9. BH1750 光照传感器文档详解 及 驱动设计

    前言 最近接触到一个应用,需要在低功耗的产品上加上光照度采集,正好最近有接触到一款光照传感器 BH1750 ,性能价格都合适,那么今天就抽空来好好测试一下. 那么要写一篇测试文章,我会尽量以新手的角度 ...

最新文章

  1. DSM: 域不变的立体匹配网络解析(Stereo Matching Networks)
  2. 解决编译报错:duplicate value for resource
  3. 业务场景是什么意思_深度思考:麦乐积分兑换商城系统业务逻辑
  4. Device /dev/ttyUSB0 is locked.解决办法
  5. 乒乓球比赛赛程_10月5日至10月11日中央电视台直播录播乒乓球比赛安排
  6. layui表头样式_layui中table表头样式修改方法
  7. web前端教程:css实现容器高度适应屏幕高度
  8. python闭包的应用场景_Python闭包函数定义与用法分析
  9. kubernetest pod为ContainerCreating、ImagePullBackOff状态 怎么办
  10. 使用DragonBones开发FLASH骨骼动画入门教程
  11. 网盘参差不齐,实测对比
  12. 接口自动化第四篇----应用工厂模式下的HttpClient请求
  13. Googler为什么很幸福?
  14. 我做过的最好的$ 4.90
  15. 初试Cisco Packet Tracer–5——路由器连接两个子网
  16. 基于 vue.js + elementUI 后台管理系统 (html)模板
  17. VSCode 返回上一个光标 (上一个浏览位置)
  18. 教育类型网站用户体验分析——以UMU学习平台、学生安全教育平台、师路南通为例...
  19. 怎样把d盘改成c盘!如何把收藏夹和桌面的路径设成D盘
  20. Java虚拟机理解-内存管理

热门文章

  1. Java的执行语句(if、for、while、do-while、break、continue、return、lable)
  2. 内地首个自杀人群救助通道在深圳上线
  3. source insight 常规配置以及背景配色
  4. JavaWeb商城订单模型+分页模型(JavaWeb+jsp+Ajax)
  5. 词霸天下---词根244【-nat- = -nasc- = -naiss- = -naiv- 出 生】
  6. ios 国际化设置及默认语言设置
  7. 技术分享连载(八十四)
  8. 安卓手机充电慢_手机充电慢?这几个问题你一点要知道,充电的时候要避免!...
  9. take me to your heart(中英对照版)
  10. 软件架构师应该知道的97件事之概括16 -30