錢天翼
在很多科幻作品中,都提到過(guò)一些為人們料理家務(wù)的機(jī)器人管家。因此,我們就設(shè)想制造一個(gè)智能機(jī)器人,用它能夠控制家里現(xiàn)有的一些硬件設(shè)備,監(jiān)測(cè)家中的環(huán)境狀況,即使是主人不在家的時(shí)候,它也能夠按照主人的“吩咐”,將家里的生活安排得井井有條,就像一個(gè)忠誠(chéng)的管家一樣,服務(wù)于人們的家庭中。使曾經(jīng)的科學(xué)幻想變?yōu)楝F(xiàn)實(shí)是我們的設(shè)計(jì)的主要目標(biāo)。
要做一個(gè)真正的機(jī)器人管家,就要用機(jī)器人實(shí)現(xiàn)管家所應(yīng)當(dāng)完成的任務(wù),并且主人可以在其它地方通過(guò)管家的“眼睛”,了解家中的情況。所以,機(jī)器人就要有靈活不受限制的運(yùn)動(dòng)系統(tǒng);對(duì)家中各種陳設(shè)的位置的判斷力;對(duì)家中各種電器的控制;對(duì)溫度、濕度的測(cè)量能力;能將采集到的信息上傳至家中的電腦。如果主人不在家,還能夠通過(guò)網(wǎng)絡(luò)將信息輸送至所需要的地方。這樣機(jī)器人就可以自主地完成各種管家的工作,或者在主人的“指揮”下,料理各種家務(wù)。
硬件實(shí)現(xiàn)
1.硬件組成
我們?yōu)闄C(jī)器人制作了以下七個(gè)硬件模塊:
(1)單片機(jī)控制模塊 選用時(shí)下流行的美國(guó)Atmel公司的89C52芯片。它有內(nèi)設(shè)的8K E2PROM,256 bytes 的RAM , P0、P1、P2、P3 等四個(gè)端口,其中P0、P2為數(shù)據(jù)/地址雙向多用端口。它還有3個(gè)定時(shí)器,T0、T1和T2。主振晶體為11.0592MHz,以利于通信波特率的精確設(shè)置。89C52中還內(nèi)設(shè)8級(jí)中斷控制系統(tǒng),3級(jí)單向一次性可編程的加密內(nèi)存,可以防止芯片內(nèi)的程序被非法讀寫(xiě)、拷貝等。
(2)運(yùn)動(dòng)模塊 為了保證機(jī)器人運(yùn)動(dòng)靈活,行動(dòng)準(zhǔn)確、到位,系統(tǒng)誤差小,我們選用了四相式 15V步進(jìn)電機(jī)(分辨率 200步/周,頻率響應(yīng)0.1~300Hz,功率4W×2) 為兩側(cè)主動(dòng)輪的驅(qū)動(dòng)電機(jī)。機(jī)器人前后各有一個(gè)從動(dòng)的萬(wàn)向輪,后萬(wàn)向輪加裝減震彈簧。這種結(jié)構(gòu)使機(jī)器人能在不太平坦的地面上正常行駛。通過(guò)單片機(jī)改變步進(jìn)電機(jī)的激勵(lì)電壓頻率,能夠使機(jī)器人保持最佳的運(yùn)行速度。由于機(jī)器人自身有一定的重量,在起步時(shí)需要克服最大靜摩擦,所需力矩較大,而運(yùn)行時(shí)則力矩較小,在運(yùn)行程序中,加入了一個(gè)從起步到最高速的一個(gè)加速程序和一個(gè)停止時(shí)的減速程序,使機(jī)器人行走更平穩(wěn)。
(3)超聲測(cè)距模塊考慮到機(jī)器人工作的環(huán)境主要是在家中,機(jī)器人需要有自主運(yùn)行中的避障和測(cè)距定位等功能。由于家庭環(huán)境中,一般的距離不會(huì)超過(guò)10m,選擇了超聲測(cè)距的方法。記錄聲波脈沖發(fā)射和接收到之間的時(shí)間間隔,再乘以聲速,即為所要測(cè)量的距離。為了避免各超聲傳感器之間的相互干擾,沒(méi)有提高超聲的發(fā)射功率和接收靈敏度,使其測(cè)距范圍為 0.1~8 m,完全可以滿足在家中運(yùn)行的需要。我們給機(jī)器人加裝了四組這樣的超聲傳感器,分別在左側(cè)、前左、前、右側(cè)。對(duì)于三個(gè)方向上接收到的數(shù)據(jù),主要進(jìn)行兩方面的處理:其一是判斷有無(wú)障礙物,進(jìn)行自動(dòng)避障;其二是根據(jù)測(cè)量的距離,可以自動(dòng)繞房間一周(沿左墻或右墻),繪制出一張房間的二維地圖。
(4)溫度、濕度測(cè)量模塊 溫度和濕度的測(cè)量,利用A/D 轉(zhuǎn)換器將傳感器的模擬信號(hào)(電壓),轉(zhuǎn)換為數(shù)字信號(hào),并通過(guò)單片機(jī)的8個(gè)I/O口,將8位二進(jìn)制數(shù)傳送給單片機(jī),通過(guò)相應(yīng)的數(shù)學(xué)模型進(jìn)行運(yùn)算,即為所測(cè)量到的攝氏溫度和相對(duì)濕度。
(5)電器遙控集成模塊 家中各種電器控制是通過(guò)智能可學(xué)習(xí)紅外遙控器完成的。它可以自動(dòng)記錄家中各類電器遙控器所發(fā)射的紅外線信號(hào),并儲(chǔ)存在flash 里,到時(shí)候需要控制什么電器,它就會(huì)發(fā)射出相應(yīng)的紅外線信號(hào)。在知道了家中的溫度、濕度之后,可以控制家里的空調(diào)、取暖設(shè)備及控制微波爐、電飯煲等電器。
(6)圖像采集模塊通過(guò)網(wǎng)絡(luò),實(shí)時(shí)傳輸圖像是個(gè)在目前很復(fù)雜的問(wèn)題。為了降低機(jī)器人的成本,使日后管家能夠真正運(yùn)用于人們生活之中,我們采用中科院微視電子公司的PCI視頻采集卡,采集、壓縮接收到的視頻信號(hào),利用提供的2次開(kāi)發(fā)包(動(dòng)態(tài)鏈接庫(kù))進(jìn)行2次開(kāi)發(fā)。為了提高網(wǎng)絡(luò)的效率,能使圖像更快地傳輸,并且能夠保證圖像的質(zhì)量和實(shí)時(shí)性,我們將采集進(jìn)來(lái)的視頻信號(hào),實(shí)時(shí)壓縮成jpeg文件,通過(guò)網(wǎng)絡(luò)將jpeg文件傳輸?shù)娇蛻舳耍⒃诳蛻舳瞬粩嗟厮⑿耲peg文件,形成一個(gè)比較連貫的圖像傳輸系統(tǒng)。由于jpeg 文件只有十幾KB,利用TCP/IP傳輸協(xié)議進(jìn)行傳輸,所需的時(shí)間不長(zhǎng)。每秒鐘可傳3~12幀。
(7)各種數(shù)據(jù)的傳輸模塊 為了使機(jī)器人能夠自由地在工作環(huán)境中不受限制地運(yùn)行,不能拖著“尾巴”(電線)。我們給機(jī)器人加裝了無(wú)線數(shù)據(jù)傳輸模塊。數(shù)據(jù)傳輸模塊有兩個(gè),一個(gè)用來(lái)完成單片機(jī)與上位機(jī)之間的信息交互,例如傳送溫度、濕度、超聲測(cè)距值及各類命令;另一個(gè)數(shù)傳模塊則專門用來(lái)傳輸攝像頭所拍攝到的視頻信號(hào),送到圖像采集卡。其中信息數(shù)傳模塊的頻率為800MHz,傳輸距離在空曠地區(qū)能達(dá)到1km。圖像傳輸模塊則有4個(gè)在1200MHz 左右的頻點(diǎn)可供選擇,傳輸距離在空曠地區(qū)能達(dá)到200m,可以滿足在家中的使用要求。
2.硬件電路
(1)主板 主板電路如圖1所示。P1.0端口為兩個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)模塊提供激勵(lì)電壓頻率,以改變步進(jìn)電機(jī)的轉(zhuǎn)速,P1.1、P1.2端口控制兩個(gè)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的方向(正/反轉(zhuǎn)),這樣在轉(zhuǎn)彎時(shí)可以做到原地轉(zhuǎn)彎并且效率較高。通過(guò)非門將單片機(jī)的控制信號(hào)與步進(jìn)電機(jī)控制模塊的信號(hào)調(diào)整同步。P1.5端口控制超聲的發(fā)射,并同時(shí)啟動(dòng)INT0的定時(shí)器中斷,一旦發(fā)出了超聲波信號(hào),直至接收返回信號(hào),記錄定時(shí)器在這一過(guò)程中所經(jīng)過(guò)的時(shí)間t,再按照s=vt/2的公式算出距離。P1.3、P1.4端口用來(lái)選擇測(cè)溫或者測(cè)濕電路的啟動(dòng)。P0端口接A/D轉(zhuǎn)換器,以獲取由測(cè)溫、測(cè)濕模塊測(cè)量,并通過(guò)A/D轉(zhuǎn)換器(ADC0809)轉(zhuǎn)換得到的8位2進(jìn)制數(shù)。P2端口用來(lái)控制智能可學(xué)習(xí)紅外遙控器的8個(gè)按鍵。在串口通信方面,我們將單片機(jī)的串口數(shù)據(jù)通過(guò)MAX232芯片進(jìn)行TTL/CMOS和RS-232電平之間的轉(zhuǎn)換并將其連接至無(wú)線串口收發(fā)模塊。
(2)超聲波傳感器超聲波傳感器原理圖如圖2所示。其中圖(2a)為超聲波的發(fā)射電路,單片機(jī)通過(guò)enable(使能)端給出觸發(fā)信號(hào),發(fā)射端通過(guò)U1A和U1B兩個(gè)運(yùn)算放大器,組成一個(gè)振蕩器,再通過(guò)U1C和U1D兩個(gè)放大器輸出(enable控制U1C的工作狀態(tài)),驅(qū)動(dòng)壓電陶瓷換能器發(fā)出超聲波;圖(2b)為超聲波的接收電路,前級(jí)由1個(gè)MC4558內(nèi)的兩個(gè)運(yùn)算放大器構(gòu)成前置放大器,后級(jí)通過(guò)反向器作為輸出端的驅(qū)動(dòng)。
(3)溫度、濕度傳感器原理圖如圖3所示。將測(cè)溫芯片LM35的電壓數(shù)值通過(guò)OP07進(jìn)行放大,輸出給A/D轉(zhuǎn)換器(ADC0809)的第一個(gè)輸入端(In-0)。我們使用了一個(gè)現(xiàn)有的濕度傳感器將其輸出給ADC0809的第二個(gè)輸入端(In-1)。ADC0809將接收到的電壓值轉(zhuǎn)換成8位二進(jìn)制數(shù),輸出至單片機(jī)的P0端口。ADD-A和ADD-B分別對(duì)應(yīng)單片機(jī)選擇讀取的溫度和濕度數(shù)值的選擇端口。
(4)智能可學(xué)習(xí)紅外遙控器如圖4所示。將J2接收到的紅外線信號(hào),通過(guò)78P156單片機(jī),將紅外線信號(hào)儲(chǔ)存至E2PROM(24C32)中。與單片機(jī)8個(gè)端口的連接中使用了光電耦合器,以起到模擬按鍵開(kāi)關(guān)的作用。當(dāng)單片機(jī)的端口發(fā)出指令時(shí),通過(guò)光電耦合器短路相應(yīng)的電路,起到了按鍵的效果。78P156單片機(jī)便會(huì)將相應(yīng)位置上儲(chǔ)存的紅外線信號(hào)通過(guò)J1發(fā)射出去,實(shí)現(xiàn)智能可學(xué)習(xí)紅外遙控。
軟件部分
在軟件方面,主要分為兩大部分(軟件流程圖及源程序見(jiàn)本刊網(wǎng)站):
1.單片機(jī)程序的編寫(xiě)我們用C51語(yǔ)言編寫(xiě),通過(guò) keil 軟件進(jìn)行編譯。主要分為三大部分。
自動(dòng)行走通過(guò)4組超聲傳感器,沿一側(cè)墻壁自動(dòng)將房間巡視一遍,并將所收到的數(shù)據(jù)通過(guò)串口通信,傳送給上位機(jī),以完成地圖的自動(dòng)繪制功能。
控制行走 通過(guò)串口通信接收上位機(jī)的指令,按照指令要求完成動(dòng)作。指令分為數(shù)組型和字符串型兩種。
智能可學(xué)習(xí)紅外遙控器的學(xué)習(xí) 通過(guò)串口通信接收上位機(jī)的指令,并打開(kāi)所選擇的遙控器的按鈕,以完成多功能遙控器的學(xué)習(xí)功能和對(duì)各種電器的操控。
2.上位機(jī)程序的編寫(xiě) 利用 Lab-windows/CVI(C語(yǔ)言)編寫(xiě)整套上位機(jī)的程序。整個(gè)程序共分為8個(gè)子程序。
服務(wù)端 建立起串口通信與單片機(jī)進(jìn)行信息交互,利用TCP/IP建立起的網(wǎng)絡(luò)信息交互平臺(tái),將單片機(jī)的數(shù)據(jù)傳輸?shù)娇蛻舳?。將PCI采集卡采集進(jìn)來(lái)的圖像信息轉(zhuǎn)存成jpeg文件,利用TCP/IP服務(wù)協(xié)議的另一個(gè)端口傳輸給遠(yuǎn)端的圖像接收程序。
客戶端接收服務(wù)端所發(fā)送的單片機(jī)的數(shù)據(jù)信息并進(jìn)行運(yùn)算,將溫度、濕度、機(jī)器人在二維地圖上所處的位置,直觀地表現(xiàn)在程序界面上,并能將控制機(jī)器人自動(dòng)行走、開(kāi)關(guān)電器、巡視、拍照的命令信息發(fā)送各服務(wù)端,通過(guò)服務(wù)端,將命令轉(zhuǎn)發(fā)給單片機(jī)??梢栽诘貓D上點(diǎn)擊一個(gè)地點(diǎn),根據(jù)現(xiàn)在所在的點(diǎn),算出目標(biāo)點(diǎn)的方向距離,發(fā)送給單片機(jī),單片機(jī)旋轉(zhuǎn)指定角度,運(yùn)行到目標(biāo)點(diǎn),途中遇到障礙,按照地圖繪制時(shí)的避障方法,避開(kāi)障礙物。能夠自動(dòng)保存上一次的操作步驟,并可自動(dòng)按上一次的操作重新進(jìn)行巡邏工作。
圖像采集接收服務(wù)端傳輸過(guò)來(lái)的圖像文件,在指定窗口中打開(kāi)圖像,并實(shí)時(shí)更新圖像。
路線繪制 通過(guò)串口通信,制定一條機(jī)器人自動(dòng)巡邏、定點(diǎn)拍照的路線,并儲(chǔ)存為指定的文件,供客戶端使用。
地圖繪制 通過(guò)串口通信,將超聲測(cè)距的數(shù)值記錄下來(lái),通過(guò)三角函數(shù),轉(zhuǎn)化為以0點(diǎn)為起始點(diǎn)的平面直角坐標(biāo)系上的點(diǎn),并進(jìn)行相應(yīng)的填充,繪制出房間的二維地圖,供操作機(jī)器人在家中工作時(shí)參考。
遙控器學(xué)習(xí)程序通過(guò)串口通信,學(xué)習(xí)家中遙控器的紅外線信號(hào)。
機(jī)器人在實(shí)際生活中的應(yīng)用前景
用機(jī)器人代替人力,服務(wù)于人,是整個(gè)社會(huì)的一個(gè)大的趨勢(shì)。而我們的機(jī)器人正是適應(yīng)了這一潮流,將曾經(jīng)的科幻變成了現(xiàn)實(shí),并且成本很低,機(jī)器人自身的適應(yīng)能力強(qiáng),一般的家庭都可以接受和使用。這個(gè)機(jī)器人是一個(gè)在“無(wú)限(空間、時(shí)間)”、無(wú)線的條件下完成對(duì)未知環(huán)境探測(cè)的平臺(tái)。在這方面,它有著更大的擴(kuò)展空間,比如用于工廠、倉(cāng)庫(kù)環(huán)境的監(jiān)控,一些危險(xiǎn)環(huán)境的探測(cè)。在這個(gè)平臺(tái)上,可以充分地?cái)U(kuò)展外部設(shè)備,完成各種特殊的功能,甚至可以用于戰(zhàn)爭(zhēng)中充當(dāng)工兵,避免人員傷亡。