用mu+arduino制作”激光炮台“

    我最近观看了《星球大战》这部科幻电影,影片中不断出现的各类强大战舰以及为战舰提供火力支援的防御炮台给我留下了深刻的印象。这些防御炮台可以多角度旋转:自动识别并瞄准目标,然后将目标摧毁。防御炮台不仅有强大的火力,从外观上也极大地震慑了敌方部队。

    参考电影中的炮台样式,结合自己的理解,我形成自己DIY炮台的想法。很快,我脑海中就有了一个由3个部分组成的炮台的结构:第一部分为武器部分,第一部分为显示控制部分,第三部分为探测识别部分。在具体实现上,武器部分由舵机与激光头模拟(所以,这里的“激光炮台”不是真的,只是个发射红色光点、模拟激光射击效果的玩具而已)。显示控制部分采用Arduino Uno来充当控制部分,用OLED显示屏来显示数据。恰好我手头有MU开发模块,正好可以利用MU的图像识别功能来模拟探测识别部分的功能。
  M U模块
    MU是具有视觉能力的智能玩具控制器(见图1),芯片内预装了检测程序,能够检测人脸、人的上半身、线条、球形、手手旨等目标物体。M U模块配有4组舵机接口,还提供串口、SPI等数据输出接口。
  它在操作上也简单、方便,只需进行简单的参数设置,即可完成对预先设定的目标的检测、识别。用户不需要关心图像识别等算法,只需要设置参数、读取模块的识别数据即可。
  炮台的结构
    炮台的结构又可以分为两个部分,第一部分为旋转结构,第二部分为武器结构。炮台的旋转结构主要由两台舵机组成,其功能主要是完成炮台的旋转,通过Arduino Uno控制器输出的脉冲信号来控制舵机在上下(y)、左右(x)方向的转动角度。
  舵它机在X方向和y方向的旋转组合能在炮台前方形成一个矩形区域(见图2),该区域的大小会随着目标与炮台的距离变远而变得更大,这就是炮台可以攻击的范围。
    武器结构采用激光头来模拟发射炮弹或激光的效果,该部分相对简单,只需要控制激光头的通断即可。为达到拟真的效果,激光头实际接通时间不宜太短,否则难以观察到发射效果。
   Arduino Uno与0LED显示屏Arduino Uno的核心是ATmega328P单片机,可使用Arduino IDE开发、烧写程序。该开发环境的主要特点是开发项目简单快速、参考资料丰富。采用它作为主控器可以快速地完成炮台的各项功能。
  OLED显示屏(见图3)的特点是显示亮度高、总线接口丰富、价格便宜。结合Arduino Uno与OLED显示屏,可以快速开发出带有显示屏的项目,即节约成本又达到了模拟炮台的效果。
    主要模块制作制作前需要准备的硬件材料包括MU模块1个、Arduino Uno控制板1块、0.96英寸OLED显示屏(SPI接口)1块、FPV云台支架1套、MG90舵机2个、5V激光头模块1个、5V继电器模块1个、蜂鸣器1个、5V电源模块1套、导线若干、纸盒子1个、测试球1个。需要准备的工具包括热熔胶抢、电烙铁等。
 制作炮台模块
    第一部分为旋转结构,该结构使用自由度为2的机械臂充当。为节约成本,我采用了FPV云台支架加上两个MG90舵机制作,该结构成本低,且能实现模拟炮台旋转的功能。通过简单的组装,即可把云台与舵机拼接完成,效果如图4所示。
    第二部分为武器结构,使用5V激光头来模拟激光炮。由于激光头的工作电流较大,Arduino Uno上的接口无法驱动激光头,需要使用继电器来驱动。为增强武器发射时的效果,我增加了蜂鸣器,在接通激光头的同时,也将蜂鸣器电源接通,模拟出武器发射声。在制作炮管时,需要注意让炮管长度小于炮管到地面的高度,否则在舵机初始化过程中会出现炮管卡在地面上的情况。
    在完成炮台结构的组装后,为保证正常运行,可使用简单的舵机程序测试云台的旋转情况。其实MU模块提供了4个舵机接口,但为了自主、方便地操控舵机的转动角度,本项目中没有采用MU自带的舵机控制接口,而是通过Arduino Uno直接操作舵机。舵机电源可使用MU提供的舵机电源接口。平台组装完成后,用热熔胶枪把激光头固定在炮台顶端中间位置即可。为让平台旋转时保持稳定,需要使用热熔胶把整个炮台底部固定住。
 显示控制模块
    现代化武器越来越重视远程控制方式,虽然该项目还达不到远程控制的要求,但也用OLED显示屏来模拟类似的功能,这样能直观地显示出检测到的目标。显示模块用的是SPI接口的0.96英寸OLED显示屏,该显示屏的主要功能是模拟远程检测效果,用来显示检测到的目标的位置、大小(见图5)。目标的大小信息来自MU提供的检测目标的长、宽数据。目标的位置通过检测目标位置相对于屏幕中心点的偏移量来显示。显示屏的中心点就是MU摄像头对准的位置。检测到的目标位置,会通过一定的比例缩放显示到显示屏上。
  由于显示屏的大小限制,检测到的目标大小数据,也需进行等比例缩放才能在屏幕上完整显示。本项目的缩放比例调整为0.2倍,可以根据实际情况自行调整。

    控制器采用的是Arduino Uno,OLED显示屏可直接连接到Arduino的SPI接口上,MU模块只需要有一条数据线与Arduino相连即可(即Arduino的RX与MU的TX连接),舵机控制线需要连接到Arduino上带有PWM功能的接口上,激光头与蜂鸣器只需要连接一般的数字接口即可。接口连接情况可以参考附表。更多精彩内容订阅无线电...

内容摘自《无线电》,更多内容请订阅《无线电》杂志!订杂志上杂志铺!
友情提示:文章内容归杂志社及原创作者所有,杂志导读是为了更好的向用户展示期刊精彩内容,让用户了解期刊,订阅期刊,如有涉及版权问题,请立即与我们联系。我们在核实后将在24小时内删除。