劉正翔
(福州職業技術學院,福建 福州 350108)
隨著社會科技的發展,信息化生活對上網的需求越來越高,無線接入的用戶數量也急劇增加,無線通信的頻譜資源越來越擁擠??梢姽馔ㄐ偶夹g解決了諸如此類問題。早在2000年,日本已提出可見光通信技術,并仿真了其可行性。2009年,日本科學家在中川實驗室提出了一種可見光通信系統,它基于CSMA/CD的全雙工多址接入的,可實現100 Mbps的傳輸速率[1]。之后歐美國家在政府的支持下,也在可見光通信領域取得很多科研成果。國內的復旦大學、北京郵電大學、解放軍信息工程大學等高校科研機構也對可見光通信系統進行了深入研究,復旦大學在實驗室使用1 W的LED燈泡,實現了4臺電腦同時高速上網[2]。
除了傳輸速度快,可見光通信技術的安全性、綠色健康,以及在隧道、高速公路、交通阻塞方面的應用也引起了人們的興趣。
STM32系列CPU是ST公司生產的基于ARM Cortex?-M3內核的高性能、低成本、低功耗的CPU,2.0~3.6 V的電源供電。由于其主頻可達到72 MHz,片上集成32-512 KB的Flash,及6-64 KB的SRAM存儲器。片內硬件資源豐富,最多可達112個GPIO口,11個定時器,13個通信接口,包含IIC、USART、SPI、IIS、CAN、USB、SDIO等接口,而價格卻與普通單片機差不多,因此得到廣泛的應用。
選擇合適的無線通信系統調制技術,對提高系統傳輸速率有重要意義。可見光通信系統的調制技術一般有開關鍵控OOK,脈沖位置調制PPM,正交頻分復用調制OFDM,單載波頻域均衡SC-FDE,無載波幅度相位調制CAP等。其較為簡單高效的調制技術是脈沖位置調制PPM方式。它是將脈沖的相對位置來傳輸信息的調制方式。OFDM調制方式是把信道劃分成很多相互正交的子信道,將原本高速傳輸的信息流,轉變成相對低速的多個并行的子數據流,并分別將其調制到各個相互正交的子信道中傳輸,接收端再用相關技術區分開來,其很大的優勢是可減少相互串擾。而OOK調制技術則廣泛地與NRZ不歸零編碼結合來調制,是一種極為有效的調制方式。下面重點介紹OOK調制技術原理[4]。設二進制振幅鍵控2ASK信號表達式為:
e2ASK(t)=s(t)cos(ωct+θ)

eOOK(t)=Acos(ωct+θ)
OOK信號的產生有兩種方法,分別是模擬調制法和鍵控法,如圖1所示。

圖1 2ASK/OOK信號調制器原理圖
本文采用OOK的數字鍵控法,即使用開關電路通斷來控制LED發光強度變化,它將可見光信號轉成固定頻率的載波(正弦波形),可以很好地克服發射端信號失真的問題,接收端通過相干解調與非相干解調,經帶通濾波器、低通濾波器、抽樣判決等過程來還原信號[6]。
根據OOK調制技術工作原理得知,OOK調制技術的實現,不管是模擬相乘法還是數字鍵控法,其本質都是載波與輸入信源相乘(模擬開關也可認為是用“0”和“1”相乘的一種方式)。因此,要調制OOK信號就需要先得到兩個輸入信號,分別是s(t)和cosωct,即信號源與載波的產生。然后可通過模擬CD4066芯片,輸出為調制后的OOK信號[5]。值得關注的是,輸出的OOK調制信號并不能直接用于驅動白光LED來控制產生光強度信號,還需考慮滿足LED調制特性。
為了產生能隨時更改的信源信號,本系統使用計算機串口調試軟件發出要傳輸的數據(信源),通過串口發送到STM32系列CPU,再編程將二進制信號通過STM32引腳輸出到模擬開關CD4066,輸出的信號經LED驅動電路放大后驅動LED發送光信號,從而實現信號調制過程。信號源產生的過程如圖2所示。

圖2 使用STM32編程信號源進行調制
本系統采用的STM32系列CPU為STM32F103C8T6。計算機通過串口通信發送信源數據到該CPU,即在計算機上安裝串口調試軟件,設置波特率9 600,每次傳送8bit數據,1個停止位,沒有校驗位。輸入要發送的數據“VLCLiFi”7個字母,點擊“發送”,即可被STM32的串口接收到,如圖3所示。

