基于Linux 的智能家居控制系统综合实验设计
2020-10-09高照玲马永刚
王 伟,韩 雪,高照玲,马永刚
(1. 大连东软信息学院 智能与电子工程学院,辽宁 大连 116023;2. 大连海洋大学 信息学院,辽宁 大连 116020)
随着“三网融合”的提速,手机、数字电视、信息家电、网络电话、汽车电子、医疗电子等行业成为嵌入式系统的重要应用领域[1-3]。尽管高校开设了嵌入式系统相关课程,但学生的嵌入式开发能力仍显不足[4-6],因此,相关实验教学需更具直观性和实用性[7]。
1 实验设计目的
本文基于嵌入式Linux 操作系统设计了智能家居控制系统综合实验,适用于本科嵌入式Linux 系统开发相关课程实验教学工作,以增强学生对嵌入式Linux系统开发与应用相关知识的理解与掌握,锻炼提高学生对基于嵌入式Linux 操作系统的开发流程、方法、工具的使用和系统移植、驱动程序、图形界面设计、嵌入式服务器等技术的研发能力[8]。
2 实验内容设计
系统框图如图1 所示,主控采用ARM Cortex-A9核的嵌入式Exynos4412 开发平台,整个系统由温度采集模块、按键输入模块、光电传感检测模块、报警模块、电机驱动模块、LCD 显示模块、三色 LED 灯模块和继电器控制模块几部分组成。
综合实验内容结构图如图2 所示,以智能家居控制系统设计为例。课程设置4 个基础实验、4 个进阶性实验和1 个综合设计应用实验。实验内容为:实验一 嵌入式 Linux 交叉开发环境搭建,实验二 Linux内核移植,实验三 LED 跑马灯实验,实验四 信号量与阻塞实验,实验五 按键输入实验,实验六 蜂鸣器实验,实验七 ADC 实验,实验八 LCD 显示实验。综合实验是在前面8 个实验基础上综合应用开发而完成的,具体实验内容、功能要求为:
图1 系统框图
图2 综合实验内容结构图
(1)利用课下时间设计温度传感器采集电路,采用温度传感器 LM35、LM358 集成运算放大器,I2C接口的 ADS1115 或 PCF8591 完成温度数据采集、模拟信号放大、模数转换后将数据传给处理器;设计继电器控制电路、三色LED 灯电路、光电检测开关、蜂鸣器报警电路和电机驱动电路、绘制电路原理图和PCB 版图、制板、购买元件、焊接。团队可自行设计应用场景、综合实验题目。
(2)基于嵌入式开发平台Exynos4412 进行Linux内核移植,基于硬件设计电路进行驱动程序开发。
(3)采用 QTE(Qt/Embedded)平台自主设计图形用户界面(GUI),根据(1)中硬件电路设计及应用场景,个性化设计GUI,至少实现LCD 显示温度信息、设置温度上下限阈值、超限后蜂鸣器报警、GUI按钮控制继电器开关及三色LED 灯亮灭、控制电机开关及转动速度。
3 实验硬件电路设计
3.1 温度采集电路设计
温度采集电路设计如图3、图4 所示,传感器采用LM35 模拟温度传感器,输出VO 为毫伏级模拟电压值,经LM358 集成运算放大器放大后输入给I2C 接口的ADC。本电路采用PCF8591 模数转换器,LM358同相比例运算放大电路的放大倍数为5,计算如下:
图3 温度采集电路
图4 ADC 电路
3.2 驱动电路设计
电机驱动电路如图 5 所示,采用电机驱动芯片TB6612FNG,可同时驱动 2 个电机。AIN1 和 AIN2控制一路电机转向,BIN1 和BIN2 控制另一路电机转向,PWMA 和PWMB 分别控制2 路电路转速。
图5 驱动电路
3.3 继电器控制电路设计
继电器控制电路用于控制外部高电压用电设备,例如电灯、风扇、热水壶等。采用NPN 型三极管Q2提供驱动电流及作为控制开关,肖特基二极管 D2 续流保护电路,R8 限流电阻为4.7 K。继电器控制电路如图6 所示。
图6 继电器控制电路
3.4 PCB 版图设计
PCB 版图设计如图7 所示。采用双层板,将传感器接口、电源扩展口及其他扩展口布局在板子边缘,电路板布线居中,GND 线宽采用30 mil,电源线宽采用20 mil,电机端口以及电源端口线宽采用30 mil。板子厚度为1.6 cm,组焊层颜色为白色,焊盘表面采用有铅喷锡,阻焊覆盖采用过孔盖油。焊接好的PCB板实物图如图8 所示。
图7 PCB 版图
图8 PCB 板实物图
4 实验软件设计
首先搭建嵌入式交叉开发环境:安装交叉编译器、配置 NFS 共享和串口终端软件[9]。内核移植采用Linux3.5 版本,按照内核裁剪配置方法修改 Kconfig文件、Makefile 文件、启动配置菜单配置选择后,编译内核,生成zImage 镜像移植到Exynos4412 开发板上。分别采用经典字符设备驱动、IO 内存方式、杂项设备驱动和Platform 总线驱动方式编写温度采集、按键输入、光电传感检测、蜂鸣器设备、电机驱动、三色LED 灯和继电器控制等设备驱动程序。图9 为经典字符设备驱动框架图,驱动模块主要由头文件(必选)、模块参数、模块加载函数(必选)、模块卸载函数(必选)、模块许可声明(必选)几部分组成,编译成功后,可由insmod 外部安装模块,由rmmod 卸载驱动模块。GUI 用户程序通过系统调用打开、控制设备。
运用QTE 技术自主设计LCD 显示图形用户界面,采用Qt 中重要的信号与槽机制实现对象之间的通信[10]。GUI 界面设计如图10 所示。
图9 经典字符设备驱动框架图
图10 GUI 界面设计
5 应用效果
图11 综合实验成果测试
基于Linux 的智能家居系统综合实验成果测试如图11 所示。经过2 轮实验教学,不断改革丰富实验教学内容,学生能很好地将理论应用于实践,提高了硬件电路设计能力和软件编程实践能力。在教学方面取了一定的效果,真正实现了以项目为导向、“做中学,学中做”的教学理念[11],对高校的专业建设、教育教学改革、教师研发能力的提升、学生的创新能力提升都有很好的促进作用[12]。
6 结语
从目前的实验效果来看,基于Linux 的智能家居控制系统综合实验能较好地将理论与实践相结合。由于学时有限,学生充分利用课下学时完成了硬件电路设计、软硬件调试,加入了个性化创新。做中学的方式提高了学生的学习兴趣和应用创新能力,培养了学生的团队协作能力,促进了实验教学改革,打破了传统验证性实验内容和实验室功能的局限性,提升了学生的专业应用能力和专业创新能力,在实际应用中取得了较好的效果。