第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

这篇具有很好参考价值的文章主要介绍了第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天给大家介绍一块嵌入式毕设中也经常用到的一款传感器——BH1750光照传感器,如下图。(该传感器的购买链接和代码我已放在资料里,想要资料的同学,评论区留下邮箱即可)相比光敏传感器,它可以直接输出环境光照强度的数值(范围是0~65535lx),非常适合懒人党,各位的传感器买到手后,赶紧跟着文章试试吧!

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 首先,BH1750光照传感器上有5根引脚,分别是连接3.3V的VCC、接地的GND、连接IIC时钟线的SCL引脚,连接IIC数据线的SDA引脚和ADDR引脚。关于ADDR引脚,我们可以不用管它。拿到BH1750传感器模块后,按照资料提供的接线图(下图)用杜邦线将STM32、BH1750和USB转TTL模块连接起来,再通过烧录器将下面的例程代码烧录进STM32即可看到效果(USB转TTL要连接电脑)。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 接下来讲解BH1750的STM32例程代码程序。
 

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 第11行 delay_init( ) 初始化延时函数,执行这条语句后,延时效果才会准确。 

第13行 NVIC_PriorityGroupConfig( )是设置中断优先级分组。

第15行 USART_Config( ) 初始化串口1函数,该串口用来打印光照强度值。资料提供的程序用的串口1来打印,到时大家根据自身需要,在uart.h文件里面打开对应的串口注释就可以使用对应的串口了。

第17行 BH1750_Init( ) 初始化光照传感器模块。里面初始化了A6和PA7引脚来进行IIC通讯,和发送上电指令给BH1750传感器。

第19~20行 BH1750_Data_Send( )的作用是将括号里的数据通过IIC方式发送给BH1750传感器模块,BH1750传感器接收到数据后就会去执行相关操作。
比如第19行的BH1750_Data_Send(0x07)是让BH1750传感器内部存储光照数值的寄存器的值重置为默认值。BH1750_Data_Send(0x10)是设置BH1750传感器工作在高精度测量模式。

第22行 delay_ms(180) 延时180ms,等待模块准备完成并开始测量。以上,我们就设置好了BH1750传感器模块的工作模式,到时候程序运行完第17~20行这段代码就会按照我们设置的模式开始工作,剩下的就是在while(1)里调用第26行的 BH1750_Data_Read( ) 进行读取光照值数据即可。

第26行 是获取真实的光照轻度值,BH1750_Data_Read( )函数会返回BH1750传感器检测到的光照值,然后除以1.2得到的就是真实的光照强度值了。

第27行 串口1打印真实的光照强度值—LIGHTstreng,其中" %8.2f "的作用是让输出的数据保留两位小数。

实现效果如下:

串口助手显示BH1750光照值

在上面我们已经学会了使用BH1750模块测量周围环境的光照强度并进行光强的数值打印。接下来我们结合第七章(STM32+OLED+DHT11)的代码,实现OLED上显示光照强度值

首先打开BH1750的工程文件和第七章的工程文件,因为BH1750与STM32之间是通过I2C进行通讯的,所以我们把I2C驱动源码文件移植到第七章的工程文件中,按下图操作。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

移植完I2C驱动源码文件后,我们就可以将包含STM32与BH1750通讯的函数代码文件也移植过来。由于BH1750的代码工程已将这部分内容都整合在上面移植的BH1750文件内了,所以文件方面的移植只要完成上图的操作就可以了。

接下来打开第七章的代码,进行下图操作,将包含I2C驱动源码和STM32与BH1750通讯的函数代码C文件添加进工程中。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

在弹出的窗口进行下图操作。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

所需的C文件添加进来后,再将移植过来的BH1750文件添加到编译路径。具体操作如下:

1.点击图中红色框的“魔法棒”图标。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 2.点击“魔法棒”后会弹出下图中的窗口,先点击窗口顶部的 C/C++ (图中1号标位置),然后点击图中2号标位置。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 3.完成2的步骤后,会弹出下图中的窗口,先点击1号标的位置,会弹出下面蓝色区域的长条框,长条框里面就可以添加我们要新的编译路径。怎么添加呢?我们点击长条框右侧的地方(2号标位置),找到刚从BH1750工程文件移植过来的BH1750文件即可。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 4.如下图所示就是将移植过来的BH1750文件添加到代码编译路径的结果图,然后点击OK推出就可以啦。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

做完上图操作,我们就可以调用bh1750.c里面函数了。

1.首先在第七章代码的main.c开头添加bh750.h头文件(第1个箭头指示);

2.声明一个float类型变量lightvalue和两个uint32_t类型的变量lightV_HlightV_L(第2个箭头指示,变量lightvalue存储光照强度数值,变量lightV_HlightV_L分别用来存储光照强度数值的整数位和小数位);

3.然后再调用BH1750模块初始化函数、重置BH1750内部数据寄存器函数和设置其工作模式的函数让BH1750开始工作(第3个箭头指示);

4.4个红框的代码实现在OLED上显示”光照:lx”的字样;

5.5个红框的代码就是将BH1750获取到的光照值转换成光照强度值赋值并将光照强度值的整数和小数位分别复制给变量lightV_HlightV_L; 

6.然后再调用第6个框框的代码将光照强度值得整数位和小数位进行显示,到此就大功告成啦。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 

