《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 自動裝載與視頻監(jiān)控遠程控制系統(tǒng)
自動裝載與視頻監(jiān)控遠程控制系統(tǒng)
2017年微型機與應(yīng)用第1期
李子昌,李智,管四海
西安電子科技大學(xué) 機電工程學(xué)院,陜西 西安 710071
摘要: 設(shè)計了一種嵌入式自動裝載與視頻監(jiān)控系統(tǒng),并通過網(wǎng)絡(luò)實現(xiàn)遠程控制。該系統(tǒng)采用S3C2410處理器,移植Linux操作系統(tǒng),成功運行在S3C2410上。視頻監(jiān)控模塊使用的攝像頭是USB接口形式,移植對應(yīng)的Linux驅(qū)動程序,攝像頭才能正常采集數(shù)據(jù)。移植Libjpeg開源庫,對經(jīng)硬件壓縮的圖像進行解壓,通過顯示終端顯示,進而實時對現(xiàn)場進行監(jiān)控。自動裝載模塊的實現(xiàn),首先設(shè)定期望的貨物擺放路徑,其次利用Framebuffer幀緩沖寫屏技術(shù)在顯示終端上顯示自動裝載過程。通過Socket網(wǎng)絡(luò)接口,上位機可對該系統(tǒng)進行遠程控制
Abstract:
Key words :

  李子昌,李智,管四海

  (西安電子科技大學(xué) 機電工程學(xué)院,陜西 西安 710071)

       摘要:設(shè)計了一種嵌入式自動裝載視頻監(jiān)控系統(tǒng),并通過網(wǎng)絡(luò)實現(xiàn)遠程控制。該系統(tǒng)采用S3C2410處理器,移植Linux操作系統(tǒng),成功運行在S3C2410上。視頻監(jiān)控模塊使用的攝像頭是USB接口形式,移植對應(yīng)的Linux驅(qū)動程序,攝像頭才能正常采集數(shù)據(jù)。移植Libjpeg開源庫,對經(jīng)硬件壓縮的圖像進行解壓,通過顯示終端顯示,進而實時對現(xiàn)場進行監(jiān)控。自動裝載模塊的實現(xiàn),首先設(shè)定期望的貨物擺放路徑,其次利用Framebuffer幀緩沖寫屏技術(shù)在顯示終端上顯示自動裝載過程。通過Socket網(wǎng)絡(luò)接口,上位機可對該系統(tǒng)進行遠程控制。

  關(guān)鍵詞:S3C2410;Linux;視頻監(jiān)控;自動裝載;Libjpeg;Framebuffer;Socket

  中圖分類號:TP13文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.01.001

  引用格式:李子昌,李智,管四海.自動裝載與視頻監(jiān)控遠程控制系統(tǒng)[J].微型機與應(yīng)用,2017,36(1):1-3.

  至今為止,多數(shù)傳統(tǒng)工業(yè)領(lǐng)域的貨物裝卸和擺放還是靠人力完成[1],如搬運水泥。惡劣的工作環(huán)境和繁重的體力勞動給工作人員帶來巨大的勞動負擔(dān),且對工人的身體健康有很大的危害。隨著物聯(lián)網(wǎng)技術(shù)的大力發(fā)展,如何利用嵌入式技術(shù),設(shè)計一套具有實時視頻監(jiān)控且能自動裝載的系統(tǒng)成為當(dāng)下的關(guān)鍵問題。

  S3C2410處理器體積小巧,可節(jié)省板卡空間;功耗比大多數(shù)芯片要低很多,適合工作在對電源有特殊要求的環(huán)境中;主頻能夠達到203 MHz,具有很好的實時性能;具有內(nèi)存管理單元,因此可以移植并運行操作系統(tǒng),處理更復(fù)雜的任務(wù)[2]?;谝陨咸攸c,選擇S3C2410作為本系統(tǒng)主控制器。Linux操作系統(tǒng)支持創(chuàng)建多個用戶、處理多個任務(wù)[3],所以基于S3C2410+Linux的嵌入式系統(tǒng)成為第一選擇。Linux系統(tǒng)內(nèi)核中圖像采集設(shè)備的接口是Video4Linux,在此接口的基礎(chǔ)上,結(jié)合自己的設(shè)計,開發(fā)出具有相應(yīng)功能的程序?;赩ideo4Linux開發(fā)視頻采集程序具有接口簡單、容易實現(xiàn)、開發(fā)周期短等特點[4],故受到廣泛關(guān)注。Libjpeg是一個開源庫,用來壓縮或解壓JPEG格式的圖像[5],可以在設(shè)計的程序中調(diào)用該庫提供的函數(shù),完成解壓過程,減少開發(fā)人員的工作量。Framebuffer[6]是Linux內(nèi)核中可由用戶調(diào)用的函數(shù)接口,通過這個接口,可以把圖形設(shè)備當(dāng)成緩沖區(qū)來使用, 圖形設(shè)備的操作與真實緩沖區(qū)的操作完全相同,可使用戶避免接觸底層繁瑣的操作,使開發(fā)變得簡單。利用Socket接口,通過網(wǎng)絡(luò)實現(xiàn)遠程控制。

  綜上所述,本文提出一種基于S3C2410+Linux的嵌入式自動裝載系統(tǒng),同時具有對現(xiàn)場進行視頻監(jiān)控的功能。監(jiān)控和裝載系統(tǒng)的軟件是在Linux系統(tǒng)中開發(fā)的,內(nèi)核的版本是2.6.8.1,移植了相應(yīng)的開源庫。另外,根文件系統(tǒng)的類型有很多種,該系統(tǒng)采用的是cramfs[7],該類型只能讀,不能寫,對數(shù)據(jù)有保護功能。程序的開發(fā)工作主要由移植驅(qū)動和開源庫、實現(xiàn)具有特定功能的程序等構(gòu)成。視頻監(jiān)控模塊由三部分組成:負責(zé)采集圖像的zc301p USB接口攝像頭、負責(zé)圖像處理的主控制器和顯示視頻的顯示終端。自動裝載模塊主要由上述的主控制器和LCD顯示設(shè)備組成。自動裝載應(yīng)用程序包括擺放路徑規(guī)劃程序和模擬過程的顯示畫面程序,并通過網(wǎng)絡(luò)進行遠程控制。

