嵌入式linux远程控制机器人大学论文.docx
- 文档编号:15755924
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:32
- 大小:471.07KB
嵌入式linux远程控制机器人大学论文.docx
《嵌入式linux远程控制机器人大学论文.docx》由会员分享,可在线阅读,更多相关《嵌入式linux远程控制机器人大学论文.docx(32页珍藏版)》请在冰点文库上搜索。
嵌入式linux远程控制机器人大学论文
嵌入式Linux远程控制机器人
摘要
嵌入式系统诞生于微型机时代,经历了漫长的独立发展的单片机道路。
究竟嵌入式系统是什么?
嵌入式系统(embeddedsystem),是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它早以融入我们的生活,除了我们日常生活可以看到的家电产品,工业与军事应用的独立产品之外(如PDA,工业控制器,通信产品等),许多大型电脑系统也是由许许多多小的嵌入式系统所组成。
因此嵌入式系统是最接近人们生活的计算机系统。
关键词:
嵌入式,单片机
EmbeddedLinuxremotecontrolrobot
ABSTRACT
EmbeddedSystemswasborninthemicrocomputerera,hasalongroadofindependentdevelopmentoftheSCM.Whatisactuallyembeddedsystems?
EmbeddedSystems(embeddedsystem),isappliedasthecenterandcomputertechnology,hardwareandsoftwarecanbecut,applytotheapplicationoffunctionality,reliability,cost,size,powerrequirementsarestrictlydedicatedcomputersystem.Itmorningtointegrateintoourlives,inadditiontoourdailylifecanbeseeninhomeappliances,industrialandmilitaryapplicationsfromindependentproducts(suchasPDA,industrialcontrollers,communicationsproducts,etc.),manylargecomputersystemsisalsobythemany-Smallnumberofembeddedsystemcomponents.Soembeddedsystemistheclosestcomputersystemstopeople’slives.
Keywords:
embedded,SCM,Linux
目录
1项目概述1
1.1项目名称1
1.2项目的目标1
1.3项目的内容1
1.4项目的建设周期、投资规模1
2需求分析3
2.1功能需求3
2.2非功能需求3
3系统体系结构4
3.1SPCE061A单片机概述4
3.2EmbestS3CEB2410评估板5
4.硬件设计6
4.1电路方框图及说明6
4.2各部分电路设计6
5.软件设计10
5.1系统结构设计10
5.2模块设计11
5.3Qt/Embedded和Qtopia介绍及其开发环境的建立13
5.4用API函数14
5.4主要代码18
5.5编程软件与其他应用软件23
6.系统测试25
6.1系统平台测试25
6.2功能测试25
6.3环境测试25
6.4测试结果分析与问题解决方案25
参考文献26
致谢27
附录A设备图片28
1项目概述
1.1项目名称
嵌入式Linux远程控制机器人
1.2项目的目标
通过控制板远程控制机器人
1.3项目的内容
1、项目组成:
控制板+外围设备(机器人)
2、所用的硬件是:
(1)凌阳SPCE061A单片机开发板
(2)机器人
(3)各种IC
(4)无线模块
(5)EmbestS3CEV40开发板(ARM9)
3、所用的操作系统是:
linux+QT
4、所用的软件工具是:
(1)编程语言:
C语言,汇编语言,C++
(2)开发环境:
unSPIDE1.16.1,北阳音频压缩软件,cygwin,linuxredhat9.0,qt2.3.2等
1.4项目的建设周期、投资规模
表1.2建设周期
名称
花费时间
具体时间
可行性分析
1周
3.1
总体策划
1周
11.2
硬件设计
3周
11.3-11.5
软件设计
3周
11.6-11.8
功能测试
1周
11.9-11.10
表1.1投资规模
名称
数量
具体型号
单片机开发板
1块
凌阳SPCE061A单片机开发板
单片机开发板
1块
AT89S52
嵌入试开发板
1块
EmbestS3CEV40开发板
母板
1块
50X30
机器人
1个
IC
1个
L289N
无线模块
1对
RL1100
硬件开发部件
1组
电烙铁,锡,松香等
2需求分析
2.1功能需求
1、输入输出
输入:
EmbestS3CEV40开发板触摸屏,凌阳SPCE061A单片机开发板的MIC
输出:
机器人,喇叭,LCD模块
2、功能
控制板远程控制机器人行走和说话
2.2非功能需求
物理环境:
无障碍的任何平坦地方
3系统体系结构
3.1SPCE061A单片机概述
SPCE061A是继μ‘nSP系列产品SPCE500A等之后凌阳科技推出的又一个16位结构的微控制器。
目前有两种封装形式:
84引脚的PLCC84封装和80引脚的LQFP80贴片封装。
主要性能如下:
■16位μ‘nSP微处理器;
■工作电压:
VDD为2.4~3.6V(cpu),VDDH为2.4~5.5V(I/O);
■CPU时钟:
32768Hz~49.152MHz;
■内置2K字SRAM、内置32KFLASH;
■可编程音频处理;
■32位通用可编程输入/输出端口;
■32768Hz实时时钟,锁相环PLL振荡器提供系统时钟信号;
■2个16位可编程定时器/计数器(可自动预置初始计数值);
■2个10位DAC(数-模转换)输出通道;
■7通道10位电压模-数转换器(ADC)和单通道语音模-数转换器;
■声音模-数转换器输入通道内置麦克风放大器自动增益控制(AGC)功能;
■系统处于备用状态下(时钟处于停止状态)耗电小于2μA@3.6V;
■14个中断源:
定时器A/B,2个外部时钟源输入,时基,键唤醒等;
■具备触键唤醒的功能;
■使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;
■具备异步、同步串行设备接口;
■具有低电压复位(LVR)功能和低电压监测(LVD)功能;
■内置在线仿真电路接口ICE(In-CircuitEmulator);
■具有保密能力;
■具有WatchDog功能(由具体型号决定)
3.2EmbestS3CEB2410评估板
■系统电源:
采用+5V,2A直流变压器供电,稳压到+3.3V给CPU的I/O及外围器件供电,另外,开发板通过两个独立+1.8V稳压块给CPU核供电,可通过程序控制CPU切换到省电模式。
■系统时钟:
使用外部12MHz晶振,CPU内部倍频至200MHz+
■IntelStrataFlash:
E28F128J3A16MB
■ATMEL公司的2MbyteNORFLASHAT49BV1614A(兼容AMD公司2M/4MbyteNORFLASHAM29LV160DB/320DB)
■SDRAM:
64Mbyte(32Mbyte×2)
■3通道UART串口接口,还可跳接为MODOM方式
■2通道USBHOST和一通道USBDEVICE
■IrDA红外线收发器
■SmartMediaCard控制器
■JTAG接口
■RTC实时时钟
■IIC总线EEPROM
■TFT/STNLCD接口
■TSP触摸屏控制器
■SD卡/MMC卡主机控制器
■8通道10位ADC模数转换接口
■SPI接口
■IIS数字音频输入/输出接口
■10M以太网接口
■4个板上轻触键外部中断或I/O输入
■4个LED指示灯及2个电源指示灯
■EXBUS全扩展接口
4.硬件设计
4.1电路方框图及说明
主控元件采用凌阳SPCE061A单片机,属于凌阳u‘nSP.系列产品的一个16位结构的微控制器。
在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH),但用在此系统上已经绰绰有余。
较高的处理速度使u‘nSP.能够非常容易地、快速地处理复杂的数字信号。
因此以u‘nSP.为核心的SPCE061A微控制器也适用在数字语音识别应用领域。
SPCE061A在2.6V~3.6V工作电压范围内的工作速度范围为0.32MHz~49.152MHz,较高的工作速度使其应用领域更加拓宽。
2K字SRAM和32K字FLASH仅占一页存储空间,32位可编程的多功能I/O端口;两个16位定时器/计数器;32768Hz实时时钟;低电压复位/监测功能;8通道10位模-数转换输入功能并具有内置自动增益控制功能的麦克风输入方式;双通道10位DAC方式的音频输出功能,这就为本系统的特定人辨识和语音播报打下了基础。
4.2各部分电路设计
1、SPCE061AI/O图
为了要模拟机器人说话,因此要加入声音与闪光同步,即说活时头部灯同时闪亮。
机器人头内部安装一个LED灯,当IOB1有输出时,LED灯闪亮。
2、AT89S51I/O图
机器人下肢行走时是由一个直流电机驱动,而凌阳SPCE061A单片机的输出电流只有10mA左右,而直流电机的额定电流是大于1A,因此用一个L289IC来驱动直流电机,下面是接线图。
3、麦克录音输入及AGC电路
凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟可达到49M,具备运算速度高的优势等等,这为语音的播放、录放、合成及辨识提供了条件。
本系统接入MIC电路如图示,MIC为录制语音辨识命令服务。
下图是简化的语音识别原理如图4.1,其中实线部分成为训练模块,虚线部分为识别模块。
辨认特定的使用者即特定语者(SpeakerDependent,SD)模式,使用者可针对特定语者辨认词汇(可由使用者自行定义,如人名声控拨号),即在启动小车前,系统将会提示输入语音命令作简单快速的训练纪录,在这里输入“启动”“停止”“返回”和“模式切换”四个语音命令,通过使用者的声音特性来加以辨认。
随着技术的成熟,进入语音适应阶段SA(speakeradaptation),使用者只要对于语音辨识核心,经过一段时间的口音训练后,即可拥有不错的辨识率。
图注:
小五号宋体,置于图题之上
注:
此图中的实线部分成为训练模块,虚线部分为识别模块
图4.1语音识别原理图
4、电路语音播报电路
音频部分的原理图4.2所示,在图9中可以看到两个跳线,其作用在于可以测量DAC的输出波形;另外拔掉跳线,可以断开DAC到喇叭放大的通路,使得DAC通道处于开路状态。
这样便于用DAC做其他用途,用户可以用过这个跳线来加入自己的外围电路。
凌阳音频压缩算法根据不同的压缩比分为以下几种:
SACM-A2000:
压缩比为8:
1,8:
1.25,8:
1.5
SACM-S480:
压缩比为80:
3,80:
4.5
SACM-S240:
压缩比为80:
1.5
按音质排序:
A2000>S480>S240
用凌阳CompressTool事先把所需要的语音信号录制好,本系统共包括十多个语音资源,整个语音信号经凌阳SACM_S480压缩算法压缩只占有13.2K存储空间,SPCE061A单片机具有32k闪存,使用内部flash即可满足要求。
凌阳SPCE061A单片机自带双通道DAC音频输出,DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出,DAC输出为电流型输出,所以DAC输出经过SPY0030音频放大,以驱动喇叭放音,放大电路如图9(只列出了DAC1,DAC2类似),这为单片机的音频设计提供了极大方便。
在它们后面接一个简单的音频放大电路和喇叭即可实现语音播报功能,音频的具体功能主要通过程序来实现。
图4.2音频原理图
声音是一种很难识别的信号,同一个字在不同的人口里发出来会出现不同波长和振幅,如图4.3,因此要看硬件的精度有多高确定识别声音的精度。
图4.3声音波形图
5、语音识别电路
凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟频率可达到49MHz,具备运算速度高的优势等等,这些都无疑为语音的播放、录放、合成及辨识提供了条件。
凌阳压缩算法中SACM_A2000、SACM_S480、SACM_S240主要是用来放音,可用于语音提示,而DVR则用来录放音。
对于语音辨识主要有以下两种:
(1)特定发音人识别SD(SpeakerDependent):
是指语音样板由单个人训练,
也只能识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别。
(2)非特定发音人识别SI(SpeakerIndependent):
是指语音样板由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。
图4.4语音识别电路图
5.软件设计
5.1系统结构设计
1、系统开发模式
前后台模式:
分为前台程序(任务级)和后台程序(事件处理级)。
其中中断服务子程序(InterruptServiceRoutine,ISR)负责处理异步事件属于前台程序(Foreground),而后台程序(Background)一般是一个无限的循环,负责管理整个嵌入式系统软硬件资源的分配,管理以及任务的调度,是一个管理调度程序。
2、系统总流程图
图5.1系统总流程图
5.2模块设计
1、声音播放模块
凌阳的SPCE061A播放声音时,先将声音资源以队列的形式存放(顺序存放在32Kflash中),每个资源都有一个地址(编号),然后在调用播放子函数时进行中断声音取资源地址(FIQ快速中断),进行播放。
播放流程图
图5.2播放流程图
播放中断程序图
图5.3播放中断程序图
2、声音识别模块
SPCE061的特定语者辨识SD(SpeakerDependent),SD即语音样板由单个人训练,也只能识别训练某人的语音命令,而他人的命令识别率较低或几乎不能识别。
语音辨识的一个整体框图
图5.4语音辨识图
在程序中我们通过语句的训练演示特定人连续音识别,训练完毕开始辨识当识别出触发名称后,开始发布命令,则会听到自己设置的应答。
3、LED闪亮与下肢行走模块
SPCE061A提供了位控制结构的I/O端口,每一位都可以被单独定义用于输入或输出数据。
通常,对某一位的设定包括以下3个基本项:
数据向量Data、属性向量Attribution和方向控制向量Direction。
3个端口内每个对应的位组合在一起,形成一个控制字,用来定义相应I/O口位的输入输出状态和方式。
例如,假设需要IOA0是下拉输入管脚,则相应的Data、Attribution和Direction的值均被置为“0”。
如果需要IOA1是带唤醒功能的悬浮式输入管脚,则Data、Attribution和Direction的值被置为“010”。
与其它的单片机相比,除了每个I/O端口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再次外接。
例:
设端口A口为带下拉电阻的输入口,在连接硬件时无需在片外接下拉电路。
此模块用到IOB口(与A同理)。
图5.5下肢行走模块图
5.3Qt/Embedded和Qtopia介绍及其开发环境的建立
目前嵌入式Linux的主流GUI系统主要有MiniGUI、Microwindows、OpenGUI、Qt/Embedded,这些GUI在接口定义、体系结构、功能特性存在很大差别,采取的技术路线也有所不同。
MiniGUI是建立在比较成熟的图形引擎之上,开发的重点在于窗口系统,其小巧精致并且尽量与Win32兼容。
MicroWindows目前开发的重点在底层的图形引擎,窗口系统和图形接口方面功能比较欠缺,与Win32和XWindows窗口系统保持兼容,提供了相对完善的图形功能。
OpenGUI基于一个用汇编实现的x86图形内核,提供了一个高层的C/C++图形/窗口接口,它的资源消耗小,可移植性差,不支持多进程。
Qt/Embedded是一个多平台的C++图形用户界面应用程序框架,其对象容易扩展,可移植性好,支持多个GUI平台的交互开发。
现在,Qt/Embedded被广泛地应用于各种嵌入式产品和设备中,从消费电器(如智能手机、机顶盒)到工业控制设备(如医学成像设备、移动信息系统等)。
因此我们选择Qt/Embedded为本系统的GUI。
Qt/Embedded采用帧缓存(framebuffer)作为底层图形接口。
Qt/Embedded类库完全采用C++封装,并且有着丰富的控件资源以及较好的可移植性,大范围的Qt/EmbeddedAPI可用于多种开发项目。
Qt/Embedded的实现结构如图5.6所示:
图5.6Qt/Embedded的结构
Qt/Embedded的底层图形引擎基于framebuffer。
framebuffer是一种驱动程序接口,它将显示设备抽象为帧缓冲区。
该驱动程序的设备文件一般是/dev/fb0、/dev/fb1等。
对用户而言,它和/dev下的其他设备没有什么区别,用户可以把framebuffer看成一块内存,既可以从这块内存中读取数据,也可以向其中写入数据,而写操作立即反应在屏幕上
5.4用API函数
1、声音播放模块:
API函数的格式、功能、参数、返回值、备注
(1)【API格式】C:
intSACM_S480_Initial(intInit_Index)
ASM:
R1=[Init_Index]
CallF_SACM_S480_Initial
【功能说明】SACM_S480语音播放之前的初始化。
【参数】Init_Index=0表示手动方式;Init_Index=1则表示自动方式。
【返回值】0:
代表语音模块初始化失败
1:
代表初始化成功。
【备注】该函数用于对定时器、中断和DAC等的初始化。
(2)【API格式】C:
voidSACM_S480_ServiceLoop(void)
ASM:
CallF_SACM_S480_ServiceLoop
【功能说明】从资源中获取SACM_S480语音资料,并将其填入解码队列中。
【参数】无。
【返回值】无。
【备注】播放语音文件中数据,当出现FFFFFFH数据时便停止播放。
(3)【API格式】
C:
intSACM_S480_Play(intSpeech_Index,intChannel,intRamp_Set);
ASM:
R1=[Speech_Index]
R2=[Channel]
R3=[Ramp_Set]
CallSACM_S480_Play
【功能说明】播放资源中SACM_S480语音。
【参数】Speech_Index表示语音索引号。
Channel:
1.通过DAC1通道播放;
2.通过DAC2通道播放;
3.通过DAC1和DAC2双通道播放。
Ramp_Set:
0.禁止音量增/减调节;
1.仅允许音量增调节;
2.仅允许音量减调节;
3.允许音量增/减调节。
【返回值】无。
【备注】
①SACM_S480的数据率有4.8Kbps\7.2Kbps三种,可在同一模块的几种算法中自动选择一种。
②Speech_Index是定义在resource.inc文件中资源表(T_SACM_S480_SpeechTable)的偏移地址。
③中断服务子程序中F_FIQ_Service_SACM_S480必须放在TMA_FIQ中断向量上。
④函数允许TimerA以所选的的数据采样率(计数溢出)中断。
4)【API格式】C:
unsignedintSACM_S480_Status(void);
ASM:
CallF_SACM_S480_Status
[返回值]=R1
【功能说明】获取SACM_S480语音播放的状态。
【参数】无。
【返回值】当R1的值bit0=0,表示语音播放结束;bit0=1,表示语音在播放中。
5)【API格式】ASM:
CallF_FIQ_Service_SACM_S480
【功能说明】用作SACM_S480语音背景程序的中断服务子程序。
通过前台子程序(自动方式的SACM_S480_ServiceLoop及手动方式的SACM_S480_Decode)对语音资料进行解码,然后将其送入DAC通道播放。
【参数】无。
【返回值】无。
【备注】SACM_S480语音背景子程序只有汇编指令形式,且应将此子程序安置在TMA_FIQ中断源上。
2、声音识别模块:
API函数的格式、功能、参数、返回值、备注
初始化:
【API格式】C:
intBSR_DeleteSDGroup(0);
ASM:
F_BSR_DeleteSDGroup(0)
【功能说明】SRAM初始化。
【参数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。
【返回值】当SRAM擦除成功返回0,否则,返回-1。
训练部分:
1)【API格式】C:
intBSR_Train(intCommandID,intTraindMode);
ASM:
F_BSR_Train
【功能说明】训练函数。
【参数】
CommandID:
命令序号,范围从0x100到0x105,并且对于每组训练语句都是唯一的。
TraindMode:
训练次数,要求使用者在应用之前训练一或两遍:
BSR_TRAIN_ONCE:
要求训练一次。
BSR_TRAIN_TWICE要求训练两次。
【返回值】训练成功,返回0;没有声音返回-1;训练需要更多的语音数据来训练,返回-2;当环境太吵时,返回-3;当数据库满,返回-4;当两次输入命令不通,返回-5;当序号超出范围,返回-6。
【备注】
①在调用训练程序之前,确保识别器正确的初始化。
②训练次数是2时,则两次一定会有差异,所以一定要保证两次训练结果接近
③为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音
④调用函数后,等待2秒开始训练,每条命令只有1.3秒,也就是说,当训练命令超出1.3秒时,只有前1.3秒命令有效。
辨识部分:
1)【API格式】C:
voidBSR_InitRecognizer(intAudioSource)
ASM:
F_BSR_InitRecognizer
【功能说明】辨识器初始化。
【参数】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 linux 远程 控制 机器人 大学 论文