賴江,李英祥,何琪,蘇凱
(成都信息工程學院 通信工程學院,成都 610225)
?
基于Raspberry Pi的電梯彩屏顯示系統設計*
賴江,李英祥,何琪,蘇凱
(成都信息工程學院 通信工程學院,成都 610225)
本文針對多媒體彩屏電梯顯示的需求,在ARM內核樹莓派平臺和單片機接口板雙處理器架構的硬件支持下,利用485/CAN總線傳輸技術、Linux應用編程、Qt5用戶界面編程,提出并實現了一種雙處理器架構的電梯彩屏顯示系統。此彩屏顯示系統與傳統顯示系統相比,界面更美觀,功能更豐富,且具有低成本、高穩定性等特點。實際測試結果表明,此電梯彩屏顯示系統設計的可行性和有效性。
電梯;雙處理器架構;Qt5;樹莓派
近年來,隨著高層建筑數量的與日俱增,電梯的需求量也在增加。現階段我們廣泛使用的電梯都是基于LED點陣列的顯示系統,顯示狀態信息比較簡單,顯示方式比較單調。此外,現在的一些電梯里的廣告機,雖然改善了電梯轎內的乘坐環境,良好的廣告效果也給商家帶來了不小的經濟效益。但是這種顯示裝置沒有和電梯控制系統融為一體,只是單純的視頻播放而已。
為了使顯示和電梯控制系統相融合,打造舒適的乘坐環境,針對現有的電梯系統提出一種由單片機完成不同廠商適配、由ARM/X86統一顯示的雙核處理方法。該方法中ARM/X86處理器專注于統一通用格式電梯狀態信息解碼、樓層圖片切換或視頻播放,從而提高整個系統的實時性與可靠性。針對不同廠商的電梯通信協議,只需要更改單片機的編解碼程序便可使整個系統重新工作[1-8]。
Raspberry Pi(中文名為“樹莓派”)是一款由英國的樹莓派基金會所開發,以低價硬件及自由軟件為學生計算機編程教育而設計的卡片式電腦。其配備一枚700 MHz博通出產的ARM架構BCM2835處理器,256 MB內存(B型已升級到512 MB內存)的微型電腦主板[2]。Raspberry Pi以SD卡為內存硬盤,主板周圍有兩個USB接口和一個網口,可連接鍵盤、鼠標和網線,同時擁有視頻模擬信號的電視輸出接口和HDMI高清視頻輸出接口。以上部件全部整合在一張僅比信用卡稍大的主板上,具備所有PC的基本功能。其操作系統采用開源的Linux系統,比如Debian、ArchLinux,自帶的Iceweasel、KOffice等軟件能夠滿足基本的網絡瀏覽、文字處理以及計算機學習的需要[2,5]。
Qt是一個1991年由奇趣科技開發的跨平臺C++圖形用戶界面應用程序開發框架。Qt具有優良的跨平臺特性,Qt支持下列操作系統:Microsoft Windows 95/98、Microsoft Windows NT、Linux、 Solaris、SunOS、HP-UX、Digital UNIX (OSF/1、Tru64)、FreeBSD、BSD/OS,SCO、AIX、OS390、QNX等等[3-4]。
1.1 系統框架
本系統的硬件部分主要由接口轉接板和顯示板組成,系統框圖如圖1所示。

圖1 系統框圖
1.2 子系統功能介紹
1.2.1 接口轉接板
接收RS-485/CAN總線上的電梯通信協議,并完成協議的解析;承載溫度傳感設備和掛在I2C總線上的時鐘電路,供顯示板讀取溫度和時間信息,完成用戶按鍵的檢測與編碼。
1.2.2 顯示板
接收接口轉接板譯碼后的電梯數據;讀取溫度和時間信息;實現界面應用程序。
接口轉接板子系統硬件主要包括ATmega8單片機、DS18B20溫度傳感器、PCF8563時鐘芯片、MAX485芯片等。其接口轉接板框圖如圖2所示。

