基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计1:https://developer.aliyun.com/article/1395628
4系统软件设计
4.1 系统整体流程设计
在系统运行前,准备连接带有STM32芯片节点的硬件、电脑、J-LINK、串口线等;编写实验源代码及下载代码,将光敏传感器安装在8号节点上,打开Keil集成开发环境,打开光敏传感器实验工程文件。编译整个工程,将生成Test.hex可执行文件。把J-LINK与节点、电脑连接,点击左上角的将程序下载到节点板,使用配套的串口线将计算机串口与8号节点的DB9串口接头相连,将节点右下角上的白色三位拨打开关拨至左边,给节点重新上电,打开串口调试工具程序,打开正确的端口,进行9600-8-N-1设置,打开串口,就可以与芯片进行数据交互了。系统流程如图4-1所示。
图4-1 系统软件整体运行流程图
4.2 光敏传感器检测软件设计
系统运行时,单片机控制系统开始运行,光敏传感器检测程序开始启动,传感器把接收到数据进行采集,并反馈到串口中。在检测到光照时,传感器OUT端输出高电平信号;没有检测到光照时,传感器OUT端输出低电平信号,之后程序结束运行。光敏传感器检测软件设计流程如图4-2所示:
图 4-2 光敏传感器检测程序处理流程图
4.3 Keil软件简介
Keil是一个公司的名字。是由德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software组成。Keil 软件是目前最流行开发51系列单片机的软件。支持c语言,汇编语言。
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。Keil 提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。
Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows界面。
5 系统测试及功能说明
5.1 开发环境测试
首先启动Keil软件的集成开发环境,可以从桌面上直接双击uVision的图标以启动该软件。
UVison启动后,程序窗口的左边有一个工程管理窗口,该窗口有3个标签,分别是Files、Regs、和 Books,这三个标签页分别显示当前项目的文件结构、CPU的寄存器及部份特殊功能寄存器的值(调试时才出现)和所选CPU的附加说明文件。
在设置好工程后,即可进行编译、连接。选择菜单Project->Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Translate….项则仅对该文件进行编译,不进行连接。
以上操作也可以通过工具栏按钮直接进行。图5-1是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。
图5-1 工具栏视图
编译过程中的信息将出现在输出窗口中的 Build 页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置。
图5-2 Build页输出窗口
对源程序反复修改之后,最终会得到如图5-2所示的结果,提示获得了名为test.hex的文件,该文件即可被编程器读入并写到芯片中。
同时还产生了一些其它相关的文件,可被用于Keil的仿真与调试,这时可以进入下一步调试的工作。
图5-3 编译结果输出窗口
Keil4开发环境是STM32MCU的开发环境,编写程序判断接收到的数据是否为光敏传感器,我们用Modbus数据的第03个字节作为传感器类型,当为0x2A时候表示光敏传感器。
图5-4 光敏传感器代码示例
串口调试工具是一款通讯串口调试软件,这款软件窗口中支持串口设置、选择串口、数据位、校验位以及停止位等参数。初次使用串口调试工具的用户,选择端口号
图5-5 串口调试工具
插好串口线,在windows桌面界面,在计算机图标上点击右键选择设备管理器进入如下图所示界面,点击端口(COM和LPT),就会出现现在计算机上正在使用的串口编号。
图5-6 设备管理器
Modbus数据格式举例:
发送指令:02 03 00 2C 00 01 45 f0
02 :表示设备地址
03 :功能码,表示读取数据
00 2C:读取开始的地址
00 01:表示读取多少个寄存器,1个寄存器有2个字节
45 f0: 由前面数据通过CRC-16计数得来的校验码
返回数据:02 03 02 00 00 FC 44
02 :表示从地址为02的设备返回
03 :表示返回的数据是读取
02 :表示2个有效字节
00 00 :就是2个有效字节
FC 44 :由前面数据通过CRC-16计数得来的校验码
5.2 功能测试
在功能测试前,准备连接带有STM32芯片节点的硬件、电脑、J-LINK、串口线等;编写实验源代码及下载代码,将光敏传感器安装在8号节点上,打开Keil集成开发环境,打开光敏传感器实验工程文件。编译整个工程,将生成Test.hex可执行文件。把J-LINK与节点、电脑连接,点击左上角的将程序下载到节点板,使用配套的串口线将计算机串口与8号节点的DB9串口接头相连,将节点右下角上的白色三位拨打开关拨至左边,给节点重新上电,打开串口调试工具程序,打开正确的端口,进行9600-8-N-1设置,打开串口,就可以与芯片进行数据交互了。功能使用流程如图5-1所示。
图5-7 功能使用流程图
第一步:打开Keil集成开发环境和Test.uvproj工程文件,编译整个工程,生成Test.hex可执行文件,如图5-8所示。
图5-8 编译工程文件
第二步:把J-LINK与节点、电脑连接,将程序下载到节点板,使用配套的串口线将计算机串口与8号节点的DB9串口接头相连,如图5-9所示
图5-9 连接串口设备
第三步:配置节点地址,发送:FF 30 00 0B 00 01,返回:FF 30 00 0B 00 01如图5-10所示:
图5-10 配置节点地址
第四步:获取传感器数据,相应的光敏传感器的AD值指令数据如5-11图所示:
图5-11 获取传感器数据
5.3 结果分析
AD模数转换是将传感器输出的信号(电压、电流、应变、温度等人可以直观认知的信号)转换成计算机系统能够识别的数字量,用于数据的采集。相对应的还有DA转换,将数字信号转换为模拟信号,输出给控制执行机构用于控制。这些跟数据采集系统有关。
STM32的ADC精度为12位,则最大值为4096。采集到的AD值与电压成线性对应关系,系统中最高的电压值为3.3V的电源电压,它与4096对应使用ADC算出光敏电阻的值。
光照强度是指单位面积上所接受可见光的能量,简称照度,单位勒克斯(Lux或lx),常见环境的光照强度值如表5-1。
表5-1常见环境的光照强度值对应表
场所/环境 | 光照强度(lux) | 场所/环境 光照强度(lux) |
晴天室内 | 100~1000 | 办公室/教室 300~500 |
阴天室内 | 5~50 | 餐厅 10~30 |
月圆夜室外 | 0.2 | 距60W台灯60cm 300 |
串口调试工具手动发送数据:08 03 00 2A 00 01 a5 5b,返回:08 03 02 0D 8F 21 71,其中0D 8F就是采集光敏传感器的AD值,不同光照条件下这个值会相应不同,计算出光照强度。
6 总结
本次课程设计是完成一个基于 STM32 的光敏传感器数据采集系统,利用 STM32F103 系列处理器完成光敏传感器相关数据的采集和分析处理,并通过串口通信将处理之后的数据传输到上位机软件进行显示,通过C语言编程和调试完成上述功能,同时通过课程设计的综合训练。
课程设计初期遇到了很多困难,不知道从何下手,在同学的帮助和自己摸索的情况下还是完成了这次课程设计,从中认识到以我们现在的经验,不学到一定的深度和广度是难以在实际工作中应付自如的。因此反映出学习的还不够,缺点疏漏。需在加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能。
这次课程设计,加深了我们对光敏传感器理解;物联网的知识很深奥,仅靠课本是远远不够的,我们将出现的所有错误都写成了博客发布到CSDN上,总结经验,不断提升自己的能力。
参考文献
[1] 王志强.基于STM32温度及光敏无线传感器设计[J].电子测试,2022(03):46-49.DOI:10.16520/j.cnki.1000-8519.2022.03.033.
[2] 梁一啸,刘志欣,范恩,蒋忠莉,邓贵妃.基于多传感器的温室环境监测系统设计与实现[J].物联网技术,2022,12(02):16-19.DOI:10.16667/j.issn.2095-1302.2022.02.004.
[3] 张朝龙,董甲东,江善和,张诗霞,王实,路健.“传感器与检测技术”虚拟实验教学平台建设[J].安庆师范大学学报(自然科学版),2021,27(03):101-104.DOI:10.13757/j.cnki.cn34-1328/n.2021.03.020.
[4] 汤梓日,张杰波,田秀云,王文华.基于光敏传感器的汽车远光灯智能避让系统[J].电子测试,2020(24):13-16.DOI:10.16520/j.cnki.1000-8519.2020.24.003.
[5] 张佳,蔡涛,王高原.基于光敏电阻的传感器实验设计与实现[J].实验技术与管理,2020,37(11):42-47.DOI:10.16791/j.cnki.sjg.2020.11.009.
[6] 曾号轩. 可拉伸近红外光敏晶体管传感器芯片的研制[D].深圳大学,2020.DOI:10.27321/d.cnki.gszdu.2020.002421.
[7] 陈国玉,林旭,李源,顾秉栋.光敏传感器实验课程改革探索与研究[J].科技创新与生产力,2020(03):79-82.
[8] 侯秀丽,姚小芳.光电传感器在物联网系统中的应用研究[J].科技创新导报,2020,17(05):125-126.DOI:10.16660/j.cnki.1674-098X.2020.05.125.
[9] 王沁. 基于光敏传感器和摄像头的组合室内定位方法的设计与实现[D].东南大学,2019.DOI:10.27014/d.cnki.gdnau.2019.002892.
[10] 罗涛,王晓娜,宋世德.光敏传感器智能寻光小车的设计与制作[J].实验科学与技术,2019,17(04):25-29.
[11] 张永超,赵录怀,顾博才,鹿伟强.基于光敏传感器和差分电路的开关柜放电检测[J].山东农业大学学报(自然科学版),2018,49(05):871-874.
[12] 王天会,李昂,王丹,芦明霞.光敏传感器基本特性与应用教学研究[J].实验技术与管理,2017,34(05):170-173+177.DOI:10.16791/j.cnki.sjg.2017.05.042.
[13] 孙紫薇.光敏电阻、热敏电阻等传感器在生活中的应用[J].课程教育研究,2016(28):216-217.
[14] 李俊男,苏杨,薛端,王君贤.基于STM32温度及光敏无线传感器设计[J].中国科技信息,2016(09):83-86+16.