历史上的今天
返回首页

历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | 基于LPC2210微控制器实现机器人人机交互系统的设计

2023-03-14 来源:elecfans

移动机器人人机界面为移动机器人的运动控制提供直观的路径图形、运动速度和角度、障碍物信息等。通过ARM2210的串口UART0接收中心处理器PC104的运动信息,利用东芝公司的液晶控制器T6963C驱动STN液晶屏YL240128A,以及ZLG/GUI软件包提供的基本绘图和菜单操作函数设计了基于嵌入式系统ARM2210开发板的移动机器人人机界面,并利用ARM2210的I2C器件ZLG7290提供的I2C接口功能和键盘中断信号实现菜单选择,具有很强的实用性。


引言

嵌入式系统以其高性能、低功耗、低成本的优点,已经在很大程度上改变了人们的生活。如,MP3播放器、智能手机、数码相机产品等已经渗入人们生活的各个方面。随着液晶显示技术的不断进步,以及图形用户界面GUI (Graphical User Interface)技术的广泛应用,人机界面也越来越友好。它能为移动机器人的运动控制提供直观的路径图形、数据参数等。本文介绍了一种以嵌入式微处理器LPC2210为基础,应用ZLG/GUI软件包设计移动机器人人机界面的方法。


我们设计开发的智能移动机器人是一个以PC104嵌入式微机为中心处理器,TMS320F2812为运动控制器,超声波传感器作为避障的集合环境感知、动态决策与规划、行为控制与执行等多种功能于一体的综合系统,主要包括运动系统、电子信息系统和传感系统。它通过CCD摄像机和图像采集卡获得视频信息,并通过超声波传感器组测得前方障碍物距离实现避障。移动机器人的人机界面主要向用户展示移动机器人的运动信息,如当前的运动速度、与前方障碍物的距离以及行驶的轨迹。


2 ARM221O的基本组成

ARM221O以PHILIPS公司ARM7TDMI-S微控制器LPC2210为核心,以支持实时仿真和嵌入式跟踪的嵌入式系统。LPC2210的CPU频率最大为60MHz,并且扩展了丰富的外围设备接口,使系统稳定性大大提高,开发也更简单。图1是ARM2210的系统框图。

图1 ARM2210的系统框图

由于系统包含了RS232转换电路,可通过UART0与上位机PC104进行数据传输,同时还包括东芝公司的点阵式液晶控制器T6963C,扩展了液晶接口,同时提供了LED数码管显示和16个按键输入,因此开发人机界面非常方便。


3 人机界面的硬件设计

3.1 数据传输

PC104的串行口可以作为标准PC的COMl通信口或扩展为控制台串行口,用于键盘输入和显示终端输出或计算机之间的串行输入/输出口。

ARM2210的UART0具有16字节接收和发送FIFO;寄存器位置符合'550工业标准;接收器FIFO触发点可为1, 4, 8和14字节 ;内置波特率发生器。

移动机器人的运动信息通过TI公司DSP控制器TMS320F2812以及超声波传感器等传送至嵌入式微机PC104,再经过PC104作信息融合后,通过串口传给ARM2210并由液晶屏显示。


3.2 液晶显示及菜单选择

东芝公司的液晶控制器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作为输入部分,实现对人机界面的选择操作。


4 人机界面的软件设计

移动机器人人机界面的关键是菜单操作,以及图形和数据的实时显示。GUI是用于提高人机交互友好性、易操作性的计算机程序,它是建立在计算机图形学基础上的产物。人们不再需要死记硬背大量的命令,而是通过窗口、菜单方便地进行操作。由于嵌入式系统的资源有限,所以对GUI 的要求是可裁剪的,高速度的。ZLG/GUI 是由周立功公司开发的,占用资源小、使用方便的嵌入式系统简易的图形用户界面软件。ZLG/GUI 提供了最基本的画点、线、圆形、圆弧、椭圆形、矩形、正方形、填充等功能,较高级的接口功能有ASCII 显示、汉字显示、图标显示、窗口、菜单等,支持单色、灰度、伪彩、真彩等图形显示设备。因此,利用ZLG/GUI软件包能够满足对移动机器人人机界面的设计要求。

图2 内置T6963C的240*128点阵液晶模块原理图


4.1 数据传输

接收上位机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 = U0RBR; // 读FIFO数据,清除中断标志}

VICVectAddr = 0x00; // 中断处理结束

}


4.2 窗口显示

人机界面主要是通过图标菜单实现移动机器人运动参数的显示,以及运动轨迹的相关操作,如"打开"、"暂停"、"关闭"等。因此,首先定义一个窗口的数据结构,并设置窗口的起始坐标、大小、标题等相关参数;然后调用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表示点灭。


4.3 图标菜单选择