圖2 接口轉接板框圖
電梯的通信協議有多種,本文以NICE3000通信協議為例實現本系統。
2.1 NICE3000通信協議的通信設定
通信方式:RS-485標準、異步、半雙工。
數據格式:1位起始位、8位數據位、1位停止位、無校驗位。
通信波特率:9 600 bps。
通信地址定義:廣播地址為0,外接節點地址為1~31(外招板撥碼開關確定),地址同時也表示外招所在樓層;顯示板只是接收顯示,地址設定為0(撥碼),無需通信回復。
數據校驗:采用兩位異或校驗。
數據幀分類:共有兩種形式,其中廣播幀用于外招顯示內容的信息,不需要返回幀,另外還有一種是普通幀,主要完成主控制板與外招之間的控制信息交換。
2.2 幀格式
數據幀采用固定長度,5個字節,結構為幀頭、用戶數據、幀尾。
幀頭:包括1個字節地址,即主控制板發送給外招的標識,從機(外招)根據幀頭判斷本機是否響應當前通信。如果地址是廣播地址,則從機接收信息,但是不用返回。
用戶數據包括:數據2個字節,根據發送方向(主到從或是從到主)以及幀形式定義不同的用戶數據。
幀尾:包括2個字節校驗數據,先發低位,后發高位。
電梯系統接收到的數據幀不能直接顯示,需要根據數據幀格式,對數據進行校驗,然后解析,最后提取有用的數據給顯示系統進行顯示。本系統的操作如下:
rd = read(fd, rbuf, sizeof(rbuf)); //接收串口數據
if(yihuo_value(rbuf, 4) == rbuf[4]); //數據校驗
num[0] = rbuf[1] & 0x01; //方向解析
num[1] = (rbuf[1]>>1) & 0x03; //狀態解析
num[2] = (rbuf[1]>>3) & 0x01; //是否超載
num[3] = rbuf[2] & 0x1f; //樓層高位解析
num[4] = rbuf[3] & 0x1f; //樓層低位解析
對于彩屏電梯顯示系統而言,液晶屏的顯示效果對客戶的影響是至關重要的。因此,應用層的程序開發相當重要。考慮到圖形界面控件的豐富程度、漂亮程度以及開源免費的持續升級等因素,選擇了QTE/Qt5圖形開發平臺。顯示板子系統的架構如圖3所示。

圖3 子系統架構圖
3.1 Qt的移植
3.1.1 Qt的移植條件
Qt for Embedded Linux是用于嵌入式Linux所支持設備的領先應用程序架構。Qt可以在任何支持Linux的平臺上運行,創建具有獨特用戶體驗的具備高效內存效率的設備和應用程序[3]。Qt的移植需要滿足以下幾個基本條件:
① 開發環境:Linux內核2.4或更高;GCC版本3.3或更高;用于MIPS,其GCC版本3.4或更高。
② 占用存儲空間:存儲空間取決于配置,壓縮后為1.7~4.1 MB;未壓縮為3.6~9.0 MB。
③ 硬件平臺:易于載入任何支持帶C++編譯器和幀緩沖器驅動Linux驅動的處理器;支持ARM、x86、MIPS、PowerPC。
④ Raspberry Pi(B型)滿足以上條件,故可以進行Qt5的移植。
3.1.2 Qt5的移植準備
在做Qt5移植之前首先做以下移植準備:
① 建立一個文件夾/home/opt來存放編譯所需的源碼和文件。
② 下載Raspbian Wheezy鏡像,本文采用2012-07-15-wheezy-raspbian.img。
③ 下載工具鏈,本文采用gcc-4.7-linaro-rpi-gnueabihf。
④ 下載交叉編譯工具,本文采用cross-compile-tools。
⑤ 下載Qt5源碼。
⑥ 下載qtjsbackend庫的應用補丁。
然后建立文件夾mnt/rasp-pi-rootfs,將Raspbian Wheezy鏡像掛載到此文件夾下,并進入Qt5源碼文件夾執行初始化代碼init-repository。