圖3 串口調試軟件發送6個字符界面
STM32串口USART編程接收數據前,定義一個32字節的C語言數組RX_BUF[32]用來保存接收到的數據。程序運行時,打開USART串口中斷等待接收數據。當接收到“VLCLiFi”字符串后,將它保存在數組unsigned char RX_BUF[32]中。由于一個字符剛好占1個字節,因此可通過以下程序段,按字節將字符轉成二進制bit信號,從STM32引腳串行發送出去[3]。
for(i=0;i<8;i++)
{
flag=temp&0x80;
if(flag) LED=1;
else LED=0;
Delay_us(10); //碼元持續時間
temp=temp<<1;
}
由于STM32在主頻72 MHz時執行一個指令的時間約為70 ns。理論上,該段程序輸出的方波頻率可達1 MHz以上,這意味著碼元的持續時間可達到1 μs,而后續3.2節產生的載波頻率500 kHz,即周期2 μs。因此要調整STM32的IO引腳上輸出方波的頻率要小于500 kHz(碼元持續時間大于2 μs),這樣經過模擬開關后,碼元為“1”時,才可能得到一個完整的正弦波。此處選擇10 μs的碼元持續時間。其中temp是數組RX_BUF[32]的一個字節元素。單個字節8位循環順序發送完畢,接著發送下一個字節元素,直到6個字符都發送完為止。
本系統需要一個正弦波作為載波,產生500 kHz的正弦波(即周期為2 μs)。采用LC正弦振蕩器方式,LC振蕩器的作用是產生頻率為500 kHz、輸出幅度大于1 V的載波。電路圖4所示,L2、C2、C3、C4構成并聯諧振回路,圖中的4個電阻是穩定三極管靜態工作點;其中,R1、R2也是分壓式偏置電阻;C1為基極耦合電容,三極管發射極通過它交流接地。

圖4 OOK調制模塊電路圖
值得注意的是,電路中的三極管Q1選用了高頻三極管 2SC1815,使載波的峰值足夠大。調制信號從STM32的PA2引腳輸出后,輸入開關模擬4066芯片,進而輸出OOK信號,如圖5所示。
仿真實驗表明,STM32的GPIO引腳發出的方波正常,即“VLCLiFi”的二進制信號波形。OOK信號也能在方波為“1”時是正弦波形,方波為低電平“0”時值為0,但略有波紋。而4066芯片雖能正確實現模擬開關功能,但對載波幅度有一定影響。

圖5 OOK調制后的仿真波形圖
由于STM32的電流較小,LED白光的強度變化并不能明顯表現出來,無法達到LED調試要求。為了準確地把OOK調制出來的電信號高低電平有效轉化成白光LED的強度大小,必須滿足LED調制特性。LED調制能力用光功率-電流曲線來表示,該曲線呈線性,且直流偏置線應盡量位于線性部分的中心處時,可以使光調制度變大[3]。此外,也要考慮LED的響應時間,即為LED燈亮、滅的延遲時間,從該特性可得到LED跟隨外部控制信號變化的快慢程度。為了驅動LED燈,對應的驅動電路可采用運算放大器THS3001電路[3],有明顯放大效果。而驅動電路若采用三極管共集電極放大電路[6],既可把OOK信號的電流量放大,又能給LED一個直流偏置(LED芯片的偏置電流一般100 mA以上),使之工作在線性狀態,參考電路[6]如圖6所示。

圖6 驅動LED燈電路圖
本文詳細分析了室內可見光通信系統中的OOK(2ASK)調制技術,并通過計算機串口調試軟件發送即將傳輸的數據到STM32開發板,經過程序處理,將要發送的信息轉成二進制代碼,從GPIO引腳串行發送出去。為了使用模擬開關進行調制,設計對應振蕩電路,產生500 kHz的正弦波作為載波,與STM32產生的方波共同送入4066芯片進行模擬開關運算,輸出OOK調制信號。考慮到LED的調制特性,需要專門電路驅動LED,滿足光功率-電流曲線近似線性時,才能獲取更好的電信號控制LED光強度,有效發送信息至接收端。