《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM和MATLAB GUI的太陽圖像數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于ARM和MATLAB GUI的太陽圖像數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
2017年微型機(jī)與應(yīng)用第3期
俞強(qiáng)1,,劉卿卿1,2,,董龍3
1.南京信息工程大學(xué) 信息與控制學(xué)院,,江蘇 南京 2100442. 南京信息工程大學(xué) 大氣環(huán)境與裝備技術(shù) 協(xié)同創(chuàng)新中心,,江蘇 南京210044;3. 南京信息工程大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,,江蘇 南京 210044
摘要: 對太陽圖像數(shù)據(jù)進(jìn)行同步采集與分析,,可以為輻射測量以及各種需要進(jìn)行復(fù)雜圖像算法處理的嵌入式系統(tǒng)提供重要參考。設(shè)計(jì)了一種能夠?qū)μ枅D像進(jìn)行同步數(shù)據(jù)采集的系統(tǒng),,該系統(tǒng)主要包括圖像傳感器模塊,、數(shù)據(jù)傳輸與存儲模塊、上位機(jī)軟件設(shè)計(jì)等,。利用傳感器實(shí)現(xiàn)了對太陽圖像的采集,,通過ARM串口控制數(shù)據(jù)的讀寫,并利用MATLAB設(shè)計(jì)了上位機(jī)軟件,,完成了對采集數(shù)據(jù)的計(jì)算與管理,。
Abstract:
Key words :

  俞強(qiáng)1,,劉卿卿1,2,,董龍3

 ?。?.南京信息工程大學(xué) 信息與控制學(xué)院,江蘇 南京 210044,;2. 南京信息工程大學(xué) 大氣環(huán)境與裝備技術(shù)

協(xié)同創(chuàng)新中心,,江蘇 南京210044;3. 南京信息工程大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,,江蘇 南京 210044)

       摘要:對太陽圖像數(shù)據(jù)進(jìn)行同步采集與分析,,可以為輻射測量以及各種需要進(jìn)行復(fù)雜圖像算法處理的嵌入式系統(tǒng)提供重要參考。設(shè)計(jì)了一種能夠?qū)μ枅D像進(jìn)行同步數(shù)據(jù)采集的系統(tǒng),,該系統(tǒng)主要包括圖像傳感器模塊,、數(shù)據(jù)傳輸與存儲模塊、上位機(jī)軟件設(shè)計(jì)等,。利用傳感器實(shí)現(xiàn)了對太陽圖像的采集,,通過ARM串口控制數(shù)據(jù)的讀寫,并利用MATLAB設(shè)計(jì)了上位機(jī)軟件,,完成了對采集數(shù)據(jù)的計(jì)算與管理,。

  關(guān)鍵詞:ARM;太陽圖像,;數(shù)據(jù)采集,;MATLAB

  中圖分類號:TP391文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.03.021

  引用格式:俞強(qiáng),,劉卿卿,,董龍.基于ARM和MATLAB GUI的太陽圖像數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(3):71-74.

