作者:云南机电职业技术学院 黄正 字海峰
指导教师:郑树华 陈家敏
作品简介
本系统以STC15F2K61S2单片机为核心控制器,以无线路由器WIFI信道为载体通过数据接收,转发进行上位机和单片机通信,单片机接受到上位机发送的相应数据进行I/O口电平赋值传送给L298电机驱动模块处理相应动作,目的是实现四路电机,两路云台舵机控制;一路视频实时采集转发到上位机显示。
平台选型说明
STC15F2K61S2单片机
设计说明
总体方案设计及实现
本系统分四部分,分别为无线路由器,上位机,电机驱动模块最后是我们系统的核心控制部分STC15F2K61S2单片机。
1.无线路由器/WiFi模块
无线路由器说白了其实他就是一个嵌入式系统,上面运行了可实现路径选择,网络防火墙隔离和网络自动拨号连接等主要功能。
既然它是一个小嵌入式设备那么它应该是可以运行操作系统的,因为它的硬件包含了CPU处理器,RAM内存,ROM存储和FLASH闪存在加上其他外围设备等,就构成了一个嵌入式系统目标板子也就是我们的无线路由器;而这个嵌入式目标板子是可以让我们随意修改里面的操作系统的,所以我们把里面原有的操作系统给擦除重新植入一个开放式准用于无线路由器的操作系统OpenWRT这个过程简称为“刷机”。
就是从思科的路由源码改造过来的,一个适用于某些特定芯片的路由器的小型Linux系统,有了这个系统,路由器就不再是上网那么简单了,我们可以在上面安装各种程序、驱动,以路由为平台,用户可以自由地加载USB摄像头、网卡、声卡、等等设备。
无线路由器上运行着一款程序mjpg-streamer,这个程序可以把USB摄像头的视频进行编码,然后通过WIFI信道返回给上位机,这样,我们就可以看到来自机器人的视频了
同时路由一般都预留有TTL串口,TTL串口是用来调试或者刷机用的,我们把这个TTL串口引出来,然后通过安装在路由里面的Ser2net软件,就能把来自WIFI信道的指令转到串口输出,而串口在这里的作用就是与单片机芯片MCU通信,让单片机接收到相应数据处理相应动作。
2.控制器系统
本系统控制芯片我们采用了大赛指定专用的STC15F2K61S2单,STC15F2K61S2单片机,指令代码完全兼容传统8051单片机;内部集成了时钟和复位电路。
芯片带3路CCP/PWM/PCA,8路高速10位A/D转换,内置2K字节SRAM,一组高速同步串行通信端口SPI,两组高速异步串行通信端口,本系统正是用到了串行数据口TTL和路由器板子进行数据通信。
3.上位机
上位机有两个任务,一个是发送动作指令数据另外一个是接受并解析来自路由发送的图像显示。本上位机有多种客户端,分别是:Android客户端,Iphone客户端和PC客户端,本项目演示的手机客户端为Android客户端。而本系统我们重点阐述的是PC客户端。
PC客户端采用的是C#语言和Visual Stdio IDE,参考了网络上的一些算法和源代码开发。上位机实现和路由通信的实习的采用了Socket套接字,套接字通信过程分为三部:套接字之间的连接过程可以分为三个步骤:
服务器(本系统路由器)监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端(上位机)请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。Socket通信以其传输速度快且稳定的优点使得它在程序开发中应用非常的广泛。知道了Sccket原理就可以对它编程让上位机和路由器进行数据通信。
路由通过视频设备采集到的视频信号编码发送到上位机,上位机利用了AForge.NET控件,,它是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。
这个框架由一系列的类库组成。主要包括有:
AForge.Imaging —— 一些日常的图像处理和过滤器
AForge.Vision —— 计算机视觉应用类库
AForge.Neuro —— 神经网络计算库
AForge.Genetic --进化算法编程库
AForge.MachineLearning —— 机器学习类库
AForge.Robotics —— 提供一些机器学习的工具类库
AForge.Video —— 一系列的视频处理类库
AForge.Fuzzy —— 模糊推理系统类库
AForge.Controls—— 图像,三维,图表显示控件
其中本项目正是利用AForge.Imaging获取解析来自路由器的WIFI Mjpeg流并显示出来,这样上位机就完成了图像显示和数据的发送。下面用VS完成的上位机UI,成功发送数据和获取Mjpeg图像流。
4.电机驱动模块
电机模块的设计我们采用了L298N驱动芯片。L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高最高工作电压可达46V;输出电流大,峰瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
光耦隔离主要是为了将强电部分和单片机电平输出隔离起来防止发生干扰。
根据功能图和我们得到了驱动部分的电路图。
5.软件程序设计
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
在单片机编写程序通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。
模块程序设计法的主要优点是:
1、 单个模块比起一个完整的程序易编写及调试;
2、 模块可以共存,一个模块可以被多个任务在不同条件下调用;
3、 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
软件流程图如下图所示:
作品特色
本项目可以发展为警用社会治安维护,警用排爆机器人,小工程勘察等。另外可以运用此方案改变成其他工业控制,比如:工厂设备无线数据检测,无线控制,实现无线监控及控制生产。
系统演示视频:http://v.eepw.com.cn/video/play/id/2712