首页 > 分享 > 【STM32学习】(28)STM32实现光照度采集(标准库和HAL库实现)

【STM32学习】(28)STM32实现光照度采集(标准库和HAL库实现)

我们在日常生活中一般会需要采集光照度来判断灯是否打开,应用范围非常广泛。本次来研究一下该模块的实现。

首先看一下模块的样子,如下图:

     

                                                                                                              

该模块有四个引脚,分别为VCC、GND、AO、DO,其中AO是模块的模拟输出,DO是模块的数字量输出。

我们分别验证该模块的数字量输出模拟量输出,并通过标准库HAL库实现。

单片机型号:STM32F103系列

光敏模块工作电压:3.3V-5V

标准库实现:

       1.数字量实现光照度采集。

         接线表设计:

模块(光敏模块)STM32的IO口设置的工作模式VCCVCC(3.3V)-GNDGND-DOPA0

GPIO_Mode_IPU

(上拉输入模式)

-PA9TX(串口1通信)-PA10RX(串口1通信)

      代码片段:
 

/****************************************

函数名称:void illuminanceDetectionRead_DO(void)

函数参数:无参

函数返回值:无

函数功能:光照度状态读取

创建作者:王艇

创建时间:2021.5.21

联系方式:

修改作者:

修改时间:

修改说明:

****************************************/

void illuminanceDetectionRead_DO(void)

{

if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)

{

USART1_printf(USART1, "n光照度强rn");

}

if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)

{

USART1_printf(USART1, "n光照度弱rn");

}

DelayMS(1000);//延时1秒

}

      实现效果:                       提示:我们可以调节模块中的电位器调整对光照变化的灵敏度。

                                                                                          

        显然数字量的检测可以实现光照度,但光照度的变不能细化,因此我们需要AD转换,实现光照度精确采集,这样可以应用到很多场景。

        2.模拟量实现光照度采集。

           接线表设计:

模块(光敏模块)STM32的IO口设置的工作模式VCCVCC(3.3V)-GNDGND-AOPA0

GPIO_Mode_AIN

(模拟输入模式)

-PA9TX(串口1通信)-PA10RX(串口1通信)

/****************************************

函数名称:void illuminanceInitConfig(void)

函数参数:无参

函数返回值:无

函数功能:光敏模块ADC初始化配置

创建作者:王艇

创建时间:2021.5.21

联系方式:

修改作者:

修改时间:

修改说明:

****************************************/

void illuminanceInitConfig_AO(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

ADC_InitTypeDef ADC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO_Init(GPIOA, &GPIO_InitStructure);

// ADC1 工作模式配置

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode = DISABLE;

ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //单次转换

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = 1;

ADC_Init(ADC1, &ADC_InitStructure);

ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5);

ADC_Cmd(ADC1, ENABLE);

ADC_ResetCalibration(ADC1);

/* Check the end of ADC1 reset calibration register */

while(ADC_GetResetCalibrationStatus(ADC1));

ADC_StartCalibration(ADC1);

/* Check the end of ADC1 calibration */

while(ADC_GetCalibrationStatus(ADC1));

}

/****************************************

函数名称:void illuminanceDetectionRead_AO(void)

函数参数:无参

函数返回值:无

函数功能:光照度状态读取

创建作者:王艇

创建时间:2021.5.21

联系方式:

修改作者:

修改时间:

修改说明:

****************************************/

u16 illuminanceDetectionRead_AO(void)

{

u16 ADC_VALUE = 0;

ADC_SoftwareStartConvCmd(ADC1,ENABLE);

ADC_VALUE = ADC_GetConversionValue(ADC1);

while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

return ADC_VALUE;

}

 实现效果:

                                                                                 

HAL库实现:

           1.数字量采集光照度:

               接线表设计:

模块(光敏模块)STM32的IO口设置的工作模式VCCVCC(3.3V)-GNDGND-DOPA0

输入模式(上拉)

-PA9TX(串口1通信)-PA10RX(串口1通信)

                                                                                  

                                                                                                  

                                           

          实现效果:

                                                                                      

            2.模拟量采集光照度:

               接线表设计:

模块(光敏模块)STM32的IO口设置的工作模式VCCVCC(3.3V)-GNDGND-AOPA0

ADC1_IN0

-PA9TX(串口1通信)-PA10RX(串口1通信)

           实现效果:

                                                                                              

大家需要可以留言,我发给大家,互相学习互相交流。

源码下载链接:(1条消息) 光敏电阻模块光照度采集(标准库和HAL实现)-电信文档类资源-CSDN下载

相关知识

STM32 HAL库实现GY302光照传感器驱动指南
基于STM32的智能农业灌溉系统设计与实现
STM32智能农业灌溉系统教程
STM32智能空气净化器控制系统开发与实践
基于STM32的农业病虫害检测检测系统:OpenCV、MQTT、Flask框架、MySQL(代码示例)
【STM32Cube
【免费】基于STM32的自动灌溉系统,该系统可以根据土壤湿度和天气预报来决定何时浇水,从而实现智能化的植物养护
基于STM32的温室环境监控系统设计与实现
STM32智能农田监测系统教程
基于STM32的智能宿舍安全管理系统:集成电流监测、烟雾探测与无线通信技术,实现高效用电管理与安全监控(详细流程)

网址: 【STM32学习】(28)STM32实现光照度采集(标准库和HAL库实现) https://m.huajiangbk.com/newsview1515683.html

所属分类:花卉
上一篇: 最适合客厅摆放的3种花 气派美观
下一篇: 基于STM32单片机的光强温湿度