0引言

  太陽輻射是自然界中各物理過程的重要能量來源,,也是地球表面與大氣交換熱量的一種形式,,可以作為反映氣候變化的重要信號。而太陽跟蹤裝置是散射輻射測量中的一個(gè)基本部件,,其精確度直接影響散射輻射測量的精度與準(zhǔn)確性,。

  光電式太陽跟蹤方法因其結(jié)構(gòu)簡單,易于實(shí)現(xiàn),,同時(shí)具有較高的跟蹤精度而被廣泛地應(yīng)用于太陽輻射測量以及太陽能應(yīng)用等領(lǐng)域,。但傳統(tǒng)的光電式跟蹤方法雖然瞬時(shí)跟蹤精度較高,但多數(shù)采用直接基于嵌入式平臺的跟蹤方法[13],,受限于單片機(jī)等主控芯片的計(jì)算速度與開發(fā)難度,,往往不能實(shí)時(shí)精確地定位太陽質(zhì)心,易出現(xiàn)累積誤差,,影響太陽跟蹤的穩(wěn)定性與連續(xù)性,。因此,本文提出一種基于ARM和MATLAB GUI的太陽圖像數(shù)據(jù)采集系統(tǒng),以基于ARM Cortex M3的STM32F103為硬件核心,,利用CMOS傳感器對太陽圖像數(shù)據(jù)進(jìn)行采集,,并且提供可視化的上位機(jī)操作界面,對采集到的數(shù)據(jù)進(jìn)行存儲,、分析,、計(jì)算。本系統(tǒng)不僅可以對太陽圖像數(shù)據(jù)進(jìn)行實(shí)時(shí)采集和顯示,,而且便于擴(kuò)展和后續(xù)對太陽質(zhì)心圖像提取算法的研究,,為進(jìn)一步消除太陽跟蹤系統(tǒng)累積誤差以及準(zhǔn)確測定太陽輻射提供基礎(chǔ)。同時(shí),,該系統(tǒng)可以為其他需要實(shí)現(xiàn)較復(fù)雜圖像處理的嵌入式系統(tǒng)提供有利的技術(shù)參考,。

1總體設(shè)計(jì)

001.jpg

  圖像數(shù)據(jù)采集系統(tǒng)總體結(jié)構(gòu)如圖1所示。系統(tǒng)由兩部分組成:一部分是通過PC與STM32串口實(shí)現(xiàn)圖像數(shù)據(jù)的實(shí)時(shí)通信,,另一部分是利用MATLAB GUI完成圖像存儲及圖像處理[4],。

  系統(tǒng)下位機(jī)負(fù)責(zé)圖像數(shù)據(jù)的采集,并通過串行接口實(shí)時(shí)地將圖像數(shù)據(jù)傳送回上位機(jī)準(zhǔn)備進(jìn)行下一步處理,。其中,,圖像傳感器選用OV7725,以實(shí)現(xiàn)圖像的采集與存儲等功能,。攝像頭模塊外接FIFO芯片,,存儲采集的圖像,并在控制信號到來時(shí),,由STM32讀取FIFO中存儲的圖像數(shù)據(jù),。STM32通過CP2102電平轉(zhuǎn)換芯片與PC的USB接圖1系統(tǒng)總體結(jié)構(gòu)圖2攝像頭接口電路口相連,利用芯片將TTL電平與RS232電平轉(zhuǎn)換,,完成數(shù)據(jù)傳輸功能,。

002.jpg

  系統(tǒng)的上位機(jī)部分負(fù)責(zé)圖像數(shù)據(jù)的存儲與處理。通過調(diào)用MATLAB設(shè)備控制箱中的serial類,,完成對串口的設(shè)置,,接著根據(jù)自定義的傳輸協(xié)議在攝像頭與PC串口之間進(jìn)行實(shí)時(shí)通信。上位機(jī)的串口參數(shù),、圖像像素等設(shè)置均可通過采集系統(tǒng)的GUI界面,,根據(jù)下位機(jī)配置進(jìn)行修改。對返回的圖像數(shù)據(jù),,可利用MATLAB的圖像處理工具箱與直接面向矩陣操作的編程特點(diǎn),,方便地進(jìn)行分析與處理,獲取所需信息,。

