基于arm智能家居

2024-10-01

基于arm智能家居(通用8篇)

1.基于arm智能家居 篇一

基于ARM的实时测控系统开发平台

摘要:基于ARM的实时测控系统开发平台,是将高性能、低功耗32bit RISC结构的ARM内核处理器与开放源码的实时嵌入式多任务操作系统ìC/OS-Ⅱ相结合,并通过Interniche公司的嵌入式TCP/IP协议栈为平台添加网络传输功能,构建一个新型的实时测控系统开发平台。为开发各种智能化、小型化现代测控系统提供可重用、高性能、图形化、网络化软硬件基础平台和高效的开发模式。充分利用高级语言的优势在多任务操作系统的基础上,为平台添加友好的人机交互方式、图形化界面、网络、各种通信接口驱动,使其平台具备现代嵌入式系统的特征。

关键词:实时测控系统 ARM ìC/OS-II 嵌入式实时操作系统 嵌入式TCP/IP协议栈 JTAG在线调试 集成开发环境

国内测控系统开发大多是几个人以小组的形式根据不同的项目组织在一起,由于缺乏一个稳定工作的硬件基础,整个开发工作的重点大都放在调试硬件故障上。首先,所有项目的开发几乎全部使用汇编语言,严重影响了程序的可读性和可移植性,更换不同的处理器就意味着一切从头开始,就连使用相同处理器的不同项目组之间的程序重用也很困难;而对于嵌入式应用系统应着重解决的实际问题往往无暇顾及,非常不利于我国嵌入式应用水平的提高。其次,测控系统通信接口种类比较少, 多为传统的RS232、RS485接口,数据交换速度慢,已经不能满足日益增长的数据传输需求。另外,传统的8位单片机已经越来越不能适应日渐复杂的应用需求;友好的交互界面、网络互连功能、智能化的软件、实时的数据处理几乎成了现代实时测控系统的共同需求。

