李紅宇,馬 進,趙雨秋,劉 文
(華北電力大學 控制與計算機工程學院,河北 保定 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