Arduino单片机智能台灯设计指南

摘要
  随着智能制造技术的发展和推广,智能设备在人们的生活和工作中越来越多,智能台灯设备也更加便捷我们的
生活,有利于学习质量的提高。本设计是提供夜间工作用的智能设备,通过软硬件相结合的方式设计一整套智能台
灯设备,从而解决夜间学习时坐姿矫正以及实时节能的问题。采用Arduino主控制器连接LED可以进行照明,通过按
键可以设置台灯的模式,有手动和自动两种模式;使用光照检测模块实时调节台灯的亮暗;使用人体感应实时监测
是否有人,有人将会打开LED照明;使用红外测距检测距离判断坐姿是否正确,不正确将会语音报警提醒。本设计在
自动化产品与智能设备中有广泛的应用,智能台灯设备也是夜间工作必不可少的。在当今智能制造的大背景下,对
未来智能设备中智慧教育的推动与发展有一定的指导意义。
关键词:Arduino单片机 智能台灯 红外检测 语音报警

1绪论

1.1课题背景及意义
  随着科学技术水平的不断发展与进步,随着自动化技术和电子信息技术的发展与成熟,设备自动化水平不断提
高,各种传统设备都可以进行智能化升级改造,让设备应用更加便利,更加智能[1]。智能化设备逐渐走进我们的生
活,成为我们生活和工作的一部分。
  智能化水平的不断提高,让我们的生活更加便利,更加高效,同时也让我们的生活更加精彩,智能化产品,为
我们生活增添了传统产品无法提供的新体验。台灯作为我们生活和办公中经常用到的设备,传统的台灯只能作为照
明设备,实现对环境的补光功能,但这种台灯功能单一,用户体验并不友好,无法通过环境光强的条件进行光照强
度调整,所以智能化台灯的设计与发行是非常重要的,对智能台灯的研究与运用具有非常重要的现实意义[2]。
  智能台灯是在传统台灯的基础上,结合电子技术、传感器技术等自动化技术,对台灯进行升级改造,采用单片
机作为主控制器,进行智能控制系统设计,通过光强传感器采集环境的光照强度,从而可以自动控制台灯的亮度,
通过红外传感器可以实时对用户工作和学习的姿势进行提醒,以养成良好的使用习惯,同时可以在手动和自动模式
进行切换,以满足不同的使用场景,系统设置人体热释电感应传感器,可以实时监测用户是否在台灯旁边,以减少
不必要的电能损耗,所以对智能台灯的研究具有非常重要的现实意义[3]。
1.2课题研究现状
  台灯智能化发展是设备智能化发展的缩影,设备智能化是本世纪以来的重要发展方向,也是未来发展的重要方
向,随着人们生活节奏的不断加快,便利[4],功能齐全,高效的设备已经是时代的需要和人们生活的必然要求。
   同智能台灯一样,各种智能化灯具逐渐走向我们身边,融入我们的生活和工作,智能设备的发展离不开电子信
息技术,传感器技术等相关技术的发展与成熟,进入本世纪以来,信息化建设迅速加快,信息化已经成为工业文明
下的必然趋势,同时,微控制器也越来越高效,处理能力越来越强[5]。在综合技术水平不断提高的基础上,智能化
灯具进行升级已经是不可避免的。
   目前,对于智能台灯的研究与应用已经非常广泛了,主要体现在灯光亮度的自动调整,灯光颜色的自动调整,
或者是进行无人自动熄灭管理,但目前产品功能都比较单一,智能台灯,一定要实现台灯设备的全管理,实现真正
的自动管理系统,让用户的体验更加友好,这是智能台灯发展的重要方向[6]。当前这一领域产品还是比较单一,没
有实现普遍推广,所以对其研究有非常广阔的应用前景。同时,随着近年来互联网技术的飞速发展,网络状态更新
换代,网络性能更加优质,通过网络技术的融合,将各种设备接网络,实现更加便捷的控制与操作,结合智能家居
系统,形成完整的物联网家居管理系统,这在未来有着非常广泛的应用前景[7]。

2系统总体设计

