任慧,李舒?zhèn)?,劉?/p>
(1. 中國傳媒大學 信息與通信工程學院,北京100024;2.視聽技術與智能控制系統(tǒng)文化部重點實驗室,北京100024;3.現代演藝技術北京市重點實驗室,北京100024)
舞臺燈光網絡控制系統(tǒng)是現代演藝技術的研究重點之一。與傳統(tǒng)的舞臺燈光設計不同,現代舞臺燈光設計的特點是燈具數量大、種類多、功能多變。劇場演出中為了方便燈光設計師操作與控制舞臺燈光,需要將這些設備容納到一個系統(tǒng)中協同控制。DMX512作為早期的燈光控制協議有兩個不可避免的缺陷,一是不能有效地進行雙向數據傳輸,無法實時反饋下位機的工作狀態(tài);二是僅僅實現了燈光控制系統(tǒng)的數字化,無法將燈光控制回路網絡化[1]。但是,DMX512協議仍然占據著舞臺燈光調控的重要地位,世界上各大舞臺燈光設備生產廠商一直在使用該協議,現存的舞臺燈光設備都采用DMX512協議[2]。因此,本文研究設計了基于Art-Net協議的舞臺燈光網絡控制系統(tǒng)。該系統(tǒng)以 STM32F407 芯片為核心控制器,移植了具有多任務輪轉、實時性等特點的嵌入式系統(tǒng)μC/OSIII,采用STemWIN圖形軟件設計了友好簡潔的人機交互界面,采用Art-Net協議作為燈光網絡通訊協議,實現了燈光系統(tǒng)的網絡與智能化控制,該系統(tǒng)的研究功能齊全、性能可靠、操作便捷,具有很強的實用價值和應用前景。
硬件整體設計方案如圖1所示,系統(tǒng)硬件主要由主控制器模塊、通信模塊和觸摸屏輸入模塊,觸摸屏實時輸入燈光控制信號,SD卡可以將儲存的燈光控制信號數據輸入到控制系統(tǒng)中,USB接口可以實現與PC聯機工作。主控制器MCU將輸入信號封裝為Art-Net協議標準數據包,再進行UDP打包,數據信息可以通過以太網傳輸到下位機。下位機反饋回來的數據包先進行UDP解包,在通過Art-Net協議解析信息數據顯示到屏幕中。
通信模塊采用RMII接口和外部PHY芯片連接實現網絡通信功能。STM32F407芯片本身內部集成以太網模塊,該模塊包括專用的DMA控制器MAC802.3控制器,支持介質獨立接口(MII)和簡化介質獨立接口(RMII),并自帶了一個用于外部PHY通信的SMI接口,通過一組配置寄存器可以為MAC控制器和DMA控制器選擇所需要的模式和功能[3]。但是這個模塊必須外接物理收發(fā)接口才可以完成以太網通信,通過MII/RMII接口與STM32F407芯片內部MAC連接。本系統(tǒng)采用了LAN8720A芯片作為物理外部接口,該芯片是低功耗的10/100Mbps以太網PHY層芯片,I/O引腳電壓符合IEEE802.3-2005標準,支持通過RMII接口與以太網MAC層通信,內置10-BASE-T/100BASE-TX全雙工傳輸模塊,支持10 Mbps 和100Mbps。采用RMII接口和外部PHY芯片連接視線網絡通信功能。如圖2為通信模塊的設計結構。
圖1 系統(tǒng)總體硬件設計框圖
圖2 通信模塊設計結構圖
系統(tǒng)顯示控制模塊為真彩液晶顯示器(TFTLCD),它在液晶顯示屏的每一個象素上都設置有一個薄膜晶體管(TFT),可有效地克服液晶屏掃描時沒有選通的干擾,同時自帶觸摸屏,可以用來作為控制輸入。觸摸屏的驅動模塊選用ILI9341芯片為控制器,MUC通過SPI與ILI9341進行通信,從而訪問它的地址計數器(AC)、控制寄存器(CR)、GRAM及一個LED控制器。ILI9341使用8080通信時序工作,ILI9341的8080接口有5條控制信號線:寫使能信號線WRX,讀使能信號線RDX,復位信號線RESX,片選信號線CSX,區(qū)分數據和命令信號線D/CX,除了控制信號,還有數據信號線[4]。
本設計操作系統(tǒng)采用支持任意數目的任務,擁有時間片輪轉調度的運行機制,允許多個任務有相同的優(yōu)先級的實時操作系統(tǒng)μC/OSIII。當多個優(yōu)先級相同的任務同時就緒并且所屬優(yōu)先級高于其他所有就緒任務時,μC/OS-Ⅲ輪轉調度這些任務,讓每個任務運行一段用戶指定的時間長度。在某一時刻μC/OSIII調取一個任務進入CPU運行,剩下沒有被調用的任務就會進入其他狀態(tài),μC/OSIII中的任務一共有5個狀態(tài),列表中的任務會在這5中狀態(tài)進行轉換,轉換關系如圖3。
圖3 μC/OSIII任務轉換狀態(tài)關系圖
表1列出了系統(tǒng)中建立的任務及其優(yōu)先級、堆棧大小、任務目的等。μC/OSIII可以事前編寫好硬件驅動函數和應用軟件函數,在需要的時候加入到任務隊列中,讓操作系統(tǒng)進行任務切換,實現實時操作。
表1 μC/OSIII中的任務及其參數
μC/OSIII開始任務控制塊函數:
OS_CRITICAL_ENTER();
OSTaskCreate((OS_TCB *)&StartTaskTCB,
(CPU_CHAR*)"start task",
(OS_TASK_PTR)start_task,
(void*)0,
(OS_PRIO)START_TASK_PRIO,
(CPU_STK*)&START_TASK_STK[0],
(CPU_STK_SIZE)START_STK_SIZE/10,
(CPU_STK_SIZE)START_STK_SIZE,
(OS_MSG_QTY)0,
(OS_TICK)0,
(void*)0,
(OS_OPT)OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR *)&err);
OS_CRITICAL_EXIT();
LwIP實現的重點是在保持 TCP 協議主要功能的基礎上減少對RAM的占用,使得它特別適合在低端嵌入式系統(tǒng)中使用[5]。LwIP 應用系統(tǒng)包括這樣的三個進程:首先啟動的是上層應用程序進程,然后是 LwIP 協議棧進程,最后是底層硬件數據包接收發(fā)送進程[6]。如圖4為LwIP 在數據收發(fā)上的實現方法。
UDP發(fā)送數據函數:
if((udp_flag& LWIP_SEND_DATA)== LWIP_SEND_DATA)
{
sentbuf = netbuf_new();
netbuf_alloc(sentbuf,strlen((char*)udp_data_sendbuf))
memcpy(sentbuf->p->payload,(void*)udp_data_sendbuf,strlen((char*)udp_data_sendbuf));
err =(OS_ERR)netconn_send(udpconn,sentbuf);
udp_flag&= ~LWIP_SEND_DATA;
netbuf_delete(sentbuf);
}
UDP接收數據函數:
netconn_recv(udpconn,&recvbuf);
if(recvbuf!= NULL)
{
OS_CRITICAL_ENTER();
memset(udp_tata_recvbuf,0,UDP_DATA_RX_BUFSIZE);
for(q=recvbuf->p;q!=NULL;q=q->next)
{
data_len += q->len;
if(data_len> UDP_DATA_RX_BUFSIZE)break;
}
OS_CRITICAL_EXIT();
圖 4 LwIP在數據收發(fā)上的實現方法
基于Art-Net協議的控制系統(tǒng),最主要的就是Art-Net數據包的生成和傳輸??刂婆_Server首先以廣播的方式向局域網內發(fā)送Art-poll輪詢幀,局域網內的各個Node節(jié)點收到輪詢幀后,向控制臺發(fā)送Art-pollReply應答幀,控制臺收到Art-pollReply后,根據Art-pollReply應答幀里面的信息獲取整個系統(tǒng)中有多少個Node節(jié)點和每個Node節(jié)點的IP地址。配置好IP地址后,就可以對節(jié)點發(fā)送包含DMX512數據的ArtDMX數據包。表2為Art-poll數據包列表,表3為ArtDMX數據包列表。
表2 Art-poll數據包
表3 ArtDMX數據包
本系統(tǒng)人機交互界面設計移植應用了STem-Win。界面設計主要使用ST官方的圖形用戶界面庫中的GUIBulder進行設計。同時,使用移植好后的STemWin圖形庫可以直接調用包含的API函數設計界面,可以將圖像轉換成像素矩陣格式并保存為C語言代碼[7]。字體顯示采用了讀取在外部SPI FLASH儲存漢字字庫的方法。emWin圖形界面軟件提供進度條、按鈕和復選框的相關例程,通過調用API函數即可實現各個控件的功能。為了方便在主界面繪制旋轉指針動態(tài)效果,將界面分為多個窗口設計,利用窗口管理器可較方便地分別對其管理,實現各個功能界面的轉換。軟件程序流程圖如圖5所示。
圖5 界面繪制流程圖
本文研究并設計了基于Art-Net協議的舞臺燈光網絡控制系統(tǒng)。該系統(tǒng)以STM32控制器為核心,采用Art-Net燈光控制協議,實現了燈光控制的網絡化和智能化。經過實際運行測試,結果表明,該系統(tǒng)有功能齊全、操作便捷、性能可靠、實用性強等特點??梢詽M足現代舞臺燈光控制的需求,具有較大的實用價值和應用前景。