譚仕釗 陸光照 劉唐勇 韋 泉 韋 標
目前,廣西壯族自治區廣播電視無線發射臺站(以下簡稱“臺站”)的絕大多數設備均已接入遠程監控系統,設備的運行狀態出現異常時可以通過復位等方式解決。但維護人員在對臺站的日常維護過程中發現,部分設備故障只能由維護人員前往臺站,在設備面板上手動操作解決。出現此類故障的原因往往是參數異常,只需調整參數即可恢復正常,但無法通過現有方式進行遠程參數調整。而維護人員則需花費數小時奔赴臺站進行手動調整,效率低下且費時費力。因此,設計一種易用、安全的遠程控制系統以實現對部分設備的調整操作是十分有必要的。本文以三級臺站所使用的德芯300W數字電視發射機系統(型號:DUT-8322)為例,設計一個可視化的基于樹莓派的WEB控制系統。
德芯300W數字電視發射機系統由監控單元、功率放大器、前級推動單元、激勵器和供電模塊五部分組成。前級推動單元的功能是通過調節激勵器輸入的信號電平值衰減來控制整機輸出功率,將其控制在300W左右進行播出。由于環境溫度、天氣等外部因素的變化,偶爾會出現前級推動單元設定的衰減值不變,但發射機卻無法正常播出的現象,具體表現為前級推動單元面板亮紅燈,提示激勵器功率過高或過低。針對此類故障,復位發射機是無效的,但只需在前級推動單元的面板上調整衰減數值,根據告警提示增大或減小衰減值即可恢復正常播出。
在硬件設計方面,如需實現面板上的按鈕點擊操作,需改造面板內部控制板,于按鈕兩側引腳引出導線接入繼電器,通過繼電器的分斷與閉合、兩次動作的間隔時間來模擬按鈕點擊動作。同時,為了更方便地實現統一控制,應當選用支持高級語言編程功能、網絡接入功能、繼電器控制功能的開發板。本系統選用樹莓派開發板來實現,該開發板具有功耗低、體積小、拓展接口齊全、使用Linux系統方便編程、帶有GPIO引腳等諸多優點。同時,為了讓操作者更直觀地觀察到機器面板上各項參數及狀態指示燈的變化,避免可能的誤操作導致停播事故,應使用一個USB攝像頭對面板進行實時視頻監測。同時,得益于人工機器視覺等技術的日漸發展,也可以通過軟件編程對攝像頭采集的畫面進行分析比較,得到設備指示燈的狀態,并將其反饋表現于系統操作面板上。
在軟件設計方面,由于各個臺站的主控電腦的軟件環境、硬件配置不一致,如采用傳統的C/S模式,編寫的應用程序可能存在兼容性問題,哪怕采用跨平臺的開發語言也可能因為系統環境變量配置、開發語言版本等產生各種異常。為了實現高度兼容性,本系統采用B/S方式編程。B/S架構的全稱為Browser/Server,即瀏覽器/服務器結構。Browser指的是Web瀏覽器,極少數事務邏輯在前端實現,但主要事務邏輯在服務器端實現。Browser客戶端、WebApp服務器端和DB端構成所謂的三層架構。B/S架構的系統無需特別安裝,只需通過瀏覽器打開相應頁面即可使用。因涉及跨平臺WEB編程,計劃使用Python作為開發語言。Python具有語法簡潔、開源跨平臺、自帶豐富且強大的庫、開發效率高等優點,在開發過程中可以節約大量時間成本。
本系統的軟硬件環境如下:
CPU:Broadcom ARM Corte×A53×4 Cores;
RAM:1GB LPDDR2 SDRAM;
LAN:10/100/1000Mbps自適應;
操作系統:基于32位Linux的Debian 10;
Python版本:Python 2.7及 Python 3.7。
系統框架如圖1所示。

圖1 系統框架圖
為了便于操作者理解與使用,本系統的前端布局應盡可能還原實際操作體驗,因此在編寫前端網頁時直接繪制與實際機器面板相同的網頁背景與按鈕,并在下方增加圖像預覽區,用于展示USB攝像頭所拍攝的畫面。具體如圖2所示。

圖2 網頁前端設計布局
硬件設計方面,計劃采用帶有GPIO接口的8路5V繼電器控制板。該控制板體積小巧,無需獨立供電,能夠方便地與樹莓派開發板連接,從開發板的GPIO接口獲得電源供給和控制信號。如圖3所示。

