基于RTOS的智能拐杖系统设计

时间:2022-05-25 07:17:48

基于RTOS的智能拐杖系统设计

摘要:为使视力残疾者出行更加安全,设计了一种基于实时操作系统Small RTOS51的智能拐杖系统。介绍了Small RTOS51操作系统在STC12C5A32S2单片机上的移植,给出了部分硬件接口设计方案,详细介绍了软件实现过程。试验表明,使用嵌入式实时操作系统,软件开发过程简单方便。

关键词:智能拐杖;实时操作系统;单片机;硬件接口;软件开发

DOIDOI:10.11907/rjdk.161746

中图分类号:TP319

文献标识码:A文章编号:16727800(2016)010010003

0引言

世界卫生组织数据显示:中国盲人数量在800万以上,而且还以每分钟新增一例的数量增加,视障者人数高达1 300万以上。视力残疾者生活上有诸多不便,特别是出行时,经常会碰到障碍物、摔跤或走丢。虽然有相关机构培训导盲犬为盲人服务,但每条导盲犬的训练成本极高,申请者一般至少要等待3年。为此,本文设计了一款多功能智能拐杖系统。该系统使用51系列单片机,移植了实时操作系统Small RTOS51。使用实时操作系统,使系统软件设计变得简单方便,更易于维护和扩展相应功能。

1SmallRTOS51简介

Small RTOS51由陈明计先生开发,主要运行于基于51系列单片机的硬件平台。该RTOS可以免费应用,源代码全部公开。Small RTOS51支持16个任务,每个任务可设置成不同的优先级。SmallRTOS51任务由4种状态组成:就绪、运行、等待和中断,4种任务状态在不同条件下可以相互转换,如图1所示[1]。

2系统方案

为方便盲人或视障者出行,智能拐杖系统设计了以下功能:①当智能拐杖靠近障碍物时能发出报警声,离障碍物的距离越近,报警声越急促,提醒盲人注意障碍物;②总控开关打开后,智能拐杖能自动判断是白天还是黑夜,如果是黑夜,就自动打开提示灯,提示过往行人和车辆注意;③当盲人走丢后,按下系统的定位开关,系统能通过GPS定位盲人位置,并通过短消息模块把定位信息发送给系统设定的手机,方便家人根据此定位信息及时找到盲人。

智能拐杖系统CPU采用STC12C5A32S2单片机。该CPU是宏晶科技有限公司生产的一款高性能8位单片机,运行速度快、抗干扰能力强[2]。该单片机包含32K字节程序存储器[3],1280字节内部数据存储器,完全满足移植Small RTOS51操作系统对存储器的需求。该单片机还包含2个全双工串行通信口,4个16位定时器,8通道10位ADC。智能拐杖系统框图如图2所示,主要包含CPU模块、GSM模块、GPS模块、超声波测距模块、亮度检测模块、键盘模块、蜂鸣器模块和指示灯模块等。

3部分硬件接口设计

(1)GPS和GSM模块接口。GPS采用台湾生产的HOLUX M-89 GPS模块,该模块有6个引脚,本系统只使用其中3个引脚(电源、地、GPS串行信号输出)与CPU连接。GSM采用SIM900模块。SIM900是SIMCOM公司生产的双频GSM/GPRS模块[4],通过串口与单片机连接。GPS和GSM模块硬件接口如图3所示。

(2)超声波测距模块接口。智能拐杖对障碍物的感知采用HC-SR04超声波测距模块,该模块可以测量2cm到4m的距离范围。模块有4个引脚,分别是电源、地、触发信号输入脚和回响信号输出脚。模块工作时,单片机向超声波模块的触发信号输入引脚发出超过10ms的高电平,模块发出8个40KHz的脉冲,单片机通过超声波模块的回响信号输出脚判断是否接收到超声波反射信号,并通过公式S=V*T/2计算障碍物和盲人之间的距离。公式中V表示超声波在空气中的声速,T代表超声波从发射到反射回接收模块的时间。超声波测距模块接口原理如图4所示。

(3)亮度检测模块接口。如图5所示,亮度检测模块采用一只光敏电阻R2,并通过一片LM393集成块组成比较电路。当智能拐杖所处的环境比较亮时,LM393的LOUT脚输出低电平,否则输出高电平,单片机通过判断LOUT电平的高低决定是否需要打开提示灯。RP为可变电阻,通过此电阻调节亮度检测模块的灵敏度。

