基于Kinetis K60單片機(jī)的自動(dòng)圖書分揀小車系統(tǒng)設(shè)計(jì)_第1頁
基于Kinetis K60單片機(jī)的自動(dòng)圖書分揀小車系統(tǒng)設(shè)計(jì)_第2頁
基于Kinetis K60單片機(jī)的自動(dòng)圖書分揀小車系統(tǒng)設(shè)計(jì)_第3頁
基于Kinetis K60單片機(jī)的自動(dòng)圖書分揀小車系統(tǒng)設(shè)計(jì)_第4頁
基于Kinetis K60單片機(jī)的自動(dòng)圖書分揀小車系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于KinetisK60單片機(jī)的自動(dòng)圖書分揀小車系統(tǒng)設(shè)計(jì)

目錄1緒論 基于KinetisK60單片機(jī)的自動(dòng)圖書分揀小車系統(tǒng)設(shè)計(jì)摘要:本文主要設(shè)計(jì)一個(gè)可以實(shí)現(xiàn)圖書自動(dòng)分揀功能的小車系統(tǒng)。利用KinetisK60單片機(jī)作為主控制器進(jìn)行數(shù)據(jù)采集以及統(tǒng)籌系統(tǒng)各模塊正常工作,使用紅外條碼掃描模塊、CMOS攝像頭模塊作為主要傳感器實(shí)現(xiàn)條碼掃描以及路徑識(shí)別,WIFI模塊作為通信模塊實(shí)現(xiàn)與上位機(jī)通信,C#編寫上位機(jī)服務(wù)器作為小車系統(tǒng)與MySQL數(shù)據(jù)庫之間的中介。本系統(tǒng)可以實(shí)現(xiàn)自動(dòng)識(shí)別圖書條形碼,通過查詢數(shù)據(jù)庫獲取圖書位置信息并將圖書運(yùn)至指定位置的功能。關(guān)鍵詞:自動(dòng)分揀;條形碼;數(shù)據(jù)庫;WIFI;KinetisK60DesignofAutomaticBookSortingCarbasedonKinetisK60MicrocontrollerZhangZhen(SchoolofInformationandElectricalEngineering,ElectricalEngineeringandAutomation,1302,20132214206) Abstract:Acarsystemisdesignedwhichcanrealizetheautomaticbooksortinginthispaper.TheKinetisK60microcontrollerisusedtocollectdataandmakethemodulesofthissystemtobenormal.Theinfraredbar-codescannerandCMOScameraareusedtoimplementbar-codescanningandpathidentification.WIFImoduleisusedtoconnectwiththePCserver.BuildaPCmonitoringserverbyC#asanintermediarybetweenthecarsystemandMySQLdatabase.Thissystemcanautomaticallyidentifythebookbar-code,andquerydatabasetoobtainthebookinformationandtransportbookstothedesignatedposition. Keyword:automaticsorting;bar-code;database;WIFI;KinetisK60緒論引言當(dāng)前,隨著科學(xué)技術(shù)的發(fā)展,人類得以從繁雜枯燥的工作中解脫出來。而隨著社會(huì)文化水平的提升,社會(huì)對(duì)知識(shí)的需求度也隨之不斷的在提高,所以不論是學(xué)生還是其他各行業(yè)人士對(duì)文化的追求程度都在不斷提升,基于此現(xiàn)狀,各個(gè)地區(qū)圖書館每天的讀者借書量,還書量也都隨之在逐漸增多。這就帶來了新的問題,特別是對(duì)于動(dòng)輒上百萬本藏書的圖書館的工作人員來說,每天圖書流通量的增加無疑給他們的圖書分類工作帶來了巨大的壓力,這同時(shí)也造成了圖書館圖書的流通量和借用率遠(yuǎn)遠(yuǎn)低于圖書館的藏書量。發(fā)生這種問題的原因主要還是因?yàn)閳D書管理工作主要由人工完成,這種原始的分揀歸類方式不僅造成分揀工作效率低下,同時(shí)錯(cuò)誤率也很高。同時(shí)隨著工業(yè)化程度的不斷深入,使用機(jī)器取代人工已經(jīng)是一種不可避免的趨勢(shì),各行各業(yè)都在尋找一種提升產(chǎn)業(yè)升級(jí)的新途徑。在目前的貨物分揀如物流行業(yè)就已經(jīng)用上了流水線式或者自動(dòng)小車分揀方式來對(duì)數(shù)量龐大的貨物進(jìn)行分類運(yùn)輸[1],解決了諸多物流行業(yè)貨物分揀的問題。在此基礎(chǔ)上設(shè)計(jì)的自動(dòng)圖書分揀小車,根據(jù)書籍后面的條形碼將不同的圖書運(yùn)送到不同的區(qū)域,這種方式將會(huì)大大提高圖書館在圖書分揀過程中圖書分揀的效率以及準(zhǔn)確性,同時(shí)也會(huì)減輕圖書館工作人員的工作壓力以及圖書館的服務(wù)滿意度,更好的服務(wù)于廣大讀者。研究?jī)?nèi)容本圖書分揀小車是以KinetisK60微控制器為核心,集成LV4紅外條碼掃描模塊、CMOS攝像頭傳感器及WIFI通信模塊等一系列外圍模塊,同時(shí)使用C#上位機(jī)服務(wù)器以及數(shù)據(jù)庫操作的智能控制分揀系統(tǒng)。小車系統(tǒng)通過條碼掃描模塊自動(dòng)識(shí)別圖書條形碼,使用WIFI模塊與上位機(jī)通信查詢數(shù)據(jù)庫獲取圖書信息,根據(jù)圖書信息中的位置信息將圖書自動(dòng)運(yùn)輸至指定位置,之后自動(dòng)返回原點(diǎn)。針對(duì)以上功能本文主要做了以下四個(gè)研究:對(duì)放在小車上的圖書條形碼進(jìn)行掃描并正確,通過WIFI通信模塊查詢上位機(jī)圖書信息;使用C#編寫上位機(jī)實(shí)現(xiàn)其與小車系統(tǒng)和數(shù)據(jù)庫之間的讀寫操作;在上位機(jī)中實(shí)時(shí)顯示小車狀態(tài),以及實(shí)現(xiàn)上位機(jī)實(shí)時(shí)控制小車運(yùn)行的效果;根據(jù)圖書信息控制小車將圖書自動(dòng)運(yùn)至指定的位置(圖書信息存于數(shù)據(jù)庫中)。自動(dòng)圖書分揀小車系統(tǒng)方案論證總體方案設(shè)計(jì)本圖書分揀小車系統(tǒng)以KinetisK60單片機(jī)為核心控制器,以CMOS攝像頭為路徑識(shí)別傳感器,紅外掃描模塊作為條碼掃描傳感器,WIFI模塊實(shí)現(xiàn)通信功能,上位機(jī)實(shí)現(xiàn)連接小車系統(tǒng)與數(shù)據(jù)庫之間的通信作用,并由電源模塊,舵機(jī)電機(jī)驅(qū)動(dòng)模塊等一系列外圍電路集合搭建而成[2][3][4]。本系統(tǒng)采用紅外掃描模塊采集到圖書條形碼之后,通過串口轉(zhuǎn)WIFI通信模塊通過socket套接字同上位機(jī)建立的服務(wù)器進(jìn)行通信,上位機(jī)接收小車識(shí)別到的圖書條碼查詢數(shù)據(jù)庫獲知圖書信息后將圖書信息發(fā)送給小車,之后單片機(jī)對(duì)攝像頭傳感器采集的路徑圖像信息進(jìn)行處理分析,通過計(jì)算獲取舵機(jī)正確打角以及電機(jī)轉(zhuǎn)速,對(duì)電機(jī)及舵機(jī)發(fā)出PWM控制信號(hào)進(jìn)行舵機(jī)打角以及電機(jī)轉(zhuǎn)速控制,將圖書運(yùn)輸?shù)街付ㄎ恢?。該系統(tǒng)主要工作原理圖如圖2.1所示。圖2.1系統(tǒng)原理圖功能介紹 本文所設(shè)計(jì)自動(dòng)圖書分揀系統(tǒng)可以實(shí)現(xiàn)圖書條碼識(shí)別,通過WIFI可以同時(shí)進(jìn)行多個(gè)小車同上位機(jī)服務(wù)器連接以及通信,上位機(jī)實(shí)現(xiàn)接收小車發(fā)送的數(shù)據(jù),查詢數(shù)據(jù)庫,并下發(fā)圖書信息數(shù)據(jù)到小車,之后小車根據(jù)圖書信息將圖書運(yùn)送到不同位置實(shí)現(xiàn)分類。以上所述功能在實(shí)驗(yàn)中均能實(shí)現(xiàn)所要求的效果。系統(tǒng)方案設(shè)計(jì)與選擇核心芯片選擇選擇一款性能優(yōu)良、價(jià)格合理且符合硬件要求的芯片對(duì)于一個(gè)單片機(jī)控制系統(tǒng)來說尤為重要。傳統(tǒng)意義上的8位,16位等單片機(jī)對(duì)于本系統(tǒng)所要求的處理速度及所需要的功能等方面,已無法滿足本系統(tǒng)的要求。近些年ARM系列單片機(jī)的飛速發(fā)展給市場(chǎng)帶來了多款性能優(yōu)異且價(jià)格低廉的單片機(jī)產(chǎn)品,這也給本系統(tǒng)帶來了另一個(gè)選擇。綜合本系統(tǒng)所要實(shí)現(xiàn)的功能以及性能要求,本系統(tǒng)采用了32位的ARM內(nèi)核單片機(jī)KinetisK60,其具有普通I/O口,PIT定時(shí),中斷系統(tǒng),DMA傳輸?shù)裙δ?,使用外部晶振其工作時(shí)鐘頻率可達(dá)到100MHz,本文所用的時(shí)鐘頻率為96MHz[5]。經(jīng)過驗(yàn)證該單片機(jī)的功能及性能都充分滿足本系統(tǒng)功能實(shí)現(xiàn)的需要。路徑識(shí)別模塊選擇要使小車具有自動(dòng)運(yùn)輸功能,就需要它能自動(dòng)尋找路徑以及自動(dòng)行駛,這就需要一個(gè)“眼睛”,即路徑識(shí)別檢測(cè)傳感器。在本系統(tǒng)驗(yàn)證過程中,為了整個(gè)系統(tǒng)的設(shè)計(jì)工作,這里采用的試驗(yàn)?zāi)M路徑為雙黑邊路徑,使用一款性能良好的攝像頭來處理路徑信息對(duì)于系統(tǒng)性能以及尋跡效率等都尤為重要。本文所設(shè)計(jì)系統(tǒng)采用的傳感器為CMOS型攝像頭OV7725,該款攝像頭支持VGA/QVGA兩種圖像格式,且其傳輸速率可達(dá)到150Hz,動(dòng)態(tài)性能較好[6]。硬件設(shè)計(jì)上采用了硬件二值化電路方案。且其采集的1字節(jié)數(shù)據(jù)為8個(gè)像素點(diǎn),即0xFF代表“11111111”8個(gè)像素,在圖像中顯示為8個(gè)黑色像素,這樣的存儲(chǔ)方式大大縮小了暫存圖像所需的存儲(chǔ)大小及單片機(jī)處理圖像信息的復(fù)雜程度。攝像頭模塊實(shí)物圖如圖2.2所示,小車系統(tǒng)驗(yàn)證過程中使用的路徑如圖2.3所示。圖2.2攝像頭圖2.3試驗(yàn)?zāi)M路徑條碼掃描模塊選擇對(duì)于每一本圖書來說,它都有一個(gè)唯一的條形碼與之對(duì)應(yīng),要想實(shí)現(xiàn)圖書的分類,這就需要實(shí)現(xiàn)對(duì)圖書上條形碼的識(shí)別功能,目前世面上流行的條碼掃描方式主要有紅外掃描,攝像頭掃描以及激光掃描等方式。攝像頭掃描主要運(yùn)用在手機(jī)等一些手持終端機(jī)等高端場(chǎng)所,激光掃描各項(xiàng)性能指標(biāo)最高,但是其價(jià)格也相對(duì)更昂貴一些,對(duì)于本系統(tǒng)而言,綜合掃描性能和價(jià)格等方面的綜合考慮,本文設(shè)計(jì)的系統(tǒng)采用了紅外掃描的方式。紅外條形碼掃描模塊采用了遠(yuǎn)景達(dá)公司的LV4型號(hào)的條碼掃描模塊,它是一款嵌入式一維條碼掃描器模組,可以讀取紙張,商品等介質(zhì)上的條碼,識(shí)別能力較強(qiáng),可以識(shí)別市場(chǎng)上所有主流的條碼格式,同時(shí)體積較小,5V供電,其小巧的機(jī)身使得它更容易嵌入到本系統(tǒng)當(dāng)中。同時(shí)該模塊帶有自解碼功能,其可以將檢測(cè)到的條碼自行識(shí)別結(jié)算,并將識(shí)別到的條碼信息直接通過串口發(fā)出,單片機(jī)通過串口接收即可得到條碼數(shù)據(jù),大大降低了二次開發(fā)的難度。對(duì)于圖書上采用的EAN-13類型條碼,其識(shí)別能力同樣出色。紅外掃描模塊實(shí)物圖如圖2.4所示。圖2.4紅外條碼掃描模塊圖書條碼為EAN-13類型,其13為條碼由978+ISBN號(hào)組成。ISBN全稱為“國(guó)際標(biāo)準(zhǔn)書號(hào)”,共10位。前3位是978,代表圖書;第4~8位代表圖書出版地區(qū),如7表示在中國(guó)出版的圖書;第5~10位為圖書的出版社代碼,由所在國(guó)家分配;第6~12位是圖書序號(hào),由出版該書的出版社給出;第13位是校驗(yàn)碼,根據(jù)條碼前12位計(jì)算得出。本系統(tǒng)試驗(yàn)所使用的書籍“ComputerSystem.Aprogrammer’sperspective”在中國(guó)發(fā)行譯本的圖書條碼如圖2.5所示。圖2.5CSAPP國(guó)內(nèi)譯本條碼通信模塊選擇對(duì)于一個(gè)智能分揀小車來說,小車必定會(huì)重復(fù)使用多次,若要將所有圖書信息存儲(chǔ)到小車單片機(jī)儲(chǔ)存器之中顯然是不現(xiàn)實(shí)的,同時(shí)也會(huì)大量浪費(fèi)小車控制器中存儲(chǔ)空間,所以若要真正實(shí)現(xiàn)便捷快速,最好的方式就是與上位機(jī)實(shí)現(xiàn)數(shù)據(jù)通信,查詢數(shù)據(jù)庫等操作,這大大降低了小車自身所承擔(dān)的壓力,這就需要用到通信模塊。對(duì)于本系統(tǒng)的通信模塊來說,在圖書館的實(shí)際應(yīng)用當(dāng)中,因?yàn)閳D書存量的巨大,這就會(huì)有多輛分揀小車同時(shí)運(yùn)行同時(shí)工作,這就出現(xiàn)了出現(xiàn)一主多從(即一個(gè)服務(wù)器,多個(gè)分揀小車)的模式。藍(lán)牙通信及WIFI通信兩種模式均具有這種功能,但經(jīng)過傳輸速率及傳輸距離等多方面考慮,WIFI通信有很多藍(lán)牙通信不具有的性能特性,所以采用了WIFI通信方式。經(jīng)過較長(zhǎng)一段時(shí)間無線的發(fā)展,現(xiàn)在市面上有很多嵌入式WIFI模塊,經(jīng)過模塊價(jià)格及開發(fā)難易程度等方面的比較,采用了MXCHIP公司的型號(hào)為EMW3162的嵌入式WIFI模塊[7]。作為一個(gè)串口轉(zhuǎn)WIFI模塊,其可輕松實(shí)現(xiàn)數(shù)據(jù)的傳輸,將數(shù)據(jù)通過串口發(fā)送給模塊即可實(shí)現(xiàn)數(shù)據(jù)的傳輸,這就使得用戶不必過多在意數(shù)據(jù)傳輸?shù)倪^程而將注意力放在傳輸?shù)臄?shù)據(jù)上,大大降低了二次開發(fā)的難度。WIFI模塊實(shí)物圖如圖2.6所示。圖2.6EMW3162WIFI通信模塊自動(dòng)圖書分揀小車系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)主控板模塊KinetisK60單片機(jī)若要良好穩(wěn)定的運(yùn)行,需要單片機(jī)最小系統(tǒng)電路的穩(wěn)定。主控板采用龍邱公司出品的K60P100引腳的最小核心系統(tǒng)版。該單片機(jī)核心板具有JTAG下載接口,外部50MHz有源晶振,電源保護(hù)等功能,其可以直接插到繪制的電路板上,同時(shí)在實(shí)際運(yùn)行過程中較為穩(wěn)定。在本文所設(shè)計(jì)的電路板上還可以將需要用到的單片機(jī)I/O口引出進(jìn)行系統(tǒng)開發(fā),如K60最小系統(tǒng)所引出的所有引腳如圖3.1所示,在本文中所使用到的引腳在圖上均有標(biāo)識(shí)。圖3.1KinetisK60最小系統(tǒng)板接口電源模塊整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行離不開一個(gè)穩(wěn)定的電源系統(tǒng),本系統(tǒng)所使用到的電源電壓包括7.2V、5V以及3.3V等。電池電壓7.2V經(jīng)過470u電容濾波之后直接供給電機(jī)驅(qū)動(dòng)模塊,同時(shí)使用LM2940穩(wěn)壓芯片將電池電壓7.2V穩(wěn)定到5V給攝像頭及LV4紅外條碼掃描器等傳感器供電,使用LM1117-3.3穩(wěn)壓芯片將穩(wěn)定的5V電壓降壓到3.3V給單片機(jī)及WIFI模塊供電。系統(tǒng)的電源電路圖如圖3.2所示。圖3.2電源模塊電路舵機(jī)模塊小車在識(shí)別完路徑之后,若還要將圖書運(yùn)送到指定的位置,離不開一個(gè)方向控制模塊的參與。本系統(tǒng)采用LM1117-Adj穩(wěn)壓芯片及其外圍電路將電池電壓7.2V通過調(diào)節(jié)電位器R4穩(wěn)定到5.5V給舵機(jī)供電,單片機(jī)輸出PWM信號(hào)對(duì)舵機(jī)打角進(jìn)行控制,在舵機(jī)控制端與單片機(jī)輸出引腳之間加入光耦隔離,防止舵機(jī)轉(zhuǎn)向變化瞬間電流過沖損壞單片機(jī)。舵機(jī)電源以及單片機(jī)信號(hào)經(jīng)過光耦控制舵機(jī)電路如圖3.3所示。圖3.3舵機(jī)模塊電路電機(jī)驅(qū)動(dòng)模塊一個(gè)穩(wěn)定的電機(jī)驅(qū)動(dòng)電路對(duì)于一個(gè)小車系統(tǒng)來說必不可少,因?yàn)橹谱鞅鞠到y(tǒng)使用到的是一個(gè)雙電機(jī)小車,為了實(shí)現(xiàn)小車使用雙電機(jī)的大電流驅(qū)動(dòng),本系統(tǒng)采用了4片BTN7960組成兩個(gè)全橋驅(qū)動(dòng)電路來驅(qū)動(dòng)兩個(gè)電機(jī)[8],使用電源7.2V對(duì)模塊進(jìn)行供電。同時(shí)單片機(jī)輸出4路PWM波作為電機(jī)正反速度控制,實(shí)驗(yàn)證明控制效果較為理想,在驅(qū)動(dòng)芯片控制端與單片機(jī)輸出引腳端之間加入了74LS244反相器芯片用作隔離單片機(jī)與驅(qū)動(dòng)芯片之間的直接連接,防止電機(jī)的轉(zhuǎn)速變化瞬間電流過沖擊毀單片機(jī),如圖3.4為雙電機(jī)驅(qū)動(dòng)電路。圖3.4電機(jī)驅(qū)動(dòng)模塊電路路徑識(shí)別模塊路徑識(shí)別使用型號(hào)為OV7725的硬件二值化CCD攝像頭,由于攝像頭對(duì)于排線及電路要求較高,這里的線路設(shè)計(jì)為了更好的圖像采集并進(jìn)行數(shù)據(jù)傳輸,經(jīng)過查閱資料,在正常的電路中加入了四個(gè)上拉下拉電阻進(jìn)行電平的限制可以是攝像頭模塊接口電路更好的工作。經(jīng)過對(duì)加入電阻及未加入電阻的效果進(jìn)行比較,在硬件I2C接口加入上拉電阻可以使得攝像頭寄存器寫入數(shù)據(jù)更加穩(wěn)定,行和像素中斷加入下拉電阻之后攝像頭圖像也相對(duì)穩(wěn)定并且質(zhì)量較高。三個(gè)攝像頭中斷信號(hào)(場(chǎng)中斷VSYNC,行中斷HREF,像素中斷PCLK)同時(shí)接入單片機(jī)引腳(PORTA),并配置為下降沿中斷觸發(fā)方式。攝像頭寄存器讀寫采用硬件I2C,將攝像頭的SCL及SDA引腳接入單片機(jī)I2C接口。數(shù)據(jù)引腳接入單片機(jī)PORTD端口共8個(gè)引腳,并通過軟件配置成通過硬件DMA傳輸數(shù)據(jù),其中片內(nèi)DMA模塊觸發(fā)源為PORTD端口,傳輸數(shù)據(jù)期間不占用處理器資源。攝像頭模塊接口以及所使用的上下拉電阻的電路圖如圖3.5所示。圖3.5攝像頭模塊接口其他模塊接口其他模塊主要有EMW3162WIFI無線傳輸模塊、OLED顯示模塊、UART調(diào)試模塊以及LV4紅外一維條碼掃描模塊等。其中WIFI通信、UART串口通信以及LV4紅外條碼掃描模塊等都通過UART串口協(xié)議與單片機(jī)進(jìn)行通信,其中UART串口調(diào)試模塊使用片內(nèi)UART0模塊,WIFI通信模塊使用片內(nèi)UART3模塊,LV4紅外掃描模塊使用片內(nèi)UART4模塊,這些模塊均通過跳線實(shí)現(xiàn)連接。此外還有一個(gè)OLED接口。上述模塊的接口電路圖如圖3.6所示。圖3.6其他模塊接口PCB布局上文主要介紹了本系統(tǒng)所用到各個(gè)模塊的電路圖,經(jīng)過調(diào)試,使用這些電路圖制作的小車系統(tǒng)各項(xiàng)功能運(yùn)行良好。繪制了PCB板,PCB板中包含了以上介紹的所有電路。繪制完成的PCB布局圖如圖3.7所示。圖3.7PCB圖自動(dòng)圖書分揀小車系統(tǒng)的程序設(shè)計(jì)與實(shí)現(xiàn)程序主流程系統(tǒng)程序流程如下圖所示,系統(tǒng)上電之后進(jìn)行初始化工作,當(dāng)圖書放上小車之后,條碼掃描模塊自動(dòng)識(shí)別條形碼,之后進(jìn)入待機(jī)狀態(tài)等待放書,系統(tǒng)掃描得到條碼信息之后發(fā)送給上位機(jī),上位機(jī)進(jìn)行查詢數(shù)據(jù)庫操作,查詢成功之后返回所查圖書在圖書館內(nèi)的位置代碼,之后小車將圖書運(yùn)送到指定位置,最后返回原點(diǎn)繼續(xù)等待放書,中間多種進(jìn)程(如無任務(wù),進(jìn)行中,卸貨,返回等狀態(tài))之間的轉(zhuǎn)換通過單片機(jī)接收中斷以及判斷中斷類型來更改標(biāo)志位來實(shí)現(xiàn)。主程序流程圖如圖4.1所示,具體代碼實(shí)現(xiàn)見附錄6。圖4.1程序主流程圖系統(tǒng)上電之后,首先進(jìn)行系統(tǒng)的初始化過程,在此過程中主要對(duì)以下幾個(gè)模塊進(jìn)行了初始化工作:攝像頭傳感器初始化,攝像頭模塊內(nèi)寄存器初始化等;UART0,UART3,UART4等串口模塊初始化,串口配置及中斷配置等;舵機(jī)及電機(jī)PWM模塊初始化等;OLED顯示屏初始化;一些外部中斷接口的初始化配置。條碼掃描實(shí)現(xiàn)LV4紅外條碼掃描模塊具備自動(dòng)解碼功能,解碼完成之后將條碼信息通過串口發(fā)送到單片機(jī),單片機(jī)可直接通過串口接收中斷來接收模塊發(fā)送的信息并存入條碼信息數(shù)組中,在系統(tǒng)初始化中已經(jīng)配置串口條碼接收中斷函數(shù)為UART3_RX_ISR()(見附錄1),接收完成之后將掃描完成標(biāo)志位scanReadyFlag置位,程序根據(jù)該標(biāo)志位來判斷是否進(jìn)入下一步。路徑識(shí)別實(shí)現(xiàn)在小車的初期設(shè)計(jì)階段,為了專注于實(shí)現(xiàn)整個(gè)系統(tǒng)的設(shè)計(jì)工作,實(shí)際環(huán)境依舊采用了雙黑邊路徑,在路徑上添加標(biāo)志實(shí)現(xiàn)空間的位置分類,實(shí)驗(yàn)環(huán)境為在一條直道上有三個(gè)不同標(biāo)志(實(shí)驗(yàn)用書為三本,僅用條形碼代表,分別為CSAPP,AdvancedMathematics(1),AdvancedMathematics(2)),分別代表A,B,C三個(gè)區(qū),小車檢測(cè)標(biāo)志進(jìn)行停車卸書,之后返回原點(diǎn)。在系統(tǒng)檢測(cè)到攝像頭場(chǎng)中斷后,程序會(huì)進(jìn)入圖像處理部分,算法將圖像原始數(shù)據(jù)處理成真實(shí)數(shù)據(jù)之后,進(jìn)行路徑的尋線操作。路徑識(shí)別主要流程如圖4.2所示,經(jīng)過實(shí)際路徑經(jīng)過路徑識(shí)別算法之后的二值化圖像如圖4.3所示。。圖4.2路徑識(shí)別流程圖圖4.3經(jīng)過識(shí)別算法之后的二值化圖像標(biāo)志物識(shí)別標(biāo)志物識(shí)別使用紅外對(duì)管,在路徑上使用不同數(shù)量的橫黑線來區(qū)別A,B,C三個(gè)區(qū)域,其中A區(qū)使用一條黑線,B區(qū)使用兩條黑線,C區(qū)使用三條黑線,程序檢測(cè)在一定時(shí)間內(nèi),紅外對(duì)管所在端口產(chǎn)生中斷的次數(shù),來判斷小車到達(dá)的位置區(qū)域,再與當(dāng)前任務(wù)需要到達(dá)的位置進(jìn)行比較,如果不同則忽略,如果相同則停車卸書,之后返回原點(diǎn)。標(biāo)志位識(shí)別程序流程圖如圖4.4所示,程序?qū)崿F(xiàn)方面使用普通I/O口中斷與定時(shí)器中斷配合的方式來實(shí)現(xiàn)。圖4.4標(biāo)志物識(shí)別流程圖 在標(biāo)志位識(shí)別完成之后,再判斷標(biāo)志位位置是否與本次任務(wù)位置相同,相同則說明到達(dá)位置,將標(biāo)志位arriverFlag置1,小車停止運(yùn)行卸書,不相同則繼續(xù)運(yùn)行等待下次中斷,小車卸書完成之后,返回原點(diǎn),檢測(cè)到原點(diǎn)標(biāo)志位則停止。小車控制實(shí)現(xiàn)小車的控制通過定時(shí)器中斷來實(shí)現(xiàn),程序配置單片機(jī)定時(shí)器定時(shí)17ms產(chǎn)生中斷,此時(shí)在定時(shí)器中斷函數(shù)中對(duì)小車進(jìn)行控制,檢測(cè)到系統(tǒng)定時(shí)器中斷之后,如果小車被允許前進(jìn)(通過全局變量controlFlag標(biāo)志位對(duì)小車的運(yùn)行狀態(tài)進(jìn)行控制:停止或行進(jìn)),程序會(huì)根據(jù)圖像算法提取賽道中心黑線并判斷中心黑線偏差,根據(jù)偏差控制小車舵機(jī)轉(zhuǎn)向,并打開電機(jī)速度控制開關(guān),進(jìn)行速度控制??刂坪瘮?shù)在計(jì)時(shí)器中斷函數(shù)中,該函數(shù)見附錄5。小車主要控制流程如圖4.5所示。圖4.5小車控制流程圖通信功能實(shí)現(xiàn)系統(tǒng)通信模塊使用串口轉(zhuǎn)WIFI,單片機(jī)通過串口發(fā)送數(shù)據(jù)至WIFI模塊,上位機(jī)發(fā)送數(shù)據(jù)給WIFI模塊,模塊再通過串口發(fā)送給單片機(jī)接收,WIFI模塊與上位機(jī)之間通過IP地址連接,之后通過socket套接字進(jìn)行通信,其中WIFI模塊作為client,上位機(jī)作為server。數(shù)據(jù)發(fā)送直接通過串口發(fā)送即可。數(shù)據(jù)接收通過串口中斷來實(shí)現(xiàn),上位機(jī)發(fā)送給單片機(jī)的數(shù)據(jù)格式為“’$’+書籍名稱+’%’+書籍在圖書館內(nèi)位置代碼+’*’”,其中*為數(shù)據(jù)結(jié)束字符,檢測(cè)到*即代表數(shù)據(jù)傳輸結(jié)束,結(jié)束之后將接收完成標(biāo)志位receReadyFlag置位,具體代碼見附錄2。接收完成WIFI發(fā)送的數(shù)據(jù)之后,小車單片機(jī)對(duì)接收到的數(shù)據(jù)進(jìn)行解析,也即進(jìn)行數(shù)據(jù)分類,將書籍名稱及位置代碼分別存入兩個(gè)字符串之中,使用數(shù)據(jù)包中的標(biāo)志‘%’來區(qū)別和分離兩個(gè)字符串。根據(jù)這里解析到的兩個(gè)字符串進(jìn)行后續(xù)工作。上位機(jī)服務(wù)器(C#)基本介紹為了實(shí)現(xiàn)單片機(jī)與數(shù)據(jù)庫之間的通信,經(jīng)過嘗試,發(fā)現(xiàn)無法直接通過WIFI模塊連接到數(shù)據(jù)庫,故用C#編寫了一個(gè)中介性質(zhì)的上位機(jī)軟件[9],上位機(jī)打開之后創(chuàng)建一個(gè)服務(wù)器,接收小車系統(tǒng)通過WIIF發(fā)送的數(shù)據(jù),并通過查詢數(shù)據(jù)庫,實(shí)現(xiàn)小車系統(tǒng)與數(shù)據(jù)庫之間的數(shù)據(jù)對(duì)換,同時(shí)在上位機(jī)實(shí)現(xiàn)小車狀態(tài)的實(shí)時(shí)顯示和簡(jiǎn)單的控制效果。上位機(jī)在接收到下位機(jī)發(fā)送的數(shù)據(jù)包之后進(jìn)行的工作流程如圖4.6所示,上位機(jī)主界面如圖4.7所示。圖4.6上位機(jī)運(yùn)行流程圖圖4.7上位機(jī)界面從圖4.6可以看出,其可以實(shí)現(xiàn)多個(gè)小車的連接和查詢服務(wù),聯(lián)機(jī)狀態(tài)顯示小車是否連接上服務(wù)器,當(dāng)前任務(wù)編號(hào)顯示小車當(dāng)前運(yùn)送的書籍的條形碼,當(dāng)前狀態(tài)顯示小車是處于無任務(wù)、進(jìn)行中、暫停、卸貨及返回等狀態(tài),控制欄可以控制小車的暫停與繼續(xù)等行為。當(dāng)小車當(dāng)前有任務(wù)時(shí)其上位機(jī)的狀態(tài)顯示如圖4.8所示。圖4.8上位機(jī)小車狀態(tài)信息上位機(jī)查看小車當(dāng)前任務(wù)的圖書信息如圖4.9所示,相同任務(wù)下小車上的OLED顯示屏顯示的內(nèi)容如圖4.10所示,可以看出其顯示的是從上位機(jī)接收到的圖書信息,這說明小車與上位機(jī),上位機(jī)與數(shù)據(jù)庫之間的通信正常。圖4.9上位機(jī)圖書信息窗口圖4.10小車OLED顯示圖書信息Socket套接字簡(jiǎn)介在網(wǎng)絡(luò)傳輸過程中普遍使用到TCP/IP協(xié)議族,其包括運(yùn)輸層,網(wǎng)絡(luò)層,鏈路層。Socket套接字是應(yīng)用層與TCP/IP協(xié)議族中運(yùn)輸層之間的軟件抽象層,同時(shí)其也是一組接口,它可在實(shí)際應(yīng)用之中將復(fù)雜的TCP/IP協(xié)議隱藏在Socket接口后面,只需使用這組接口就可實(shí)現(xiàn)網(wǎng)絡(luò)通信而不需了解其背后復(fù)雜的通信協(xié)議,簡(jiǎn)化了TCP/IP協(xié)議的使用門檻。使用socket接口函數(shù)實(shí)現(xiàn)網(wǎng)絡(luò)通信的主要工作流程如圖4.11所示。圖4.11socket套接字通信流程從流程圖中可以看出,服務(wù)器與客戶端通過Socket進(jìn)行通信的流程可以歸結(jié)為以下幾步:(1)首先服務(wù)器創(chuàng)建socket,給創(chuàng)建的socket綁定IP地址及端口號(hào),之后持續(xù)監(jiān)聽可能來自客戶端的請(qǐng)求。(2)客戶端創(chuàng)建socket,案件事先設(shè)置的IP地址及端口號(hào)嘗試與服務(wù)器進(jìn)行連接。(3)服務(wù)器端接收到來自客戶端的連接請(qǐng)求之后,與客戶端進(jìn)行連接。(4)客戶端連接成功之后想socket寫入信息,服務(wù)器讀取socket信息即可實(shí)現(xiàn)從客戶端向服務(wù)器端的數(shù)據(jù)通信,通信完成之后客戶端首先關(guān)閉socket,之后服務(wù)器端關(guān)閉。(5)服務(wù)器端對(duì)于上述流程的代碼實(shí)現(xiàn)見附錄3,客戶端由WIFI模塊實(shí)現(xiàn)。MySQL數(shù)據(jù)庫連接MySQL數(shù)據(jù)庫是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)在不同的表中,而不是將所有數(shù)據(jù)存儲(chǔ)在一個(gè)大倉(cāng)庫中,這樣就增加了速度并提高了數(shù)據(jù)庫操作的靈活度。本系統(tǒng)使用MySQL數(shù)據(jù)庫存儲(chǔ)圖書信息,查詢MySQL數(shù)據(jù)庫需要用到SQL語言,它是訪問數(shù)據(jù)庫的最常用到的標(biāo)準(zhǔn)化語言。在自動(dòng)圖書分揀小車系統(tǒng)中,由于需要將上位機(jī)與MySQL數(shù)據(jù)庫建立連接,此時(shí)需要通過特殊的接口函數(shù)將上位機(jī)與數(shù)據(jù)庫連接起來。本系統(tǒng)上位機(jī)編寫使用的是C#語言,mysql.data.dll是C#操作MySQL數(shù)據(jù)庫的驅(qū)動(dòng)文件,同時(shí)也是其連接MySQL數(shù)據(jù)庫的必要插件,為C#連接數(shù)據(jù)庫提供了必要的接口函數(shù),之后就可以在IDE中使用標(biāo)準(zhǔn)的SQL語言操作數(shù)據(jù)庫。若要實(shí)現(xiàn)上位機(jī)軟件從數(shù)據(jù)庫中查詢數(shù)據(jù),首先需要與數(shù)據(jù)庫建立連接,連接方法是使用一個(gè)字符串指令打開一個(gè)數(shù)據(jù)庫連接,該字符串指令包括服務(wù)器名稱(Server),用戶名稱(UserID),用戶密碼(Password),連接的數(shù)據(jù)庫名稱(Database)等;連接成功之后即可進(jìn)行數(shù)據(jù)查詢操作,數(shù)據(jù)查詢操作使用標(biāo)準(zhǔn)SQL語言。本系統(tǒng)使用到的圖書信息數(shù)據(jù)表如圖4.12所示,其中book_status欄表示圖書是否完成分揀的狀態(tài),update_time表示數(shù)據(jù)庫更新的時(shí)間。連接數(shù)據(jù)庫及查詢數(shù)據(jù)庫操作代碼見附錄4。圖4.12圖書信息數(shù)據(jù)表總結(jié)與展望在整個(gè)自動(dòng)圖書分揀小車的制作過程中,也遇到了方方面面各種不同的問題,比如條碼無法正常識(shí)別,識(shí)別完成之后發(fā)送出來的條碼數(shù)據(jù)處于亂碼狀態(tài),WIFI模塊無法與上位機(jī)實(shí)現(xiàn)正常的通信,上位機(jī)無法實(shí)現(xiàn)查詢數(shù)據(jù)庫操作等問題,針對(duì)每個(gè)問題都進(jìn)行了深入的研究并且也將其逐一解決。在完成整個(gè)系統(tǒng)的設(shè)計(jì)工作之后,經(jīng)過對(duì)整個(gè)小車系統(tǒng)一段時(shí)間的實(shí)踐驗(yàn)證,該自動(dòng)圖書分揀小車在實(shí)驗(yàn)室環(huán)境下運(yùn)行效果良好,能實(shí)現(xiàn)自動(dòng)分揀圖書等所要求的全部功能。但在實(shí)驗(yàn)室環(huán)境小車尋跡依據(jù)為雙黑邊路徑,要在現(xiàn)實(shí)中實(shí)現(xiàn)如此理想的道路環(huán)境,明顯是不現(xiàn)實(shí)的。未來有機(jī)會(huì)可以把尋跡方式改成識(shí)別地上鋪設(shè)的鐵絲實(shí)現(xiàn)尋跡,使用永磁體或者可以存儲(chǔ)信息的線圈作為位置標(biāo)志,使用電磁傳感器作為識(shí)別路徑的傳感器,這將是一種較為現(xiàn)實(shí)的方式。完成制作后的自動(dòng)圖書分揀小車的實(shí)物圖如圖5.1所示。圖5.1完成作品參考文獻(xiàn)[1]王昆,劉曉山.基于條形碼識(shí)別的物流包裹自動(dòng)分揀系統(tǒng)設(shè)計(jì)[J].洛陽理工學(xué)院學(xué)報(bào),2016,26(2):66-70.[2]張振,趙玫等.基于路徑識(shí)別自循跡智能車的設(shè)計(jì)[J].魯東大學(xué)學(xué)報(bào),2017,33(1):36-40.[3]王子輝,葉云岳.基于CMOS傳感器的智能循跡小車圖像識(shí)別技術(shù)研究[J].傳感技術(shù)學(xué)報(bào),2009,22(4):484-488.[4]邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,2004.[5]NXPSemiconductor,Inc.KinetisK60Sub-FamilyReferenceManual[Z]./assets/documents/data/en/reference-manuals/K60P100M100SF2RM.pdf,2011-11.[6]OmniVisionTechnologies,Inc.OV7725ColorCMOSVGACAMERACHIPTMSensorwithOmniPixel2TMTechnology[Z].http://chip.tomsk.ru/chip/chipfile0-x.nsf/all/AEDCE29E5DEED53146257E6400627871/$File/ov7725.pdf,2007.[7]上海慶科(MXCHIP),Ltd.EMW3162嵌入式模塊datasheetV1.9.[Z].http://www.mx/download/getFiles/57b26c531c06c.pdf,2016-7-12.[8]InfineonTechnologies,Inc.BTS7960Datasheet[Z].https://iprototype.nl/docs/15A-motor-controller-datasheet-bts7960.pdf,2004-12-07.[9]Microsoft,Corp.EnhancingWindowsFormsApplications.[Z]./en-us/library/ms229592(v=vs.110).aspx,2010.附錄附錄1:staticvoidUART3_RX_ISR(uint16_tbyteReceived)//LV紅外模塊串口接收中斷{ staticintj=0; for(inti=0;i<10;i++) { if(byteReceived==originalCode[i]) { transCode[j++]=charCode[i]; //將對(duì)應(yīng)數(shù)值存入transCode數(shù)組中 if(j==codeLength) { j=0; scanReadyFlag=1; //置掃描完成標(biāo)志位 break; //掃描完成后退出 } } }}附錄2:staticvoidUART4_RX_ISR(uint16_tbyteReceived)//wifi串口接收中斷{staticunsignedchari=0;if(byteReceived!='*') //未到字符串終止符{ receData[i]=byteReceived; i++;}else //到終止符 { receData[i]='*'; i=0; receReadyFlag=1; //置接收完成標(biāo)志位}}附錄3:ThreadthreadWatch=null; //負(fù)責(zé)監(jiān)聽客戶端的線程SocketsocketWatch=null; //負(fù)責(zé)監(jiān)聽客戶端的套接字privatevoidcontrolserver_btn_Click(objectsender,EventArgse){//定義一個(gè)套接字用于監(jiān)聽客戶端發(fā)送的信息包含3個(gè)參數(shù)(IP4尋址協(xié)議,流式連接,TCP協(xié)議)socketWatch=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//獲取當(dāng)前電腦IP地址,作為服務(wù)器地址IPAddressipaddress=Dns.GetHostEntry(Dns.GetHostName()).AddressList[1];//將IP地址和端口號(hào)綁定到網(wǎng)絡(luò)節(jié)點(diǎn)endpoint上IPEndPointendpoint=newIPEndPoint(ipaddress,1);//監(jiān)聽綁定的網(wǎng)絡(luò)節(jié)點(diǎn)socketWatch.Bind(endpoint);//將套接字的監(jiān)聽隊(duì)列長(zhǎng)度限制為20socketWatch.Listen(20);//創(chuàng)建一個(gè)監(jiān)聽線程threadWatch=newThread(WatchConnecting);//將窗體線程設(shè)置為與后臺(tái)同步threadWatch.IsBackground=true;//啟動(dòng)線程threadWatch.Start();}SocketsocConnection=null; //創(chuàng)建客戶機(jī)連接IPEndPointclient=null; //客戶機(jī)IP與portIPAddressclientIP=null;intclientPort=0;privatevoidWatchConnecting(){//持續(xù)監(jiān)聽while(true){ //客戶機(jī)連接成功 socConnection=socketWatch.Accept(); client=(IPEndPoint)socConnection.RemoteEndPoint; clientIP=client.Address; clientPort=client.Port; //創(chuàng)建一個(gè)通信線程ParameterizedThreadStartpts=newParameterizedThreadStart(ServerRecMsg); Threadthr=newThread(pts); thr.IsBackground=true; //啟動(dòng)線程 thr.Start(socConnection);}}附錄4:publicclassSqlConnection{staticstringstr="Server=localhost;UserID=root;Password=;Database=library;CharSet=gbk"; staticMySqlConnectionmSqlConnection=newMySqlConnection(str); publicstaticstring[]select(stringbook_id) { //書籍名稱 //書籍在圖書館內(nèi)位置代碼 string[]selectResult=newstring[2]; //儲(chǔ)存查詢到的信息數(shù)組 //打開數(shù)據(jù)庫連接 mSqlConnection.Open(); //設(shè)置查詢命令 stringselectCmd="selectbook_name,book_positionfrombooksWHERE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論