郭 燕,王 琰,胡鵬路
(1.南京科技職業(yè)學(xué)院,江蘇 南京 210048;2.南京熊貓機(jī)電儀技術(shù)有限公司,江蘇 南京 210007)
現(xiàn)代社會(huì)智能技術(shù)正越來(lái)越深刻地影響著我們的生活,智能旅游是指在旅游行業(yè)采用最新智能技術(shù)進(jìn)行環(huán)境感知和規(guī)劃決策,以智能手段開展旅游服務(wù),使游客能夠便捷地獲取舒適的旅游方式[1]。本課題研制開發(fā)了一種用于旅游的智能導(dǎo)游小車,該小車由52單片機(jī)、QTI傳感器、RFID讀卡器、語(yǔ)音模塊(WT588D)、鋰電池電源模塊、伺服舵機(jī)等部件組成,實(shí)現(xiàn)從起始點(diǎn)出發(fā)到目的地,按照指定軌跡移動(dòng),在規(guī)定時(shí)間內(nèi)游歷指定景點(diǎn),并播報(bào)相應(yīng)的景點(diǎn)信息,在游歷完所有景點(diǎn)后回到出發(fā)地的相應(yīng)功能。
本課題所開發(fā)的智能導(dǎo)游小車是由機(jī)械本體、檢測(cè)元件、驅(qū)動(dòng)系統(tǒng)、控制系統(tǒng)和執(zhí)行裝置組合在一起的組合體,能夠完成一系列開環(huán)或閉環(huán)系統(tǒng)的工作,實(shí)現(xiàn)半自動(dòng)或全自動(dòng)的系統(tǒng)操作。該系統(tǒng)能夠在一系列景點(diǎn)之間按事先設(shè)定好的順序自動(dòng)循線行走,不需要人為的遙控;同時(shí),該系統(tǒng)結(jié)合無(wú)線射頻技術(shù)檢測(cè)景點(diǎn)信息,采用多功能、可編輯的WT588D語(yǔ)音芯片進(jìn)行站點(diǎn)信息的語(yǔ)音播報(bào),采用AT89S52單片機(jī)控制裝置實(shí)現(xiàn)可編程控制[2-4],以此實(shí)現(xiàn)導(dǎo)游的功能。智能導(dǎo)游小車系統(tǒng)總體結(jié)構(gòu)框圖[5-6]如圖1所示,其中電源模塊為整個(gè)系統(tǒng)提供動(dòng)力來(lái)源;QTI光電傳感器實(shí)現(xiàn)循跡功能;RFID讀卡器讀取標(biāo)簽卡進(jìn)行景點(diǎn)識(shí)別;語(yǔ)音模塊用來(lái)編輯與存儲(chǔ)語(yǔ)音片段;功放模塊實(shí)現(xiàn)語(yǔ)音的放大與保真,并采用DAC方式驅(qū)動(dòng)揚(yáng)聲器進(jìn)行景點(diǎn)語(yǔ)音信息的播報(bào);360°伺服舵機(jī)作為執(zhí)行單元按照指令進(jìn)行小車前進(jìn)方向或速度的控制,實(shí)現(xiàn)小車的前進(jìn)、后退等各種巡航動(dòng)作;ISP下載模塊實(shí)現(xiàn)程序往單片機(jī)的燒錄;AT89S52單片機(jī)為整個(gè)系統(tǒng)的協(xié)調(diào)與控制提供保障等。
圖1 智能導(dǎo)游小車系統(tǒng)總體結(jié)構(gòu)框圖
本系統(tǒng)采用8個(gè)循跡傳感器連接至單片機(jī)P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7等8個(gè)端口,用于獲取路面信息,進(jìn)行循線;采用RFID讀卡器連接至控制器P2.4、P3.0端口來(lái)實(shí)現(xiàn)循跡和讀取標(biāo)簽卡信息;采用語(yǔ)音模塊(WT588D)連接至單片機(jī)P2.0、P2.1、P2.2、P2.3實(shí)現(xiàn)語(yǔ)音的編輯、存儲(chǔ)與調(diào)用;采用伺服舵機(jī)連接至單片機(jī)P1.0、P1.1驅(qū)動(dòng)小車左右輪按照預(yù)定的方式動(dòng)作。智能導(dǎo)游小車控制部分連接示意圖見圖2。本系統(tǒng)采用軟硬件結(jié)合的設(shè)計(jì)方法,實(shí)現(xiàn)在規(guī)定時(shí)間內(nèi)游歷指定景點(diǎn),并播報(bào)相應(yīng)的景點(diǎn)信息,在游歷完所有景點(diǎn)后回到出發(fā)地的相應(yīng)功能。
本系統(tǒng)采用DM-S53401QTI光電傳感器,該傳感器采用光電接收管來(lái)進(jìn)行循線。當(dāng)QTI傳感器在一個(gè)很暗的表面上時(shí),反射光強(qiáng)度很低;當(dāng)QTI傳感器在一個(gè)很亮的表面上時(shí),反射光強(qiáng)度很高,從而導(dǎo)致傳感器輸出的變化,不同強(qiáng)度的反射光導(dǎo)致傳感器輸出不同,即探測(cè)到不同顏色的物體輸出不同的電平信號(hào)。
圖2 控制部分連接電路示意圖
本系統(tǒng)共采用8個(gè)QTI傳感器,在小車的前、后分別安裝4個(gè)QTI傳感器。安裝好后,用套件中附帶的3PIN杜邦線將QTI的引腳連接到機(jī)器小車的面板上,將QTI傳感器的GND連接至控制板上的GND、VCC連接到控制板上的Vdd,然后將SIG連接到單片機(jī)的P0口上,在此以前4組傳感器為例說(shuō)明連接方法和循跡策略。
傳感器與單片機(jī)接口的連接示意圖如圖3所示,以前端4組QTI傳感器為例,將其SIG信號(hào)線分別連接至小車平臺(tái)的相應(yīng)P0.0、P0.1、P0.2、P0.3位,從而進(jìn)行路面的檢測(cè),以便循線。
圖3 傳感器與單片機(jī)接口連接示意圖
讀卡功能模塊由RFID讀卡器和無(wú)源只讀標(biāo)簽卡組成,RFID讀卡器可低功耗被動(dòng)讀取標(biāo)簽,實(shí)現(xiàn)串口通信,能夠采用軟件來(lái)啟動(dòng)或者禁用輸入使能端,并且具有雙色LED狀態(tài)顯示,每個(gè)標(biāo)簽含有一個(gè)唯一的標(biāo)識(shí)符,由RFID射頻讀取卡中信息后,通過(guò)串行接口P3.0傳輸給單片機(jī)控制端[7]。
RFID讀卡器有4個(gè)引腳:VCC、/ENABLE、SOUT、GND。其中,單片機(jī)P2.4連接其使能引腳/ENABLE,讀卡器的輸出信號(hào)SOUT與單片機(jī)的P3.0引腳相連,實(shí)現(xiàn)串口通信。RFID讀卡器電路連接方式見表1。
表1 RFID讀卡器電路連接方式
在循跡的過(guò)程中,循跡函數(shù)由前進(jìn)循跡void run_online(int steps)、后退循跡void run_online1(int steps)、左轉(zhuǎn)void run_online_a(int steps)、右轉(zhuǎn)void run_online1_a(int steps)組成。前進(jìn)循線根據(jù)前頭的4個(gè)QTI傳感器返回的信息,然后根據(jù)run_online()函數(shù)執(zhí)行前進(jìn)、左轉(zhuǎn)修正、右轉(zhuǎn)修正等動(dòng)作實(shí)現(xiàn)循線;后退循線與前進(jìn)循跡類似。
循跡部分函數(shù)如下:
void run_online(int steps){
while(steps)
{
if((P02_state()&&(!P01_state()))||(P03_state()&&(!P02_state())&&(!P01_state())&&(!P00_state()))) //1100 1000
{
move(1530,1300,1);
}
else
if(((!P02_state())&&P01_state())||((!P03_state())&&(!P02_state())&&(!P01_state())&&P00_state()))
{move(1700,1470,1);}
else if((!P01_state())&&(!P02_state()))
{
move(1500,1500,1);
delay_nms(1000);
move(1700,1300,8);
city_RFID=RFID();
if(city[Travel_itinerary[travel_city]]==city_RFID)
{
voice_broadcast(Travel_itinerary[travel_city]);
travel_city++;
}
break;
}
else
{
move(1700,1300,1);
steps--;
}
}
在語(yǔ)音播報(bào)過(guò)程中,首先采用move()子函數(shù),RFID通信串口初始化,當(dāng)讀卡器讀完一幀數(shù)據(jù),即產(chǎn)生串行中斷,調(diào)用串行中斷子函數(shù)serial()并進(jìn)行解碼,按照位通信協(xié)議讀取數(shù)據(jù),調(diào)取相應(yīng)語(yǔ)音,同時(shí)進(jìn)行播報(bào)。語(yǔ)音播報(bào)主要由串口中斷讀卡函數(shù)、RFID通信串口初始化函數(shù)以及解碼函數(shù)組成。語(yǔ)音播報(bào)流程如圖4所示。
本智能導(dǎo)游小車使用的算法是基于數(shù)字地圖的向量分析法[8],首先用數(shù)組M存儲(chǔ)相應(yīng)的景點(diǎn)坐標(biāo)、景點(diǎn)標(biāo)簽卡信息,數(shù)組N存儲(chǔ)機(jī)器小車的移動(dòng)路徑。機(jī)器小車通過(guò)循線到達(dá)某個(gè)景點(diǎn),并通過(guò)RFID讀卡器讀取該景點(diǎn)的標(biāo)簽卡信息,將標(biāo)簽卡信息與數(shù)組M對(duì)比找到該景點(diǎn)的坐標(biāo)B。再通過(guò)機(jī)器小車移動(dòng)路徑數(shù)組N獲取上一個(gè)景點(diǎn)和下一個(gè)景點(diǎn)的信息,對(duì)照數(shù)組M找到這兩個(gè)景點(diǎn)的坐標(biāo)A和C,最后通過(guò)這三個(gè)景點(diǎn)(上一個(gè)景點(diǎn)坐標(biāo)A、當(dāng)前景點(diǎn)坐標(biāo)B、下一個(gè)景點(diǎn)坐標(biāo)C)來(lái)獲知小車需轉(zhuǎn)動(dòng)的方向和轉(zhuǎn)動(dòng)角度,小車獲知轉(zhuǎn)動(dòng)方向和角度后便可旋轉(zhuǎn)至下一個(gè)軌道,循線前進(jìn)。
圖4 語(yǔ)音播報(bào)流程
軟件設(shè)計(jì)思路是:小車從起始景點(diǎn)出發(fā),先播報(bào)起始景點(diǎn)信息,再沿某個(gè)方向循線運(yùn)動(dòng),到達(dá)下一個(gè)景點(diǎn)時(shí)小車通過(guò)內(nèi)側(cè)的兩個(gè)QTI檢測(cè)到相應(yīng)的信息,驅(qū)動(dòng)RFID讀卡器讀取無(wú)線射頻標(biāo)簽卡信息,將讀取到的信息與city[][]數(shù)組的對(duì)應(yīng)列數(shù)據(jù)對(duì)比,找到與之相對(duì)應(yīng)的景點(diǎn)后讀取該景點(diǎn)的X、Y坐標(biāo)值;通過(guò)景點(diǎn)播報(bào)路徑數(shù)組Travel_itinerary[]獲知該景點(diǎn)是否是播報(bào)景點(diǎn),再通過(guò)機(jī)器小車移動(dòng)路徑數(shù)組path[]獲取上次經(jīng)過(guò)的景點(diǎn)的X、Y坐標(biāo)以及下一個(gè)將要去的景點(diǎn)的坐標(biāo);知道3個(gè)景點(diǎn)坐標(biāo)后便可以計(jì)算出需要轉(zhuǎn)動(dòng)的角度和方向,由于機(jī)器小車轉(zhuǎn)動(dòng)的時(shí)候會(huì)有一些小誤差,因此轉(zhuǎn)動(dòng)后需要繼續(xù)搜索黑線,找到黑線后便可循線移動(dòng)到下一個(gè)景點(diǎn),如此循環(huán)執(zhí)行,直到走完小車移動(dòng)路徑規(guī)劃的景點(diǎn),并播報(bào)路線規(guī)定的所有景點(diǎn)后跳出循環(huán),回到起始區(qū)域停下。智能導(dǎo)游機(jī)器小車的程序流程見圖5。
本課題開發(fā)了一種以AT89S52單片機(jī)為控制核心的智能導(dǎo)游機(jī)器小車,該方案以QTI光電傳感器作為路徑信息采集工具實(shí)現(xiàn)循線;采用語(yǔ)音模塊進(jìn)行語(yǔ)音片段的存儲(chǔ)和編輯,功放模塊實(shí)現(xiàn)語(yǔ)音的放大與保真;結(jié)合無(wú)線射頻技術(shù)檢測(cè)景點(diǎn)信息,進(jìn)行景點(diǎn)信息的語(yǔ)音播報(bào),實(shí)現(xiàn)導(dǎo)游機(jī)器小車的智能化行進(jìn)與景點(diǎn)信息講解。經(jīng)過(guò)實(shí)踐證明:該系統(tǒng)運(yùn)行可靠,具有很好的路面識(shí)別與信息播報(bào)能力,以及很強(qiáng)的實(shí)踐性和一定的推廣價(jià)值。
圖5 智能導(dǎo)游小車程序流程