2.1系统设计思路
  本设计是提供家庭学生需用的智能设备,通过软硬件相结合的方式设计一整套智能台灯设备,从而解决学生学
习时坐姿调整以及实时节能的问题。采用Arduino主控制器连接LED可以进行照明,通过按键可以设置台灯的模式,
有手动和自动两种模式;使用光照检测模块实时调节台灯的亮暗;使用人体感应实时监测是否有人,有人将会打开
LED照明;使用红外测距检测身体到台灯距离判断坐姿是否正确,不正确将会语音报警提醒[8]。
  对于本系统中,有硬件电路设计和软件程序编写两部分组成。依据所需要实现的功能选取硬件模块的型号,选
完硬件传感器后,进行电路接线图的设计与绘制,最后完成各模块的焊接,此时就完成了主控制器与各硬件模块电
路的连接设计;然后接下来就是进行硬件模块各驱动软件程序的编写,首先理解各模块的原理及时序逻辑以此绘制各模块驱动程序的工作流程图,然后编写各自相应的驱动程序,最后验证修改程序致使整个系统正常运行。
2.2系统总体方案
  Arduino单片机作为主控制器控制LED照明灯开启与实时检测光照强度,使用人体热释电感应是否有人,使用红
外测距检测身体到台灯距离长短从而调整坐姿,如果坐姿不合理时,可以通过语音模块报警;使用按键可以调整台
灯自动或手动模式。本系统供电采用直流DC 5V电压,采用连接线将设计完成的电路板的下载引脚和电脑USB端口相
连,实现将编译完成的控制程序下载与烧录,及时改变主控制器的内部程序,使其实现功能的修改与改进[9]。系统
结构框图如图2-1所示。

图2-1 系统结构框图

3系统硬件电路设计

3.1系统硬件整体结构
  在硬件设计过程中,首先学习所使用的电子模块的工作原理与数据手册,然后在理解原理后确定出各模块与主
控电路连接引脚,并绘制系统电路工作的整体原理图,最后可以完成整个电路的焊接设计。本设计采用Arduino芯片
的单片机作为主控制器,并设计控制的最小系统,其中有主控芯片、时钟电路和复位电路。需要设计连接的外围电
路有按键控制电路、LED驱动电路、光照检测电路、红外测距电路、人体感应电路和语音报警电路[10]。硬件电路总
体设计框架图如图3-1。

图3-1 硬件电路总体设计框架图
3.2控制器系统电路
3.2.1主控制器简介
  本设计选用Arduino单片机作为系统的主控制器。该单片机芯片是欧洲开发团队开发的16位控制芯片,具有成本
低廉,编程操作简单。在工业应用中不管是芯片的可靠性还是入门开发难度都是极佳的。所以通过主芯片、复位电
路和时钟电路搭建控制器最小系统,对于并行的8位数据是极其友好的。开发者可以轻松地连接单片机内部自带的串
口引脚,进行串口通信功能或下载程序。主控制器原理图如图3-2所示。

图3-2 主控制器原理图
3.2.2时钟电路
  时钟电路是硬件控制电路中的“心脏”部分,是不可或缺的电路模块,缺少该电路单片机芯片的整个电路将无
法正常工作。其主要采用一个晶振器件和两个电容器件搭建而成,外部振荡电路的连接方式基本都是一致的,晶振
元件两端引脚连接一个电阻元件同时连接芯片内部振荡电路的引脚接口,而且在每个单独引脚上又分别连接一个电
容元件,电容另一端引脚相互连接,最后连接到系统电路中的GND端口。晶振器件的型号为无源晶振,大小为
16MHz,电容选择大小为22pF的瓷片电容,电阻大小为1M。
3.2.3复位电路
  复位电路主要的作用是在芯片中程序运行过程中可以随时进行重新开始,缺少该电路单片机芯片可以正常工