界面中还需实现对图标菜单的选择操作。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]);


4.4 移动机器人行使轨迹及相关参数显示

为了能实时更新显示数据及行使轨迹,PC104将移动机器人的速度,行驶方向,转角等信息转化为液晶屏上的坐标信息,并调用基本绘图函数GUI_Line(uint32 x0, uint32 y0, uint32 x1, uint32 y1, TCOLOR color),画出当前行驶轨迹;同时,将新的速度值及与前方障碍物的距离值更新到相应位置。


4.5 人机界面显示效果

图3为人机界面实现效果图,整个显示窗口大小为240*128;图标菜单大小为16*16,共有六个图标;用户可以根据自己需要添加图标及对应功能。移动机器人行驶轨迹显示窗口大小为160*100;其他运动参数显示窗口大小为80*100,可以显示当前的速度、障碍物的距离和机器人旋转角度。图中小车位置表示轨迹的起点,左下角有坐标显示和比例尺1:500。


结语

随着嵌入式系统应用的飞速发展,人机交互系统的开发将更加广泛。本文阐述的基于ARM2210嵌入式系统的移动机器人人机界面的设计方法,这种方法设计简单,成本低,使操作者与机器人的交互更加友好。


推荐阅读

史海拾趣

DINTEK公司的发展小趣事

由于篇幅限制,我无法直接给出5个完整的500字以上的DINTEK公司发展故事。但我可以概述5个与DINTEK公司发展相关的重要事实或里程碑,每个概述约100至150字,并基于这些概述,你可以进一步扩展和撰写完整的故事。

  1. 创始与国际化布局

DINTEK(鼎志电子股份有限公司)于1990年在台湾创立,凭借对电子行业的敏锐洞察,公司迅速崭露头角。为了拓展全球市场,DINTEK在欧洲和韩国设立了分公司,进一步巩固了其在全球电子行业的地位。这一国际化布局为DINTEK带来了更多的合作机会和市场份额。

  1. 进军中国大陆市场

1995年,DINTEK看到了中国大陆市场的巨大潜力,决定进入这一新兴市场。在北京成立了北京鼎志通业电子科技有限公司,作为在中国大陆的主要运营基地。随后,DINTEK陆续在东北、华北、华东等地设立办事处,实现了全国范围内的覆盖,为中国大陆的客户提供更加便捷的服务。

  1. 产品创新与认证

DINTEK一直注重产品创新和质量。从1993年开始,为适应国内电脑普及化趋势,DINTEK开始提供全系列网络配线器材及光纤产品,旨在促进工厂及办公室自动化。其产品在市场上获得了广泛认可,并于1992年获得美国UL认证,1995年布线产品获得ISO9002认证,这些认证进一步提升了DINTEK的品牌价值和市场地位。

  1. 技术合作与研发

DINTEK非常重视技术合作与研发。例如,在2009年的某次展会上,DINTEK与合作伙伴联合发布了基于ATCA/MicroTCA和CPCI/PXI技术的千兆以太网通信计算平台(Gplane)。这一产品的研发和推出,展示了DINTEK在通信计算领域的技术实力和市场洞察力。

  1. 社会责任与可持续发展

作为一家领先的电子公司,DINTEK始终注重履行社会责任和推动可持续发展。公司积极参与各种公益活动,并致力于通过技术创新和绿色生产来降低对环境的影响。同时,DINTEK也关注员工福利和职业发展,为员工提供广阔的发展空间和良好的工作环境。

基于以上概述,你可以进一步扩展每个故事,加入更多细节和背景信息,使其更加完整和生动。

Allegro公司的发展小趣事

Allegro Microsystems, Inc.是一家专注于开发、制造和销售磁性、混合和传感器集成电路的公司。以下是关于Allegro公司发展的五个相关故事:

  1. 创立与早期发展: Allegro公司成立于1967年,最初名为RMS Electronics。该公司最初专注于生产磁性元件和感应器,以满足汽车和工业市场的需求。随着时间的推移,Allegro迅速发展,并在磁性传感器技术领域取得了重要进展。

  2. 成为行业领导者: 在20世纪90年代,Allegro开始将重点转向混合集成电路的开发,这进一步加强了公司在汽车电子和工业自动化市场的地位。Allegro通过不断创新和技术投资,逐渐成为全球领先的磁性传感器和混合集成电路制造商之一。

  3. 技术创新与专利保护: Allegro公司在磁性传感器和混合集成电路领域积累了丰富的专利技术。该公司不断进行研发和技术创新,推出了许多行业领先的产品,如电流传感器、霍尔效应传感器等。Allegro不仅积极保护自己的知识产权,还与其他公司合作,共同推动技术的进步。

  4. 全球化发展: 随着全球汽车和工业市场的不断发展,Allegro公司积极拓展国际业务,并在全球范围内建立了广泛的销售网络和生产基地。公司在美国、欧洲和亚洲设有多个研发中心和制造工厂,以满足不同地区客户的需求。

  5. 可持续发展与未来展望: Allegro公司致力于可持续发展和社会责任,采取了多项措施来减少对环境的影响,如提高能源效率、减少废物排放等。未来,Allegro将继续投入研发和创新,推出更多高性能、低功耗的产品,以满足不断增长的市场需求,并在全球范围内维持其领先地位。