圖3 8路5V繼電器控制板
GPIO(General-purpose input/output),又稱為通用型之輸入輸出,用于電信號在電路中的輸入輸出,可以通過程序控制電路部件。該控制板主要通過右側的GPIO接口連接樹莓派開發板,并通過開發板輸出高低電平來對繼電器進行控制。設計原理為繼電器的常開端通過導線連接目標按鈕的兩端,當繼電器動作時,常開端閉合,導通回路,經過約0.5秒后恢復為常開狀態,即可認為產生了一次有效的點擊動作。在對開發板進行編程時,只需控制分斷閉合的間隔時間即可。
樹莓派開發板擁有4個板載USB接口,可以方便地接入USB攝像頭并直接使用,只需該攝像頭符合UVC協議(USB Video Class)即可。目前,市面上絕大多數免驅動USB攝像頭采用該協議。同時,該開發板亦支持CSI接口攝像頭,該接口是基于MIPI的一種傳輸方式,直接使用GPU進行圖形處理,相對于使用CPU處理的UVC協議USB連接方式,CSI方式的系統資源占用率較低,但USB連接方式更為靈活且兼容性較好。如有特殊需求也可以采用CSI接口的攝像頭。本系統采用海康威視DS-E12a攝像頭,使用USB接口連接樹莓派開發板。
Python作為一種流行的開發語言,其一大特點便是擁有強大的標準庫及第三方庫,從這些庫里可以找到實現自己所需功能的模塊且能夠快捷方便地進行調用,無需從零開發,極大程度地縮減了開發成本。得益于Python豐富的庫,本系統能輕松、高效地實現上文所提到的功能。
1.軟件流程圖
該系統軟件流程如圖4所示。

圖4 系統軟件流程圖
2.WEB框架選擇
WEB框架選用輕量的Flask微框架。該框架是使用Python基于Werkzeug和Jinja2開發的微型框架,具有高靈活性、易于擴展、輕量化、易于部署等優點,其功能對于本系統這類小型WEB開發項目來說綽綽有余。
3.網頁設計
網頁采用HTML(超文本標記語言)編寫,采用JavaScrip作為腳本語言,并采用CSS樣式表外置的方式以方便后期維護。JavaScrip是一種高級的、解釋型的編程語言,主要作為客戶端腳本語言在用戶的瀏覽器上運行,不需要服務器的支持。通過JavaScrip可以方便地把表單數據提交到服務器端,在服務器端監聽到數據后即可進行對應的操作。
4.部分功能實現過程及偽代碼、代碼
通過調用Python庫中的RPi.GPIO模塊對Raspberry Pi開發板的GPIO引腳進行控制操作,Flask模塊實現WEB服務的前端搭建及后端轉發,Opencv模塊實現攝像頭的調用、編碼及后期拓展功能。
(1)網頁button按鈕通過JavaScrip腳本提交表單數據到后端
偽代碼:

代碼:

該JavaScrip代碼塊實現的功能為將網頁內不同按鈕的點擊動作與其定義的狀態提交至后臺監聽服務。
(2)調用RPi.GPIO模塊控制開發板GPIO接口
偽代碼:

代碼:

該Python代碼塊的功能為將指定地址的GPIO插針設置為指定高電平,繼電器接收到高電平信號后即開始動作。
(3)Flask接收前端數據
偽代碼:

代碼:

該Python代碼塊為Flask接收JavaScrip所提交的表單數據,并將變量值設置為所接收到的值。
(4)通過Opencv模塊調用攝像頭并輸出
偽代碼:

代碼:

該Python代碼塊實現的功能為調用Opencv模塊采集攝像頭圖像,并將視頻流轉換為網頁使用的圖像格式輸出至前端頁面,避免部分平臺無法解碼視頻流的問題。
經過在某三級臺站進行實機測試后,該系統可以正常運行并對該臺站內數字電視發射機的前級推動單元進行正常控制。首先,需要配置開發板的固定IP地址以便于臺站主控電腦進行訪問。其次,開發板IP地址的選擇不能與臺站設備的IP地址存在沖突。在配置完畢后,使用網線將開發板接入臺站華為路由交換一體機,并將控制網頁快捷方式發送到電腦桌面即可。該型號數字電視發射機前級推動單元模塊的后面板有冗余開口,延伸控制線可以從開口引出并接入8路繼電器控制板。圖像采集方面,需要將攝像頭固定于推動單元前面板正前方一定距離處,確保其畫面能看到LCD顯示屏、狀態指示燈等。最后,在臺站主控電腦上使用Chrome內核的瀏覽器(應避免使用過時的IE內核瀏覽器)打開對應的控制頁面,即可通過網頁對該數字電視發射機系統的前級推動單元進行控制,且可實時觀察面板狀態和參數,避免盲目調整。系統測試時運行效果如圖5所示。

圖5 系統運行效果
該系統經過長時間的臺站試運行后,控制功能正常有效,未發現異常狀況,極大地減少了維護人員的出勤次數,同時在出現相關故障時的響應時間、處理速度也更短、更快。隨著時代的發展和進步,計算機網絡技術與我們的工作生活變得愈加密不可分。我們作為新時代的廣電人,更應該將新技術、新方法融入日常維護工作中,提高工作效率,通過技術創新確保安全播出工作的順利進行。