2硬件設(shè)計(jì)

  2.1攝像頭接口電路

  鑒于CMOS傳感器兼容CMOS技術(shù),,內(nèi)部集成了A/D轉(zhuǎn)換等芯片,,簡化了外圍模塊的設(shè)計(jì),提高了采集的抗噪聲能力,,故本系統(tǒng)采用美國Omni Vision公司的CMOS數(shù)字圖像傳感器OV7725,。其接口電路原理圖如圖2所示。OV7725是一個(gè)能夠提供單片VGA攝像頭和影像處理器的所有功能的圖像傳感器,,實(shí)際有效像素為640×480,,支持整幀輸出、子采樣,、取窗口等模式,,支持8/10位圖像分辨率,支持包括RAW RGB,、RGB(RGB 4:2:2,、RGB565/555/444)以及YCbCr(4:2:2)等多種數(shù)據(jù)格式。其體積小,,工作電壓低,,可以對圖像進(jìn)行伽馬曲線、白平衡,、飽和度,、色度等處理。

  在OV7725后端搭載了FIFO來降低對單片機(jī)的性能依賴(當(dāng)前模塊對處理器的硬件要求僅僅為一個(gè)中斷,,幾個(gè)GPIO管腳即可),,節(jié)省片內(nèi)資源,方便后續(xù)對于單片機(jī)功能的擴(kuò)展,。WEN與HREF作為與非門的輸入端,,而與非門的輸出端口連接到FIFO的WE端口。當(dāng)WEN管腳和HREF管腳都為高電平時(shí),,F(xiàn)IFO的WE端口的電平值才為低電平,。因此,,如果允許圖像數(shù)據(jù)傳入FIFO時(shí),,可以把WEN拉高,當(dāng)攝像頭的HREF為低電平時(shí),,WE的電平值為高電平,,因此,即使PCLK仍在運(yùn)轉(zhuǎn),,也不會傳送數(shù)據(jù)進(jìn)入FIFO,,從而防止采集到無效數(shù)據(jù)[5]。

  2.2串行接口電路

  接口電路采用CP2102芯片設(shè)計(jì)而成,。CP2102集成度高,,內(nèi)置USB2.0全速功能控制器,、USB收發(fā)器、晶體振蕩器,、EEPROM及異步串行數(shù)據(jù)總線(UART),。與其他電平轉(zhuǎn)接電路的工作原理類似,CP2102通過驅(qū)動程序?qū)C的USB口虛擬成COM口以達(dá)到擴(kuò)展的目的,。電路原理如圖3所示,。

003.jpg

3軟件設(shè)計(jì)

  3.1STM32數(shù)據(jù)傳輸流程

  將攝像頭的場中斷信號送入單片機(jī),當(dāng)單片機(jī)捕捉到場中斷信號時(shí),,拉高WEN管腳電平,,之后整幅圖像的數(shù)據(jù)就會存入FIFO。當(dāng)單片機(jī)再次捕捉到場中斷時(shí),,表明一幅圖像已經(jīng)送入FIFO,,此時(shí)關(guān)閉場中斷,拉低WEN電平,,防止攝像頭數(shù)據(jù)再次寫入FIFO,。當(dāng)上位機(jī)發(fā)送握手信號之后,開始讀取FIFO數(shù)據(jù)到內(nèi)存緩沖區(qū),,根據(jù)采集到的圖像做應(yīng)用處理,,并通過串口發(fā)送至上位機(jī),發(fā)送完成后,,再次開啟場中斷,,當(dāng)再次捕捉到場中斷時(shí),再次拉高WEN管腳電平,,繼續(xù)讓攝像頭數(shù)據(jù)存入FIFO,,完成后單片機(jī)等待上位機(jī)握手信號,如此循環(huán),。

  3.2串行通信實(shí)現(xiàn)

  MATLAB軟件的設(shè)備控制箱(Instrument Control Toolbox,,ICT)提供了對RS232串口通信的正式支持。首先調(diào)用設(shè)備控制工具箱中的serial類函數(shù),,創(chuàng)建用戶自定義的串口設(shè)備對象,。再通過自定義的文件句柄,以文件操作的方式,,達(dá)到對PC串行口讀寫操作的目的,。

  在進(jìn)行通信之前,需對控制器進(jìn)行配置,,包括設(shè)置通信模式(全雙工,、半雙工等)和串行口的通信參數(shù)(波特率、數(shù)據(jù)位,、停止位等),,使通信設(shè)備擁有相同的通信模式和串行通信參數(shù),。從通信的建立到結(jié)束通信主要包括如下5個(gè)基本步驟[6]:

  (1)為應(yīng)用程序創(chuàng)建串口對象,。

 ?。?)連接打開串口。

 ?。?)設(shè)置或者修改串口通信參數(shù),。在能夠有效地進(jìn)行串口通信前,必須設(shè)置正確的串口通信參數(shù),。

 ?。?)從串口讀寫數(shù)據(jù)。在前面三個(gè)步驟正常完成后,,既可以從串口讀數(shù)據(jù)也可以向串口寫數(shù)據(jù),,也就是接受或者發(fā)送數(shù)據(jù)。實(shí)現(xiàn)讀串口功能的函數(shù)有多個(gè),,根據(jù)到達(dá)串口數(shù)據(jù)的類型選擇合適的讀函數(shù),。

  (5)關(guān)閉串口以及釋放串口對象在工作空間中占用的存儲空間,。

  基本步驟中參數(shù)的設(shè)置需要在回調(diào)函數(shù)中提前初始化,,對于不同的STM32程序,需要找到回調(diào)函數(shù)相應(yīng)位置進(jìn)行修改,,較為不便,,本文中通過對用戶的選擇值進(jìn)行讀取,從而初始化串口參數(shù),同時(shí)添加了中斷函數(shù)以及數(shù)據(jù)轉(zhuǎn)換函數(shù),。數(shù)據(jù)傳輸流程如圖4所示,。 

