胡凯,沈新锋,张瑞东
(南京信息工程大学 信息与控制学院,江苏 南京 210044)
本设计采用msp430F149作为核心处理器,设有打靶和报靶两套装置。打靶装置用来打靶和按键控制发送命令,报靶装置用来接收命令进行激光点的位置识别和报靶。
图1 实物模型图
本设计包含两个部分,模型如图1所示。
第一个部分是激光枪打靶。此装置的系统结构如图 2(a)所示,硬 件[1]上 采用了无线模块nRF905、细 分 器2M542、4*4矩阵键盘、激光笔和42步进电机搭建的二维云台。本设计中选择四个按键控制步进电机上下左右移动,选择二个按键进行靶心校准和靶环距校准,选择二个按键进行图像采集和自动报靶,选择二个按键控制激光笔的打开和关闭。在进行靶心校准时,将激光点打到靶心位置,MCU控制摄像头识别激光点并记录下实际靶心位置的偏差值。在进行靶环间的距离校准时,选择任意一个靶环,将激光点打到该靶环上,MCU控制摄像头识别激光点并记录下与显示屏上所画的靶环的比例系数。校准完成后,便可将激光笔打到摄像头拍摄范围内任一位置,通过按键控制摄像头获取激光点的横纵坐标,根据记录的偏差值自动修改,再通过按键便可显示点的方位信息和环数信息。
图2 装置的系统结构图
第二个部分是激光点识别[2]。此装置的系统结构如图2(b)所示,硬件上采用了无线模块nRF905、带 FIFO缓存的摄 像 头 OV7670、彩 屏ILT9395和液晶显示屏LCD12864。调整摄像头的位置和焦距,以便能够在彩屏上观察到完整清晰的靶环。在采集激光点的过程中,MCU启动摄像头拍摄当前画面后,从摄像头内存中读240*320像素点的数据,以4*4阵列的像素点作为一个单位进行扫描,判别图像像素点RGB转换成灰度值。如果在4*4阵列的第一列进行行扫描时出现为灰度值大于22(实际环境中测量的值),即判别该4*4阵列为激光枪的着落点,按4∶1缩放比例记录该点的横纵坐标值。
带FIFO的摄像头比不带的多3M的缓存,可将采集的数据暂存在这个缓存中,使用时读取缓存中的图像数据即可,可减少对单片机采集图像数据时对MCU速度的要求。
摄像头OV7670[3]是一种图像传感器,工作电压低,提供单片VGA摄像头和影像处理器[4]的所有功能。通过SCCB总线控制,可以输出整帧子采样、取窗口等方式的各种分辨率8位影响数据。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。
在本设计中,MCU内存有限,不能存取一帧图像,需要外带缓存处理图像信息,并且通过控制SCCB总线来启动摄像头OV7670,通过软件编程很容易控制。摄像头拍摄的一帧图像信息[5]的像素点格式为565,由16位的二进制数组成。在判断像素点的RGB转换成的灰度值时,采用的转换算法如式(1)所示。
这里,RGB≫11作用是提取R的值,(RGB≫11)*1作用是R的值乘以其比例系数;0×07e0&RGB作用是提取G的值,(0×07e0&RGB)*2作用是G的值乘以其比例系数;0×001f&RGB作用是提取B的值,(0×001f&RGB)*1作用是B的值乘以其比例系数;/4作用是除以三种颜色的比例系数之和(比例系数可自定)。
实际测量中,白色的灰度值在14左右,黑色的灰度值在6左右,激光点的灰度值在22左右。
LCD12864是中文汉字图形点阵液晶显示模块,可显示汉字及图形,内置8 192个中文(16×16点阵)、128个字符(8×16点阵)及64×256点阵显示 RAM(GDRAM),该模块有并行和串行两种连接方法,
LCD12864可以显示图像信息、中文汉字,英文字母等,符合设计要求。本设计使用的4位并行的连接方法,相对于8位并行的连接方法省了4个管脚口,其外围电路连接图如图3所示。
图3 LCD12864外围电路连接图
在本设计中,在程序初始化阶段便在液晶显示屏上画上靶环,而非拍摄获取的。在确定方位信息时,需求出过圆心的直线方程,通过判断点是在线上还是在线下来确定点的方位;在确定环数信息时,需求出每个圆环的方程,通过判断点是在圆内还是在圆外来确定点所在的环数。
细分器2M542的适合驱动电压为24 V~50 V,电流小于4.2 A,可用于两相混合式步进电机。通过开关可设置最小细分数、输出相电流的大小和电流的控制方式,并且通过输送PWM波可对步进电机的转角进行细分,其输入信号的波形时序图如图4所示。
图4 细分器2M542输入波形时序图
nRF905无线模块使用在433 Mz开放ISM频段,最高工作速率50 kbps,高效GFSK调制,抗干扰能力强。其内置有硬件CRC检错和点对多点通信地址控制,在低功耗1.9 V~3.6 V下工作。同时,模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可接各种单片机使用,软件编程非常方便。
在本设计中,MCU可以模拟SPI时序控制nRF905模块进行数据通信,其SPI读写时序如图5所示,并且在通信过程中,可以设有不同的地址,避免了外部信号的干扰,符合设计要求。通过按键控制nRF905的数据发送,而接收方则根据接收到标志信号执行相应的程序。
图5 SPI读写时序图
按键是通过中断查询的方式来实现其功能的,其电路连接图如图6所示。由于处理器内存有限,其按键功能只能在循环中改变标志位实现。
图6 按键模块电路连接图
msp430F149芯片[6]是美国 TI公司推出的超低功耗微处理器,有60KB+256字节FLASH,2KBRAM,包括基本时钟模块、看门狗定时器、带 3个捕获/比较寄存器和PWM输出的16位定时器、带7个捕获/比较寄存器和PWM输出的16位定时器、2个具有中断功能的8位并行端口、4个8位并行端口、模拟比较器、12位 A/D转换器、2个串行通信接口等模块。
最小系统是由保证处理器可靠工作所必须的基本电路组成的,主要包括电源电路、时钟电路、复位电路、通信接口电路、数据存储电路组成,其硬件框图如图7所示。
图7 msp430F149硬件框图
图8 装置1的程序流程图
在本设计中,一个装置需要操控多个模块,而msp430F149解决了I/O口不够用的问题。同时msp430F149可处于低功耗状态,在没有命令时,可以将其置为低功耗状态。
根据结构化程序设计的要求,我们编程时采用模块化和结构化的方法进行编程。根据这一要求以及系统的功能要求,我们设计了如图8和图9所示的程序流程图。
整个系统上电启动后,用户通过装置1操控装置2拍摄当前画面,根据彩屏上显示的画面调整摄像头的位置和焦距直至在彩屏中观察到完整清晰的靶环。在摄像头位置调整好之后,用户通过按键控制激光笔着落点的位置,使其分别落在靶心和靶环上,通过校准按键对拍摄到的激光点的横纵坐标进行软件校准。校准完成后,在摄像头的可视范围内,用户可随意控制着落点的位置,通过摄像头拍摄按键和报靶按键,液晶显示屏上便显示相应的闪烁点,并显示点的方位信息和环数信息。
图9 装置2的程序流程图
设计了一种基于点识别的自动报靶系统,由激光枪打靶和摄像头寻点两部分组成。在人为调整和校准之后,便可以实现自动报靶的功能。此设计涉及到通讯领域、图像采集处理领域和微控制领域,在实际生活中有很高的应用价值。
[1]崔鸣,尚丽.基于LM3S811单片机的LED点光源跟踪系统[J].苏州市职业大学学报,2011,27(1):17-21.
[2]HU K,SONG A G,WANG W L,et al.Fault detection and estimation for non-Gaussian stochastic systems with time varying delay[J].Advances in Difference Equations,2013(1):1-12.
[3]李德明.基于OV7670的图像采集及显示系统设计[J].仪器仪表学报,2010,31(8):31-32.
[4]夏旻,翁理国,张颖超.基于神经元协同激励的稳定时间可控情景记忆[J].系统仿真学报,2011,23(10):2134-2137.
[5]翁理国,夏旻,张凯,等.基于免疫学的错误识别分类系统[J].系统仿真学报,2011,23(10):2216-2219.
[6]沈建华.Msp430系列16位超低功耗单片机原理与实践[M].北京:北京航空航天大学出版社,2008.