我们开发了基于ARM内核处理器的NetCARM7开发板,通过在嵌入式实时多任务操作系统ìC/OS-Ⅱ上加入Interniche公司的`嵌入式TCP/IP协议栈实现了一个网络化、智能化、高性能的现代实时测控系统开发平台。此外,通过JTAG在线调试工具BDI2000 RDI for ARM和集成开发环境IAR EW的结合,大大提高了程序调试的效率。

1平台设计

ARM内核处理器具有高性能、低功耗、低成本、低开发难度等一系列优点,是测控系统由8位机升级到32位机的理想选择。此外,ARM7、ARM9、ARM10、XScale的指令兼容,已有的软件资源和开发经验不会由于升级到更高性能的处理器而受到巨大的损失。

(1)平台的硬件基础

我们开发了NetCARM7开发板(处理器为Atmel公司的ARM7TDMI内核的AT91M40800,主频可达40 MHz)作为中低端实时测控系统开发平台的硬件基础。AT91M40800性能已经可以满足一般测控系统的各种需求,功能简单易用,双面板就可以形成稳定硬件设计,大大降低了开发成本。板上将处理器的所有引脚引出,可以根据实际的项目需求灵活地扩展出新的应用;集成了多达2 MB的 SRAM,保证用户代码可以获得最高的性能。1 MB Flash ROM用来满足绝大多数项目的需求。板上预留了JTAG端口,通过Abatron公司的BDI在线仿真器和IAR公司的集成开发环境Embeded Workbench for ARM 可以实现各种程序的在线

[1][2][3][4][5]

2.基于arm智能家居 篇二

随着科学技术的进步,人们对生活质量也提出了越来越高的要求,舒适、合理、便捷和安全的家居环境正逐步被大众所青睐。视频监控作为家居安防的重要组成部分,也逐步受到人们的重视。这里设计采用ARM处理器嵌入Linux操作系统的方法实现家居视频监控。Linux操作系统作为嵌入式系统的新宠以其开源特点非常适合面向开发,而ARM核凭借其较高的指令和数据处理能力更是吸引了众多研发人员的眼球,二者的结合为智能家居视频监控提供了一个崭新的发展方向。

1 智能家居系统的总体架构

智能家居系统就是利用计算机技术、数字技术、网络通信技术和综合布线技术,将与家庭生活密切相关的家电控制系统、防盗报警系统、网络信息服务系统等通过家庭网络有机结合起来,从而给用户带来最大程度的高效、便利、舒适与安全。

目前比较流行的智能家居系统由四大部分组成:家居安防系统、家居通讯系统、家居家电自动化控制系统和家居音视频系统。图1给出了一个简单的智能家居系统架构。

智能家居系统中我们可以通过任意网络设备访问Web服务器的家庭网关以监控家用电器、报警设备和摄像头等设备的运行情况来实现住家的智能化。在现阶段智能家居起步时期,家居设计的时候往往把音视频系统放在很重要的位置,这里介绍一种用于居家的视频监控方法。

2 视频监控系统的架构

鉴于家居系统的结构特点,选用集软硬件于一体,具有软件代码小﹑高度自动化﹑响应速度快等特点的嵌入式系统。设计采用ARM(Advanced RISC Machines)核嵌入Linux操作系统的方法实现。系统主要由嵌入式S3C2410处理器﹑相关支撑硬件﹑USB摄像头﹑嵌入式操作系统Linux及应用软件等部分组成,该系统是可以独立工作的"器件"。

2.1 系统的硬件结构

系统硬件部分主要包括S3C2410处理器、储存器和外围电路,其结构框架如图2所示。

基于ARM9的嵌入式S3C2410处理器是整个系统的核心,它提供了丰富的片内资源,支持Linux操作系统,并能完成整个系统的调度工作。CPU内置USB控制器,USB摄像头将采集到的图像通过USB接口送与S3C2410进行处理,以等待发送。网络芯片DM9000有成熟的Linux驱动程序支持,其100Mb/s以太网接口,以传输速率快为设计首选。

2.2 构建基于S3C2410的嵌入式Linux系统

Linux是一款可以免费使用,且源码开放以便开发人员随意裁剪,且具有稳定性能的操作系统。宿主机选用Red Hat公司的Linux9.0服务器版,并在其上构建嵌入式Linux开发平台需要的交叉编译环境。

在S3C2410上搭建嵌入式Linux软件平台需要完成引导加载程序Boot loader的移植;Linux操作系统内核的移植和包含应用程序的文件系统移植。

Boot Loader是在操作系统内核运行之前执行的一段小程序。Linux内核有自己的结构体系,智能家居系统的Linux内核由标准Linux内核裁剪而来。设计直接通过系统调用访问Linux的内核资源,编译内核时加入USB摄像头Webeye2000主芯片OV511的驱动和以太网控制芯片DM9000的驱动,文件系统选用Ramdisk技术。

3 视频监控系统的实现

3.1 Video4Linux程序

Video4Linux(简称V4L)是Linux中关于视频设备的内核驱动,它针对视频设备的应用程序编程提供一系列接口函数。对于USB接口摄像头,其驱动程序中提供基本的I/O操作接口函数open、read、write、close等。

3.2 网络通信程序

在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是浏览器/服务器模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。

Linux中的网络编程是通过Socket接口来进行的,Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。在智能家居系统中,用户所持有的任意网络设备的和家用ARM9开发板就是Socket通信的两端。

3.3 嵌入式WEB服务器和视频监控的实现

家居系统选用的Web服务器是一款非常小巧的,执行代码只有约60k B的一个单任务嵌入式boa服务器。客户端浏览器和嵌入式Web服务器之间通过HTTP协议所进行的"请求->响应"的工作原理如图3所示。

构建嵌入式服务器boa,并针对具体情况配置boa,这里在/etc下建立boa目录,并在/etc/boa目录下建立boa.conf文件。设置boa.conf文件里的用户访问权限User nobody为User 0;Group nogroup为Group 0;日志目录Errorlog和Access Log为/var/log/boa/error_log和/var/log/boa/access_log;html文件目录为/var/www;默认首页为/var/www/;cgi脚本目录为Script Alias/cgi-bin//var/www/cgi-bin。在Makefile文件里修改交叉编译器的路径,并把PC上/etc/mime.types文件拷贝到开发板的/etc目录下。

CGI(通用网关接口)定义了Web服务器与其他可执行程序(CGI)之间进行交互的接口标准。CGI程序用来完成Web网页中表单数据处理的动态交互工作,CGI程序与Web服务器,以及客户端浏览器之间交互工作的原理如图4所示。

这里编写的CGI程序主要完成客户端浏览器用户名和密码的校验,通过后完成本地数据的上传。

CGI程序对index.html提交数据的处理,通过登陆后提供进入视频监控界面(http://211.81.251.32:8888)的链接,我们用webcam_server作为浏览器端视频播放器,该播放器可随着监控网页的打开而自动下载到用户端浏览器,并不需要专用的浏览器,但看到监控效果是网页打开时刻的静止图像。

我们可以通过手动刷新来达到观看视频的目的,这里在CGI程序里嵌入Java Script程序实现图像每秒自刷新一次,嵌入自刷新部分程序如下:

这样就可以看到每隔一秒图像就自动载入的动态视频,如图5所示,达到了视频监控的目的。

4 结论

采用S3C2410处理器嵌入Linux操作系统的方法实现视频监控可最大程度地节省系统的软硬件资源,硬件部分是系统稳定性、指令执行速度和体积等方面的最佳选择,软件部分以裁剪Linux操作系统的方法实现,用一个精简的操作系统完成图像采集与网络传输的功能,十分适用于智能家居系统中的视频监控。不仅如此,智能家居的其它功能均可采用类似方法实现,事实上,一个庞大的智能家居系统完全可以由S3C2410处理器、相关硬件和嵌入裁剪得当的Linux操作系统完成。

摘要:根据增强家居安防系统的要求,提出一种视频监控系统设计。通过分析ARM微处理器的结构体系和Linux操作系统的工作原理,给出了这种在ARM9核上移植瘦身后的Linux操作系统和应用程序的方案。用户可经由任意网络设备监控ARM板上USB摄像头采集到的图像,实现智能家居系统中的网络视频监控的目的。

关键词:嵌入式,微处理器,Web服务器,视频监控

参考文献

[1]张莉,周兵,柳松.嵌入式视频监控组件的设计与实现[J].微计算机信息,2007,35(35):90-91.

[2]俞辉,裴振奎.嵌入式视频监控系统服务器软件的设计与实现[J].微电子学与计算机,2009,26(8):189-192.

[3]马忠梅,李善平,康慨,等.ARM&Linux嵌入式系统教程[M].北京:北京航空航天大学出版社,2004:125-137.

[4]王兴杰,李允,江浩,等.基于Linux的嵌入式交叉开发技术[J].计算机应用研究,2008(1):207-208.

[5]刘成.基于嵌入式Linux的远程监控系统设计[D].江苏:江苏大学,2007:9-15

[6]陈江.嵌入式Linux开发及数字视频监控系统设计[D].西安:西安电子科技大学,2007:25-46.

3.基于arm智能家居 篇三

关键词 ARM 智能家居 Android WiFi

中图分類号:TP18 文献标识码:A

0引言

本文通过对各种智能家居系统进行分析,针对目前智能家居的背景情况,依托ARM平台和WIFI通信技术,设计了一种可行的基于网络的智能家居控制系统,实现信息家电的管理。首先设计了智能家居系统的整体架构,以S3C6410作为智能家居系统的主控制器,家庭内网Zigbee将家中环境和家用电器有机组合在一起,并与Internet和GPRS网络共同组成了一个安全、方便、舒适的家居环境。

1 Android 系统

本文所设计的智能家居移动终端是基于Android平台开发的,如智能手机、PPC、PDA等,服务器为基于ARM11架构的Tiny6410嵌入式系统。

1.1 Android的开放性

本系统是基于Android平台开发的。Android是由开放手机联盟发布的基于Linux的开源手机平台。它由操作系统、中间件、用户界面和应用软件组成,是第一个为移动终端专用的真正开放的移动软件开发平台。Android移动终端平台将凭借其出色的优越性超越其他终端平台。

1.2 Android的系统结构

从软件分层的角度来看,Android开放平台由应用程序、应用程序框架、Android Runtime、库以及Linux内核组成,如图1所示 。

图1 Android 系统架构

2智能家居移动终端

2.1智能家居移动终端主要功能

智能家居移动终端的主要功能有家电控制功能、家居安全防控功能、信息采集功能、信息共享和服务功能、家庭娱乐和办公功能、智能化控制功能

2.2 智能家居移动终端基本构架设计

智能家居系统对于提高现代人类的生活质量,创造便利、安全、舒适的生活空间有着非常重要的意义。智能家居的基本构架如图2所示。

2.3 智能家居移动终端组成模块

智能家居移动终端组成模块如图3所示。

(1)信息处理模块:为了使相互独立的信息家电可以实现信息共享与协同工作,智能家居系统中必须具有专门的信息处理模块。

(2)通信模块:如果说信息处理模块是智能家居系统的大脑,那么通信模块就是实现信息传导的神经。

(3)功能驱动模块:功能驱动模块是信息流入、流出各个信息电器的接口。

(4)外界信息接口模块:该模块可以看成是一个家庭通向外界(如internet)的网关。

3移动视频监控系统方案设计

3.1移动视频监控服务器端设计

移动视频监控服务器是一个嵌入式Android系统,是集高速视频采集、视频传输、识别与跟踪目标于一体的智能化嵌入式装置。它可以通过串口控制摄像机的行为,也可以通过S3C6410的摄像头接口(Camera)接收CCD摄像机采集的视频数据,并传送给硬件编解码(MFC)模块进行视频压缩,并把得到的经过H.264压缩的数据通过无线网卡打包发送到无线路由器,服务器端总体框图如图4所示。

图4 移动视频监控系统服务器端总体框图

3.2移动视频监控客户端设计

(1)Android移动终端应用通过输入用户名和密码(用户已向服务器注册用户名和密码)登录终端,并仅以用户名向服务器发送请求,使用TCP协议。

(2)嵌入式监控服务器接收到请求,通过用户名查询对应服务器IP地址及分配端口号,通过TCP协议发送同应,回应中应包含需要监控的端口号。

(3)Android移动终端接收到请求回应,解析出端口号,以此地址、端口及用户登录的密码向服务器发起数据请求,使用UDP协议。此请求采用命令字(包括了对密码的MD5加密后的数据)。

(4)服务器接收到数据请求,向Android移动终端发送视频监控数据。

(5)Android移动终端接收到数据后,从缓冲区中读取数据,调用V4L2接口进行解码、转换及显示播放。

(6)在监控过程中,Android移动终端可以切换通道,即可以切换到不同监视器,包括模拟监视器和数字监视器。Android移动终端发送相应命令到服务器,并接收对应监视器的数据。

(7)在监视过程中,Android移动终端可以设置视频质量,发送视频质量等级命令请求到服务器,服务器发送调整帧率后的数据。

3.3图形界面单元的实现

本设计的界面是基于Android的GUI系统实现的。它由C语言框架和Java语言框架组成。对下层,Android的GUI系统通过调用显示输出设备和输入设备的驱动,从而将Android的软件系统和底层的硬件联系起来。对上层,Android的GUI系统提供了Java层次的绘图结构,Android的Java框架层调用这些绘图接口来构建各种UI元素,这些绘图接口也可供Java应用程序层来调用。用户在Android移动终端启动软件进入远程控制登陆界面,如图5所示。

图5 登陆界面

4结束语

本文基于ARM和Android的智能家居移动终端的设计,以Android系统作为智能家居终端设备的操作系统,并在Android系统上使用了MVC模式设计了智能家居主程序,极大地降低了系统各层的依赖,有利于组件的重用。整个系统充分利用了Android 内部资源,极大地提高了开发效率。实验结果表明,系统的稳定性极高,具有较强的实用性。

参考文献

[1] 高小平.中国智能家居的现状及发展趋势[J].低压电器,2005(4):18-21.

[2] 韩超.Android系统原理及开发要点详解.北京:电子工业出版社,2010:96.

[3] 广州友善之臂计算机科技有限公司.Tiny6410硬件手册,2011:5.

[4] 叶青.一种智能家居系统解决方案及部分模拟实现[硕士学位论文].昆明:昆明理工大学,2008.

4.基于arm智能家居 篇四

基于ARM的嵌入式RIFD读写器设计

类别:汽车电子

摘要:RFID(Radio Frequency Identification)系统是高效的信息识别、采集系统。本文选用射频芯片S6700,控制模块用的是S3C44B0X作为微处理器,从硬件电路的设计和软件设计两个方面来阐述了嵌入式的RFID读写器的设计方案。

引言

RFID 利用了电磁波空间耦合、传播进行通信,以达到自动识别被标识对象,获取对象信息的目的。同其他一些识别技术相比,射频识别技术具有高效快捷、非接触、无污染、识别率高等突出优点。识别过程无需人工干预,可在恶劣环境下工作,能够应用到很多行业。

1.RIFD 读写器的硬件总体设计

图 1 读写器的硬件总体设计

RFID 系统主要由射频卡、读写器以及计算机系统组成。系统的工作原理如下:读写器通过天线发送出 13.56MHz 的射频信号,当射频卡进入读写器工作场时,天线产生感应电流,从而射频卡获得能量被激活并向读写器发送出自身编码等信息,读写器接收到来自射频卡的载波信号,对接收的信号进行解调和解码后发送至 PC 机进行处理,PC 机根据逻辑运算判断该射频卡的合法性,针对不同的设定做出相应的处理和控制,发出指令信号,射频卡的数据解调部分从接收到的射频脉冲中解调出数据并送到控制逻辑,控制逻辑接受指令完成存储、发送数据或其他操作。

2.硬件选型

在整个系统中,RFID 收发模块的功能是当接收到来自射频卡的载波信号时,对该信号进行解调和解码,并且将信息进行编码和调制后发送到射频卡中,要实现上述功能就需要一款内部封装有发送调制器和接收调制器的射频芯片,选用了射频芯片 S6700。S6700 芯片的时序是通过控制产生的,因此选用了单片机P89C58,利用它的 I/O 口进行控制。因为系统中使用的射频卡是疏耦合 IC卡,所以它与 S6700 芯片之间的协议标准采用了 ISO 15693,C 语言进行编程。

3.RFID 收发模块硬件电路设计

RFID 收发模块的主芯片是 TI 公司的射频芯片 S6700,该芯片的通信接口主要使用三条线:SCLOCK、DIN 和 DOUT。除了通信线外,还有一条 M_ERR 线,用来表征通信是否正常;应用电路如图2 所示:

图 2 RFID 收发模块硬件电路

S6700 的 SCLOCK、DIN、DOUT 分别由 P89C58 的 P1.3、P1.5 和 P1.6 进行控制,由于单片机 P89C52 应用比较广泛。R2 为调制深度选择电阻,当 R2 为 12 欧姆时,调制深度为 10%;当 R2 为 18 欧姆时,调制深度为 20%。SCLOCK 为双向时钟线,分别由单片机 P89C58 和 S6700芯片在不同的情况下进行控制:发送数据时由 P89C58 控制,接收数据时由 S6700 控制。在收发数据时,每个数据位在 SCLOCK 的上升沿被锁存,当 SCLOCK 为高时,数据位必须固定且保持不变,只有当 SCLOCK 为低时,传送的数据才能被改变;DIN 为数据输入线,S6700 芯片通过该线接收来自 P89C58 的命令和数据;DOUT 为数据输出线,S6700 芯片通过该线将回应数据发送给P89C58,同时该线还可用于监测S6700 芯片内部数据缓冲区的情况。M_ERR 线用来表征在同时读多张卡时数据的冲突情况。该线由于内部下拉,平时为低电平,一旦发生多卡冲突,此线会升为高电平。在每一次通信过程中,远端控制器必须通过发送命令来实现任务,典型命令格式为:起始位 S1、位命令字、传输数据和结束位ES1。

4.嵌入式控制模块硬件电路设计

S3C44B0X 微处理器是低功耗的,采用了应用于实时环境的 ARM7TDMI 32 位核,所以选为控制模块的主芯片,负责完成 PC 机和 RFID 读写器之间数据的传送和控制。

4.1 晶振电路

晶振电路用于向 CPU 及其他电路提供工作时钟。S3C44B0X 芯片通过管脚OM[3:2]确定选择何种时钟源,在本系统中,将两个管脚下拉,选择晶体时钟模式,选用该模式时,外部采用 10MHz的晶振,可以利用公式设计出各种所需的输出频率,也就是说时钟频率可以通过软件进行设定,公式如下:

Fpllo=(m×Fin)⁄(p×2s)其中设置 m=0x48,p=0x03,s=0x02,这样就可以得到 40MHz 的输出频率,满足系统的要求。

4.2 电源电路

在该系统中,需要使用 2.5V 和 3.3V 的直流稳压电源,其中 S3C44B0X 的内核需 2.5V 电源,S3C44B0X 的 I/O 口和其它部分电路需要 3.3V 电源。为简化系统电源电路的设计,要求整个系统的输入电压为高质量的 5V 的直流稳压电源,这样就需要用 DC-DC 转换器来完成

5V~2.5V、5V~3.3V 的转换,在该系统电路中选用了 BayLinear 公司的 B1117 电压转换芯片系列:B1117-2.5和B1117-3.3,器件输出电流为 1.0A。系统电源电路如图4 所示。

图 3 系统电源电路图

4.3 SDRAM 接口电路

在本系统中,采用了 HY57V641620 SDRAM 芯片,存储容量为 4 组×16M 位(8M 字节),工作电压为 3.3V,支持自动刷新和自刷新,16 位数据宽度。该芯片是通过行、列地址来定义存储器地址空间的,A11-A0 是列地址,A7-A0 是行地址,芯片管脚 BA0、BA1 用于片内 4 个存储器组的选择,将它与 ADDR21 和ADDR22 相连,利用地址高端进行相应的选择。

在本系统中,采用该 JTAG 接口对程序进行调试和下载。标准的 JTAG 接口是 4 线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。读写器的软件设计

根据 RFID 读写器的需要,移植了UC/OS-Ⅱ。嵌入式系统通信程序循环发送命令,检测是否有卡待读,如果接收到从 RFID 模块传来的卡号信息,则将卡号从信息中提取出来发送至 PC 机上的应用程序,由应用程序对它进行辨识。无论是与 RFID 模块的通信还是与 PC 机的通信,都采用了串口通信方式,所以首先应对串口进行设置。

当嵌入式控制程序向 RFID 模块发送完读卡的相关命令后,就需要等待接收传回的卡号数据信息,由于系统串口采用的是查询方式,一旦发送端存在数据遗失,一直未能有数据传送回来,则程序将进入死循环,所以在程序中设计了自动终止功能。在系统设计中该部分子内容只接收来自 RFID模块的数据,故只考虑串口2。

读卡程序如下:

char recv_rfid(){ char lm;int m,l;if(whichUart==1)/⁄串口 2,接收从 RFID 模块传来的数据

{ wh: for(;(!(rUTRSTAT1 & 0x1));){ m=m+1;/⁄等待的同时对变量 m 计数

if(m==500)/⁄判断 m 是否已累计到 500 还未接收到有效数据

{err_flag=1;/⁄若是,则将标志 err_flag 置 1 goto wh1;/⁄跳转到标记为 wh1 的程序处

}} lm=RdURXH1();/⁄若接收到有效数据,则将串口数据赋给变量 lm return(lm);/⁄返回 lm 的值

} wh1: l=0;/⁄标记 wh1 处程序,实为跳出子程序

} 写卡的过程只需要将从应用程序处获取持卡人的相关信息然后发送至RFID 收发模块,由 RFID模块写入射频卡中,因为要验证写入信息是否正确,所以该程序还需要实现读取射频卡中的信息并返回给应用程序,由应用程序来判断写入信息的正误。持卡人的相关信息包括姓名、性别、年龄、工作单位、身份证号、发卡日期和发卡时间。结束语

5.基于arm智能家居 篇五

摘要:在介绍基于ARM体系的嵌入式系统启动流程的基础上,结合编程实例,详细、系统地叙述了BSP(板级支持包)程序的各个组成部分及其具体设计方案,并就实际程序设计中的几个难点问题做了说明。

关键词:ARMBSP嵌入式系统微处理器

ARM公司在32位RISC的CPU开发领域不断取得突破,其结构已经从V3发展到V6。

BSP(BoardSupportPackage)板级支持包介于主板硬件和操作系统之间,其功能与PC机上的BIOS相类似,主要完成硬件初始化并切换到相应的操作系统。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说,尽管实现的功能一样,可是写法和接口定义是完全不同的。另外,仔细研究所用的芯片资料也十分重要,例如尽管ARM在内核上兼容,但每家芯片都有自己的特色。所以这就要求BSP程序员对硬件、软件和操作系统都要有一定的了解。

本文介绍基于ARM体系的嵌入式应用系统初始化部分BSP的程序设计。本文引用的源码全部是基于HMS320C7202芯片设计,并已成功运行。

1初始化过程

尽管各种嵌入式应用系统的结构及功能差别很大,但其系统初始化部分完成的操作有很大一部分是相似的。嵌入式系统的启动流程如图1所示。

1.1设置入口指针

启动程序首先必须定义指针,而且整个应用程序只有一个入口指针。一般地,程序在编译链接时将异常中断向量表链接在0地址处,并且作为整个程序入口点。入口点代码如下:

ENTRY(_start);开始

1.2设置异常中断向量表

ARM要求中断向量表必须放置在从0开始、连续8×4字节的空间内。各异常中断向量地址以及中断的算是优先级如表1:

表1各异常中断的中断向量地址以及中断的处理优先级

中断向量地址异常中断类型异常中断模式优先级(6最低)0x0复位特权模式(SVC)10x4未定义中断未定义指令中止模式(Undef)60x8软件中断(SWI)特权模式(SVC)60x0c指令预取中止中止模式50x10数据访问中止中止模式20x14保留未使用未使用0x18外部中断请求(IRQ)外部中断(IRQ)模式40x1c快速中断请求(FIQ)快速中断(FIQ)模式3

每当一个中断发生后,ARM处理器便强制把程序计数器(PC)指针置为向量表中对应中断类型的地址值。因为每个中断向量仅占据放置1条ARM指令的空间,所以通常放置1条跳转指令或向程序计数器(PC)寄存器赋值的数据访问指令,使程序跳转到相应的异常中断处理程序执行。如果异常中断处理程序起始地址小于32MB,使用B跳转指令;如果跳转范围大于32MB,使用LDR指令。

另外,对于各未用中断,可使其指向一个只含返回指令的哑函数,以防止错误中断引起系统的混乱。

1.3初始化存储系统

初始化存储系统的编程对象是系统的存储器控制器,一个系统可能存在多种存储器类型的接口,不同的存储系统的设计不尽相同。Flash和SRAM同属于静态存储器类型,可以合用一个存储器端口;而DRAM因为有动态刷新和地址线复用等特性,通常配有专用的存储器端口。其中,SDRAM必须在初始化阶段进行设置,因为大部分的程序代码和数据都要在SDRAM中运行。

在HMS30C7202中,与SDRAM配置有关的寄存器有4个:配置寄存器、刷新定时寄存器、写缓冲写回寄存器和等待驱动寄存器,需要根据实际的系统设计对此分别加以正确配置。

SDRAM的初始化过程如下:加电→延迟10ms(各具体SDRAM器件延时时间可能不同)→设置配置寄存器参数→延时→写刷新定时寄存器,设置刷新周期→延时→使能自动刷新→延时→设置模式寄存器(位于SDRAM内部)。

1.4存储器地址分布重映射(remap)和MMU

系统一上电,程序将自动从0地址处开始执行。因此,必须保证在0地址处存在正确的代码,即要求0地址开始入是非易失性的ROM或Flash等。但是因为ROM或Flash的访问速度相对较慢,每次中断响应发生后,都要从读取ROM或Flash上面的向量表开始,影响了中断响应速度。一般程序执行后将SDRAM映射为地址0,并把系统程序加载到SDRAM中运行,其具体步骤可以采用以下的方案:

(1)上电后,从0地址的ROM开始往下执行;

(2)根据映射前的地址,对SDRAM进行必要的代码和数据拷贝;

(3)拷贝完成后,进行重映射操作;

(4)因为RAM在重映射前准备好了内容,使得PC指针能继续在RAM里取得正确的指令。

在这种地址映射的变化过程中,程序员需要仔细考虑的是:程序的执行流程不能被这种变化所打断,注意保证程序流程在重映射前后的承接关系。

存储器的地址分配是很灵活的,可以将I/O操作映射成内存操作,也可以通过映射对某些不可访问的地址空间进行保护等。进行存储器初始化设计时,一定要根据应用程序的具体要求来完成地址分配。对地址管理通过MMU即存储器管理单元实现。

在ARM系统中,MMU通过页式虚拟存储管理,将虚拟空间和物理空间分别分成一个个固定大小的页,并建立两者之间的映射关系,从而实现虚拟地址到物理地址的转换。MMU还可完成存储器访问权限的控制和虚拟存储器空间缓冲特性的设置。

以下是实现MMU的部分代码:

for=(i=1;i<0x1000;i++){

pagetable[i]=(i<<20)|MMU_SECDESC;

}//建立页表,每页大小为1MB,页表偏移序号是物理地址的高12位;

for(addr=SDRAM_BASE;addr<(SDRAM_BASE+SDRAM_SIZE/2);addr+=SIZE_1M)

pagetable[addr>>20]=addr|MMU_SECDESE|

MMU_CACHEABLE|MMU_BUFFERABLE;

//将SDRAM_BASE至(SDRAM_BASE+SDRAM_SIZE/2)空间的设置为不可CACHE和不可BUFFER的

for(addr=SDRAM_BASE+SDRAM_SIZE/2;addr<(SDRAM_BASE+SDRAM_SIZE);addr+=SIZE_1M)

pagetable[addr>>20]=(addr+0x1000000)|

MMU_SECDESC|MMU_CACHEABLE|MMU_BUFFERABLE;

//将这段空间的地址映射关系设置为VA(虚拟地址)=PA(物理地址)+0x1000000

pagetable[0]=(0x42f00000)|MMU_SECDESC|MMU_CACHEABLE|MMU_BUFFERABLE;

//将SDRAM的虚拟地址0x42f00000映射到0处

1.5初始化各模式下的堆栈指针

因为ARM处理器有7种执行状态,每一种状态的堆栈指针寄存器(SP)都是独立的(System和User三项式使用相同SP寄存器)。因此,对程序中需要用到的每一种模式都要给SP寄存器定义一个堆栈地址。方法是改变状态寄存器(CPSR)内的状态位,使处理器切换到不同的状态,然后给SP赋值。这里列出的代码定义了三种模式的SP指针,其中,I_Bit表示IRQ的中断禁止位;F_Bit表示FIQ的`中断禁止位:

