当前位置: 首页 > news >正文

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

目录

一、光敏/热释电模块

(1)资源介绍

        🔅原理图

        🔅AS312

        🌙简介

        🌙特性

        🔅LDR

(2)STM32CubeMX 软件配置

(3)代码编写

(4)实验现象

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

三、踩坑日记

(1)引脚配置     

(2)光敏电阻


一、光敏/热释电模块

(1)资源介绍

        🔅原理图

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

图1        拓展接口

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

图2        光敏/热释电模块电路原理图

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

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

        🔅AS312

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

        🌙简介

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

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

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

        🔅LDR

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

        在电路中的体现是:

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

(2)STM32CubeMX 软件配置


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

【蓝桥杯——物联网设计与开发】基础模块1- GPIO输出icon-default.png?t=O83Ahttps://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 函数

/* 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      ");elsesprintf((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的所有信号。

🟡️功能函数

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;	// 黑暗环境elsestate_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;光强越暗,电阻越大,分压越大;

相关文章:

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

目录 一、光敏/热释电模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;AS312 &#x1f319;简介 &#x1f319;特性 &#x1f505;LDR &#xff08;2&#xff09;STM32CubeMX 软件配置 &#xff08;3&#xff09;代码编写 &#xff08;4&#x…...

数字IC后端设计实现十大精华主题分享

今天小编给大家分享下吾爱IC社区星球上周十大后端精华主题。 Q1:星主&#xff0c;请教个问题&#xff0c;长tree的时候发现这个scan的tree 的skew差不多400p&#xff0c;我高亮了整个tree的schematic&#xff0c;我在想是不是我在这一系列mux前边打断&#xff0c;设置ignore p…...

高质量配音如何影响游戏的受欢迎度

在游戏行业中&#xff0c;创造沉浸式、引人入胜且令人难忘的体验往往决定了游戏的成功或失败。在影响游戏流行度的众多因素中&#xff0c;配音脱颖而出&#xff0c;成为将叙事与玩家互动连接起来的重要元素。高质量的配音将游戏中的对白转化为游戏的活跃部分&#xff0c;让玩家…...

QWidget应用封装为qt插件,供其他qt应用调用

在之前的文章中,有介绍通过QProcess的方式启动QWidget应用,然后将其窗口嵌入到其他的qt应用中,作为子窗口使用.这篇文章主要介绍qt插件的方式将QWidget应用的窗口封装为插件,然后作为其他Qt应用中的子窗口使用. 插件优点: 与主程序为同一个进程,免去了进程间繁琐的通信方式,…...

UE(虚幻)学习(四) 第一个C++类来控制小球移动来理解蓝图和脚本如何工作

UE5视频看了不少&#xff0c;但基本都是蓝图如何搞&#xff0c;或者改一下属性&#xff0c;理解UE系统现有组件使用的。一直对C脚本和蓝图之间的关系不是很理解&#xff0c;看到一个视频讲的很好&#xff0c;我也做笔记记录一下。 我的环境是UE5.3.2. 创建UE空项目 我们创建…...

使用FreeNAS软件部署ISCSI的SAN架构存储(IP-SAN)练习题

一&#xff0c;实验用到工具分别为&#xff1a; VMware虚拟机&#xff0c;安装教程&#xff1a;VMware Workstation Pro 17 安装图文教程 FreeNAS系统&#xff0c;安装教程&#xff1a;FreeNAS-11.2-U4.1安装教程2024&#xff08;图文教程&#xff09; 二&#xff0c;新建虚…...

Sql Sqserver 相关知识总结

Sql Sqserver 相关知识总结 文章目录 Sql Sqserver 相关知识总结前言优化语句查询&#xff08;select&#xff09;条件过滤&#xff08;Where&#xff09;分组处理&#xff08;GROUP BY&#xff09;模糊查询&#xff08;like&#xff09;包含&#xff08;in&#xff09;合集&am…...

面试题整理17----K8s中request和limit资源限制是如何实现的

面试题整理17----K8s中request和limit资源限制是如何实现的 1. 资源请求&#xff08;Resource Requests&#xff09;2. 资源限制&#xff08;Resource Limits&#xff09;3. 总结 在Kubernetes&#xff08;K8s&#xff09;中&#xff0c;Pod的资源限制&#xff08;Resource Lim…...

Spring Boot @Conditional注解

在Spring Boot中&#xff0c;Conditional 注解用于条件性地注册bean。这意味着它可以根据某些条件来决定是否应该创建一个特定的bean。这个注解可以放在配置类或方法上&#xff0c;并且它会根据提供的一组条件来判断是否应该实例化对应的组件。 要使用 Conditional注解时&#…...

jpeg文件学习

相关最全的一篇文章链接&#xff1a;https://www.cnblogs.com/wtysos11/p/14089482.html YUV基础知识 Y表示亮度分量&#xff1a;如果只显示Y的话&#xff0c;图像看起来会是一张黑白照。 U&#xff08;Cb&#xff09;表示色度分量&#xff1a;是照片蓝色部分去掉亮度&#x…...

c++基于过程

前言&#xff1a; 笔记基于C黑马程序员网课视频&#xff1a;黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 在此发布笔记&#xff0c;只是为方便学习&#xff0c;不做其他用途&#xff0c;原作者为黑马程序员。 1. C基础 1.1 用Visual Studio写C程…...

FOC软件 STM32CubeMX 使用

1、安装-及相关软件版本 展示版本注意事项:keil MDK和STM32CubeMX版本至少要大于等于图中版本。 2、 Motor Profiler 5.2.0使用方法...

leetcode hot 100 全排列

46. 全排列 已解答 中等 相关标签 相关企业 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 class Solution(object): def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int…...

使用qrcode.vue生成当前网页的二维码(H5)

使用npm&#xff1a; npm install qrcode.vue 使用yarn&#xff1a; yarn add qrcode.vue package.json&#xff1a; 实现&#xff1a; <template><div class"code"><qrcode-vue :value"currentUrl" :size"size" render-as&…...

0055. shell命令--useradd

目录 55. shell命令--useradd 功能说明 语法格式 选项说明 选项 退出值 相关文件 /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/skel/ /etc/login.defs /etc/default/useradd 实践操作 注意事项 55. shell命令--useradd 功能说明 useradd 命令是 Lin…...

blender中合并的模型,在threejs中显示多个mesh;blender多材质烘培成一个材质

描述&#xff1a;在blender中合并的模型导出为glb&#xff0c;在threejs中导入仍显示多个mesh&#xff0c;并不是统一的整体&#xff0c;导致需要整体高亮或者使用DragControls等不能统一控制。 原因&#xff1a;模型有多个材质&#xff0c;在blender中合并的时候&#xff0c;…...

vue 本地自测iframe通讯

使用 postMessage API 来实现跨窗口&#xff08;跨域&#xff09;的消息传递。postMessage 允许你安全地发送消息到其他窗口&#xff0c;包括嵌套的 iframe&#xff0c;而不需要担心同源策略的问题。 发送消息&#xff08;父应用&#xff09; 1. 父应用&#xff1a;发送消息给…...

C++:单例模式

创建自己的对象&#xff0c;同时确保对象的唯一性。 单例类只能有一个实例☞静态成员static☞静态成员 必须类外初始化 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 静态成员类内部可以访问 构造函数私有化☞构造函数私有外部不能创建&#x…...

SOME/IP 协议详解——信息格式

文章目录 1. 头部格式1.1 消息 ID&#xff08;Message ID&#xff09;1.2 长度&#xff08;Length&#xff09;1.3 请求 ID&#xff08;Request ID&#xff09;1.4 协议版本&#xff08;Protocol Version&#xff09;&#xff1a;1.5 接口版本&#xff08;Interface Version&am…...

C# GDI+数码管数字控件

调用方法 int zhi 15;private void button1_Click(object sender, EventArgs e){if (zhi > 19){zhi 0;}lcdDisplayControl1.DisplayText zhi.ToString();} 运行效果 控件代码 using System; using System.Collections.Generic; using System.Drawing.Drawing2D; using …...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...