圖4 程序流程圖
3.1.3 Qt5的編譯
首先進入cross-compile-tools文件夾執行一個腳本fixQualifiedLibraryPaths來修改鏈接和庫路徑。
然后編譯qtbase,配置如下:
./configure-opengl es2 device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs-opensource -confirm-license -optimized-qmake -reduce-relocations -reduce-exports -release -make libs -prefix/usr/local/qt5pi
接著再編譯其他模塊如qtimageformats、qtsvg、qtjsbackend、qtscript、qtxmlpatterns、qtdeclarative、qtsensors、qt3d、qtgraphicaleffects、qtjsondb、qtlocation、qtdocgallery等。
當在鏡像中編譯安裝完所有的模塊之后,將其復制到SDcard。
3.1.4 安裝Qt Creator
從網站http://qt-project.org/wiki/Create#QtonPi_App_SDK上下載Qt Creator安裝包,并在Linux系統下對其進行安裝配置。由于Qt5需要Qtcreator2.6.0以上的版本作為支持,本文采用2.6.1版本。
3.2 外圍部件讀取程序
本系統通過讀取掛在I2C總線上的實時時鐘芯片來獲取時間信息,通過溫度傳感設備獲取溫度信息。本文以讀取實時時鐘芯片的數據為例,操作如下:
fd = open('/dev/i2c-1', O_RDWR); //打開I2C總線設備
ret = ioctl(fd,I2C_TENBIT,0); //設置數據的讀寫格式
ret = ioctl(fd, I2C_SLAVE_FORCE, I2C_ADDR);
//設置I2C總線上時鐘芯片地址
pTime->Second = BCD_to_HEC((TimeBuff[pcf8563_SEC - 2] & 0x7f));
pTime->Minute = BCD_to_HEC((TimeBuff[pcf8563_MIN - 2] & 0x7f));
pTime->Hour = BCD_to_HEC((TimeBuff[pcf8563_HR - 2] & 0x3f));
這些設備的操作通過C代碼來實現,然后將其編譯成動態鏈接庫的形式,供界面應用程序調用。
3.3 界面應用程序的實現
圖形界面開發是Qt/Embedded開發的一個重點,本系統的界面結構包括樓層信息區域、運行方向區域、圖片顯示區域、溫度時間顯示區域、狀態顯示區域、本系統涉及到視圖的跳轉、數據的傳遞、控件的使用、布局和事件處理等等。其程序流程如圖4所示。
整個顯示界面通過MainWindow類實現,該類繼承自QmainWindow,而各顯示區域均通過繼承QWidget類來實現。如圖3所示,通過定時器1每隔30 ms調用MainWindow的槽函數checkLiftStstus()來獲取由C函數open_uart485(int data[])解析的串口數據。
connect(timer, SIGNAL(timeout()), this, SLOT(checkLiftStatus())); //獲取電梯信息
將解析后的信息傳遞給樓層信息區域,運行方向區域,狀態顯示區域分別進行顯示。
indicatorDirection(data[0]); //方向信息
indicatorState(data[1]); //狀態信息
liftCurrentFloorNum(data[2]); //樓層信息
圖片視頻顯示區域是在類ShowController中實現的,當系統需要顯示圖片時,該類調用ImageView類的對象負責圖片顯示;當系統需要顯示視頻時,該類調用PlayerWidget類的對象負責處理視頻播放。ImageView類和PlayerWidget類也是繼承自Qwidget。ImageView類負責獲取SD卡上的圖片實例,將其顯示在正確的位置,并通過定時器2實現圖片的切換。PlayerWidget類負責啟動MPlayer,并控制視頻顯示到正確的位置。
溫度時間顯示區域是在TimeView類和temperatureView類中實現。TimeView類的成員函數getCurrentTime()通過調用動態鏈接庫的C函數getpcf8563Time(pcf8563_time *pTime)來讀取掛在I2C總線上的時鐘芯片的時鐘信息,并將其顯示在正確的區域上。
temperatureView類主要用于顯示溫度數據,而真正獲取溫度數據的過程是在TemperatureHandler類中實現的。開辟一個新的線程,通過定時器3每隔500 ms在槽函數readData()中調用一次動態鏈接庫的C函數therm_ds18b20(long *date)來讀取溫度傳感器的數據。
temperatureThread=new QThread(this); //開辟新線程
connect(temptimer,SIGNAL(timeout()),this,SLOT(readData())); //讀取溫度
根據模擬的NICE3000通信協議、外圍部件的操作及Qt5的圖形界面編程,實現了電梯彩屏顯示系統,其硬件設備圖和調試結果圖如圖5、圖6所示。

圖 5 硬件設備圖

圖6 調試結果
本文對基于Raspberry Pi并利用Qt5編程來實現的電梯彩屏顯示系統進行了闡述。首先介紹了整個系統的構架;接著在接口轉接板子系統中介紹了NICE3000通信協議,并對其進行解析;然后在顯示板子系統中介紹了外圍部件的操作,以讀取實時時鐘芯片的數據為例;

[1] 楊漢祥,鐘惠芳,邱志城. LED顯示屏的應用——電梯屏[J]. 贛南師范學院學報,2003(6).
[2] Broadcom.BCM2835 Media Processor,2011.
[3] 陳鯤,陳云秋,劉信新. 基于Qt/Embedded的嵌入式Linux應用程序的設計[J]. 計算機與數字工程,2009(1).
[4] 王浩南, 劉益成. 基于嵌入式Linux系統下的Qt開發[J]. 電腦開發與應用,2010(1).
[5] Silicon.Raspberry Pi Cheat Sheet,2012.
[6] 張先淼, 劉新偉,金天均,等. 高可靠電梯通信系統的研究[J]. 機電工程,2007(10).
[7] 許曉榮,章堅武. 嵌入式Linux下LCD界面應用程序開發[J]. 液晶與顯示,2006,21(3).
[8] 邱曉明. 嵌入式多媒體電梯信息顯示系統設計[D].上海:上海交通大學,2009.
Elevator Colorful Display System Based on Raspberry Pi
Lai Jiang, Li Yingxiang, He Qi, Su Kai
(School of Communication Engineering,Chengdu University of Information Technology,Chengdu 610225,China)
Aiming at the problem of multimedia color display of elevator, under the support of ARM core platform Raspberry Piand microcontroller interface board, the design proposes and implementes a dual-processor architecture color display system which uses 485/CAN bus transmission technology, Linux application programming and Qt5 user interface programming. Compared with traditional display system, the color display system interface is more beautiful, more feature-rich and has a low cost, high stability and other characteristics. The actual test results show that this elevator color display system is feasible and effective.
elevator; dual-processor architecture; Qt5; Raspberry Pi
省部級—四川省教育廳項目(11ZA113)。
TN91
A
迪娜
2013-12-20)