@;SetupSVCstacktobe4Kontopofzero-initdata

LDRr1,=installStack

ADDsp,r1,#2048

@;SetupIRQandFIQstacks

MOVr0,#(Mode_IRQ32|I_Bit)

MSRcpsr,r0

MOVr0,r0

ADDsp,r1,#2048*2

MOVr0,#(Mode_FIQ32|I_Bit|F_Bit)

MSRcpsr,r0

MOVr0,r0

ADDsp,r1,#2048*3

一般堆栈的大小要根据需要而定,但是要尽可能给堆栈分配快速和高带宽的存储器。堆栈性能的提高对系统性能的影响是非常明显的。

1.6初始化有特殊要求的端口、设备

有些关键的I/O部件必须在使能IRQ和FIQ之前进行初始化。因为如果在使能IRQ和FIQ之前没有进行初始化,可以产生假的异常中断信号。程序中初始化了HMS30C7202的串口1用来调试程序与其它设备通信。串口1是一个通用全双工异步接收/发送器(UART),它支持16C550的大部分功能。UART有接收缓冲/发送保持寄存器、波特率除数锁存器、中断允许寄存器等9个寄存器。对串口1的初始化主要是对各寄存器的设置,其实现代码如下所示:

_outb(ser_base+0x30,1);

_outw(0x8002301c,0xffff9f9f);GPIOPORTAEnable

