冼进
(华南理工大学,计算机科学与工程学院, 广东,广州 510006)
嵌入式系统应用课程是计算机本科实践教学比较综合的技术开发课程,由硬件系统和软件系统两部分组成,也是各高校最受欢迎和最热门的核心专业课程之一。由于综合应用了硬件、软件系统,微处理器系统结构与嵌入式系统设计技术有机融合,强调专业知识与社会前沿硬件开发技术相结合,理论知识点多,覆盖学科面广,学生要熟练掌握应用开发有比较大的难度,学习时感觉内容枯燥乏味,实践开发无从下手,实践教学效果不太理想,综合能力中下的学生对此课程兴趣不大。为改变现状,引入经典嵌入式开发模拟项目智能小车设计,智能小车设计能体现嵌入式课程实践教学所有知识点,通过实现一个有意义的嵌入式实体项目开发过程来吸引学生兴趣,引导学生逐步掌握嵌入式系统的开发过程,围绕智能小车开展实践教学内容,培养学生创新意识和创新能力,有助于学生真正掌握嵌入式系统课程实践的关键内容,能够极大地激发学生的积极性、想象力和创造力,为学生后续从事相关科研工作奠定良好的基础[1-3]。
适合嵌入式教学需求设计的智能小车具有如图1所示的功能模块。智能小车以通用的STM32微处理器作为核心控制单片机,内嵌操作系统支持实时多任务、可编程软件控制、配备多种传感器模块、无线遥控远距离操控、四驱动马达、具有丰富扩展功能的智能车系统。通过网上采购到通用智能小车底盘车架、STM32核心控制及各类功能模块,并结合嵌入式实践教学内容,模拟项目形式实践开发,在硬件的基础上应用STM32集成开发环境Keil MDK-RAM下编写出相应控制和驱动程序,使学生能够设计实现一款完整的智能小车平台。学以致用,有效拓展学生实践内容和动手能力,开拓知识面,激发创新思维,提升嵌入式系统开发兴趣[4-5]。
图1 智能小车系统功能模块框图
基于STM32嵌入式系统智能车系统硬件模块主要有:组合式智能车架(直流电机、减速机构、空心胎车轮)、直流电机驱动模块、NRF24L01无线数据收发模块、锂电池、STM32控制主板、DC/DC电源模块等部件组成。
(1) 智能小车核心控制STM32处理器
智能小车控制核心部件选用STM32F103ZET6微控制器处理器芯片,它是半导体厂商ST公司最新推出基于Cortex-M3内核的处理器,为增强型高性能的ARM 32位RISC内核[6],工作主频率可高达72 MHz,处理器算力强大,芯片内置了512 KB高速flash存储器和64 KB的高速SRAM存储器,工作温度范围-40 ℃~+105 ℃,支持宽电压2.0~3.6 V。功能I/O端口丰富包括I2S音频接口、SPI接口、I2C接口、SDIO接口、USB接口、UART接口和CAN总线接口以及ADC和DAC等功能接口。具有先进的内核结构、低功耗、性能出众且有多功能创新外设,提供丰富的函数库,大大简化编程的复杂性,易调试及方便嵌入式系统实践教学等一系列特点,非常适宜作为智能小车的主控芯片。
(2) 直流电机与车架
直流电机组与车身架包括亚克力材质的智能小车底盘架,智能车底盘尺寸为260 mm*155 mm,在车底盘上安装4个直流减速电机、4个塑胶防滑车轮、20线测速码盘。直流减速电机供电电压在3~9 V范围内,经实验测试,电机适宜采用7.4 V直流供电,这样电机扭力适中,长时间工作温升小。实物组装效果如图2所示。
图2 电机与车架组装效果图
(3) 直流电机驱动模块
教学智能小车采用L298N大功率恒压恒流H桥直流马达驱动模块,2片配合使用可驱动控制4个直流电机,其特点是稳定性高,支持2~10 V电压范围,具有过热保护自动恢复功能,驱动电流可以达到持续1.5 A的电流,最大驱动电流可达2.5 A、微安级待机流<0.1 μA、控制信号输入电压范围在1.8~7 V范围内、可以实现电机的速度调节控制和电机的转向控制,很方便实现直流电机运行正转、正转制动、反转、反转制动。具体直流电机接线如图3所示。
独立驱动两路直流电机,INX为控制信号输入端,信号电压范围是1.8~7 V,IN1、IN2控制电机A,IN3、IN4控制电机B。
(4) NRF24L01无线数据收发模块
采用NRF24L01高速无线收发模块、射频频率2.4 GHz、无线数据传输速率可达2 Mbps,I/O输入最高电平达到5 V,可直接接5 V供电系统单片机的I/O口、通信接口SPI数据传输速率8 Mbps。使用此模块可以快速实现无线传输系统的搭建,无线信号稳定搭配全向天线效果更佳,可以搭配多种型号的单片机或微处理器,硬件SPI控制器或GPIO模拟SPI控制器均可驱动[7-9]。
图3 直流电机驱动模块接线图示意图
(5) 超声波测距模块
避障检测模块由主动式红外光信号发射管和被动式红外光信号接收管以及模拟集成运算放大器等组成。主要用于障碍物检测自动避障功能,当有物体靠近模块探测范围内红外信号被物体反射回来,当红外接收管接收到反射回来的红外信号再送入集成运算比较放大器处理模块的DOUT信号引脚输出低电平。
红外循迹检测模块主要用作黑白线循迹功能,模块的探测端安装有红外收发原件,因为黑色物体对红外光波信号吸收率要大于白色物体对红外光波的吸收率,因此当模块探头遇到黑色轨迹线时,模块发射的红外光波信号大部分被黑色轨迹线吸收掉,模块DOUT引脚输出高电平,当模块遇到离开黑色轨迹线时模块DOUT引脚输出低电平,通过判断模块的输出信号电平高低即可检测到智能车是否脱线。
(6) 避障、循迹检测模块
超能波测距模块主要由一个超声波信号发送换能器和一个超声波信号接收换能器和驱动电路组成,测距原理是依靠发送超声波信号再精确计算接收到反射回来的超声波信号的时间,通过声音在空气中的传播速度就可计算出被探测物体与测距模块之间的距离。
超声波测距模块采用HC-SR04:模块引脚VCC电源、TRIG控制信号、ECHO接收信号、GND电源地。使用方法为TRIG控制信号保持10 μs以上的高电平之后等待ECHO接收信号输出高电平,当ECHO接收信号变为高电平时应立刻开启计时器计算时间,当ECHO接收信号变为低电平时停止计时器计时,此时计时器所计时间及时声波的收发时间再通过公式计算出被测距离:被测距离=(高电平保持时间*声速)/2;声速约等于340 M/S。实物如图4所示,控制时序图如图5所示。
(7) 舵机组件
为了避障功能准确、平稳,智能小车选用SG90型号舵机配合超声波传感器一起使用[10-13],舵机重量13 g,角度90~180度通用型,红色线为电压,粽色线为地线,橙色是信号线。技术数据:尺寸21.5 mm*11.8 mm*22.7 mm;空载速度0.12 s/60度;重量约9 g;工作电压4.8~6 V;扭矩1.2~1.4 kg/cm;4.8 V供电。
图4 超声波模块实物图
图5 超声波控制时序图
舵机属于执行单元组件,是一种位置角度伺服驱动器,适用于需要角度不断变化并可保持控制系统,通过信号输入引脚,脉冲宽度调制(PWM)信号的脉冲宽度实现控制多盘的角度0~180度,如图6所示,通过调节基准信号的占空比可以实现舵机角度位置的控制,基准信号是20 ms周期的脉冲宽度调制信号,改调制脉冲的高电平部分一般从0.5~2.5 ms的范围内调节、脉冲信号的总间隔为2 ms,下面是180度角度控制范围内高电平时间和角度位置的对应关系:
图6 控制时序图
(8) 彩色液晶显示屏
TFT LCD彩色液晶显示屏(3.2寸)、262 K color、分辨率240×320、驱动芯片ILI9341: RGB565 CPU屏接口,支持背光PWM亮度调节,支持图形上下翻转、镜像显示等显示方向调节。支持电阻TP触摸功能,在显示屏的表面贴有3.2寸电阻式触摸屏,定位精度高、抗干扰能力强。电阻TP触摸屏驱动芯片TSC2046:新一代触屏驱动控制器支持低压I/O接口1.5~5.25 V、低功耗2.7 V供电<0.75 mW。
(9) 直流电源供电模块
直流电源供电模块包括:DC/DC直流降压模块、锂电池18650、电池充放电管理模块。锂电池18650:3.7 V 2000 mAh本项目采用两串两并电池总输出电压为7.4 V,满电8.2 V。电池充电模块:主要用于锂电池充电管理,支持恒流充电、恒压充电、涓流充电等充电过程,科学的充放电过程可以延长电池的使用寿命。DC/DC降压模块:如入电压3.5~10 V、输出电压3.3 V/1.2 A,电源纹波小于200 mV。
(1) 硬件功能定义及实现原理
小车运动动作分为向前运动、向后运动、向左转弯、向右转弯、向左原地旋转和向右原地旋转等运动,通过控制运动动作和维持时间以及运动速度,可以控制小车实现非常复杂的运动轨迹。2.4 GHz无线遥控:通过STM32+NFR24L01无线射频模块实现无线遥控器,遥控器包括1个油门操纵杆和1个方向操纵杆以及2个物理按键,操作油操纵杆可以实现油门量的调节,即实现小车速度的控制,操作方向杆可以控制小车的运动方向。
避障功能:智能小车前后安装有红外避障传感器,当智能车快碰撞到物体时,红外避障传感器输出碰撞信号,中央处理器收到信号后自动处理,停止运动或向反方向运动,达到避障功能。
防跌落功能:智能小车四角安装有红外传感器,当智能车某一车轮处于悬空位置(比如运行到桌子边时,继续运动智能小车可能会跌落下去)传感器输出悬空信号,中央处理器收到信号后自动处理,停止运动或向反方向运动,达到防止跌落的功能。
(2) 整车硬件组装
智能小车整机组装实物图如图7所示。主要步骤:将锂电池充电模块、DC/DC降压模块、USB座、PIN座等焊接于PCB万用板上;安装直流电机于车架再安装车轮;将红外避障模块、红外循迹模块、超声波测距模块、舵机组件用紧固螺丝安装于车架对应位置;然后使用杜邦线把各模块扎在STM32控制主板上。
图7 智能小车整车组装实物图
软件设计是智能小车控制系统设计的重要组成部分,对硬件进行合理有效的编程,才能实现智能小车特定功能和应用,以主控芯片STM32F103ZET6作为智能小车的大脑,接收处理传感器探测信号和无线遥控器信号,运算处理后输出控制信号给到马达执行单元完成指定动作。软件框架如图8所示,包括嵌入式操作系统μcos-iii、无线模块驱动程序、马达驱动程序、传感器驱动程序、应用业务逻辑处理程序等部分组成。
图8 软件开发框图
使用STM32开发板提供的软件安装包,搭建软件开发环境,配置好参数,对操作系统μC/OSiii进行移植,μC/OSiii的核心功能就是负责系统任务的调度,系统应答时钟是STM32的PendSV特殊中断功能实现产生系统基准时间,μC/OSiii通过这个时间基准进行主要调动任务的调度。显示系统μC/GUI也要进行移植。然后对各种驱动程序编写并测试。
把嵌入式系统课程中所掌握的各知识点编程和测试与智能小车各功能模块结合起来,如表1所示。配合嵌入式系统基础验证性实验,在小车调试中应用,观察各功能模块测试效果,帮助学生理解和掌握基础知识、基本原理、基本程序编写和调试技能。并对智能小车各功能模块联动调试,加深对理论知识的理解以及对智能小车原理和功能实现知识点学习。
表1 智能小车各功能测试相对应嵌入式课程知识点
把各功能模块编程内容综合起来,整体移植到单片机上,实现智能小车整体运行,测试智能小车闭环控制,包括小车电机速度控制、电机速度测量及闭环速度控制等;调整小车方向定位,读取小车姿态传感器数据,方向定位控制测试;小车人机交互综合调试,通过无线模块与手机或遥控器通信,手机或遥控器可以通过无线模块驾驶智能小车,调节车速、方向,控制小车实现非常复杂的运动轨迹,在显示屏观察接收或发送的信息。最终验证智能小车各大模块寻迹、避障、速度控制、转向等响应动作,实现整车精确稳定、安全驾驶功能演示。结合嵌入式综合实验教学内容,智能小车设计能形象显示嵌入式系统综合实验教学内容并起到强化知识点作用,有利于培养学生分析问题解决问题的能力、实践动手能力、创新设计思维和团队协作意识,提高学生综合应用能力以及软、硬件开发设计、调试、测试等技能[14-15]。
对智能小车实物组装焊接及硬件程序调试,验证各功能模块通信协议与小车仿真驾驶,结果显示基于STM32嵌入式教学智能小车电路及软件设计正确,它集成运用微处理器、现代传感器、信息融合及自动控制等技术,适合嵌入式项目实践教学典型案例,应用于嵌入式系统实验教学中,能很好体现嵌入综合实验教学优点,学生通过软件修改及完善,观察智能小车机动性能,激发对嵌入式系统设计课程的学习兴趣,加深对嵌入式系统课程理论与工作原理的认识,提升实践教学效果。智能小车作为一款嵌入式编程学习实体设备,未来还可以扩展支持Python、Lua等解释型脚本编程语言。