作。但是对于程序运行过程错误问题,就只能断电重启而不能复位操作,所以复位电路在控制器最小系统中尤为重
要。复位电路的原理是当单片机的RST引脚接收到高电平时,就可以触发芯片的复位操作,将控制程序重新开始运
行。本设计中使用上电自动复位的方式进行设计电路,采用一个10uF的极性电容一个引脚连接VCC端,另一引脚同时
连接芯片的RST引脚与10K电阻,电阻另一端直接连接GND。其原理是通过极性电容的充放电过程实现RST引脚的高电
平输入。复位电路原理图如图3-4所示。

图3-4 复位电路原理图
3.3按键控制电路设计
  按键作为本设计人机交互系统中的输入模块,主要实现台灯模式的选择。本设计主要采用独立按键的方式来设
计电路,每一个单独的按键设计一个连接电路,一个引脚连接控制芯片的引脚,另一个引脚连接整体电路的GND端
口。其控制原理是当操作人员按下按键后,电路接通向引脚输入电平信号,当芯片检测到该引脚的输入的电平信号
变化时将会运行相应的操作。按键控制电路原理图如图3-5所示。

图3-5 按键控制电路原理图
3.4LED照明电路设计
  LED作为本设计人机交互系统中的输出照明模块,主要实现使用LED发光照明。由于本设计采用大功率LED灯,需
要较大的电流驱动,因此使用继电器驱动其工作。在设计继电器控制LED照明电路时,由于需要使用电平信号驱动继电器,将继电器的VCC、DATA、和GND引脚与单片机引脚相连。其原理是芯片通过改变DATA引脚的高低电平信号控制
继电器的通断,从而实现照明灯的开关。
3.5光强检测电路设计
  光照检测电路使用的光敏电阻、电阻和电容搭建而成,主要功能检测环境中的光照信息。该传感器有三个引
脚,分别是供电引脚VCC和GND,光强输出引脚DATA,其中,数据输出引脚以模拟量输出光照强度,主芯片可以实时
采集处理。
3.6红外测距电路设计
  红外测距电路由红外接收头、发射头、电阻和电容组成,主要实现利用红外方式测到与障碍物距离值,从而提
示人员坐姿的合理性。E18-D50nK模块通过总线接口协议连接芯片,其总线引脚DATA引脚连接控制芯片的引脚,使用
中断方式接收数据,中断方式可以实时接收数据,不会丢失控制指令。其控制原理是当接收到红外发射头发出红外
线并等接收头接收到后,计算时间间隔获得距离信息。
3.7人体感应电路设计
  人体感应电路主要利用人体感应模块检测是否有人。人体感应模块连接方式和红外检测模块一样,通过总线接
口协议连接芯片,其总线引脚DATA引脚连接控制芯片的引脚,使用中断方式接收数据,中断方式可以实时接收数
据,不会丢失控制指令。
3.8语音报警电路设计
  语音提示作为本设计中位姿纠正的重要模块,主要实现当位姿不合理时,控制报警模块进行语音报警提示。本
设计主要采用蜂鸣器来设计语音报警电路,将蜂鸣器的一个引脚连接三极管的发射极,其基极通过一个电阻连接控
制芯片的引脚,而集电极连接到VCC端口,另一个引脚连接系统电路的GND端口。其控制原理是当坐姿不合理时,控
制器将会对三极管基极输出控制电平信号,蜂鸣器工作发出报警声音。

4系统软件程序设计

4.1系统软件整体设计
  软件设计主要是对硬件模块编写驱动程序之前,必须先要绘制主程序及各模块的流程图,以此来梳理整个程序
的运行逻辑与思路。在本设计中主程序的运行逻辑是这样的,首先对硬件电路进行通电,再等待各子电路模块初始
化,然后使用键盘选择模式,光强模块检测光照强度数据,红外传感器检测身体到台灯的距离数据,当检测到坐姿
不合理时,控制报警模块进行语音报警提示。主程序流程图如图4-1所示。
图4-1 主程序流程图

4.2按键控制子程序设计
  本设计中按键的功能主要实现台灯模式的切换。一共有2个按键,使用按键1切换到手动模式,使用按键2切换到
自动模式。按键控制子程序流程图如图4.2所示。

图4-2 按键控制子程序流程图
4.3LED照明子程序设计
  LED照明子程序是本设计中的核心模块,需要使用继电器驱动,编写驱动程序更加重要。在编写子程序时,要先
