【蓝桥杯——物联网设计与开发】拓展模块5 - 光敏/热释电模块

目录

一、光敏/热释电模块

(1)资源介绍

🔅原理图

🔅AS312

🌙简介

🌙特性

🔅LDR

[(2)STM32CubeMX 软件配置](#(2)STM32CubeMX 软件配置)

(3)代码编写

(4)实验现象

二、光敏/热释电模块接口函数封装

三、踩坑日记

(1)引脚配置

(2)光敏电阻


一、光敏/热释电模块

(1)资源介绍

🔅原理图

蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2 ,所有拓展模块均可直接安装在 Lora终端上使用;
图1 拓展接口

光敏/热释电模块电路原理图如下所示:
图2 光敏/热释电模块电路原理图

通过两张电路图连接可知,引脚资源配置情况为:

PHOTO MCU
AIN(光敏) PB1
AS312(热释电) PB6
[表1 引脚资源配置情况]

🔅AS312

(以下资料来源于C90465_热释电红外线传感器手册)

🌙简介

该系列产品是将数字智能控制电路与人体探测敏感元都集成在电磁屏蔽罩内的热释电红外传感器。人体探测敏感元将感应到的人体移动信号通过甚高阻抗差分输入电路耦合到数字智能集成电路芯片上,数字智能集成电路将信号转化成15位ADC数字信号,当PIR信号超过选定的数字阈值时就会有REL电平输出。++时间参数通过电阻设置++,用以控制用电器持续工作的延时时间。所有的信号处理都在芯片上完成。

🌙特性
  • 数字信号处理;
  • 二路差分甚高阻抗传感器输入;
  • 特别内置红外传感器的二阶巴特沃斯带通滤波器,屏蔽其他频率的输入干扰;
  • 电源抑制比高,抗射频干扰;
  • 具有定时时间、灵敏度施密特REL输出;
  • 低电压、低功耗,启动后瞬间工作;

⭐当传感器检测到人体活动时,若信号超过阈值,会在REL端输出高电平,反之输出低电平;

🔅LDR

光敏电阻是一种基于内光电效应的半导体元件,它的阻值依赖于入射光强的变化。入射光强增加,光敏电阻的阻值减小,入射光减弱,光敏电阻阻值增大。

在电路中的体现是:

  • 当入射光强增加 时,光敏电阻阻值减小,AIN端测得的电压减小
  • 当入射光强减弱 时,光敏电阻阻值增大,AIN端测得的电压增大

(2)STM32CubeMX 软件配置

🔅"工程建立、时钟树配置、Debug 串行线配置、代码生成配置" 在下文中有讲解,这里不再赘述❗️

【蓝桥杯------物联网设计与开发】基础模块1- GPIO输出https://blog.csdn.net/m0_63116406/article/details/135604705?spm=1001.2014.3001.5502

1️⃣点击引脚 PB6 → 选择 GPIO_Input模式;

点击**"System Core"** → 选择**"GPIO"** 一栏 → 点击引脚**"PB6"** → 将**"GPIO Pull-up/Pull-down"** 一栏修改为**"Pull-up"** ;(即设置PB6引脚为带上拉电阻的输入模式)
图3 引脚PB6配置

2️⃣配置引脚PC15 ,默认输出高电平;

3️⃣配置引脚PB1 ,为AD 采样通道9;

4️⃣配置OLED

5️⃣生成代码即可;

(3)代码编写

🟢️main 函数

cpp 复制代码
/* USER CODE BEGIN PV */
uint8_t puc_oled[17];    // OLED显示缓存区
uint16_t pui_adc;        // AD采集值
uint8_t state_ir;        // 热释电状态变量
/* USER CODE END PV */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC_Init();
  MX_I2C3_Init();
  /* USER CODE BEGIN 2 */
	OLED_Init();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		/* 光敏采集 */
		HAL_ADC_Start(&hadc);
		if(HAL_ADC_PollForConversion(&hadc, 10) == HAL_OK)
			pui_adc = HAL_ADC_GetValue(&hadc);
		pui_adc = pui_adc * 330 / 4095;
		/* 热释电采集 */
		if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6) == 1)
		{
			state_ir = 1;
			HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET);	// 检测到人体活动LD5亮
		}
		else
		{
			state_ir = 0;
			HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);	// 未检测到人体活动LD5灭
		}
		/* OLED 显示 */
		sprintf((char*)puc_oled, "Light:%.2fV", pui_adc / 100.0);
		OLED_ShowString(0, puc_oled);
		if(state_ir)
			sprintf((char*)puc_oled, "      OPEN      ");
		else
			sprintf((char*)puc_oled, "      OFF       ");
		OLED_ShowString(2, puc_oled);
		HAL_Delay(200);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