Register

_outw(0x800230A4,0x6060);GPIOPORTAMultiFunctionelect-Register

serial_outb(SERIAL_LCR,0x80);

serial_outb(SERIAL_LCR,0x80);

serial_outb(SERIAL_DLL,baud_data[cur_baud]);

serial_outb(SERIAL_DLM,0x0);

serial_outb(SERIAL_LCR,0x03);

seial_outb(SERIAL_FCR,0x01);

serial_outb(SERIAL_IER,0x00);

serial_outb(SERIAL_MCR,0x03);

1.7切换处理器模式,开中断

最后转换到应用程序运行所需的最终模式,一般是User模式。不要过早切换到User模式进行User模式的堆栈设备。因为进入User模式后就不能再操作CPRS回到别的模式了,可能会对接下去的程序执行造成影响。

这时才使能异常中断,通过清除CPRS寄存器中的中断禁止位实现。如果过早地开中断,在系统初始化之前就触发了有效中断,会导致系统的死机。

1.8呼叫主应用程序

当所有的系统初始化工作完成后,就需要把程序流程转入主应用程序。

图2

2技术难点分析

2.1多种语言的混合编程

ARM有两种汇编指令集:16位THUMB指令集和32位ARM指令集。使用16位的寄存器可以降低成本,而且16位THUMB指令集整体执行速度比ARM32位指令集快,提高了代码密度。为了满足ARM子程序和Thumb子程序互相调用,必须保证编写的代码遵循ATPCS。ATPCS规定了子程序调用的基本规则。