明白模块的时序逻辑,再编写继电器驱动程序,可以通过输出高低电平改变通断。当需要打开照明灯时,继电器动
作接通照明电路。LED照明子程序流程图如图4-3所示。

图4-3 LED照明子程序流程图
4.4光强检测子程序设计
  光强检测子程序的功能是通过实时检测光照数据,调整照明灯的亮暗程度。在编写程序时,首先要明白光敏电
阻芯片外围的电路运行关系以及芯片工作原理,主要是模块工作的时序逻辑,通过时序图可以轻松编写驱动程序也
能读懂官方自带的驱动程序。光强检测子程序流程图如图4-4所示。
9

图4-4 光强检测子程序流程图
4.5红外测距子程序设计
  红外测距程序是利用红外接收头和发射头的时间间隔,单片机处理计算人员头部到台灯的距离数据,并与坐姿
数据对比,更高效便捷的实现坐姿合理性的监控。在编写子程序时,先要理解红外测距的理论基础以及电路的工作
原理。因此,先要对模块进行软件初始化并延时等待模块正常工作,然后使用红外发射头实时发送红外线,接收模
块接收到后将数据传输给单片机,至此红外测距子程序就编写完成。红外测距子程序流程图如图4-5所示。
图4-5 红外测距子程序流程图
4.6红外测距子程序设计
  红外测距程序是利用红外接收头和发射头的时间间隔,单片机处理计算人员头部到台灯的距离数据,并与坐姿
数据对比,更高效便捷的实现坐姿合理性的监控。在编写子程序时,先要理解红外测距的理论基础以及电路的工作原理。因此,先要对模块进行软件初始化并延时等待模块正常工作,然后使用红外发射头实时发送红外线,接收模
块接收到后将数据传输给单片机,至此红外测距子程序就编写完成。红外测距子程序流程图如图4-5所示。

4.7语音报警子程序设计
  语音报警功能主要是当坐姿不合理时,控制报警模块进行语音报警提示。在编写子程序时,先要理解语音提示
电路的整个工作原理。因此,先要对模块进行软件初始化并等待时间,然后实时监测坐姿是否合理,当错误时开始
报警,至此语音子程序就编写完成,最后完成测试。语音报警子程序流程图如图4-6所示。
图4-6 语音报警子程序流程图

5系统调试与分析

5.1开发软件介绍
5.1.1程序编写软件
  本设计在软件编程方面,采用常用的Arduino IDE编译器对Arduino单片机主芯片进行编程。该软件可以使用C语
言方式进行编写,同样都是编译生成下载文件,然后将文件导入芯片中,芯片即可开始工作。而Arduino IDE软件简
洁的界面,多元的库文件,易于上手的程序编写规范以及功能强大的仿真调试环境,而且在软件使用、编程案例和
仿真调试方面有众多资料可供参考与学习,因此对于初学者及其友好,易学易用。Arduino IDE软件界面图如图5-1
所示。
11

图5-1 Arduino IDE软件界面图
5.1.2原理图绘制软件
  在对主控芯片与外围电路传感器模块进行选择之后,通过学习传感器模块的工作原理,然后就可以通过相应的
IDE软件设计绘制电路连接图,其实不仅仅要绘制原理图文件,最重要的要使用IDE软件测试电路的正确性以及和理
性,而本设计采用Altium Designer开发软件对原理图进行设计和绘制。Altium Designer软件在电子行业属于绝对
需要的,是做好电子电路设计工作的基础工具软件,硬件工程师都广泛使用。该软件是一个绘制设计、编辑和制造
一体化的硬件电路开发软件。原理图绘制软件界面图如图5-2所示。
图5-2 原理图绘制软件界面图

5.2调试过程
5.2.1软件调试
  当设计并焊接完成硬件电路后,就要编写相应硬件模块的软件操作程序,使用Arduino IDE软件进行各硬件模块