(4)实验现象

  • 用手捂住光敏电阻时,测得的电压增加;放开手后,测得的电压减小;
  • 人体活动时,OLED屏上显示"OPEN",LD5亮;人体静止时,OLED屏上显示"OFF",LD5灭;

二、光敏/热释电模块接口函数封装

该模块还没有在比赛题中出现过,下面是对该模块应用场景的一个考点推断。

模拟场景:当室内处于黑暗状态时,若有人经过,则自动打开灯光。

解析: 使用LDR 实时测环境光强,假定1.25V 以上为黑暗场景,其他为正常场景。当处于黑暗场景时,启动AS312 扫描人体活动,反之屏蔽AS312的所有信号。

🟡️功能函数

cpp 复制代码
void Task_Colt(void)
{
	/* 200ms 进入一次 */
	if(cnt_colt < 200)	return;
	cnt_colt = 0;
	/* 先进行环境光采集 */
	ADC_Read(&pui_adc);
	pui_adc = pui_adc * 330 / 4095;
	/* 环境判断 */
	if(pui_adc > 125)
		state_dark = 1;	// 黑暗环境
	else
		state_dark = 0;	// 正常环境
	/* 如果处于黑暗环境,判别AS312的信号 */
	if(state_dark)
	{
		if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6) == 1)
		{
			state_ir = 1;
			HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET);	// 检测到人体活动,开灯
		}
		else
		{
			state_ir = 0;	
			HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);	// 未检测到人体活动,灭灯
		}
	}
	/* 处于正常环境,屏蔽AS312的信号 */
	else
	{
		state_ir = 0;
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);
	}
}

三、踩坑日记

(1)引脚配置

🔅引脚PB6配置为输入模式,带上拉电阻;(此为官方例程所给)

🔅实际测试,带下拉电阻的效果会更好;

(2)光敏电阻

🔅光敏电阻:光强越大,电阻越小;

🔅在该模块的电路上体现是:光强越强,电阻越小,那么采集到的电压趋近于地即0V;光强越暗,电阻越大,分压越大;

相关推荐
唯创知音9 分钟前
4G报警器WT2003H-16S低功耗语音芯片方案开发-实时音频上传
人工智能·单片机·物联网·音视频·智能家居·语音识别
_infinite_1 小时前
STM32控制PCA9685产生16路PWM波控制舵机
stm32·单片机·嵌入式硬件
文浩(楠搏万)3 小时前
全面解析 Node-RED:功能、Docker 部署与实战示例
运维·物联网·docker·容器·编程工具·node-red·流编程
supermodule3 小时前
micropython framebuf库的blit函数使用详解
python·单片机·嵌入式硬件·mcu·物联网·iot
程序员JerrySUN4 小时前
Yocto项目—机器配置文件详解
linux·开发语言·嵌入式硬件·物联网·系统架构
匿名码客4 小时前
STM32闭环控制直流电机和LCD界面方案
stm32·单片机·嵌入式硬件
重生之我是数学王子5 小时前
SPI实验 LED数码管
stm32·单片机·嵌入式硬件
honey ball5 小时前
大电流和大电压采样电路
单片机·嵌入式硬件
水饺编程5 小时前
简易CPU设计入门:本系统中的通用寄存器(五)
linux·单片机·嵌入式硬件·fpga开发·硬件工程
DS小龙哥5 小时前
基于单片机中药存放环境监测系统的实现
单片机·嵌入式硬件