阮文进
【摘要】 随着嵌入式技术的飞速发展,嵌入式系统已经在各个领域有广泛的应用。本设计采用嵌入式ARM9模块化设计实现智能小车多功能控制。在三星S3C2440 ARM芯片上移植嵌入式Linux操作系统,修改驱动程序来实现小车的控制。该小车主要功能模块有:主控模块,直流电机驱动模块,图像采集处理模块,数据传输模块,超声波测距模块,红外避障模块,舵机模块等组成。
【关键词】 嵌入式 智能小车 ARM9 S3C2440
一、引言
现代的电子信息不断发展,智能移动机器人已经成为热门,是现在自动化发展趋势。本文设计出一种基于 ARM9的智能小车控制系统,具有直流电机控制效率高,有友好的人机界面简化了控制和开发过程,模块化设计方案便于智能小车的功能扩展和升级。系统采用无线控制智能小车,通过Android手机以WiFi通信方式控制小车模型的行驶方式,小车还装监控摄像头,超声波模块实现无线监控,自动行驶。
二、嵌入式智能小车整体功能
智能小车有如下功能:小车底盘采用四轮结构,直流电机控制小车行驶,舵机控制摄像头旋转方向,红外避障功能,超声波测距功能,图像采集,压缩,传输功能,摄像头拍到的视频进行压缩处理并通过WiFi模块传输到手机上,手机也可以拍照并把图片保存到手机中。
三、嵌入式智能小车控制系统设计
1、主控模块。控制系统的主控制器采用三星公司 S3C2440为处理器[3],主频为400MHZ,S3C2440采用ARM920T内核。主控制器包括核心板和底板,核心板上有S3C2440A、SDRAM存储电路、Nor Flash、Nand Flash,系统时钟,电源等。底板包括一些扩展电路模块如:串口,网口,usb接口等。主控模块是智能小车的控制中枢,所有的应用程序、智能系统、硬件驱动都是在这个开发板上开发的。它负责直流电动机调速控制信号,超声波测距信号,舵机旋转控制,图像采集,处理与无线通信信号等,从而实现各功能模块的协调控制。
2、外设控制模块。1)电机驱动模块。采用H桥电路来驱动直流电动机,以L298N芯片为主的电机驱动电路。对电机的调速采用PWM调速方法配合桥式L298N电路实现直流电机调速非常简单,范围大。通过开发板的GPIO接收输入信号,改变芯片控制端的电平,即可对两个左右电机进行正反转,停止等操作从而实现小车的前进,后退,左转,右转,停止功能。2)小车底盘。本智能小车为了实现前进,后退,左转,右转,爬波等功能所以采用路虎5的底盘,配有两个WD电动机和两条履带。底盘参数如下:尺寸:245mm*225mm*74mm(长*宽*高);电机电压:7.2V;工作电流:160-180 mA;最大速度:30 cm/s;行驶速度:1Km/hr;爬坡能力:> 30°等。3)舵机。为了摄像头能自由转动以便观察更多的区域,本系统采用两个舵机分别是辉盛MG955和辉盛SG90。它是一种位置伺服的驱动器,具有力矩大和工作速度快可以让摄像头的角度不断变化并能够保持控制系统。4)电源电路。电源电路是给小车上的所有元器件和开发板提供电压的,在驱动电路板上,使用7.4V1000MA 的锂电池作为电源,芯片 LM2596s 给 GEC2440发开板供电,LM7805 给舵机和超声波供电。
3、避障监测模块。智能小车超声波模块采用 三个 HCSR04超声波测距模块,可提供 2cm-400cm的非接触式距离感测功能;模块包括超声波发射器,接收器与控制电路。超声波测距借助于超声脉冲回波渡越时间法测距实现的。采用IO口TRIG触发测距,给最少10ms高电平。模块自动发送8个40khz的方波,自动检测是否有信号返回,有返回输出一个高电平。传感寄到目标物体的距离 D 可以从传感器发出到接收经历时间 T和超声波空气的传播速度C算出来:D= TC /2。小车有及时的办法躲避障碍物从而保证小车行驶安全。
4、图像采集处理模块。运用S3C2440 的GPIO接口编程通过CMOS摄像头发送指令采集图像,通过压缩,裁剪处理以指定的格式下保存到指定的文件夹中,并利用无线WiFi传输到远程缩主机上实现远程监控。通过S3C2440的GPIO接口控制ov9650摄像头采集图像,因为摄像头采集到的是16bit的rgb流,libjpeg库提供的压缩程序将其压缩并保存成jpg文件,可是该库只能压缩24位的,于是先将RGB565转换成RGB24再调用该库的压缩函数压缩成所需的jpeg图片,最后保存无线通讯终端,实现远程访问。
四、智能小车控制软件设计
4.1 Linux系统移植及文件系统制作
首先搭建Linux嵌入式系统开发环境;要运行在一块开发板上的 Bootloader 程序能够运行在另一块开发板上,需要修改 Bootloader 的源程序以适应自己的开发板,所以要进行Bootloader引导程序的配置和移植,通过Bootloader 来初始化硬件如:内存,flash,网卡,时钟等;内核,即操作系统。它为底层的可编程部件提供服务,为上层应用程序提供执行环境。把linux-2.6 内核进行配置核移植 引导内核启动,初始化环境,把系统集成的LCD,网卡,串中,Flash集成到镜像文件zImage 或uImage。最后进行文件系统设计,制作基本系统:bash, init, busybox,基本工具,基本库,基本配置文件和自定义或需要移植的相关文件。
4.2驱动程序开发
驱动是用来控制底层硬件工作,并为上层(应用程序提供相应的接口,可通过调用这些接口实现对底层硬件的一系列操作)。主要的驱动程序要设计有:1、car_driver.ko 是对小车的行走方面进行操作的驱动;2、GEC2440_pwm.ko 是对小车上的舵机云台进行控制的驱动;3、Csb.ko 是用来测试小车与障碍物之间距离的超声波模块驱动;4、GEC2440_ camera.ko 主要是用来采集摄像头的原始图像数据的驱动;5、rt3070ap.ko rtnet3070ap.ko rtutil3070ap.ko 这三个. ko 文件为无线网卡的驱动。
4.3应用程序开发
下位机ARM部分先启动,主要是负责接收客户端发送过来的命令,根据命令进行一系列的动作控制,并可以在不同的用户之间进行切换。自定义的C主控程序开发部分实现:接收上位机发送过来的命令,行走控制,云台转动,视频采集,避障控制,数据处理,提供网络访问服务,手动控制模式和自动避障模式切换,并显示在UI屏幕上。视频服务程序部分通过移植开源源码包mjpg-streamer来实现数据发送,把摄像头的数据传递到手机端;上位机手机作为客户端通过Android程序开发实现远程控制小车的行进方向,获取视频数据。采用TCP 网络传输协议,服务器和客户端的数据传输。网络编程部分主要包括阻塞I/O处理,多路复用,信号驱动套接字socket等内容。
五、智能小车运行检测
小车在实验室条件下对整个系统进行测试,首先配置手机WiFi的IP地址和网关,打开设置好的Android软件进入主界面再进入小车控制界面。智能小车有两种驾驶模式:手动驾驶模式通过触摸手机屏幕上显示的图标来控制小车前进,后退,左转,右转,停止功能,摄像头旋转,抓拍图片和接换到自动模式,也可以通过手机的重力感应来控制手机的行驶方向;自动驾驶模式通过超声波模块来测距并有及时的策略来躲避障碍,保证小车准确行驶。通过测试智能小车运行平稳,实时性好,完成任务准确。
六、结论
该智能小车采用手机重力感应控制使得小车和人交互带来方便,高清度的超声波模块保证系统行驶安全。采用功能强大的 ARM嵌入式系统与智能控制,嵌入式对智能小车的控制系统进行模块化设计,有利于小车功能的进一步升级和改进,提高了系统设计效率。本系统可以作为移动机器人可以应用作为智能玩具,竞赛机器人,侦探小车。
参 考 文 献
[1] 李磊,叶涛,谭民,等. 移动机器人技术研究 现状与未来[J].机器人,2002
[2] 鲁涛,原魁,朱海兵. 智能轮椅研究现状及发展趋势[J].机器人技术与应用,2008