004.jpg

  首先對用戶設(shè)置的參數(shù)進(jìn)行讀取,,設(shè)置并初始化串口,,接著打開串口,發(fā)送握手信號0xff,。當(dāng)單片機(jī)接收到相應(yīng)的握手信號后,,開始圖像傳輸。當(dāng)MATLAB接收到終止符 ‘\\n’ 時(shí),,表明已成功接收一幀圖像,,從而觸發(fā)中斷。由于MATLAB接收到的數(shù)據(jù)是ASCII碼字符形式,,所以需要將從緩沖區(qū)讀取到的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換:根據(jù)用戶設(shè)定的像素?cái)?shù)M×N,將數(shù)據(jù)轉(zhuǎn)換成M×N的整形圖像矩陣,。最后以JPEG圖像格式存儲于工作區(qū)空間中,。具體代碼如下:

  a_temp = [0,0,0,0,0];%定義一個(gè)像素值臨時(shí)存儲矩陣

  b_count_flag = 1;

  c_count_flag = 0;

  data = zeros(M,N);%定義圖像存儲矩陣,,M,N為像素?cái)?shù)

  n = s.BytesAvailable;%讀取緩存區(qū)中當(dāng)前圖像大小

  out = fread(s,n,char);%讀取圖像

  out = char(out);

  for a = 1:n

  if out(a) ~= 13%判斷是否是一幀圖像終止符

  if out(a) ~= 10%判斷是否是單個(gè)像素終止符

  a_temp(b_count_flag) = int16(out(a) - 48);

  b_count_flag = b_count_flag + 1;

  end

  if out(a) == 10

  c_count_flag = c_count_flag + 1;

  b_count_flag = b_count_flag - 1;

  i = b_count_flag;

  while b_count_flag~=0

  data(c_count_flag) = a_temp(b_count_flag) * (10^(i - b_count_flag)) + data(c_count_flag);

  b_count_flag = b_count_flag - 1;

  end

  b_count_flag = 1;

  end

  end

  end

  %將rgb565格式轉(zhuǎn)化成適合計(jì)算機(jī)處理的形式

  imgR = uint8((255/31)*bitshift(bitand(data,63488),-11));

  imgG = uint8((255/63)*bitshift(bitand(data,2016),-5));

  imgB = uint8((255/31)*bitand(data,31));

  imgRGB = cat(3,imgR,imgG,imgB);

  imwrite(imgRGB,Sun.jpg);%存儲當(dāng)前幀

  3.3GUI界面布局

  利用MATLAB GUIDE開發(fā)工具,添加完成必要的控制框,,包括靜態(tài)文本框,、彈出式菜單、可編輯文本框,、按鈕,、坐標(biāo)軸。

  完成后的界面如圖5所示,。界面設(shè)計(jì)了一般串行通信參數(shù)設(shè)置按鈕,,可對波特率、數(shù)據(jù)位,、停止位等數(shù)值進(jìn)行設(shè)置,,這里根據(jù)STM32程序中的對應(yīng)設(shè)置,選擇相應(yīng)的參數(shù),。Pixel為像素?cái)?shù)的大小,,由圖像傳感器寄存器中的相應(yīng)設(shè)置來選擇接收像素?cái)?shù)。方形靜態(tài)文本框顯示當(dāng)前執(zhí)行狀態(tài),。坐標(biāo)軸(axes1)顯示當(dāng)前接收到的圖像,。右邊打開串口(open serial)完成串口參數(shù)的讀取設(shè)置,并發(fā)送握手信號,。發(fā)送控制信號(send control signal)通過串口發(fā)送控制信號給伺服電機(jī),,完成精確的太陽定位跟蹤。關(guān)閉(close)按鈕釋放串口對象在MATLAB工作區(qū)中占用的存儲空間,,并退出應(yīng)用,。

 