(4)键盘、蜂鸣器和指示灯模块接口。智能拐杖需要的按键不多,采用独立式按键就能满足需求。声音提示采用一只直流蜂鸣器,通过一只三极管驱动。指示灯采用5只不同颜色的高亮LED。

4软件设计

4.1RTOS移植

系统编程采用美国Keil Software公司出品的集成开发环境Keil μVision4。Keil μVision4编译器支持内嵌汇编编程,通过关键字Reentrant产生可重入代码,可用C语言允许或禁止中断,这些特性正是移植Small RTOS51操作系统所必需的。Small RTOS51的移植需要开发者在头文件OS_cpu.h中定义相关变量的类型、变量存储方法、任务切换、禁止允许中断、中断嵌套等,同时需要Os_cpu_a.asm汇编文件中编写OSCtxSw(通过该函数让系统运行高优先级任务)、OSIntCtxSw(中断退出时,调用次函数进行任务切换)、LoadCtx(任务运行环境恢复函数)等汇编函数。数据类型定义如表1所示。

4.2应用软件设计

(1)任务划分和信号量分配。本设计将软件系统分解成5个任务和一个按键中断。5个任务是:超声波测距任务、GSM任务、GPS任务、亮度检测任务和蜂鸣器任务,5个任务相互配合共同完成智能拐杖的所有功能。系统通过以下代码创建5个任务。

(2)任务实现描述。Small RTOS51的每个任务都必须设计成死循环,任务运行后开始无限等待相关的信号量,一旦接收到相关信号量,任务继续运行,同时任务向其它任务发送信号。任务的代码框架如下:

按键中断:当位置信息发送按键被按下就触发该中断,中断服务程序通过OSSemPost函数向GPS任务发送信号量M_GPS。

GPS任务:GPS任务的优先级最高。该任务运行后,等待按键中断发送的M_GPS,一旦接收到该信号量就开启串行通讯口接收GPS信息,并对$GPRMC格式的数据包进行解码,得到位置信息。最后发送M_GSM信号量给GSM任务。

GSM任务:该任务等待GPS发送的信号量M_GSM,接收到该信号后,启动GSM模块,把位置信息发送给设置的手机号,然后发送信号量M_UC给超声波检测任务。

超声波检测任务:该任务主要完成障碍物检测。该任务运行后,接收M_UC信号量,当GSM任务、蜂鸣器任务、亮度检测任务都没有向该任务发送M_UC时,时钟节拍函数OSTimeTick()定时向该任务发送信号量M_UC。该任务根据探测情况决定是否需要发送信号量M_BEEP给蜂鸣器任务。超声波检测任务连续运行COUT次以后(本系统设置COUT为1000),发送信号量M_LTEST给亮度检测任务,启动一次亮度检测。

蜂鸣器任务:该任务接收超声波测距任务发送的信号量M_BEEP,并根据超声波测距任务设置的相关参数启动声音报警。

亮度检测任务:该任务接收超声波测距任务发送的信号量M_LTEST,接收到该信号量后执行连读检测程序,根据检测结果决定是否开启提示灯。

5结语

经测试,采用实时操作系统设计的智能拐杖系统能够实现系统设定的所有功能。设计过程中,把系统功能分解成5个部分,分别使用一个任务实现相关功能,降低了软件编写难度,提高了开发效率。

参考文献参考文献:

[1]陈明计,周立功.嵌入式实时操作系统Small RTOS51原理及应用[M].北京:北京航空航天大学出版社,2004.

[2]刘德新,贺小凤.基于STC12C5A32S2的甲醛检测仪设计[J].深圳信息职业技术学院学报,2011,9(3):4750.

[3]高凤强,颜逾越,康恺,等.基于GSM的对虾养殖场增氧机监控系统设计[J]. 渔业现代化,2016,43(1):1317.

[4]左兆辉,孙耀杰,马晓峥.基于PPI协议与SIM900A的抽油机监控系统[J]. 仪表技术与传感器,2014(4):5052.

上一篇:高校经济管理类专业实践性教学改革探究 下一篇:高校创意写作教学研究