驱动程序的编写与调试。首先创建一个Arduino单片机代码的工程文件,并在工程中添加控制器的库文件,然后按照
编程规范编写模块的驱动代码,最后进行仿真调试,测试没有问题后,就可以下载到单片机主芯片中,上电就可以
运行此驱动程序。在进行软件调试时,要注意以下问题:
1、对于变量定义,可以使用其英文意思定义致使其规范化,而且要注意大小变量属于同一变量。
2、对于一些函数的调用,必须加入库文件和头文件,尤其是开发人员自行开发编写的库文件。
3、在进行编写各模块驱动程序时,可分别编写为不同的C文件,这用利于后期模块代码的修改,且可移植性好。在
编写完成一个模块后就可以单独测试,IDE可以单个模块调试,也有整体调试,都是极其方便的,可以简单快速的完
成各模块驱动代码的调试测试。
4、在编译下载文件时,一定要勾选控制器的型号以及串口号,不然编译生成的文件无法下载到单片机主芯片中。
5、作为一个开发人员,要有良好的开发习惯,对自己编程的程序注明注释也是极其重要的。
5.2.2联合调试
  将各模块的驱动代码编写完成后,可以依据最开始设计的整体硬件电路原理图进行仿真电路的搭建。该下位机
系统电路的搭建和软件程序编写一样,需要将各个模块分开搭建,并分别测试验证其正确性,当所有模块测试完成
后就可以进性整体电路的测试与调试。当搭建完电路后,按键选择模式、继电器驱动照明灯、光照采集和语音报警
都测试正常;最难的就是红外测距调整坐姿,当检测到人员距离后,输出到单片机中进行解析处理距离数据将其转
换为坐姿判断数据,对比坐姿是否合理;如果检测数据不合理,蜂鸣器将会报警提示,说明该部分驱动正常,所以
验证该系统正常运行。基于Arduino的智能台灯设计实物图如图5.4所示。

图5-3 基于Arduino的智能台灯设计实物图
千万不要删除行尾的分节符,此行不会被打印。“结论”以前的所有正文内容都要编写在此行之前。

结论

本设计是提供家庭学生需用的智能设备,通过软硬件相结合的方式设计一整套智能台灯设备,从而解决学生学
习时坐姿调整以及实时节能的问题。采用Arduino主控制器连接LED可以进行照明,通过按键可以设置台灯的模式,
有手动和自动两种模式;使用光照检测模块实时调节台灯的亮暗;使用人体感应实时监测是否有人,有人将会打开
LED照明;使用红外测距检测坐姿是否正确,不正确将会语音报警提醒。其中,软件编程使用C语言在Arduino IDE编
译器中进行编写,可以使用硬件工程师最常用,使用人数最多的Altium Designer软件对本设计中智能台灯电路系统
的原理图进行绘制和测试,最后在制作出智能台灯设备实物并使用Arduino IDE软件和实物分别对整体系统中的软件
程序部分进行仿真调试和硬件电路部分测试验证,验证智能台灯设备系统的可执行性。
  经过本设计中对整个系统的学习和建模,不仅对硬件传感器的内部原理理解更明白,而且在软件编程方面也变
得得心应手,相比于刚拿到设计书时的一脸茫然,现在却是调理清晰。对于一些硬件模块的电路的测试也有了自己
的想法和经验,也能很快找到问题和解决思路;通过对本次设计中软件程序部分的模块化编写处理,致使程序具有
很好的可移植性,更加方便移植相同模块的驱动程序。从方案的选择、单元模块的设计、设备的选择、软件的设
计、原理图的绘制等方面对设计的整个过程和方法有了更深的理解。
  总之本次设计,问别人任何问题都很容易,我经常做自己熟悉的事情。这使我的知识不完整,无法在设计时完
全考虑这个问题。总之而言,毕业设计极大地锻炼了自己解决实际问题的能力,为即将进入社会工作打下了坚实的
基础。并让我学习到很多东西,不仅仅是基础理论知识也有动手能的提高,最重要的学会了团队合作与向优秀的人
学习请教,这将是一辈子受益匪浅的一次设计。

作者:QQ2083558048

物联沃分享整理
物联沃-IOTWORD物联网 » Arduino单片机智能台灯设计指南

发表回复