向浩維
摘 要 本項目以樹莓派與89C52RC單片機為基礎(chǔ),設(shè)計一個智能安全防盜探測小車,可以通過安裝的紅外傳感器對已設(shè)定的軌跡進行循跡,通過超聲波模塊進行避障行駛,通過樹莓派上的wifi模塊將小車搭載攝像頭獲取的圖像傳到搭建的服務(wù)器上,手機或平板登陸網(wǎng)址獲取圖像并對小車進行模式切換,手動控制和攝像頭角度控制。
關(guān)鍵詞 智能小車 安全探測 wifi 樹莓派 單片機 傳感器
中圖分類號:TN702 文獻標(biāo)識碼:A DOI:10.16400/j.cnki.kjdkx.2016.09.075
Abstract The project is based on raspberry pie and 89c52rc microcontroller, aiming to design a Artificial Intelligent Car for Unsafety Detection. It can use its infrared sensors to track the given orbit, ultrasonic module to avoid obstacles and the WIFI module from raspberry pie to transfer the camera signal from the camera installed on the device to the website we built where the video can be viewed and the working conditions, motions of the car can be modified as well as the angle of the camera.
Key words intelligent car; unsafety detection; wifi; raspberry pie; microcontroller, sensor
1 項目背景
近來由于經(jīng)常發(fā)生寢室盜竊的事件,大家非常沒有安全感。所以安全性成為大家日益增長的需求。當(dāng)今社會提高安全性有兩種,一種是增加人力,另一種是利用現(xiàn)代科技設(shè)計一個安全智能的設(shè)備代替人力??紤]到寢室巡查的限制,不可能在巡查方面采用過多的人員,這樣成本也增加過高,而且人員巡邏時難免會出現(xiàn)一些不仔細(xì)不全面的缺陷。而對寢室安裝定點攝像頭,由于隱私等問題以及巡查范圍有限,導(dǎo)致會出現(xiàn)學(xué)生的反對以及出現(xiàn)成本巨大,此外,定點攝像頭也可以被有經(jīng)驗的犯罪分子事先偵察并躲避,這樣攝像頭也形同虛設(shè),可以說并不是一個適合的方案。于是,根據(jù)智能化發(fā)展的趨向,我們決定開發(fā)設(shè)計一種自動安全巡查小車來對宿舍安全環(huán)境進行改善。用小車的避障,循跡來按照固定軌跡進行巡邏,手控方便進行突擊檢查或疑犯追蹤,攝像頭實時傳輸圖像功能完成對宿舍乃至校園內(nèi)的安全巡邏。人只需要坐在終端看實時傳回來的圖像進行判斷即可確保當(dāng)前區(qū)域有無安全隱患。此外,此處的攝像頭也可連接到公安部門的攝像頭網(wǎng)絡(luò)上,如果以后根據(jù)攝像頭識別人臉進行疑犯追蹤,那么小車上的攝像頭也可作為一個分支參與其中。
2 項目目標(biāo)分析
首先作為智能小車,其必須對安全有著較明顯的提高作用。巡查人員必須能通過小車發(fā)現(xiàn)周圍的情況,最好有實時并可以存儲的影像記錄,方便及時作出處理同時留到日后作為證據(jù)。其必須具有一定的示警作用,對潛在的犯罪起到制止的作用。在面對罪犯時,也要有一定的防衛(wèi)手段。其次在于其低成本,作為安全巡查小車,其本身不能具有太大的價值,要避免自身被作為竊取對象。最后,要考慮智能安全小車巡查的軌跡,要有一定的隨機性,也能有一定的可控性,同時在關(guān)鍵時刻要能實現(xiàn)完全可控,控制距離要遠(yuǎn),確保信號準(zhǔn)確到達(dá)小車。
綜上所述,我們設(shè)計的小車初步預(yù)想將具有下列特性:
(1)運用樹莓派接usb攝像頭的方式進行圖像采集。樹莓派作為服務(wù)器通過其wifi模塊向外部發(fā)送視頻流文件,所有共享局域網(wǎng)的用戶只要登錄相應(yīng)的網(wǎng)址均能接收到視頻,并對小車進行控制。選用wifi的目的在于校園網(wǎng)的覆蓋,校園網(wǎng)覆蓋的地方均能進行控制并看到圖像。
(2)運用51單片機控制LN298電機驅(qū)動模塊,用超聲波模塊實現(xiàn)距離測量和避障功能,用紅外對管模塊實現(xiàn)黑線循跡功能。
(3)手機或電腦(平板)通過wifi連接上樹莓派,登錄寫好的網(wǎng)頁給樹莓派發(fā)送信號,樹莓派向51單片機對應(yīng)的引腳發(fā)送高電平進行模式切換、手動方向控制。同時,小車上搭載的攝像頭也可以通過手機平板等發(fā)射的信號來進行攝像角度的調(diào)整。
3 開發(fā)環(huán)境
3.1 操作系統(tǒng)
Windows7
3.2 軟件開發(fā)環(huán)境
Keil uVision4 程序開發(fā),APACHE,PHP,Python,STC-ISP 燒錄軟件
4 模式切換
用兩個信號MODE1和MODE2將樹莓派和單片機相連,當(dāng)其為00時,小車停止運動,當(dāng)其為01時,切換至紅外循跡模式,當(dāng)其為10時,切換為超聲波避障模式,當(dāng)其為11時,切換為手動控制模式。
5 紅外模塊
具體實現(xiàn)如下:
(1)定時器中斷產(chǎn)生pwm波。程序見附錄1,con_left和con_right為自增變量,當(dāng)變量小于控制值speed_l和speed_r時自增,使輸出為1,大于這一值時也自增,使輸出為零,當(dāng)自增變量大于100時使其清零,通過產(chǎn)生這樣的方波控制輸出的有效電壓,從而控制電機的速度。
(2)差速調(diào)節(jié)小車的方向。將4路循跡的紅外對管接收情況分為8種,第一類為1111,表示紅外對管在黑線正中央,直行。第二類為1000,1100,0100三種情況,在這種情況下小車進行左轉(zhuǎn)矯正軌跡,運用不同的差速50-0,70-0,100-(-100)來進行角度調(diào)整。第三類為0001,0011,0010,這三種情況類似第二種,將小車進行右轉(zhuǎn)校正。第四類為其他情況,在這種情況下,下車慢速前行,以避免撞上障礙物。
(3)兩個反饋調(diào)節(jié)角度的轉(zhuǎn)動。在0001或1000這種情況下,由于這種情況偏差屬于最極端情況,為了使小車不偏出軌道,對小車進行了最極端的角度調(diào)整,但是這類調(diào)整會使小車的行駛出現(xiàn)卡頓,因此這種情況的調(diào)節(jié)時間應(yīng)該適中,不能太多或太少。
因此在程序中將實時情況與0010和0100相比較,直到回到想要的狀態(tài)時,再進入下一個循環(huán)。同時為了避免出現(xiàn)一直處于這個狀態(tài)的情況,設(shè)立了一個自增變量flag,當(dāng)flag大于某一值時跳出循壞。避免出現(xiàn)由于小車突然沖出跑道或發(fā)生意外,導(dǎo)致陷入這個死循環(huán)之中。
第二個反饋:當(dāng)沒有模式切換的時候,能夠?qū)崟r對紅外對管進行判斷,使其能夠?qū)诰€的位置能夠?qū)崟r判斷。
6 供電解決方案
由于我們需要給單片機,樹莓派,舵機,攝像頭,L298N,紅外對管模塊,超聲波模塊供電,我們采用的是6節(jié)ENELOOP充電電池供電,輸出至L298N模塊。
由于樹莓派無法用干電池供電,因此用一個5V輸出的移動電源給樹莓派供電,將其余模塊用L298N的5V輸出供電,經(jīng)過實驗,這種方案是可行的。
7 中斷沖突解決方案
因為同伴編寫的超聲波避障程序和我的程序架構(gòu)不一樣,改起來比較麻煩。特別是由于超聲波避障以及紅外循跡均用到了PWM波,因此可以用一個中斷來產(chǎn)生PWM波,但是后來由于這樣出了bug,因此我們將超聲波避障的中斷與紅外循跡的中斷分開來,分別用timer0和timer1來產(chǎn)生不同的PWM波。在模式切換的時候開啟要用的那個定時器,關(guān)閉不用的那個定時器,就可以達(dá)到預(yù)期的效果。
8 項目總結(jié)與建議
本次智能防盜小車設(shè)計,是將一些簡單的模電,數(shù)電知識應(yīng)用到實際的成果。
這個設(shè)計更像是一門將不同模塊組合到一起的實驗,在淘寶或是其他的網(wǎng)站上大多有一些現(xiàn)成的模塊,如紅外,超聲波,藍(lán)牙等模塊,甚至也有很多成品。但是自己動手可以得到更多的鍛煉。這次設(shè)計更重要的是鍛煉我們的組合能力。很多51單片機編程的知識,包括各種模塊都是將現(xiàn)成的I/O口加以調(diào)用即可,但是卻并沒有涉及到自己設(shè)計電路,焊板子之類的工作,這既節(jié)省了我們的時間,也減少了我們的成本。
由于我們小組走的方向是比較明確而清晰的,沒有花太多時間在物理建模上。我負(fù)責(zé)了紅外模塊的編寫,程序的整合以及最后加入了手動控制這一選項。由于模塊的功能比較清晰,我們并沒有遇到諸如此類的棘手的物理問題:要用什么方式夾起東西?在什么條件下做什么?現(xiàn)在回頭看來,功能不是很強大,但也遇到了一些包括供電沖突,程序整合,中斷沖突,怎么引入反饋之類的一些問題。因此也感到有了很多收獲。
其實很多DIY的東西在網(wǎng)上都已經(jīng)被人做過了,想再找出一些有創(chuàng)意的東西是十分困難的。包括我們做的各種模塊,在網(wǎng)上大多有現(xiàn)成的代碼。但是我們堅持自己編寫這些代碼,希望能夠在編寫代碼的過程中能夠收獲一些基本的知識,鍛煉一些調(diào)整bug的基本能力。雖然最后做出來的成果和一開始設(shè)想的還是有比較大的差距,但還是很欣慰自己能夠做出來一個能夠基本實現(xiàn)功能的小車。
參考文獻
[1] 郭天祥.51單片機C語言教程——入門、提高、開發(fā)、拓展全攻略.電子工業(yè)出版社,2009.