ARM系统结构也支持C、C++以及汇编语言的混合编程。汇编语言和C/C++语言的混合编程,在一个追求效率的程序中比较常见。许多人认为像BSP这样底层的程序应该用纯汇编语言编写,其实不然。用汇编语言编写的程序可读性不高,而且不宜维护,不便于向其它类型的CPU移植,而这些方面却是C语言程序的优势。BSP能否用纯C语言去写呢?也不行。因为某些操作是用C实现不了的。例如操作特殊寄存器的指令、CP15寄存器的指令、中断使能及堆栈地址的设定等。在汇编和C/C++之间的函数调用时,也要遵循ATPCS的定义,还要注意的是用C语言编写嵌入式程序时,要避免使用不能被固化到ROM中的库函数。

混合编程情况下的程序编译及链接后的输出代码与没有混合编程时是不同的。所以当多个源文件如果使用了不同的设置进行编译,相互之间的调用可能产生兼容性问题,对此一定要加以仔细考虑。编译时,要告诉编译器和链接器足够的信息,一方面,让编译器能够使用正确的指令码进行编译;另一方面,在不同的状态之间发生函数调用时,链接器将插入一段链接代码(veneers)来实现状态转换。

2.2MMU的实现过程

页表是实现MMU的重要手段。页表存放在内存中,从虚拟地址到物理地址的变换过程其实就是查询页表的过程。大小为1MB的存储块通常被称为段,图2说明了如何查表进行段式寻址的全过程:32位的虚拟地址可分为12位的一级页表序号和20位的段内地址偏移。12位的一级页表序号和CP15寄存器的C2中的18位变换表基址合并成一级描述符地址查表找出相应的一级描述符;然后,段对应的物理基地址与段内地址偏移量合并成为真正的存储器存取地址即物理地址,读出相应数据。

6.基于arm智能家居 篇六

学生姓

学名

教师姓

职名

毕设题目 基于ARM技术的WIFI无线网络技术研究

