王會芹
(中國傳媒大學,北京 100024)
舞臺燈光是演出場景中一個重要的環節。在舞臺演出中,根據演出節目內容和劇情的發展,實時改變舞臺燈的顏色和亮度,可以烘托演出效果,渲染舞臺氣氛[1]。舞臺燈光的變化離不開調光系統,因為LED舞臺燈調光信號的傳輸需要專門的傳輸協議如DMX512協議、ACN協議(一種網絡燈光控制協議)等,所以LED舞臺燈有專門的調光系統[2]。設計人員根據演出內容預先設計燈光效果,然后在演出中根據方案由調光系統控制舞臺燈的變化,最終實現設計效果。
隨著欣賞水平的日益提高,人們對演出節目的感染力和節目互動性有了更高的要求。許多表演場合例如音樂會、戲曲、服裝走秀等,經常需要舞臺背景變化與表演者之間進行實時互動,以增強和激發參與者的共鳴,使演出更具吸引力[3]。對于目前常用的調光系統而言,要滿足交互性,要求設計的燈光效果要實時地、準確地跟蹤節目內容的變化,這樣會大大增加設計難度。為此,本文提出了由表演者手勢進行控制的LED舞臺燈調光系統,該系統不需要預先設計燈光效果,直接利用表演者的不同手勢來控制現場的舞臺燈光效果,使舞臺燈的亮度隨著演員的手勢的變化而變化,從而滿足交互性要求[4,5]。
整個調光系統由手勢動作捕捉與識別和信號處理與轉換兩大部分構成,具體結構如圖1所示。
圖1 LED舞臺燈調光系統結構框圖
當表演者的手勢發生變換時,動作捕捉與識別部分自動捕捉手勢信號并進行識別,然后將識別結果送入下一單元進行信號處理。信號處理與轉換部分根據調光方案將采集到的動作信息轉換成不同的調光信號,再按照DMX512協議格式對這些調光數據進行轉換,將其變成LED舞臺燈能夠識別的數據形式,最后送入LED舞臺燈。這樣實現了燈光狀態隨著手部動作的變化而交互式變化。
整個調光系統的設計主要可以分為各種手勢的識別、手勢與調光效果的轉換及DMX512協議實現三部分。
目前常用的手勢識別方案主要分為接觸式和非接觸式兩大類,其中第一種主要通過手掌和各種傳感器相連接,通過檢測手部的變化,如彎曲度、移動的加速度等來識別各種手勢;第二種方法主要是基于視覺、超聲波、紅外線等方式進行識別。基于視覺的手勢識別方式通過對采集的手部圖像進行算法處理,得到識別結果,這種方法計算量大,實現成本高。超聲波手勢識別技術識別速度快、范圍廣,但是受雜波影響大,出錯率較高。紅外線方式的手勢識別方法,識別速度快、精度較高、價格適中,但是識別范圍有限。綜合考慮本次設計采用基于紅外線檢測方式的手勢傳感器PAJ7620[6,7]。
2.1.1 PAJ7620傳感器工作原理
PAJ7620是原相科技公司推出的光學手勢傳感器,在其四周各放置一個紅外發光二極管,中心位置為紅外接收器。這樣只要有手勢進入檢測區,紅外二極管發出的光信號就會傳送到接收器,經過轉換變成電信號送入指定寄存器。電信號的大小由手掌和發光二極管的距離決定,離二極管越近,光信號越強,輸出電信號值越大,反之電信號越小。通過這種結構,PAJ7620可以識別上移、下移、左移、右移、旋轉和接近等九種手勢[8]。
2.1.2 PAJ7620工作過程
PAJ7620手勢識別過程主要分別初始化、手勢信號采集和識別三個主要部分,具體實現過程如圖2所示。
圖2 PAJ 7620手勢識別流程圖
當傳感器上電后,首先進行初始化處理。包括傳感器的初始化,即等待700 us,保證傳感器達到穩定狀態;I2C總線的初始化,手勢信息一般通過訪問I2C總線與后續單元進行數據交換,所以需要在初始化階段激活該總線;手勢寄存器初始化,對各種手勢標志寄存器設置初始值。
PAJ7620的工作方式主要是指手勢采集方式。手勢采集方式包括兩種,一種是中斷方式,一種是定時方式。采用中斷方式,只要紅外接收器感應到新的手勢動作,系統就訪問PAJ7620相應寄存器采集該手勢信號,進入手勢識別環節。在沒有新手勢信號出現時,傳感器則進行低功耗模式。而定時方式需要首先設置定時時間,到達設定時間后直接讀取PAJ7620相應寄存器的信號,若信號超過閾值時說明有手勢信號,進入下一環節;反之為無效信號,系統直接進入低功耗模式,等待下一個定時時間的到來。
采集到有效的手勢信號后,根據手勢的開始和結束點檢測信號,判斷手勢的類型并將識別結果保存在對應寄存器,供后續環節調用。
PAJ7620手勢識別結果通過I2C協議送入Arduino單片機進行信號處理與轉換。信號與轉換主要包括手勢信號與調光信號的轉換和調光信號的DMX512格式的變換。
2.2.1 調光信號的轉換
手勢和LED的狀態關系如圖3所示。手掌向右移動時,LED舞臺燈打開,向左移動時舞臺燈關閉。打開時舞臺燈亮度由該時刻的手勢亮度值E決定,見式(1)。
(1)
式中,L是不同時刻對手勢的紅外照度,K是光學系統的透過率,D是成像系統的通光口徑,f是成像系統的焦距。手掌和PAJ 7620的之間距離不同,手勢亮度值不同。在有效的檢測區域,將最遠到最近距離對應的輸出信號進行量化,則得到了0~255之間的亮度值[8]。
圖3 手勢與LED燈光效果的對應關系
手掌不斷向上移動,則LED燈的亮度不斷增加,直到達最大亮度值255;反之,當手掌向下移動,則燈的亮度不斷減小,從而將手勢信號轉換為調光信號。
2.2.2 DMX512協議
DMX512燈光控制數據傳輸協議是美國舞臺燈光協會(USITT)于1990年發布的燈光控制器與燈具設備進行數據傳輸的開放工業標準。如今舞臺燈光系統越來越復雜,部分前端的控制可能應用了更新、更復雜的網絡控制協議,但是在末端對具體燈具的控制仍然大量使用DMX512協議。
DMX512協議將一組燈光控制數據按照一定格式打包成多個數據包,再用串行的方式在控制線路上發送。典型的傳輸速率為250 kbps,對應每個比特位的持續時間為44 us[9]。
一個完整的DMX512數據包包括一個Break信號(中斷位),寬度至少為88bit的低電平信號,對應于一次DMX512數據發送結束后的復位階段;一個MAB(Mark After Break)信號,寬度不小于4bit的高電平信號,標志新的DMX512信號發送的開始,用于分離每個數據幀的第一位開始位的低電平和Break信號的低電平;一幀StartCode信號,DMX512信號的第0幀,8位數據均為0;512個數據幀和一個MTBP(Mark Time Between Packet)信號,高電平信號,標志著一輪DMX512信號發送的結束。
DMX512每個數據幀對應一個通道,用于控制燈光參數(如亮度、顏色、角度等)。數據幀共有11bit構成,分別為1起始位、8個數據位和2個停止位。其中,起始位固定為低電平“0”,兩個停止位固定為高電平“1”;8個數據位從 00000000~11111111,共256級,當用于控制燈具亮度時,可產生共256個調光灰度。
DMX512數據包的傳輸要符合一定的格式和時序要求。如要包含1個至少88 us的低電平輸出起始標志(Break)、起始碼幀、512個數據幀和最后的數據包結束標志(高電平)。只有滿足DMX512數據包的時序要求,才能實現調光器和舞臺燈之間的數據傳輸。具體的信號時序如圖4所示。
圖4 DMX512協議時序圖
在第一個亮度信號發送前,先發送一個復位信號即Break信號(圖4中1),之后是持續時間在8 us到1 s之間的高電平的標記信號MAB(2所示),用于分隔復位信號和后面的8位空代碼-開始代碼;隨后的數據就是多路調光信號,每一路對一個字段(3所示),字段中4為字段起始位,5、6為字段停止位,其余8位為調光數據,對應0~255之間的信號變化;7為兩個字段間的允許的高電平間隔時間;8為復位前標記信號MTBP,持續時間在0~1 s之間。
采用Arduino單片機作為主控模塊,以PAJ7620傳感器為手勢檢測元件,搭建基于手勢的舞臺燈調光系統,系統的電路如圖5所示。手勢傳感器通過I2C接口和Arduino單片機進行通信,先由主控系統發送指令,手勢傳感器進行初始化;進入工作狀態后,利用定時方式采集手勢信號。當識別到有效數據后,通過對應引腳發送到主控系統,完成手勢動作信息的讀取和識別,并根據不同的識別結果驅動LED燈的變化。
圖5 調光系統工作電路
用LED燈代替舞臺燈,測試上述調光系統。手勢不同時,對應的燈光變化如圖6所示。手掌右移,LED燈亮,如圖6(a)所示,這時的亮度值大小等于手勢傳感器的對應手勢亮度值;燈開后,手掌向上移動,亮度值增加,LED燈變亮。設每次移動亮度變化量為50,手掌連續向上2次后,LED燈亮度達到最大,如圖6(c)所示;反之,手掌向下移動,LED燈變暗。當手掌連續向下移動4次后,LED燈的亮度變化如圖6(d)所示;手掌左移,LED燈直接熄滅,如圖6(b)所示,這時手掌上移和下移動作均無效,直至手掌右移重新打開LED燈。測試結果表明,利用手勢變化可以實現對LED燈光亮度的調節。
本文以手勢變化作為調光信號,設計了一種基于手勢的LED舞臺燈調光系統,并從手勢信號的采集和調光信號的轉換與處理兩個方面對該調光系統進行了詳細闡述。與常用的調光系統相比,該系統不需要提前設計調光方案,直接以手勢傳感器代替調光臺,實現了手部動作和燈光亮度的交互式變化,是現有調光方式的一種有效補充。實驗結果驗證了這種調光系統的可行性。
圖6 基于手勢的LED燈調光效果