向浩維

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