1視頻監(jiān)控模塊設(shè)計

  視頻監(jiān)控應(yīng)用程序包含圖像數(shù)據(jù)的采集過程設(shè)計、圖像解壓縮函數(shù)的調(diào)用和LCD圖像顯示等。圖像數(shù)據(jù)采集過程調(diào)用了Video4Linux接口[4],將攝像頭的數(shù)據(jù)讀取到內(nèi)存中。

  初始化設(shè)備后,進行視頻圖像的截取。一種視頻截取方式是將read()函數(shù)包含在自己的程序中,這樣程序就可以將緩沖區(qū)數(shù)據(jù)提取出來;第二種方式是采用內(nèi)存映射的方法讀取數(shù)據(jù),設(shè)計的程序要包含mmap()函數(shù),在程序中實現(xiàn)映射功能。內(nèi)存映射的方式有一個很大的優(yōu)點,就是內(nèi)存共享,可大大提高訪問速度。這樣對文件的訪問不必再調(diào)用read()、write()等,各個進程能及時看到共享內(nèi)存中數(shù)據(jù)的更新,進而提高實時性。故此系統(tǒng)采用通過mmap()內(nèi)存映射的方法。

  1.1用Libjpeg解壓jpeg數(shù)據(jù)

  本系統(tǒng)使用的Libjpeg庫是libjpegv6b,但libjpeg-v6b只支持文件格式的輸入。由于本系統(tǒng)采用的攝像頭是zc301p,此攝像頭所采集的數(shù)據(jù)是經(jīng)硬件壓縮的jpeg數(shù)據(jù)流,采集的數(shù)據(jù)直接保存在內(nèi)存中。然而Libjpeg庫并不支持這樣的輸入。此問題的解決方法是:修改Libjpeg庫的源碼,使其能夠解壓內(nèi)存中的jpeg數(shù)據(jù)流。

  1.2視頻顯示模塊

  顯示模塊采用LCD顯示屏,每個像素用16位顏色表示,格式為RGB565,但通過Libjpeg庫函數(shù)解壓數(shù)據(jù),得到的圖像為GB888格式,即24位數(shù)據(jù),所以需要進行格式轉(zhuǎn)化。

  本系統(tǒng)采用的硬件設(shè)備攝像頭采集的單幅圖片最大分辨率為640×480,所以內(nèi)存映射時,映射的兩個尺寸參數(shù)必須是這兩個最大值。Libjpeg解壓出來的圖片與輸入圖片分辨率同樣大。由于顯示器的分辨率是480×272,當(dāng)輸入是640×480時,超出了顯示屏的尺寸,圖像顯示不完全,結(jié)果如圖1。

001.jpg

  Libjpeg支持縮放解壓,可供選擇的縮放比例有1/2、1/4、1/8三種。選擇1/2的縮放比例,分辨率為320×240,有花屏和明顯的掃描痕跡,顯示效果如圖2。

  

002.jpg

  以上兩種情況盡管顯示出來的部分比較清楚,但總體效果不好。選擇1/4的縮放比例,分辨率為160×120,畫面比較清晰流暢,沒有花屏,也無掃描痕跡,顯示的效果比較理想,如圖3所示。

  

003.jpg

  選擇1/8的縮放比例,畫面清晰流暢,但畫面太小,不利于實時監(jiān)控,顯示效果如圖4。

004.jpg

  綜合三種縮放比例的分析和實驗結(jié)果比較可知,1/4縮放比例是最佳選擇。

