王胜++王红心++汤莉莉++李大江++刘进++王泉涛++黄思嘉++孙江波
摘 要:本设计采用STM32单片机作为机械臂核心控制器,通过移植Linux操作系统与Qt界面到S3C2440开发板上并在其上建立局域网服务器,实现了多种功能与多种控制方式,可以使用手势感应手套对其进行操控,也可使用Android手机APP端、PC等进行控制,还可让其自动运行。同时在局域网内的电脑上或蓝牙手机上都可以通过摄像头对机械臂进行实时监控。本设计可以广泛应用在智能工业、环境探索、智能家居等领域。
关键词:STM32单片机 手势感应手套 远程监控
中图分类号:TP399;TN923 文献标识码:A 文章编号:1674-098X(2017)10(a)-0009-02
Abstract: This design uses STM32 microcontroller as the core controller of mechanical arm, the transplantation of Linux operating system and Qt interface to the S3C2440 development board and the establishment of the LAN server on which to achieve a variety of functions and various control modes, you can use the glove gesture sensing control, can also be controlled by the use of Android mobile phone APP terminal, PC and other controls, but also allow them to run automatically. At the same time, in the LAN computer or Bluetooth phone, you can monitor the mechanical arm real-time through the camera. The design can be widely used in intelligent industries, environmental exploration, smart home and other fields.
Key Words: STM32 microcontroller; Gesture-sensing glove; Remote monitoring
智能機械臂因为其与人手的相似性,成为人类在工业生产与生活的一大助力,特别是对于工业生产,机械臂常用于生产产品,运输产品,成为代替人力的一种智能生产方式,解放了劳动力。基于工业的节能性、安全性、稳定性,本设计使用ARM 9系列的S3C2440芯片进行机械臂的底层控制,在机械臂上安装了蓝牙模块用于蓝牙客户端交换数据,使得机械臂的工作状态可以实时被客户端获取,同时也可以让客户端对机械臂进行控制。使用手势感应对机械臂进行控制,可以简化人对机械臂的控制难度,使得机械臂在操控上也能与人控制自己的手大致相似。为了配合工业控制与科考调查,机械臂上搭载一个摄像头进行实时监控,并显示于LCD上,或通过以S3C2440开发板为中心构造的局域网内任意一台电脑上的客户端程序来进行监控与控制,也可通过无线路由器组建的无线局域网达到无线监控与控制的功能,有效增加机械臂工作的安全性。
1 总体设计方案
本设计的机械臂部分使用STM32单片机作为机械臂终端的控制核心,安装蓝牙HC-05模块与无线模块[1-2],以便实现手机APP控制与手势感应控制,在S3C2440开发板移植linux系统[3]与Qt界面,使用串口与STM32控制的机械臂终端进行通信,添加摄像头模块,并建立服务器,为局域网内所有PC机上的Qt客户端提供控制与监视机械臂的服务。系统框图如图1所示。
这样的设计,可以使得S3C2440成为物联网机械臂系统的中枢,通过服务器程序的编写以达到控制一个或多个机械臂终端,同时采集视频图像,为Qt编写的上位机软件提供监控与控制的服务。
对于手势感应手套,使用一个STM32芯片为主控制器,连接三轴加速度传感器模块与无线模块,采集人手的位置信息,通过无线模块发送到机械臂终端。设计框图如图2所示。
2 机械臂软件设计
机械臂软件设计是采用S3C2440开发板运行的服务器为核心。设计方案如图3所示。主要包括:摄像头数据的采集,与STM32串口的数据交互,STM32蓝牙模块的控制,STM32与手势感应手套的交互,以及采集到数据后数据的处理与打包发送等内容。
3 设计方案特点及扩展说明
3.1 设计特点
本方案是以机械臂为终端,为了能使机械臂适应各种使用环境,开发多种控制方式,同时移植Linux系统于S3C2440之上,使得机械臂的功能更为强大,本设计的特色有以下几个方面。
(1)使用S3C2440移植Linux系统,使得S3C2440上的服务器端可以多任务运行,响应速度变快,功能更为强大。
(2)使用STM32微控制器直接对机械臂进行操控,通过串口再与S3C2440的服务器端交互数据,即使舵机发生问题也不会对服务器造成影响,使得整个系统更为安全。
(3)使用手势感应手套采集手势数据,模拟人手动作进行操控,又或让机械臂自主重复单一的动作,稳定,实用和易操作。
(4)使用上位机监控的同时,通过程序中的算法可以判断出摄像头监控的范围内是否有物体运动。
3.2 扩展说明
移植了Linux系统的S3C2440芯片具备了强大的拓展性能,具体有以下几个方面。endprint
(1)使用zigbee代替串口,使得系统更为安全的同时,更是可以远程操控多个机械臂终端。
(2)将S3C2440的服务器更改为一个客户端,将视频数据发送到购买的腾讯云服务器上,使得用户可以在全球范围内监控与控制机械臂。
(3)使用GSM/GPRS发短信,当检测到异常时,向用户发出警告。
4 设计难点与关键技术
本设计的主要设计难点有以下几个方面。
(1)多种无线方式的编程控制,蓝牙的控制、NRF24L01无线模块的控制,以及传输协议的制定。
(2)V4L2接口采集图像数据,内存的分配方式,以及采集队列的分配。
(3)使用TCP进行服务器编程,在服务器中需要多线程处理图像,还有串口、客户端请求,这都需要考虑到线程间的同步以及各種传输协议的制定,还需要保证图片传输的完整性。
(4)上位机的图形界面设计,以及跨平台的兼容性。
本设计的关键技术概述如下。
(1)通信协议的指定。
(2)手势感应手套采集人体手势的方法。
(3)S3C2440服务器的编程与线程同步。
(4)机械臂的蓝牙与NRF24L01的编程设计。
(5)机械臂运动的平滑处理与搬运动作设计。
(6)Qt上位机与服务器交互流程设计。
5 系统调试与结果分析
物联网手势感应机械臂的主要调试内容分为3个部分。
(1)网络连接。
服务器为客户端提供使用TCP协议进行通信。S3C2440开发板IP为192.168.1.230,使用ping指令判断网络是否通畅,ping指令采用的是ICMP的包,没有端口号,是IP的子协议,可以通过ICMP的reply来判断网络[4],见图4。
(2)视频监控。
当PC能够ping通开发板后,说明它们已经在同一个网段中,此时便可以使用上位机监控机械臂了。
(3)蓝牙客户端的控制与手势感应手套的控制。
使用Android手机打开编写的蓝牙客户端APP,连接好HC-05蓝牙模块,任意键入一个指令,成功控制的同时可以看见STM32发回手机端的PWM波的占空比值。
使用手势感应手套时,将手套的串口接入电脑,打开串口助手,就可以看到手套采集到的各个轴的数据。
6 结语
通过反复的联调及修改出现的bug,本设计可以使用手机APP、手势感应手套进行操控,又或让机械臂重复单一的动作,还可以在LCD视频监控,或使用上位机软件监控并控制。多种控制方式可以让机械臂适应多种控制环境,配合远程监控使得控制更为方便,图像识别更是可以提示机械臂的异常。这些技术更是可以广泛应用于智能家居、智能工业等领域。本设计亦可添加zigbee模块,来实现无线控制多个机械臂,将程序放在云服务器上便可全球监控。此外,还可以添加GSM/GPRS模块对机械臂的异常进行报警。
参考文献
[1]蒙博宇.STM32自学笔记[M].北京:北京航空航天大学出版社,2012.
[2]刘火良,杨森.单片机与嵌入式:STM32库开发实战指南[M].北京:机械工业出版社,2013.
[3]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.
[4]袁国忠,徐宏译.CCNA学习指南[M].北京:人民邮电出版社,2012.endprint