ARM2210的智能移动呆板大家机界面计划
发布日期:2011-04-21
择要: 移动呆板大家机界面为移动呆板人的活动控制提供直观的路径图形、活动速率和角度、停滞物信息等。通过ARM2210的串口UART0吸取中间处理惩罚器PC104的活动信息,利用东芝公司的液晶控制器T6963C驱动STN液晶屏YL240128A,以及ZLG/GUI软件包提供的根本画图和菜单操纵函数计划了基于嵌入式体系ARM2210开辟板的移动呆板大家机界面,并利用ARM2210的I2C器件ZLG7290提供的I2C接口成果和键盘停止信号实现菜单选择,具有很强的实用性。
小序
嵌入式体系以其高性能、低功耗、低本钱的好处,已经在很大程度上变化了人们的生存。如,MP3播放器、智能手机、数码相机产品等已经渗入渗出人们生存的各个方面。随着液晶表现技能的不绝进步,以及图形用户界面GUI (Graphical User Interface)技能的遍及应用,人机界面也越来越友爱。它能为移动呆板人的活动控制提供直观的路径图形、数据参数等。本文先容了一种以嵌入衰落处理惩罚器LPC2210为底子,应用ZLG/GUI软件包计划移动呆板大家机界面的要领。
我们计划开辟的智能移动呆板人是一个以PC104嵌入衰落机为中间处理惩罚器, TMS320F2812为活动控制器,超声波传感器作为避障的聚集环境感知、动态决定计划与筹划、举动控制与实行等多种成果于一体的综合体系,重要包括活动体系、电子信息体系和传感体系。它通过CCD摄像机和图像征求卡得到视频信息,并通过超声波传感器组测得火线停滞物间隔实现避障。移动呆板人的人机界面重要向用户展示移动呆板人的活动信息,如当前的活动速率、与火线停滞物的间隔以及行驶的轨迹。
图1 ARM2210的体系框图
ARM221O的根本构成
ARM221O以PHILIPS公司ARM7TDMI-S微控制器LPC2210为内核,以支持及时仿真和嵌入式跟踪的嵌入式体系。LPC2210的CPU频率最大为60MHz,并且扩展了丰富的外围配置接口,使体系稳固性大大进步,开辟也更大略。图1是ARM2210的体系框图。
由于该体系包括了RS232转换电路,可通过UART0与上位机PC104举行数据传输,同时还包括东芝公司的点阵式液晶控制器T6963C,扩展了液晶接口,同时提供了LED数码管表现和16个按键输入,因此开辟人机界面非常方便。
人机界面的硬件计划
数据传输
PC104的串行口可以作为标准PC的COMl通讯口或扩展为控制外观串行口,用于键盘输入和表现终端输出或谋略机之间的串行输入/输出口。
ARM2210的UART0具有16字节吸取和发送FIFO;寄存器位置切合'550产业标准;吸取器FIFO触发点可为1, 4, 8和14字节 ;内置波特率产生器 。
移动呆板人的活动信息通过TI公司DSP控制器TMS320F2812以及超声波传感器等发送至嵌入衰落机PC104,再颠末PC104作信息融合后,通过串口传给ARM2210并由液晶屏表现。
液晶表现及菜单选择
东芝公司的液晶控制器T6963C具有独特的硬件初始化设置成果,最大驱动点阵液晶为单色640*128(单屏),支持图形和文本单独表现和殽杂表现,并具有字符产生器,能餍足对移动呆板大家机界面的表现请求。图2为内置T6963C的240*128位图形液晶模块原理图。
别的, ARM2210体系中配备了I2C器件ZLG7290以及16个按键。ZLG7290提供了I2C串行接口和按键停止信号,方便与处理惩罚器连接;并且能驱动8位共阴数码管或64只独立的LED和64个按键,8个成果键可检测任一键的连击次数。
本体系选用点像素为240*128点、黄绿表现的STN液晶屏YL240128A作为人机界面表现屏;用ARM2210体系16个按键中的S11、S12、S13作为输入部分,实现对人机界面的选择操纵。
人机界面的软件计划
移动呆板大家机界面的关键是菜单操纵,以及图形和数据的及时表现。GUI是用于进步人机交互友爱性、易操纵性的谋略机步伐,它是创建在谋略机图形学底子上的产品。人们不再必要去世记硬背大量的下令,而是通过窗口、菜单方便地举行操纵。由于嵌入式体系的资源有限,以是对GUI 的请求是可裁剪的,高速率的。ZLG/GUI 是由周建功公司开辟的,占用资源小、利用方便的嵌入式体系浅显的图形用户界面软件。ZLG/GUI 提供了最根本的画点、线、圆形、圆弧、椭圆形、矩形、正方形、添补等成果,较高级的接口成果有ASCII 表现、汉字表现、图标表现、窗口、菜单等,支持单色、灰度、伪彩、真彩等图形表现配置。因此,利用ZLG/GUI软件包可以或许餍足对移动呆板大家机界面的计划请求。
图2 内置T6963C的240*128点阵液晶模块原理图
数据传输
吸取上位机PC104发送的数据时,使能UART0的FIFO举行数据发送/吸取,吸取采取停止处理惩罚方法。此中,UART0的串口模式和数据布局设置为:通讯波特率9600,8位数据位,1位克制位,无奇偶校验。其重要步伐如下:
/*定义串口模式及数据布局*/
typedef struct Uart0Mode
{ uint8 datb; // 字长度
uint8 stpb; // 克制位
uint8 parity; // 奇偶校验位
} UART0MODE;
/*初始化串口*/
uart0_set.datb= 8; // 8位数据位
uart0_set.stpb = 1; // 1位克制位
uart0_set.parity = 0; // 无奇偶校验UART0_Ini(9600, uart0_set); // 初始化串口模式
/*串口UART0吸取停止*/
void __irq IRQ_UART0(void)
{ uint8 i;
if( 0x04==(U0IIR&0x0F) ) rcv_new = 1; // 置新数据标记
for(i=0; i<8; i++)
{ rcv_buf[i] = U0RBR; // 读FIFO数据,打扫停止标记}
VICVectAddr = 0x00; // 停止处理惩罚结束
}
窗口表现
人机界面重要是通过图标菜单实现移动呆板人活动参数的表现,以及活动轨迹的相干操纵,如"打开"、"停息"、"封闭"等。因此,起首定义一个窗口的数据布局,并设置窗口的肇始坐标、大小、标题等相干参数;然后调用GUI_WindowsDraw()输出表现窗口
/* 设置主窗口并表现输出 */
mainwindows.x = 0;
mainwindows.y = 0;
mainwindows.with = 240;
mainwindows.hight = 128;
mainwindows.title = (uint8 *) "Mobile Robot Interface";
mainwindows.state = NULL;
GUI_WindowsDraw(&mainwindows); // 绘制主窗口
图标菜单也必要定义相干的数据布局,此中图标数据和笔墨表现可以通过字模软件转化为数据。如映射"打开"图标转化为数据:
uint8 const menuico1[]={
0x00,0x70,0x00,0x1C,0x00,0x12,0x1C,0x1A,
0x17,0x0A,0x21,0xF1,0x20,0x1A,0x4F,0xFE,
0x58,0x02,0x50,0x02,0x60,0x06,0x60,0x04,
0x60,0x04,0x40,0x08,0x7F,0xF8,0x00,0x00,
}; /*;图标"打开";宽×高(像素) : 16×16*/
然后,将每一个图标菜单项的表现坐标地点、图标的数据指针、映射的办事函数等举行设置后,即可调用GUI_MenuIcoDraw()实现表现输出。
mainmenu[0].icodat = (uint8 *) menuico1;
mainmenu[0].title = (uint8 *) "open";
mainmenu[0].Function = (void(*)())Runopen;
别的,主步伐必要先调用GUI_SetColor(1,0)函数来设置前风景及配风景。1表现点表现,0表现点灭。
图标菜单选择
界面中还需实现对图标菜单的选择操纵。I2C器件ZLG7290提供了I2C接口成果和键盘停止信号。I2C总线是Philips推出的芯片间串行传输总线,它以2根连接实现了美满的全双工同步数据发送,可以方便的构成多机体系和外围器件扩展体系。I2C总线采取了器件地点的硬件设置要领,通过软件寻址完全克制了器件的片选线寻址要领,从而使硬件体系具有最大略而机动的扩展要领。I2C操纵模式分为主模式I2C和从模式I2C,分别映射LPC2210作为主机和从机。
本文采取主模式I2C发送吸取数据,从而控制三个按键S11、S12、S13的扫描并检测其连击次数。步伐中先设置好默认菜单,再调用函数ZLG7290_GetKey()读取被按下的键值。ZLG7290_GetKey()函数通过调用IRcvStr (ZLG7290,1,&rece,1),直接读取器件ZLG7290上的按键值。若S11被按下,表现指向上一个图标菜单;若S12被按下,表现选择当前的图标成果;若S13被按下,表现指向下一个图标菜单。
key = ZLG7290_GetKey();
if(key==KEY_OK) break; // 点击OK 键选择
if(key==KEY_NEXT)
{ mainmenu[select].state = 0; // 取消上一选择
GUI_MenuIcoDraw(&mainmenu [select]);
select++; // 指向下一菜单
if(select>2) select=0;
mainmenu[select].state = 1;
GUI_MenuIcoDraw(&mainmenu [select]);
}
if(key==KEY_BACK)
{ mainmenu[select].state = 0; // 取消上一选择
GUI_MenuIcoDraw(&mainmenu [select]);
if(select==0) select=2;
else select--; // 指向下一菜单
mainmenu[select].state = 1;
GUI_MenuIcoDraw(&mainmenu [select]);
移动呆板人利用轨迹及相干参数表现
为了能及时更新表现数据及利用轨迹,PC104将移动呆板人的速率,行驶方向,转角等信息转化为液晶屏上的坐标信息,并调用根本画图函数GUI_Line(uint32 x0, uint32 y0, uint32 x1, uint32 y1, TCOLOR color),画出当前行驶轨迹;同时,将新的速率值及与火线停滞物的间隔值更新到相应位置。
人机界面表现结果
图3为人机界面实现结果图,整个表现窗口大小为240*128;图标菜单大小为16*16,共有六个图标;用户可以根据本身必要添加图标及映射成果。移动呆板人行驶轨迹表现窗口大小为160*100;其他活动参数表现窗口大小为80*100,可以表现当前的速率、停滞物的间隔和呆板人旋转角度。图中小车位置表现轨迹的出发点,左下角有坐标表现和比例尺1:500。
图3 人机界面实现结果图
结语
随着嵌入式体系应用的飞速生长,人机交互体系的开辟将越发遍及。本文叙述的基于ARM2210嵌入式体系的移动呆板大家机界面的计划要领,这种要领计划大略,本钱低,使操纵者与呆板人的交互越发友爱。
参考文献:
1. 周建功等,ARM与嵌入式体系底子教程,广州周建功单片机生长有限公司,2004.11
2. 周建功, ARM微控制器底子与实战,北京航天航空大学出版社,2003
3. 周建功等, ARM嵌入式体系实行教程,北京航天航空大学出版社,2004.11