張立立, 柳軼天, 邱 陽(yáng), 鮑玉斌
(東北大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,沈陽(yáng) 110819)
眾所周知,當(dāng)下人工智能[1-2]領(lǐng)域的發(fā)展迅速,而在我國(guó),國(guó)務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》[3]其中提到,新一代人工智能發(fā)展分3個(gè)步驟走的戰(zhàn)略目標(biāo)[4],使中國(guó)在2030年人工智能理論技術(shù)達(dá)到世界先進(jìn)水平。而在實(shí)驗(yàn)室這個(gè)科研圣地,“智能”二字顯得尤為重要。如今各高校均有開(kāi)展自主性實(shí)驗(yàn)[5-6],如何對(duì)實(shí)驗(yàn)室器件的存入和取出的管理成為一個(gè)新的課題,管理不好,則使物品擺放變得雜亂無(wú)章,而使用機(jī)械鎖來(lái)存儲(chǔ)物品,又不符合當(dāng)下智能的時(shí)代。因此,針對(duì)實(shí)驗(yàn)室器件的管理[7-8],進(jìn)行開(kāi)發(fā)設(shè)計(jì)一種智能的存儲(chǔ)管理系統(tǒng),既保證了從傳統(tǒng)意義上講每個(gè)物品存儲(chǔ)的安全性,同時(shí)又使不同種類的物品智能[9]分類。并為實(shí)驗(yàn)室管理員配置權(quán)限密碼,從而整體提高了實(shí)驗(yàn)室管理的安全性。
當(dāng)實(shí)驗(yàn)室管理員儲(chǔ)存一批采購(gòu)的實(shí)驗(yàn)器件時(shí),首先進(jìn)入管理員界面,輸入管理員權(quán)限密碼,密碼正確,則進(jìn)入存器件界面,若輸入錯(cuò)誤,則系統(tǒng)會(huì)發(fā)出警告,并在顯示屏上提醒你沒(méi)有權(quán)限操作,這時(shí)系統(tǒng)會(huì)進(jìn)入戒備狀態(tài),在一段時(shí)間內(nèi)無(wú)法重新使用。
進(jìn)入存物界面后,系統(tǒng)在接收到存物命令后,掃描系統(tǒng)中是否有空柜,如果未存滿則打開(kāi)一個(gè)空箱,成功后系統(tǒng)將提示管理員存儲(chǔ)成功。對(duì)于同一類屬的不同物品,可以存放在同一個(gè)柜子當(dāng)中。
當(dāng)科研人員取器件時(shí),需輸入實(shí)驗(yàn)器件的編碼,系統(tǒng)會(huì)根據(jù)輸入的編碼進(jìn)行校驗(yàn)檢測(cè),如果匹配成功,則打開(kāi)對(duì)應(yīng)的柜門取出物品。如果未匹配成功,即輸入錯(cuò)誤,則系統(tǒng)會(huì)提示重新輸入,若連續(xù)輸錯(cuò)3次,則系統(tǒng)會(huì)退出取器件界面。
結(jié)合系統(tǒng)功能,總體的流程圖如圖1所示。
圖1 設(shè)計(jì)總流程圖
整個(gè)系統(tǒng)的硬件構(gòu)成部分為:電控鎖模塊(用于連接儲(chǔ)物柜),微控制器,顯示屏,外接鍵盤。為了降低開(kāi)發(fā)成本,同時(shí)為了更加通俗易懂的說(shuō)明問(wèn)題,微控制器選用STC系列芯片。
系統(tǒng)可由多個(gè)這樣的子系統(tǒng)構(gòu)成,多個(gè)子系統(tǒng)組合起來(lái)并具有分層結(jié)構(gòu)時(shí),可形成多層的神經(jīng)網(wǎng)絡(luò)。構(gòu)成一個(gè)子系統(tǒng)的硬件結(jié)構(gòu)框架如圖2所示。
(1) 微控制器。STC系列芯片[10]采用STC89C54,共40個(gè)引腳,其中有4個(gè)8位并行I/O口(P0,P1,P2,P3)。其中P0口用于控制柜門的打開(kāi)與閉合;P1口用于微控制器與外設(shè)鍵盤之間的通信;P2口用于微控制器與顯示器之間的數(shù)據(jù)傳遞,P3口用于微控制器對(duì)顯示器發(fā)各種的控制信息,用于屏幕的初始化,切換等的控制。
圖2 子系統(tǒng)結(jié)構(gòu)框架圖
(2) 電控鎖模塊。電控鎖的電學(xué)性質(zhì)大致上為給予某個(gè)電平時(shí)會(huì)打開(kāi)鎖,給予相反的電平時(shí)則會(huì)關(guān)閉,由于微控制器使用的是5 V電壓,而電控鎖工作電壓為DC12V,開(kāi)鎖瞬時(shí)電流(1~3 A),故電路連接時(shí)需通過(guò)連接NE555集成芯片進(jìn)行電流的放大,以驅(qū)動(dòng)電控鎖中的電磁繼電器[11]吸合,從而控制電控鎖的開(kāi)和閉。圖3所示即為電路設(shè)計(jì),當(dāng)NE555芯片CV端給予一個(gè)低電平時(shí),電控鎖中的電磁繼電器就會(huì)短時(shí)間內(nèi)吸合,電控鎖打開(kāi),配合儲(chǔ)物柜柜門的彈簧,就能實(shí)現(xiàn)柜門的自動(dòng)打開(kāi),其延時(shí)時(shí)間可調(diào)節(jié)電阻R8與電容C4進(jìn)行調(diào)節(jié),延時(shí)時(shí)間t=1.1×R8×C4,電路設(shè)計(jì)中的延時(shí)大約為100 ms。
圖3 電控鎖模塊仿真圖
(3) 顯示屏模塊。采用液晶顯示屏LCD 12864,其在便攜式儀器中有著廣泛的使用[12],如轉(zhuǎn)速表、計(jì)算器、萬(wàn)用表等。便攜式儀表基本都具備鍵盤輸入模塊和液晶顯示模塊,以便于人機(jī)操作和設(shè)置。由于液晶模塊程序操作簡(jiǎn)單,故在微控制器的開(kāi)發(fā)過(guò)程中經(jīng)常作為常用的電路模塊進(jìn)行系統(tǒng)的整體結(jié)構(gòu)設(shè)計(jì)。
采用AMPIRE128X64型LCD12864,將P2口作為數(shù)據(jù)傳輸端與LCD12864的DB0~DB7相連,控制端與P3口相接,使能端E與P3.0相接,命令數(shù)據(jù)選擇端RS與P3.5相接,讀寫選擇端R/W與P3.1相接,左屏片選CS1與右屏片選CS2分別與P3.6和P3.7相接,按照LCD12864通信協(xié)議,用單片機(jī)C語(yǔ)言編寫程序以控制LCD顯示預(yù)期效果,如圖4所示。
圖4 LCD12864與單片機(jī)連接圖
為實(shí)現(xiàn)上述功能,需要重點(diǎn)考慮的問(wèn)題有對(duì)權(quán)限密碼和編碼的生成,記錄,核對(duì)及消除,顯示界面的切換,以及同一柜子儲(chǔ)存多種物品的算法設(shè)計(jì)。
各界面的切換算法是根據(jù)外接鍵盤掃描模塊所返回得到的鍵值進(jìn)行不同的操作[13]。為使程序編程簡(jiǎn)單明朗化,將該模塊分兩個(gè)函數(shù)[14]來(lái)編寫:operation(uchar key)函數(shù)和show(uchar n)函數(shù),編程時(shí)對(duì)每個(gè)界面編一個(gè)號(hào),設(shè)置一個(gè)全局變量interface記錄當(dāng)前界面標(biāo)號(hào),程序operation(key)根據(jù)鍵值對(duì)各全局變量進(jìn)行改動(dòng)和記錄。同時(shí)根據(jù)處理情況的不同,對(duì)interface進(jìn)行賦值。show(interface)函數(shù)為界面的顯示函數(shù),需設(shè)置一個(gè)全局變量記錄上一次的界面標(biāo)號(hào),show(n)函數(shù)運(yùn)行前先將當(dāng)前界面標(biāo)號(hào)和上一次標(biāo)號(hào)進(jìn)行對(duì)比,假如改變則清一次屏,再顯示當(dāng)前界面。
一柜多物多碼算法是利用計(jì)算機(jī)網(wǎng)絡(luò)[15]中的循環(huán)冗余校驗(yàn)算法,將管理員存入器件的數(shù)據(jù)信息,即柜子號(hào),器件種類號(hào),器件自身二進(jìn)制編號(hào),儲(chǔ)存在微控制器中,并將其除以生成多項(xiàng)式,把結(jié)果作為冗余碼,并附在數(shù)據(jù)后面,類似于發(fā)送方。取件者輸入的信息加上冗余碼構(gòu)成接收方接收到的數(shù)據(jù)。通過(guò)判斷數(shù)據(jù)除以生成多項(xiàng)式的余數(shù)是否為0來(lái)確定是否輸入錯(cuò)誤。
此編碼實(shí)際上是一個(gè)循環(huán)移位的模2運(yùn)算,本文以 5 bits的寄存器為例來(lái)說(shuō)明這種算法。通過(guò)反復(fù)的移位和進(jìn)行冗余碼的除法,最終該寄存器中的值去掉最高一位就是所要求的余數(shù)。上述步驟用下面的偽代碼描述為:
把reg中的值置0.
把原始的數(shù)據(jù)后添加r個(gè)0.
While (數(shù)據(jù)未處理完)
Begin
If (reg首位是1)
reg = reg XOR 0011.
把reg中的值左移一位,讀入一個(gè)新的數(shù)據(jù)并置于register的0 bit的位置。
End
reg的后四位就是我們所要求的余數(shù)。
這種算法簡(jiǎn)單,容易實(shí)現(xiàn),對(duì)任意長(zhǎng)度生成多項(xiàng)式的G(x)都適用。在器件編碼信息不長(zhǎng)的情況下可以使用。
軟件設(shè)計(jì)還包括:LCD12864顯示界面設(shè)計(jì)和矩陣鍵盤按鍵掃描模塊等,這些模塊算法設(shè)計(jì)相對(duì)簡(jiǎn)單,這里不再表述。
系統(tǒng)調(diào)試階段中,每一部分設(shè)計(jì)都先單獨(dú)進(jìn)行測(cè)試,整個(gè)硬件系統(tǒng)也是先在電腦上進(jìn)行仿真設(shè)計(jì)后,再進(jìn)行實(shí)物測(cè)試,最后進(jìn)行了系統(tǒng)軟硬件聯(lián)調(diào)[16]。在系統(tǒng)設(shè)計(jì)過(guò)程中,遇到了一些問(wèn)題,并對(duì)設(shè)計(jì)過(guò)程進(jìn)行總結(jié)歸納,得到了問(wèn)題的解決方法。
(1) LCD12864 顯示不出字問(wèn)題。①問(wèn)題描述。LCD12864 在Rv1連接確認(rèn)無(wú)誤的情況下,屏幕顯示空白,并且沒(méi)有對(duì)比度,屏幕上有很多白點(diǎn),無(wú)法清除。②原因。因?yàn)椴捎玫氖遣粠ё謳?kù)的12864,器件引腳本身的參數(shù)特性不穩(wěn)定,導(dǎo)致字體時(shí)有時(shí)無(wú)。③解決辦法。在LCD12864背面的貼片上焊接一個(gè)20 kΩ的滑動(dòng)變阻器,用以調(diào)節(jié)Rv1。由于實(shí)驗(yàn)室中沒(méi)有此參數(shù)的變阻器,故用兩個(gè)10 kΩ的滑動(dòng)變阻器代替。
(2) LCD12864 顯示串屏問(wèn)題。①問(wèn)題描述。在進(jìn)行實(shí)物操作時(shí),會(huì)發(fā)現(xiàn)當(dāng)屏幕切換時(shí),如果新的屏幕有地方?jīng)]有字,則會(huì)被上一個(gè)屏幕的字替換掉,一直清除不掉。并且當(dāng)開(kāi)發(fā)板斷電之后立即重新通電,會(huì)保留斷電前的界面,除非斷電后很長(zhǎng)一段時(shí)間后再上電。②原因。LCD12864 切屏方式的問(wèn)題,它默認(rèn)只改變新的屏幕中新出現(xiàn)的地方,不會(huì)對(duì)未改變的地方清除。③解決辦法。通過(guò)編程,將原本沒(méi)有字的地方寫空,這樣屏幕上所有的點(diǎn)在屏幕切換中,都會(huì)接受新的數(shù)據(jù),這樣就徹底將原本的屏幕數(shù)據(jù)覆蓋,從而達(dá)到屏幕清晰顯示的特點(diǎn)。
(3) 繼電器控制不穩(wěn)定問(wèn)題。①問(wèn)題描述。在實(shí)物連接早期,會(huì)出現(xiàn)一個(gè)現(xiàn)象,即使單片機(jī)控制繼電器的引腳發(fā)出的是高電平,繼電器仍能夠觸發(fā)(繼電器設(shè)置低電平觸發(fā)方式)。②原因。繼電器觸發(fā)電平范圍比較大,單片機(jī)提拉電阻取值不合適。③解決辦法。選用合適阻值的提拉電阻。
整個(gè)系統(tǒng)可由多個(gè)子系統(tǒng)分布式組合而構(gòu)成,而整個(gè)大系統(tǒng)又可以分為若干個(gè)區(qū)域,每一個(gè)管理員管理一個(gè)區(qū)域,管理員存器件和科研人員取器件同時(shí)完成,實(shí)現(xiàn)多人同時(shí)存取。
由于每一個(gè)子系統(tǒng)都含有一個(gè)微控制器,多個(gè)微控制器組合則構(gòu)成一個(gè)快速,高效的處理器,這些處理器分層分布時(shí),可以構(gòu)成多層的隱含層,使整個(gè)系統(tǒng)具有深度學(xué)習(xí)的功能。結(jié)合當(dāng)下人工智能領(lǐng)域的計(jì)算機(jī)視覺(jué)技術(shù)的發(fā)展,可以將管理員權(quán)限密碼推廣為管理員面部識(shí)別。