1.查找有关WiFi无线网络的书籍、文章,了解WiFi无线网络技术;

2.调研目前WiFi无线网络的覆盖、应用及教师资发展情况;

料布置

情况 3.在各大网站及数据库中查找有关基于ARM技术的WiFi技术研究的材料;

4.了解目前流行的WiFi技术应用,选择适合题目研究的技术应用。

1.通过对相关资源的搜索,了解什么是WiFi,以及它目前的覆盖和应用状况;

2.查询了解WiFi技术、ARM技术的优缺学生自点,以及相关的研究意义;

主资料查询情3.在数据库中查询到有关基于WiFi技术应

况 用和基于ARM的无线网络应用的相关论文进行参考,通过论文、书籍的相关内容大概了解研究所需的技术方法;

4.搜索最新的WiFi无线网络应用,以找到适合毕设研究的项目。

1.研究的意义

随着互联网越来越深入的走进人们的生活,用户对能够随时随地上网的需求越来越迫切,WiFi 无线通信技术也得到了迅速发展。

WiFi是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术,它可以帮助用户访问电子邮件、Web和流式媒体。它为用户提供了无线的宽带互联网访问。同时,它也是在家里、办公室或在旅途中上网的快速、便捷的途径。WiFi凭借它覆盖范围广、速度快、可靠性高、无需布线、健康安全及计费便宜等特点已成为当今无线网络接入的主流标准。只要随身携带的电子设备集成了 WiFi 无线通信终端用户就可以在 WiFi覆盖区域内随时拨打或接听电话、快速浏开题综览网页、下载或上传音视频文件、收发电

子邮件,而无需担心花费太高和网速太慢述

等问题。国内外许多地区都提供了WiFi 信号覆盖域,美国等发达国家是目前 WiFi 用户最多的地区,我国的许多大中城市的机场、车站、咖啡厅、酒店、图书馆等公共场也逐渐被 WiFi 信号所覆盖。

随着 WiFi 信号覆盖范围越来越广,WiFi无线通信技术在各种便携式产品上的应用也将变得越来越多。目前具有WiFi功能的手机也越来越普遍,人们对于基于WiFi技术的应用的需求越来越大,随着技术的不断发展,各种电子产品都将提供 WiFi无线接入功能。

ARM 是目前进行便携式电子产品开发的主流芯片,它具有如下特点:

1、体积小、低功耗、低成本、高性能;

2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;

3、大量使用寄存器,指令执行速度更快 ;

4、大多数数

据操作都在寄存器中完成;

5、寻址方式灵活简单,执行效率高;

6、指令长度固定。因此,对 ARM 架构下 WiFi 无线技术的研究具有非常重要的意义。

2.研究的现状

