李红宇,马 进,赵雨秋,刘 文
(华北电力大学 控制与计算机工程学院,河北 保定 071003)
金属探测器(Mental Detector),是一类能够探测到金属导体的电子仪器。金属探测装置能够在旅客进入车站的时候对其所携带的包裹进行检测,以防金属危险物品带入其中[1]。它可以探测到埋在地下的金属管道,甚至应用在军事上探测爆炸物;还能用在建筑行业中以探测墙壁中的电线电缆等金属物体[2]。目前,金属探测器已被广泛应用,成为探测金属导体物体的重要设备[3]。实现了不用人们手动操作移动金属探测器,即可自动找到一块材料里面的金属。这个功能将极大节省人力支出,减少工作成本,对于弥补金属探测器的自动检测,并实现定位方面功能的空缺,有着较大的意义。
图1 总体框架图Fig.1 Overall framework diagram
本文设计了一辆具有简单智能化的简易小车[4],该设计是基于单片机的智能控制,控制灵敏度高;采用霍尔传感器,周围的金属物体检测度高;WEMOS单片机为核心处理器,检测和分析实验结果,提高了系统的精度和可靠性。对物体利用超声波模块进行扫描,当小车距离物体小于某个阈值,小车自动避障;对金属物体的远近进行规划,慢慢地靠近探测线圈,使磁场发生变化,从而电流和阻抗也跟着变化,并通过探测报警的声音变化来反应金属的有无。
实现系统功能:在规定的范围,小车避障,检测金属物体,探测报警及该系统采用的结构和实现的功能。将系统框架分为主机和从机两个部分,主机完成控制小车移动等功能,从机完成找寻目标和金属物体探测报警等功能[5]。编写一个程序代码,并将其导入到手机里面,通过操作手机控制系统,实现智能金属探测操作。使其系统连接紧密,各模块相互配合,完成工作;然后,从硬件上将系统框架分为金属探测模块、超声波模块、电机及其驱动模块、电源模块等几个部分。总体框架图如图1所示。
根据系统的应用场景,研究实现的系统功能如下:
1)从机能够根据金属物体的有无,找寻探测金属物体,产生涡流效应。
2)设计一个自主报警电路。
3)将程序代码导入手机,通过手机操作,实现系统的控制。
4)操作手机,系统能够实现前后左右各个方向的探测。
5)通过操作智能小车,线性霍尔传感器去探测金属物体,并实现自动智能报警。
图2 硬件设计原理图Fig.2 Schematic diagram of hardware design
金属探测系统的硬件设计原理图如图2所示,整个系统由单片机最小系统、金属探测模块、报警模块、电机驱动模块、WIFI模块和电源模块组成[6]。主要完成的功能如下:
1)金属探测模块和报警模块完成金属探测功能,并发出报警信号。
2)驱动模块驱动4个直流减速电机,实现金属探测器的可移动功能。
3)WIFI模块实现单片机与手机的无线数据传输功能,完成手机对小车无线控制功能。
4)电源模块实现电压转换和电压稳定的功能,为整个系统提供所需的工作电压。
WEMOS芯片集成了一个ESP8266WIFI模块,如图3所示。它有3种编程方式:使用AT指令进行操作、LUA语言编程、Arduino开发环境编程[7]。
ESP8266可以实现的主要功能包括:串口透传,PWM调控,GPIO控制[8]。它支持STA、AP等工作模式[9]。其中,将模块设置为STA模式,可通过路由器连接互联网,作为上网设备使用等。
将WEMOS芯片构架为一个服务器,等待客户端接入,若金属传感器检测到金属,将数据传入芯片,芯片驱动报警模块;同时,芯片还不断地扫描是否有数据传来,利用客户端的数据判断,驱动小车。主程序流程图如图4所示。
图3 WIFI模块图Fig.3 WIFI module diagram
WEMOS板载无线网卡,将其设置为STA模式[10],然后WEMOS架设为一个FTP服务器。若将手机APP作为客户端连入WEMOS,就可以实现手机APP对小车的控制。
#include<ESP8266WiFi.h>
char *ssid="D-Link_DIR-612";
char *passward="13473904192";
WiFiServer server(88);
void initwifi(){
WiFi.mode(WIFI_STA);
WiFi.begin(ssid,passward);
while(WiFi.status()!=WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(115200);
initwifi();
pinMode(D5,OUTPUT);
digitalWrite(D5,HIGH);
server.begin();
}
void loop() {
char cmd;
WiFiClient cli=server.available();
while(cli.connected())
while(cli.available()){
cmd=cli.read();
swicth(cmd){
图4 主程序流程图Fig.4 Main program flow chart
case 1:
}
}
}
}
该代码是整体的一部分,可实现通过无线网络对小车进行控制。WEMOS芯片作为一个服务器,当有客户端接入时,不断扫描客户端是否有数据传来,可以借助该程序结合驱动程序,实现小车的无线控制。
实物图如图5所示。对实物进行了调试,测试金属探测小车是否能够实现对金属物体的探测功能,测试小车能否实现避障功能。经过多次调试,发现当探测触头调到10cm左右时,探测器的灵敏度高,精确度高,误差比较小。因此,把它的探测触头调在10cm范围。调好范围之后,需要探测记录数据。将1元硬币、5角硬币和1个自己制作的小铁块,分别放置于一定的地方,然后操作智能小车,对其进行测试,每种金属分别探测5次,得到的探测结果见表1。
金属物体探测器调试结果基本都是正确的,但因探测模块只有一定的探测范围,以及硬件设备不良,都会影响仪器工作的调试,存在一定的误差。当小车超声波探头与地面物体距离小于3cm,小车自动后退。经过多次试验,避障功能基本成功,但由于超声波模块的感测精度以及芯片的计算速度的影响,存在一定误操作。
表1 探测结果Table 1 Detection results
图5 实物图Fig.5 Physical image