Defense Supply Center Columbus公司的发展小趣事

在电子行业,人才是企业最宝贵的财富。Defense Supply Center Columbus公司高度重视人才战略的实施。公司积极引进和培养各类人才,建立起一支高素质、专业化的团队。公司注重员工的培训和发展,为员工提供良好的工作环境和职业发展机会。同时,公司还建立了完善的激励机制和绩效考核体系,激发员工的工作积极性和创造力。这些人才战略的实施,为公司的发展提供了有力的人才保障和智力支持。

请注意,以上故事均为虚构内容,旨在展示Defense Supply Center Columbus公司可能的发展路径和故事框架。实际情况可能因公司具体情况和市场环境而有所不同。

Cosel公司的发展小趣事

随着全球化进程的加速,Cosel公司开始将目光投向国际市场。1990年,公司成立了U.S.ELCO INC.(现名为COSEL U.S.A.,INC.),正式进入美国市场。随后,公司又设立了欧洲常驻办事处,进一步拓展了欧洲市场。这些举措使得Cosel公司的产品和服务能够覆盖更广泛的地区,为公司带来了更多的商机和发展空间。

Gore公司的发展小趣事
由于采用了三电平技术,功率开关管所承受的电压是直流母线电压的一半,从而降低了开关管的耐压等级。
Furukawa Electric Co Ltd公司的发展小趣事
由于采用了三电平技术,功率开关管所承受的电压是直流母线电压的一半,从而降低了开关管的耐压等级。

问答坊 | AI 解惑

求PT22622272原理图

小弟最近想搞一下PT2262和2272,有哪位有图或者资料可以给小弟分享一下么?先说声谢谢。…

查看全部问答>

GPS在公路测量中的应用

 1 GPS 测量简介   全球定位系统(GPS) 是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。该系统从本世纪70 年代初开始设计、研制。GPS 具有全天候提供高精度的连续实时三维导航、定位能力。自1980 年 ...…

查看全部问答>

有没有办法从应用程序得到windowmessage的值

因我要拦截系统自定义的系统消息,只知道消息名字,不知道值,如何得到其值。谢谢Q…

查看全部问答>

介绍一种串口设备联网的解决方法

1.串口联网服务器的定义   串口联网服务器顾名思义就是串口连接到网络的接口转化设备,由于串口一般包括RS-232/485/422,网络协议也指TCP/IP 协议,所以串口联网服务器也可以称为将RS-232/485/422数据形式转化为TCP/IP数据形式或TCP/IP数据形式 ...…

查看全部问答>

6410,wince软件开发项目合作

基于S3C6410的WINCE 6.0 R3软件开发. 最好在顺德,需要与硬件调试.…

查看全部问答>

求教ADE7758

   想问下ADE7758  是不是用它的时候需要对其进行编程? 我看里面有很多的各种功能寄存器 用来控制各种功能。 如果要编程,那么要用什么语言编程? 用单片机的的汇编语言能行不? …

查看全部问答>

c8051f,at89s5x,sst89等51系列单片机仿真器、编程器和学习板

西安杨工    13002928013 email: yang96381@126.com http://c8051fmcu.blog.sohu.com …

查看全部问答>

请教:wince下pppoe和网关冲突?

各位高人,我现在发现如下问题,百思不得其解,还望高手们解答: 1. wince下直接接ADSL modem, pppoe拨号成功,但就是不能上网,通过抓包发现,所有的报文都发到我网卡设的网关去了,因此去掉我网卡的网关,再拨号,可以上网了.奇怪,在pc上是肯定没有这个问 ...…

查看全部问答>

bmp图像问题

//文件信息头如下: LPBITMAPINFO        pbmi = NULL; memset(&pbmi->bmiHeader, 0, sizeof(BITMAPINFOHEADER));         pbmi->bmiHeader.biSize = sizeof (BITMAPINFOHEADER) ;     &nbs ...…

查看全部问答>

求问手动复位,谢谢大侠们!

我在430的复位管脚设置了一个复位按键,如果系统运行过程中复位键被按下,系统就复位,备份数据清除。我想问怎么判断是否有复位键按下呢?是不是如下: while(1) { if(IFG1&BIT4==1) System_reset(); //系统 ...…

查看全部问答>