Wi-Fi(Wireless Fidelity是无线局域网(WLAN技术——IEEE 802.11系列标准的商用名称。IEEE 802.11系列标准主要包括IEEE 802.11a/b/g 3种。在开放性区域,Wi-Fi的通信距离可达305 m;在封闭性区域,通信距离为76-122 m。Wi-Fi技术可以方便地与现有的有线以太网络整合,组网成本低。

WiFi是由AP(Access Point 和无线网卡组成的无线网络。AP一般称为网络桥接器或接入点, 它是当作传统的有线局域网络与无线局域网络之间的桥梁, 因此任何一台装有无线网卡的PC均可透过AP去分享有线局域网络甚至广域网络的资源。市场上出现了3种Wi-Fi的应用模式:企业或者家庭内部无线接入模式、电信运营商提供的无线宽带接入服务和“无线城市”的综合服务模式。“无线城市"是指在城市内架设基本全覆盖的Wi-Fi网络,为公众提供随时随地的移动宽带接入服务。全世界已经有超过600个城市开始或计划建设”无线城市“,越来越多的城市将”无线城市"作为城市的基础建设,并试图通过无线宽带网络来寻求新的经济活力。

随着市场需求的不断变化, 将有更多的业务层出不穷的出现,就目前可能的业务大致归纳有: VoIP话音业务、即时通信业务、上网浏览业务、视频点播、电视直播、搜索、MP3下载、无线视频监控等。从覆盖区域、速率能力、基本业务类别、可移动速率、前向扩展进走向等多方面综合分析WiFi和3G的关系, 可以得出WiFi作为3G 的高效有利补充,与3G形成了良好的互补关系。

所以从总体上看归WiFi 技术的发展方向为:

(1)扩大 WiFi 网络的覆盖范围,实现整个城市的覆盖;

(2)实现 WiFi 手持终端和增值业务的大量应用;

(3)实现不同等级安全方案的提供,使企业或个人用户可以按照不同的性价比来选 择适合自己的应用模式;

(4)实现 WiFi 技术与 3G 技术的融合。在网络高速发展的时代,人们已经尝到了WiFi给我们带来的便利。我们坚信WiFi与3G的融合必定为我们开启一个全新的通信时代。

3.研究方案

研究内容:基于ARM技术,通过WiFi模块实现与无线互联网的连接,并可以通过WiFi访问互联网上的电台,实现无线网络收音机功能。(1)设计硬件组成,并完成硬件的连接,使各芯片、器件、模块间达到匹配;(2)设计软件、开发系统,并完成系统的移植;

(3)测试整个系统,确保各部分正常工作,最终实现基于ARM的WiFi无线网络连接,并可以通过WiFi实现无线网络收音机的收听。

研究目标:(1)通过软硬件的设计、连接与测试,完成基于ARM技术的WiFi无线

网络收音机的设计与实现;(2)完成毕业设计论文;

(3)完成毕业设计的实验演示系统。

4.研究进度安排

2011.11.28—2011.12.12:布置课题要求,调研课题资料,准备开题;

2011.12.13—2012.02.19:课题资料学习与调研,准备毕设研究;

2012.02.20—2012.04.10:完成毕设的前半部分工作,准备中期检查;

2012.04.11—2012.05.06:基本完成毕设工作,完成毕设论文初稿;

2012.05.07—2012.05.20:完善毕业论文工作及课题研究,准备毕设答辩;

5.参考文献

刘芳华 《基于ARM的WiFi无线通信终端的研究与实现》

7.基于arm智能家居 篇七

关键词:智能家居,ARM,LINUX系统,远程监控

1. 引言

为提高家庭的智能化水平,本设计提出采用ARM芯片作为整个远程家居控制系统的控制芯片﹑LINUX作为整个系统的操作系统的设计思想,给出远程家居智能控制系统具体的软硬件解决方案。而嵌入式网络视频监控系统以嵌入式微处理器和嵌入式操作系统[1]为核心,专用性强,软硬件结合紧密,设备构成简单,成本较低,在各个领域得到了广泛的应用。

2. 系统的硬件设计

本系统选用韩国三星电子的基于ARM920T内核的32位嵌入式微处理器S3C2410作为系统的控制核心,该芯片本身集成了包括存储器接口、通信接口(USB,RS232),A/D,JTAG等在内的丰富的硬件资源,可简化外围设备与微处理器的硬件连接程度,提高系的稳定性、可靠性[3]。其硬件结构如图1所示。

由于S3C2410本身没有集成以太网控制模块,所以需要一个与之相匹配的控制芯片来实现以太网扩展接口。本系统选用CIRRUS LOGIC公司的CS8900A作为系统的以太网控制芯片。CS8900A是一个单芯片全双工的以太网解决方案,所有的数字和模拟电路合成了完整的以太网电路。主要结构包括ISA总线接口、802.3MAC引擎、BUFFER、串行E2PROM接口和带10BASE2T和AUI的模拟前端。CS8900A的10BASE2T接口通过变压器HR601627与RJ45网口连接。

3. 系统的软件设计

3.1 嵌入式操作系统的选择及移植

本系统采用Linux作为操作系统[4],并选用Linux2.6内核在嵌入式微处理器S3C2410上移植,具体移植方法如下:

(1)准备Linux2.6内核移植所必需的文件(内核压缩包linux-2.6.tar.bz2及交叉编译器arm-linux-gcc-3.4.1.tar.bz2),这些文件可到Linux官方网站免费下载。

(2)利用Linux命令(mkdir,tar,mv及export)安装交叉编译器arm-linux-gcc-3.4.1。

(3)修改Makefile文件及相关硬件文件。由于内核的编译是根据Makefile文件的指示进行的,Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。所以,开发人员要首先修改Linux2.6根目录下的Makfile文件,修改的主要内容是目标代码的类型和为编译内核指定一个编译器。

(4)运用Make命令编译内核生成内核镜像文件z Image文件,通过相应的固化软件把这个文件固化在系统相应的存储器中,完成Linux2.6内核在ARM微处理器上的移植。

3.2 应用软件的设计

3.2.1 软件的总体架构

嵌入式远程视频监控系统采用客户端-服务器(ClientServer)模型。在客户端/服务器模型中,客户端向服务器端发送请求信息服务器对客户端的请求信息进行响应,实现远程通讯。远程服务器端与客户端的通信采用TCP协议,TCP协议是面向连接的、提供差错控制、超时重发机制,而视频数据的传输采用UDP协议以提高传输速度和实时性。由于UDP协议没有提供差错控制、超时重发等机制,因此系统使用多媒体数据传输的实时传输协议RTP(Real time Transport Protocol)和实时传输控制协议RTCP(Real time Transport Control Protocol)。RTP协议是在因特网上广泛使用的多媒体数据流的一种传输协议,服务器通过RTP/RTCP协议向客户端发送视频流[2]。系统软件结构图如图2所示。

3.2.2 服务器端和客户端软件设计

Linux的网络功能非常强大,支持多种网络协议。本系统使用套接字接口实现客户端与服务器端的通讯。套接字(socket)是由通讯协议、IP地址和端口三部分组成,其中通讯协议有TCP和UDP协议,端口号用来代表通信进程。根据使用协议的不同,有三种套接字:流格式、数据报格式和原始格式。

3.2.3 视频采集模块的设计

在Linux下加载驱动程序可以采用动态和静态两种方式。静态加载就是把驱动程序直接编译到内核里,系统启动后可以直接调用;动态加载利用了可以在系统启动后用insmod命令把驱动程序添加上去,在不需要的时候用rmmod命令来卸载。动态方式与静态方式相比,测试要简单的多。不需要下载整个内核,只需通过NFS加载驱动即可测试。在测试成功后就可以编译进内核。本系统摄像头驱动程序采用了动态加载的方式,在程序启动时再加载。在Linux操作系统中,外部设备被看作设备文件,完成视频设备驱动程序加载后,通过open函数打开设备;视频设备完成初始化后,进入工作状态,开始采集视频帧;系统将采集到的视频数据放在内存缓冲区中,通过Mmap函数实现内存文件与普通文件之间的映射。其主要过程如图3所示。

为了实现实时传输的要求,需要对摄像头采集的数据进行压缩处理。基于MPEG-4的视频压缩编码技术能大幅度降低录像存储容量,获得较高的录像清晰度,特别适用于长时间实时录像的需求同时具备在低带宽上优良的网络传输能力。基于其以上优点,本系统选用MPEG-4视频压缩编码方式。MPEG-4将图像分为三种:I帧、P帧和B帧。编码流程如图4所示。

为了节约成本,本系统没有用专门的视频编解码硬件,而是采用了现有开源的的MPEG-4视频编码软件FFmpeg对视频图像进行压缩编码。FFmpeg是一个高效编码流的而且具有可移植性的编码软件[5],FFmpeg的开发是基于linux操作系统的,最适合移植到嵌入式系统,是因为它是采用纯C语言编写的,对各种编译器进行了优化,并针对ARM处理器用汇编语言实现了DCT和逆DCT的相互变换。所以本系统中采用了FFmpeg软件。

4. 结论

本方案设计采用ARM9处理器和嵌入式Linux操作系统构建了基于MPEG-4远程视频监控系统,系统采用USB摄像头采集视频,开源软件FFMPEG对视频进行编码,在工业监控、智能家居等领域具有广泛的应用前景。下一阶段我们的重点将主要集中在如何研发出更适合中国国情的智能家居的产品以及如何进一步提高产品的可扩张性。

参考文献

[1]GORMAN M,SAHLMAN W A.What do venture capitalists do[J].Journal of Business Venturing,1989,4(4):231-248.

[2]樊振萍,唐继勇.基于RTP协议和MPEG-4的流媒体系统分析与实现[J].西部广播电视,2004.

[3]赖晓晨,原旭,孙宁.嵌入式系统程序设计[M].北京:清华大学出版社.2001,11:30—31.

[4]王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版社.2001.

8.基于ARM的电脑鼠控制系统研究 篇八

关键词:电脑鼠;红外检测;PWM;空心杯直流电机

电脑鼠(micromouse)是一种由微处理器控制的集环境感知、动态决策与规划、行为控制与执行等多种功能于一体的微型机器人。目前大多数电脑鼠采用Luminary Micro Stellaris R系列LM3S101、LM3S102、LM3S615或者单片机微控制器,其红外检测模块采用了一体式红外传感器,只能判断有无障碍物,无法进行测距;电机部分采用步进电机,耗电大、速度慢;此外软件系统多采用传统中左或中右算法,效率较低。本文设计了基于CortexM3内核的32位ARM芯片STM32F103RCT6作为运算控制中心,由其产生PWM信号调制红外发射接收实现测距,配套空心杯直流电机,通过改进智能迷宫算法,使电脑鼠出色高效地完成迷宫搜寻及冲刺任务。

1 电脑鼠工作原理

电脑鼠周围安装六组红外传感器,分别感知左方、左前方、前方、右前方、右方,发射端发射一定频率的红外线,接收端通过六个方向的反射波来判断是否有障碍物,实时地储存单元格的资料,通过六组红外传感器反馈的迷宫信息,控制电脑鼠完成避障、转弯、加速等动作,运用智能算法对迷宫的部分单元格或全部单元格进行遍历,并将迷宫的信息以有效的数据结构存储,微控制器根据这些记录信息运用迷宫高效算法找到一条最优化路径,从而实现从起点到终点的最大化冲刺。

2 硬件电路设计

为完成迷宫探测和冲刺任务,电脑鼠需具备以下各功能模块:ARM微处理器作为控制核心协调各功能模块正常工作;电机及驱动模块实时控制电机启动、制动;红外检测模块负责红外线探测感知;电源为整个系统供电稳定电压,陀螺仪及指南针模块确定电脑鼠方位,根据走过的距离,从而解析出所在坐标。硬件组成如图1所示。

2.1 电源模块

电源调节器件通常使用线性稳压器件(如LM7805),具有输出电压可调、稳压精度高的优点,但是其线性调整工作方式在工作有较大的“热损耗”,导致电源利用率不高、满足不了便携低功耗需求。开关电源调节器,不同于线性稳压器件,以完全导通或关断的方式工作,通过控制开关管的导通与截止时间,有效的减少工作中的“热损耗”,提高了电源利用率。本设计中电源模块为系统提供三种不同的电压,12V电源用于驱动电机,使用开关式电源LM2596将12V直流电压降到5V给红外模块、人机交互模块供电,再通过AMS1117将5V降到3.3V,供ARM处理器及其他模块使用。

2.2 微处理器模块

微处理器是整个控制系统的核心,它完成从红外检测模块获取路径信息,采集瞬时速度,进行数据处理,控制算法运算,输出实时控制量等功能。为了保证系统的实用性和易扩展性,本控制系统采用意法半导体推出的“增强型”系列STM32F103RCT6,STM32F103xx增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN,在存储容量和运算速度方面满足要求。

2.3 电机及驱动模块

为提高系统功率、降低功耗,驱动电路采用基于脉宽调制方式的集成电路芯片L298N。比较常见的是15脚Muliwatt封装的L298N,内部包含四通道逻辑驱动电路,即内含两个H桥的高电压大电流双全桥式驱动器,可以驱动和控制两个直流电机,芯片采用供给电机电源和逻辑电平电源的双电源供电,可接受标准TTL逻辑电平信号,驱动46V,2A以下的电机,并可驱动电感性负载。其中ENA、ENB是控制使能端,IN1、IN2、IN3、IN4是控制电平输入端,电路如图2所示。本设计中采用空心杯直流电机,它具有突出的节能特性、灵敏方便的控制特性和稳定的运行特性,最大效率一般在70%以上,部分产品可达到90%以上;起动、制动迅速,响应极快;其重量、体积相对减少1/3-1/2,通过PWM调节脉冲占空比进行调速。

2.4 红外检测模块

红外检测模块主要负责迷宫环境监测和处理。红外线经调制后由发射管发出,接收管接收迷宫墙壁反射光,根据接收反射信号强弱来判断与隔墙的距离。本系统相对传统红外检测方法做如下特点:

(1)红外传感器由原来的5组增加到6组。除了正前、正左、正右以及正前方两个45度斜角外,正前方增加1组红外传感器,通过正前方两组传感器信息的融合实现路口45度斜走,相对于以往的90度直角调整,节约了时间,提高了效率。

(2)采用基于双T选频网络的放大器设计,红外传感器根据反射信号的强弱实现电脑鼠与障碍物之间的测距。以往使用的是一体化红外接收传感器(如IRM8601S),其接收头内部集成自动增益控制电路、带通滤波电路、解码电路及输出驱动电路,但由于检测信号输出的是数字信号,只能判断有或无障碍物,不能根据检测信号输出的强度计算距离。本设计中采用基于双T选频网络和TLC084组成的选频放大设计,实现频率不同增益不同,对有用信号进行放大处理,滤除或抑制无用信号。

(3)发射三种频率调制波,减少信号之间的干扰。6组传感器分为三组,正左和正右两组传感器负责检测电脑鼠是否走在中线上,以便及时做出姿势校正;左前方和右前方两组传感器主要检查前方是否有路口;前方两组传感器配合电机,协同工作实现45度转弯。红外光发射频率越高,传播距离相对越远,在本设计中由于迷宫墙壁之间距离16.8cm(单元格18cm,墙壁厚度1.2cm),而电脑鼠的宽度一般为10cm左右,车体距两边墙体的距离只有3cm左右,所以正左方和正右方发射频率选择为33kHz,左前方和右前方发射35kHz,正前方距离最远,发射频率为38kHz。具体如图3所示。

本设计进行了硬件电路改进,由STM32定时器输出三路PWM信号,每两组红外发射管共用一路PWM信号,遇到障碍物后返回,红外接收管进行信号采集,通过选频放大器对有用信号进行放大处理,送入STM32的12位逐次逼近型AD转换器。由于整流滤波有延时,所以此处采用交流采样,ADC在最高速采样的时候需要1.5+12.5个ADC周期,在14M的ADC时钟下达到1Msps的速度。红外测距电路如图4所示,当接收管接收到红外线,D2导通,并且反射越强,D2阻值越小,没有收到红外线时,D2阻值无穷大,相当于截止;R3和R4两个10K电阻提供2.5V的直流偏置。

3 软件系统设计

软件模块是系统的重要组成部分,电脑鼠通过红外检测获取周围信息,完成前进、转弯、冲刺、停止等基本动作,此外还要通过以获取信息实现最优路径的搜寻并完成最后的冲刺。本设计才用模块化设计,通过主程序调用各个功能子程序,主程序流程图和中断流程图如图5(a)(b)所示。

4 实验验证及分析

(1)红外传感器测距系统中使用基于选频网络的放大设计,由于电阻电容选用国标,无法使中心频率恰好落在38kHz,双T选频网络中心频率f0=1/2πRC,选择R/C=10k/430pF,f0=37kHz,用multisim仿真出的幅频特性如图6所示,搭建硬件实验电路,中心频率并未落在37kHz而是30kHz,减小RC值多次试验,当R/C=9.1k/430pF,中心频率落在38kHz。

(2)迷宫墙壁由空心的白色塑料做成,有很大一部分红外光发生透射,加之日光影响,因此如果直接用发射和接收管测量易产生错误。解决方法给发射管套用黑色外管,减少外界干扰;由ARM微处理器产生PWM信号送入红外发射管,接收管接收经过调制的红外信号;用三极管实现电平转换,调节电位器增加发射功率,使信号调整放大到 A/D转换的最佳量程范围内,获得期望的处理精度。通过实验多次测量,得到一组红外测量距离与输出电压的数据,以障碍物距离S为横坐标,选频放大后的电压值U为纵坐标,用matlab绘制曲线,电压值与距离关系式为U=0.1195+4.5962*S-1,如图7所示。

(4)利用STM32定时器功能,通过软件编程调制出需要的PWM信号,以此控制电机、发射红外,图8是Timer4的CH1通道输出频率为38kHz,占空比为30%的PWM信号。

5 结束语

本文设计了基于STM32F103RCT6的电脑鼠控制系统,在matlab、multisim仿真基础上,确定了选频网络的RC参数,并通过实验得到距离与电压值的关系图,体现了对称RC双T网络良好的选频特性;电机及驱动模块选用效率高、响应快的空心杯直流电机。经试验验证,该设计方案可以满足系统要求。

参考文献

[1] 周立功等.IEEE电脑鼠开发指南—基于MicroMouse615 迷宫智能鼠[M].广州致远电子有限公司,2005.

[2] 杨新.矿区中一种走迷宫电老鼠的研究与实现[J].煤炭技术,2010,29(6):168-171.

[3] 曾璐,周贤娟.迷宫电脑鼠控制系统设计 [J].自动化博览,2009,(7):80-82.

作者简介

上一篇:学校期末和暑假期间安全工作方案下一篇:党建智慧云