2自動裝載的設(shè)計與實現(xiàn)

  自動裝載的實現(xiàn)基于Framebuffer技術(shù)。Linux內(nèi)核fb_ops定義了Framebuffer設(shè)備的操作[6]。

  本系統(tǒng)使用的開發(fā)板型號是FS2410,處理器是S3C2410。

  由于顯示終端顯示的是RGB565格式,因此可通過對每個像素點直接賦值使framebuffer顯示顏色。

  下面利用仿真函數(shù)對framebuffer的控制來模擬實際水泥的自動裝載過程。將顯示終端界面看作水泥擺放區(qū)域,用一塊白色矩形代表單袋水泥。從傳送帶落下的水泥每次都落在同一位置,因此選取顯示屏上一個固定區(qū)域作為水泥的落地點。在此選LCD左上角,周期性地使這塊區(qū)域變成白色即可。將顯示屏看成一個二維坐標系,落地點為(0,0),按照路徑先沿行移動、后沿列移動的順序擺放,考慮到現(xiàn)實中的速度問題,每移動一步,延遲1 s。此過程可建模成一個循環(huán)嵌套的過程,設(shè)定好每個具體位置應(yīng)該移動的步數(shù),實現(xiàn)有序執(zhí)行。根據(jù)顯示屏的分辨率480×272,設(shè)定每袋水泥占的區(qū)域大小為60×80,行間隔16,列間隔10,即每行為7袋,每列為3袋,一層共21袋。設(shè)置不同的背景顏色代表不同的層,而每層的擺放方法是相同的,以便查看。在本系統(tǒng)中,共設(shè)計3層。第一層用藍色背景表示,裝載效果如圖5。

 

005.jpg

  第二層用紅色背景表示,裝載效果如圖6。

006.jpg

  第三層用綠色背景表示,裝載效果如圖7。

  

007.jpg

  另外,定義一個變量記錄裝載的數(shù)量,以供上位機調(diào)用。

3遠程控制

  利用socket在ARM開發(fā)板和上位機之間實現(xiàn)網(wǎng)絡(luò)通信。將上位機和ARM開發(fā)板用交叉網(wǎng)線連接起來,利用socket編程,建立一個socket,采用服務(wù)器/客戶機的訪問模式,開發(fā)板作為服務(wù)器端,上位機作為客戶機端。實現(xiàn)通信后,利用上位機通過網(wǎng)絡(luò)來直接控制開發(fā)板的工作,實現(xiàn)遠程控制。

  在雙方的通信過程中,約定好一套通信協(xié)議。由于本文只實現(xiàn)了模擬裝載和實時監(jiān)控兩個功能,因此在遠程控制時,只設(shè)定兩個命令即可。約定好A命令表示模擬裝載,B命令為觀看監(jiān)控錄像。通過這兩個命令,可以在上位機很好地遠程控制下位機。

  4結(jié)論

  本文提出的嵌入式自動裝載與視頻監(jiān)控系統(tǒng),以S3C2410處理器作為主控制器,運行Linux系統(tǒng),具有實現(xiàn)簡單、可擴展性強等特點。通過嵌入式視頻監(jiān)控系統(tǒng)可以查看裝載現(xiàn)場的狀況,對于突發(fā)事件,能及時做出反應(yīng),保障裝載工作安全進行。自動裝載系統(tǒng)的設(shè)計為日后實際系統(tǒng)搭建打下了基礎(chǔ),對以后的工作具有重大意義。

參考文獻

  [1] 張慶平, 蘇國民. 特大型礦井全自動裝卸系統(tǒng)的實現(xiàn)[J]. 工礦自動化, 2002(6):41 42.

 ?。?] 彭鐵鋼, 劉國繁, 曹少坤,等. 基于ARM的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計[J]. 計算機工程與設(shè)計, 2010, 31(6):1191 1194.

 ?。?] 許青林, 解爭龍. 基于ARM的Linux系統(tǒng)移植研究與實現(xiàn)[J]. 物聯(lián)網(wǎng)技術(shù), 2013(1):37 38.

 ?。?] 王元偉, 劉國秀. 基于V4L的視頻采集系統(tǒng)的設(shè)計[J]. 鐵路計算機應(yīng)用, 2010, 19(7):30 34.

 ?。?] HONG J, SODSONG W, CHUNG S, et al. Design, implementation and evaluation of a taskparallel JPEG decoder for the Libjpegturbo library[J]. Oral Diseases, 2012, 12(12):117 120.

  [6] 雷鴻, 熊文龍, 楊單. 基于Fram ebuffer的LCD驅(qū)動程序的實現(xiàn)[J]. 武漢理工大學(xué)學(xué)報:交通科學(xué)與工程版, 2006, 30(1):106 109.

 ?。?] 盧劍翔, 劉成安, 胡和智,等. 基于s3c2410的CramFS根文件系統(tǒng)的移植[J]. 微計算機信息, 2006, 22(32):133 135.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。