收藏 分销(赏)

毕业论文设计--嵌入式linux远程控制机器人.doc

上传人:可**** 文档编号:9871381 上传时间:2025-04-11 格式:DOC 页数:33 大小:3.28MB 下载积分:8 金币
下载 相关 举报
毕业论文设计--嵌入式linux远程控制机器人.doc_第1页
第1页 / 共33页
毕业论文设计--嵌入式linux远程控制机器人.doc_第2页
第2页 / 共33页


点击查看更多>>
资源描述
嵌入式Linux远程控制机器人 嵌入式Linux远程控制机器人 摘要 嵌入式系统诞生于微型机时代,经历了漫长的独立发展的单片机道路。究竟嵌入式系统是什么?嵌入式系统(embedded system),是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它早以融入我们的生活,除了我们日常生活可以看到的家电产品,工业与军事应用的独立产品之外(如PDA,工业控制器,通信产品等),许多大型电脑系统也是由许许多多小的嵌入式系统所组成。因此嵌入式系统是最接近人们生活的计算机系统。 关键词:嵌入式,单片机 Embedded Linux remote control robot ABSTRACT Embedded Systems was born in the microcomputer era, has a long road of independent development of the SCM. What is actually embedded systems ? Embedded Systems (embedded system), is applied as the center and computer technology, hardware and software can be cut, apply to the application of functionality, reliability, cost, size, power requirements are strictly dedicated computer system. It morning to integrate into our lives, in addition to our daily life can be seen in home appliances, industrial and military applications from independent products (such as PDA, industrial controllers, communications products, etc.), many large computer systems is also by the many - Small number of embedded system components. So embedded system is the closest computer systems to people’s lives. Key words: 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.2 Embest S3CEB2410评估板 5 4.硬件设计 6 4.1 电路方框图及说明 6 4.2各部分电路设计 6 5.软件设计 10 5.1系统结构设计 10 5.2模块设计 11 5.3 Qt/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)Embest S3CEV40开发板(ARM9) 3、所用的操作系统是:linux+QT 4、所用的软件工具是: (1)编程语言:C语言,汇编语言,C++ (2)开发环境:unSP IDE 1.16.1,北阳音频压缩软件,cygwin, linux redhat9.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块 Embest S3CEV40开发板 母板 1块 50X30 机器人 1个 IC 1个 L289N 无线模块 1对 RL1100 硬件开发部件 1组 电烙铁,锡,松香等 2需求分析 2.1功能需求 1、输入输出 输入:Embest S3CEV40开发板触摸屏,凌阳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、内置32K FLASH; ■可编程音频处理; ■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- Circuit Emulator); ■具有保密能力; ■具有WatchDog功能(由具体型号决定) 3.2 Embest S3CEB2410评估板 ■系统电源:采用+5V,2A直流变压器供电,稳压到+3.3V给CPU的I/O及外围器件供电,另外,开发板通过两个独立+1.8V稳压块给CPU核供电,可通过程序控制CPU切换到省电模式。 ■系统时钟:使用外部12MHz晶振,CPU内部倍频至200MHz+ ■Intel Strata Flash :E28F128J3A 16MB ■ATMEL公司 的2Mbyte NOR FLASH AT49BV1614A (兼容AMD公司2M/4Mbyte NOR FLASH AM29LV160DB/320DB) ■SDRAM:64Mbyte(32Mbyte×2) ■3通道UART串口接口,还可跳接为MODOM方式 ■2通道USB HOST和一通道USB DEVICE ■IrDA红外线收发器 ■Smart Media Card控制器 ■JTAG接口 ■RTC实时时钟 ■IIC总线EEPROM ■TFT /STN LCD接口 ■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、SPCE061A I/O图 为了要模拟机器人说话,因此要加入声音与闪光同步,即说活时头部灯同时闪亮。机器人头内部安装一个LED灯,当IOB1有输出时,LED灯闪亮。 2、AT89S51 I/O图 机器人下肢行走时是由一个直流电机驱动,而凌阳SPCE061A单片机的输出电流只有10mA左右,而直流电机的额定电流是大于1A,因此用一个L289IC来驱动直流电机,下面是接线图。 3、麦克录音输入及AGC电路 凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟可达到49M,具备运算速度高的优势等等,这为语音的播放、录放、合成及辨识提供了条件。本系统接入MIC电路如图示,MIC为录制语音辨识命令服务。 下图是简化的语音识别原理如图4.1,其中实线部分成为训练模块,虚线部分为识别模块。辨认特定的使用者即特定语者(Speaker Dependent,SD)模式,使用者可针对特定语者辨认词汇(可由使用者自行定义,如人名声控拨号),即在启动小车前,系统将会提示输入语音命令作简单快速的训练纪录,在这里输入“启动”“停止”“返回”和“模式切换”四个语音命令,通过使用者的声音特性来加以辨认。随着技术的成熟,进入语音适应阶段SA(speaker adaptation),使用者只要对于语音辨识核心,经过一段时间的口音训练后,即可拥有不错的辨识率。 图注:小五号宋体,置于图题之上 注:此图中的实线部分成为训练模块,虚线部分为识别模块 图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 用凌阳Compress Tool事先把所需要的语音信号录制好,本系统共包括十多个语音资源,整个语音信号经凌阳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(Speaker Dependent):是指语音样板由单个人训练, 也只能识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别。 (2)非特定发音人识别SI(Speaker Independent):是指语音样板由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。 图4.4 语音识别电路图 5.软件设计 5.1系统结构设计 1、系统开发模式 前后台模式:分为前台程序(任务级)和后台程序(事件处理级)。其中中断服务子程序(Interrupt Service Routine,ISR)负责处理异步事件属于前台程序(Foreground),而后台程序(Background)一般是一个无限的循环,负责管理整个嵌入式系统软硬件资源的分配,管理以及任务的调度,是一个管理调度程序。 2、系统总流程图 图5.1 系统总流程图 5.2模块设计 1、声音播放模块 凌阳的SPCE061A播放声音时,先将声音资源以队列的形式存放(顺序存放在32Kflash中),每个资源都有一个地址(编号),然后在调用播放子函数时进行中断声音取资源地址(FIQ快速中断),进行播放。 播放流程图 图5.2 播放流程图 播放中断程序图 图5.3 播放中断程序图 2、声音识别模块 SPCE061的特定语者辨识SD(Speaker Dependent),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.3 Qt/Embedded和Qtopia 介绍及其开发环境的建立   目前嵌入式Linux的主流GUI系统主要有MiniGUI、Microwindows、OpenGUI、Qt/Embedded,这些GUI在接口定义、体系结构、功能特性存在很大差别,采取的技术路线也有所不同。MiniGUI是建立在比较成熟的图形引擎之上,开发的重点在于窗口系统,其小巧精致并且尽量与Win32兼容。MicroWindows目前开发的重点在底层的图形引擎,窗口系统和图形接口方面功能比较欠缺,与Win32和X Windows窗口系统保持兼容,提供了相对完善的图形功能。OpenGUI基于一个用汇编实现的x86图形内核,提供了一个高层的C/C++图形/窗口接口,它的资源消耗小,可移植性差,不支持多进程。   Qt/Embedded是一个多平台的C++图形用户界面应用程序框架,其对象容易扩展,可移植性好,支持多个GUI平台的交互开发。现在,Qt/Embedded被广泛地应用于各种嵌入式产品和设备中,从消费电器(如智能手机、机顶盒)到工业控制设备(如医学成像设备、移动信息系统等)。因此我们选择Qt/Embedded为本系统的GUI。   Qt/Embedded采用帧缓存(framebuffer)作为底层图形接口。Qt/Embedded类库完全采用C++封装,并且有着丰富的控件资源以及较好的可移植性,大范围的Qt/Embedded API可用于多种开发项目。Qt/Embedded的实现结构如图5.6所示: 图5.6 Qt/Embedded的结构   Qt/Embedded的底层图形引擎基于framebuffer。 framebuffer是一种驱动程序接口,它将显示设备抽象为帧缓冲区。该驱动程序的设备文件一般是/dev/fb0、/dev/fb1等。对用户而言,它和/dev下的其他设备没有什么区别,用户可以把framebuffer看成一块内存,既可以从这块内存中读取数据,也可以向其中写入数据,而写操作立即反应在屏幕上 5.4用API函数 1、声音播放模块:API函数的格式、功能、参数、返回值、备注 (1)【API格式】C:int SACM_S480_Initial(int Init_Index) ASM:R1=[ Init_Index] Call F_ SACM_ S480_Initial 【功能说明】SACM_S480语音播放之前的初始化。 【参 数】Init_Index=0 表示手动方式;Init_Index=1 则表示自动方式。 【返 回 值】0:代表语音模块初始化失败 1:代表初始化成功。 【备 注】该函数用于对定时器、中断和DAC等的初始化。 (2)【API格式】C:void SACM_S480_ServiceLoop(void) ASM:Call F_ SACM_S480_ServiceLoop 【功能说明】从资源中获取SACM_S480语音资料,并将其填入解码队列中。 【参 数】无。 【返 回 值】无。 【备 注】播放语音文件中数据,当出现FF FF FFH数据时便停止播放。 (3)【API格式】 C:int SACM_S480_Play(int Speech_Index, int Channel, int Ramp_Set); ASM:R1=[ Speech _Index] R2=[ Channel] R3=[ Ramp_Set] Call SACM_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:unsigned int SACM_S480_Status(void); ASM:Call F_ SACM_S480_ Status [返回值]=R1 【功能说明】获取SACM_S480语音播放的状态。 【参 数】无。 【返 回 值】当R1的值 bit0=0,表示语音播放结束;bit0=1,表示语音在播放中。 5) 【 API格式】ASM:Call F_FIQ_Service_ SACM_S480 【功能说明】用作SACM_S480语音背景程序的中断服务子程序。通过前台子程序(自动方式的SACM_S480_ServiceLoop 及手动方式的SACM_S480_Decode)对语音资料进行解码,然后将其送入DAC通道播放。 【参 数】无。 【返 回 值】无。 【备 注】SACM_S480语音背景子程序只有汇编指令形式,且应将此子程序安置在TMA_FIQ中断源上。 2、声音识别模块:API函数的格式、功能、参数、返回值、备注 初始化: 【API格式】C: int BSR_DeleteSDGroup(0); ASM:F_BSR_DeleteSDGroup(0) 【功能说明】SRAM初始化。 【参 数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。 【返 回 值】当SRAM擦除成功返回0,否则,返回-1。 训练部分: 1) 【API格式】C:int BSR_Train (int CommandID, int TraindMode); 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: void BSR_InitRecognizer(int AudioSource) ASM:F_BSR_InitRecognizer 【功能说明】辨识器初始化。 【参 数】 定义语音输入来源。通过MIC语音输入还是LINE_IN电压模拟量输入。 【返 回 值】无。 2)【API格式】C:int BSR_GetResult(); ASM:F_ BSR_GetResult 【返回值】=R1 【功能说明】辨识中获取数据。 【参 数】 无。 【返 回 值】 当无命令识别出来时,返回0; 识别器停止未初始化或识别未激活返回-1; 当识别不合格时返回-2; 当识别出来时返回命令的序号。 【备 注】 该函数用于启动辨识,BSR_GetResult(); 3)【API格式】C: void BSR_StopRecognizer(void); ASM:F_ BSR_StopRecognizer 【功能说明】停止辨识。 【参 数】无。 【返 回 值】 无。 【备 注】该函数是用于停止识别,当调用此函数时,FIQ_TMA中断将关闭。 中断部分: 【API格式】 ASM:_BSR_InitRecognizer 【功能说明】 在中断中调用,并通过中断将语音信号送DAC通道播放。 【参 数】无。 【返 回 值】无。 【备 注】 ① 该函数在中断FIQ_TMA中调用 ② 当主程序调用BSR_InitRecognizer时,辨识器便打开8K采样率的FIQ_TMA中断并开始将采样的语音数据填入辨识器的数据队列中。 ③ 应用程序需要设置一下程序段在FIQ_TMA中: 5.4主要代码 1、主程序 int main() { int res; BSR_DeleteSDGroup(0); // 初始化存储器RAM PlayRespond(RSP_START); //播放开始训练的提示音0 //..........训练第一条命令....................... while(TrainWord(COMMAND_ONE_ID,5) != 0) ; //..........训练第二条命令....................... while(TrainWord(COMMAND_TWO_ID,6) != 0) ; //..........训练第三条命令....................... while(TrainWord(COMMAND_THREE_ID,7) != 0) ; //..........训练第四条命令....................... while(TrainWord(COMMAND_FOUR_ID,8) != 0) ; //..........训练第五条命令....................... while(TrainWord(COMMAND_FIVE_ID,9) != 0) ; //..........开始识别命令......................... BSR_InitRecognizer(BSR_MIC); //辨识器初始化 BSR_EnableCPUIndicator(); PlayRespond(RSP_SUCCESS); // 播放开始辨识的提示音 nightoff(); while(1) { res = BSR_GetResult(); if(res > 0) //识别出命令 { switch(res) { case COMMAND_ONE_ID: PlayRespond(RSP_CONFIRM); FLASH(); //机器人行走 break; case COMMAND_TWO_ID: PlayRespond(RSP_CONFIRM); nightoff(); //停止机器人 break; case COMMAND_THREE_ID: PlayRespond(RSP_REGARD);//问候程序 nightoff(); break; case COMMAND_FOUR_ID: PlayRespond(RSP_ENGLISH);//英语程序 nightoff(); break; case COMMAND_FIVE_ID: PlayRespond(RSP_INTRODUCE);//介绍程序 nightoff(); break; } } } } 2、中断程序 _FIQ: push r1,r4 to [sp] r1 = [P_INT_Ctrl] r1 &= 0x2000 jz ?notTimerA //当不为TIQ_TMA,则转 r1 = [__gIsStopRecog] jnz ?BSR_NotBusy //[__gIsStopRecog]为1则转至放音处理 call _BSR_FIQ_Routine //为0,调用辨识子程序 jmp ?BSR_Busy //返回中断 ?BSR_NotBusy: //放音处理 r2 = [_PlayFlag] jnz ?Play2000 //[_PlayFlag]为1则是播放2000 call F_FIQ_Service_SACM_S480; //为0,播放480 jmp ?BSR_Busy //返回中断 ?Play2000: //2000播放子程序 ?BSR_Busy: //返回中断 r1 = 0x2000 [P_INT_Clear] = r1 pop r1,r4 from [sp]; reti; ?notTimerA: r1 = 0x8800; [P_INT_Clear] = r1; pop r1,r4 from [sp]; reti; 3、训练程序 int TrainWord(int WordID, int RespondID) { int res; PlayRespond(RespondID); while(1) { res = BSR_Train(WordID,BSR_TRAIN_ONCE); //训练一次 if(res == 0) break; switch(res) { case -1: //没有检测出声音 PlayRespond(RSP_ERROR); return -1; case -3: //环境太吵 PlayRespond(RSP_ERROR); return -1; case -4: //数据库满 return -1; case -6: //序号错误 return -1; } } return 0; } 4、声音播放程序 void PlayRespond(int Result) { nighton(); BSR_StopRecognizer(); SACM_S480_Initial(1); SACM_S480_Play(Result, 3, 3); while((SACM_S480_Status()&0x0001) != 0) { SACM_S480_ServiceLoop(); ClearWatchDog(); } SACM_S480_Stop(); BSR_InitRecognizer(BSR_MIC); BSR_EnableCPUIndicator(); } 5.5编程软件与其他应用软件 (3)ARM开发软件Cygwin 图5.7 Cygwin (1) SPCE061A编程软件(u’nsp IDE) 图5.8 SPCE061A编程软件 (2) STC89C51开发软件KeilC 图5.9 STC89C51开发软件KeilC 6.系统测试 6.1系统平台测试 嵌入式系统的开发通常是采用“宿主机/目标机”方式(交叉开发环境),首先在性能高的宿主机编写程序,然后通过各种接口将交叉编译生成的目标代码传输并下载到目标机,因此测试时分成宿主机测试(程序测试)与目标机测试(性能等测试)。 6.2功能测试 功能 应所做出的放应 备注 后台发送命令 有数据返回 成功 播放声音功能 机器人会说话 成功 行走功能 机器人会行走 成功 串口通信功能 能发送数据到STC51开发板 成功 无线通信功能 机器人会做出相应的动作 有时候会做错动作 记忆功能 按照记忆去做动作 还没有实现 6.3环境测试 环境所在地 备注 宿舍 效果比较好 平坦少人操场 播放声音不清楚,行走时噪声太大影响其他命令 多人课室 播放声音不清楚而且有时会被其他人的声音把自己的声音覆盖掉,行走时噪声太大影响其他命令 6.4测试结果分析与问题解决方案 系统可控制距离长10米以内,环境要求高,信号差,遇到障碍物信号变弱。产生这些情况是通信硬件问题,需用RF1100代替PT2262和PT2272.太多层硬件造成处理速度较慢,解决方法是利用ARM控制通过RF1100控制机器人. 参考文献 [1]陈莉君,冯锐,牛欣源 译.深入理解Linux内核(第二版) .中国电力出版社. [2]田泽编著.ARM9嵌入式linux开发实验与实践.北京:航空航天大学出版社. [3]田泽编著.ARM9基础实验教程.北京:航空航天大学出版社. [4]SPCE061A单片机教材书. 北阳电子. [5]刘春伟,胡文明,金俊斌编著.NewMsg-RF1100 开发指南 V2.0. [6]Qt参考文档. [7]SPCE061A单片机教材书. 北阳电子. [8]王艳平编著. windows网络与通信程序设计.人民邮电出版社,2006. 致谢 本论文(设计)是在我的指导教师李军副教授的亲切关怀和悉心指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从题目的选择到最终完成,李军老师都始终给予我细心的指导和不懈的支持。 附录A 设备图片 ARM9开发板 STC89C51开发板图 PT2262与PT2272无线模块图 机器人结构图 27
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服