按照下面的接线图,用杜邦线将每个模块接到STM32上,然后将上面移植完成的代码烧录进STM32就可以看到效果了。

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

 实现效果如下:

STM32+OLED+BH1750显示光照值强度文章来源地址https://www.toymoban.com/news/detail-440317.html

到了这里,关于第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BH1750( GY-302 )光照传感器

    这里我先简单的介绍一下BH1750光照传感器模块的基本信息(不多废话),我将着重讲解它的使用部分,相信对于屏幕前的你也是更关心它是怎么使用的,OK,gogogo!!! 芯片: BH1750FVI 是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的

    2024年02月03日
    浏览(37)
  • BH1750(GY-302)的使用,(光照传感器)

    BH1750(GY-302)的使用,(光照传感器) 提示:文章写完后,目录可以 自动生成,如何生成可参考右边的帮助文档 直接在网上购买BH1750 传感器模块 本课题使用 STM32F103-mini 提示:以下是本篇文章正文内容,下面案例可供参考 BH1750FVI是一款数字型光强度传感器集成芯片。某宝上

    2024年02月06日
    浏览(44)
  • STM32F103ZET6+IIC+BH1750光照强度传感

    为了加深对IIC协议的理解和应用,接下来,使用STM32驱动BH1750光照强度传感器 准备IIC协议 其实IIC协议还是之前的驱动温湿度传感的那个,只是把GPIO引脚口改了一下,同理,之后遇到使用IIC协议驱动的传感器,都可以用这个定义的IIC协议。 1、声明GPIO和IIC初始化 2、IIC数据线的

    2023年04月11日
    浏览(49)
  • BH1750 传感器实战教学 —— 硬件设计篇

    前面刚写了一篇 《BH1750 光照传感器文档详解 及 驱动设计》,今天来写一篇简单的传感器实战教学。 文章如下:BH1750 光照传感器文档详解 及 驱动设计 那有些朋友就疑惑了,在上一篇文章其实我们基本都测试成功了,驱动也写了,还有必要在写一篇吗? 如果是用 STM32 做的

    2024年01月17日
    浏览(41)
  • K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示

    注:PCF8591为8位ADC通过计算后分辨率会相对不是很理想 建议用10位及其以上ADC模块或者用STM32 具体计算公式可参考文档手册中CJMCU-S12D-test-arduino.txt文件 单片机型号 测试条件 模块名称 代码功能 STC89C52RC 晶振11.0592M S12SD紫外线传感器模块 STC89C52RC采集S12SD紫外线传感器模块参数

    2024年02月05日
    浏览(51)
  • Stm32_标准库_8_ADC_光敏传感器_测量具体光照强度

    ADC简介 测量方式 采用二分法比较数据 IO通道 ADC基本结构及配置路线 获取数字变量需要用到用到光敏电阻的AO口,AO端口接在PA0引脚即可 测得的模拟数据与实际光照强度之间的关系为 代码: 完整朴素代码: 效果: 此代码的不足之处在于每次写入数字都会提前占据固定位置,

    2024年02月04日
    浏览(46)
  • STM32教学——JQ8900语音模块+光照传感器+4G模块数据上传阿里云物联网

    原理图 PCB 实物图 选用EC200U模块,集成4g和GPS以及蓝牙功能 通过串口2与4G模块串口连接,串口传输数据指令。 这个时候4g模块已经成功启动,下一步注册进阿里云物联网平台 然后就是上发数据给阿里云平台 上发了之后阿里云就可以收到这些数据 根据厂家提供的手册资料,可

    2024年03月14日
    浏览(47)
  • 通过STM32内部ADC将烟雾传感器发送的信号值显示在OLED上

    一.CubeMX配置 首先我们在CubeMX配置ADC1, 设置一个定时器TIM2定时1s采样一次以及刷新一次OLED, 打开IIC用于驱动OLED显示屏。 二.程序 在Keil5中添加好oled的显示库,以及用来显示的函数、初始化函数、清屏函数等。在主程序中初始化oled,并将其清屏。 在定时器中断回调函数中对A

    2024年02月15日
    浏览(49)
  • 【STM32】STM32学习笔记-对射式红外传感器计次 旋转编码器计次(12)

    相关头文件: misc.h 1.1 NVIC_PriorityGroupConfig函数 1.2 NVIC_PriorityGroup类型 1.3 NVIC_Init函数 1.4 NVIC_InitTypeDef类型 NVIC_IRQChannel取值 成员NVIC_IRQChannelPreemptionPriority可赋的值:最大取值15,具体有上面设置的优先级组中规定的位数决定 成员NVIC_IRQChannelSubPriority可赋的值:最大取值15,具体有

    2024年01月15日
    浏览(46)
  • 单片机设计:stm32远程水位检测灌溉系统(水泵+电机驱动+OLED显示屏+水位传感器+防水式ds18b20+光敏传感器+按键+WiFi+手机app)

    单片机设计:stm32远程水位检测灌溉系统(水泵+电机驱动+OLED显示屏+水位传感器+防水式ds18b20+光敏传感器+按键+WiFi+手机app) 一、主要功能:    1.水位传感器检测水的高度、光敏传感器检测周围光照强度、ds18b20检测水温 2.0LED、手机app显示当前数据以及阈值 3.手机app远程调节阈值,

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包