005.jpg

4實(shí)驗(yàn)

  設(shè)置波特率為115 200,數(shù)據(jù)位8 bit,,停止位1 bit,,無奇偶校驗(yàn)位,像素?cái)?shù)為240×240,。圖片以45 s為周期進(jìn)行刷新,,滿足預(yù)期。太陽圖像顯示結(jié)果如圖6所示,。

006.jpg

5結(jié)論

  針對目前太陽輻射測量中的跟蹤系統(tǒng)累積誤差較大,、速度較慢等問題,提出了一種基于MATLAB與ARM的太陽圖像采集系統(tǒng),。該系統(tǒng)可以直觀,、快速地顯示當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)與太陽的實(shí)時(shí)變化,使控制過程可視化,。同時(shí),,上位機(jī)采用MATLAB編程實(shí)現(xiàn),,可以利用軟件本身的圖像處理方法與工具箱,為下一步太陽質(zhì)心提取算法的開發(fā)提供良好的平臺,,可大大節(jié)省開發(fā)時(shí)間,。GUI程序發(fā)布后,移植方便,,無需安裝MATLAB軟件,,可在任意一臺PC上以靜態(tài)或動態(tài)的圖像處理結(jié)果,驅(qū)動電機(jī)等執(zhí)行器,,實(shí)現(xiàn)高精度的太陽跟蹤自動控制,。

參考文獻(xiàn)

  [1] 陳麗娟, 周鑫. 基于ARM嵌入式圖像處理平臺的太陽跟蹤系統(tǒng)[J]. 現(xiàn)代電子技術(shù), 2012, 35(4): 71-74.

 ?。?] 劉麗微. 基于視覺的太陽光線自動跟蹤裝置[D]. 沈陽:沈陽工業(yè)大學(xué), 2008.

 ?。?] 任松林. 主動式太陽跟蹤及驅(qū)動系統(tǒng)研究與設(shè)計(jì)[D]. 重慶:重慶大學(xué), 2008.

  [4] 薛飛, 楊友良, 孟凡偉, 等. 基于Matlab GUI串口通信的實(shí)時(shí)溫度監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用, 2014, 34(1): 292-296.

 ?。?] 劉火良,,楊森. STM32庫開發(fā)實(shí)戰(zhàn)指南[M]. 北京:機(jī)械工業(yè)出版社,2013.

 ?。?] 王戰(zhàn)軍, 沈明. 基于MATLAB GUI的串口通信編程實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2010, 39(9): 38-40.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。