42
電子工程系二技部 VB&RS232 無線控制導航車影音傳輸 學生: 陳建樺 指導教授: 楊朝欽 老師

電子工程系二技部ir.lib.ksu.edu.tw/bitstream/987654321/2140/1/VB&RS232...電子工程系二技部 專 題 研 究 報 告 VB&RS232 無線控制導航車影音傳輸 學生:陳建樺

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

  • 崑 山 科 技 大 學

    電子工程系二技部

    專 題 研 究 報 告

    VB&RS232 無線控制導航車影音傳輸

    學生: 陳建樺 指導教授: 楊朝欽 老師

    中 華 民 國 九 十 五 年 五 月

  • 摘要

    「無線遠端影像管理系統」結合無線傳輸與網路攝影技術,來

    進行錄影監控及管理,這樣的無線影像監控系統可以應用在需要

    錄影監控且又不易佈建網路線的環境下,例如有公司主管想隨時

    監看工廠的作業情形,可在廠區架設 NetEye Pro 網路攝影伺服

    器,透過無線傳輸將影像連上公司區域網路,這樣一來公司主管

    無論是在辦公室或會議室都可隨時透過電腦,無線連網監看廠區

    作業情形,而錄存下來的影像資料量很大,所以可存放在 HD Sever

    網碟,方便日後調閱查詢,採用無線網路是因應不易佈線的環境

    下連接網路的需求,提高彈性與機動性,節省佈線的成本。

    對於家中及公司裡外周圍能透過遠端網路即時來監視(測)達

    到居家安全與公司財產的保障,是現代社會最需求量高的一項產

    品。也帶給人民生命財產安全的維護與保障。

    I

  • 目 錄 頁數 摘要-----------------------------------------------------------------------------------------I 目錄-----------------------------------------------------------------------------------------II 圖表目錄----------------------------------------------------------------------------------Ⅲ

    第一章 製作目的-----------------------------------------------------------------------1

    1.1 專題動機------------------------------------------------------------------------1 1.2 作品分析------------------------------------------------------------------------2

    第二章 電路圖--------------------------------------------------------------------------3 2.1 完整電路圖----------------------------------------------------------------------3 2.2 無線模組-------------------------------------------------------------------------3 2.3 電源電路-------------------------------------------------------------------------4

    第三章 電路說明-----------------------------------------------------------------------5 3.1 89C51單晶片基本電路設計----------------------------------------------5 3.2 RS232應用電路--------------------------------------------------------------7 3.3 自製 5V電源供應器----------------------------------------------------------8 第四章 TG-11無線收發模組介紹----------------------------------------------12 4.1 收發電路說明------------------------------------------------------------------13 4.1-1發射模組電路圖---------------------------------------------------------------13

    4.1-2接收模組電路圖---------------------------------------------------------------14 4.2 繼電器-----------------------------------------------------------------------------15

    第五章 軟體程式-------------------------------------------------------------------------16 5.1 RS232 & 89C51無線傳輸控制&直流馬達正反轉--------------------16 5.2 VB程式碼------------------------------------------------------------------------18 5.2-1VB&RS-232部份---------------------------------------------------------------18 5.2-2影像擷取模組部份----------------------------------------------------------19 第六章 流程圖-----------------------------------------------------------------------------26 6.1 8051部分--------------------------------------------------------------------------26 6.2 VB部份----------------------------------------------------------------------------27 6.3 完整電路方塊圖-----------------------------------------------------------------28 第七章 結 論------------------------------------------------------------------------------29 7.1 結論&建議------------------------------------------------------------------------29

    7.2 製作心得--------------------------------------------------------------------------30 7.3 工作分配--------------------------------------------------------------------------32

    參考資料 ---------------------------------------------------------------------------------33 附 錄 ---------------------------------------------------------------------------------34

    II

  • 圖 表 目 錄 頁數 圖 1.1使用者操作視窗畫-----------------------------------------------2 圖 2.1完整電路 layout---------------------------------------------------3 圖 2.2無線模組傳送端---------------------------------------------------3 圖 2.3無線模組接收端---------------------------------------------------4 圖 2.4電源電路-------------------------------------------------------------4 圖 3.1時脈振盪電路-------------------------------------------------------5 圖 3.2 RESET電路---------------------------------------------------------6 圖 3.3基本輸出電路設計------------------------------------------------6 圖 3.4 RS232硬體線路圖------------------------------------------------7 圖 3.5 5V直流電源供應器電路圖-------------------------------------8 圖 3.6變壓器接線圖&電源供應器成品------------------------------9 圖 3.7 1N5404矽二極體的外型與表示符號------------------------10 圖 3.8 2200µF,16V的電解電容與表示符號----------------------11 圖 3.9 IC 7805接線圖-----------------------------------------------------11 圖 4.1發射模組外觀與接腳說明---------------------------------------12 圖 4.2接收模組外觀與接腳說明---------------------------------------13 圖 4.3 發射模組電路圖------------------------------------------------------------13 圖 4.4 接收模組電路圖---------------------------------------------------14 圖 6.1完整電路方塊圖----------------------------------------------------28 附錄圖(A).無線模組發射電路 RS-232 電腦端-正面電路---------34 附錄圖(B).無線模組發射電路 RS-232 電腦端-背面電路---------34 附錄圖(C).無線模組接收電路 接至受控制端-正面電路----------35 附錄圖(D).89C51受控端之核心電路-正面電路---------------------35 附錄圖(E).89C51受控端之核心電路-背面電路---------------------35 附錄圖(F).接收電路 接至受控制端-------------------------------------36 附錄圖(G).完整專題電路板與影音模組--------------------------------36 附錄圖(H).導航車成品------------------------------------------------------37

    III

  • 第一章

    製作目的

    本製作主要目的是探討:

    1. 如何使用 VB程式的通訊連接埠控制週邊設備。 2. 如何使自走車能依滑鼠或鍵盤輸入之路線行駛。 3. 自走車移動及停止時之影像傳輸是否會有影響。

    由於數位壓縮技術日益精進,數位廣播的數據傳輸容量將來

    也將隨之增加、其發展的應用程式介面(API)可容許其他應用領域與附加功能的輕易導入、再加上其不受環境干擾的絕佳訊號傳收

    能力,使它成為各國競相研究將其納入資訊高速公路基礎建設的

    對象,以便提供最有效率的無線資訊服務。

    此一嶄新的非對稱式無線多媒體通訊網路,其目標是發展出

    一普遍通用的資訊傳送架構,以便為行動式與可攜式終端機提供

    互動式的多媒體資訊服務;此系統將結合即將採用的數位廣播(作

    為寬頻下鏈)與當前普遍使用的數據封包式電信系統(如 GSM 與行動數據通信,作為低位元率窄頻上鏈的互動連結通道),來提供

    一個經濟且高效率的非對稱式雙向通道。據此所佈建的互動無線

    網路,將可以依照 ITS系統中的資訊與儀控內容而提供數種類型的服務:

    • 傳統的廣播節目與即時路況報導;

    • 新增的緊急事故、災難等的即時插播宣佈;

    • 同步調控交通號誌與顯示在車內的路況號誌指示;

    • 對於需要高度互動連結功能的應用,可以利用網際網路中的

    超文字標示語言(HTML)的格式來執行;

    1.1 專題動機

    如何使導航車(自走車)能利用 VB程式語言控制依滑鼠或鍵盤輸入之路線行駛,研究自走車移動及停止時之影像傳輸之干擾

    與否。並研究傳輸距離與電源部分有無關聯,以改善短距離的

    傳輸控制以便達到無線遠端控制。

    1

  • 1.2 作品分析

    控制端:

    利用 VB程式控制 RS232再經由MAX232晶片透過解碼器(HT-12E)到無線發射模組(TG-11A Transmitter)

    接收端:

    利用無線接收模組(TG-11B Receiver)將訊號經由解碼器解碼後傳送至 89C51 單晶片的 Pin10 來達成整體無線控制自走車與CCD鏡頭旋轉的目的。

    使用者視窗:

    VB控制介面 遠端影像傳輸監控視窗

    圖 1.1使用者操作視窗畫面

    2

  • 第二章

    電路圖

    2.1完整電路圖

    圖 2.1完整電路 layout

    2.2 無線模組

    圖 2.2無線模組傳送端

    3

  • 圖 2.3無線模組接收端

    2.3電源電路

    圖 2.4電源電路

    4

  • 第三章

    電路說明

    當我們想要終端的 PC控制在遠端的無線遙控自走車時,如圖2.1首先我們會送一個訊號(假設為一個前進的訊號)經過 RS232的第九隻腳位傳送到 ICMAX-232,此時會將 ICMAX-32進行RS-232電位轉換,然後會透過無線模組之發射模組的第 6隻腳位,這時無線模組之接收模組的第 2隻腳位會得到發射模組所傳送過來的訊號,在將此訊號連接至 89C51的第 10隻腳位(RXD),當 8051收到此訊號時首先會比對 VB傳送過來的命令是否與8051程式符合,若滿足時P2.0與P2.3會送出低電位而P2.2與P2.4會送出高電位,此時中功率電晶體(Q1ON Q2 OFF)MOTOR1正轉、(Q3 ON Q4 OFF)MOTOR正轉然後車體就會做前進的動作.補充說明電源部份是由兩組蓄電池所組成,一組為+12V另一組為+6V我們將+12V提供給繼電器使用,在將+6V透過 7805的穩壓電路提供給 89C51及無線模組使用。

    3.1 89C51單晶片基本電路設計

    時脈設計

    89C51的時脈接腳為 XTAL1(pin19)、XTAL2(pin18),如圖 3.1所示,於 pin18、19之間接一個石英振盪器(常用頻率在 3.58MHz、6MHz、11.0592MHz、12MHz),並各接一電容與接地,電容以20p~30p較為適當。

    圖 3.1 時脈振盪電路

    5

  • 重置電路設計

    RST(pin9)為 89C51的重置接腳,如圖 3.2所示,要使程式碼重新執行時,只要按下 SW開關,使 RESET接腳有+5V的高電位,使系統重置而重新執行程式。

    圖 3.2 RESET電路

    基本I/O電路設計

    如圖 3.3所示,為 89C51單晶片基本輸出電路,PORT2 連接 LED後,再接上 200歐姆電阻作為限流裝置,防止 LED燒毀,最後接上 VCC供應電源,當 PORT2輸出腳為 0時,LED亮,例如控制 PORT2.0 = 0時,第一支 LED 亮。89C51單晶片可藉由控制這些腳位的電壓,產生數位訊號,經過放大電

    路,進而控制周邊設備,如步進馬達等。

    圖 3.3 基本輸出電路設計

    6

  • 單晶片可以讀取數位訊號輸入,以 KEYBOARD矩陣式開關或是 DIP開關作為訊號輸入裝置。一般而言,溫度、溼度等物理現象,都是經由感測器而得到類比電壓訊號,透過類比至

    數位轉換器(ADC),將類比訊號轉換成數位訊號,便能由 89C51單晶片處理器做資料處理或控制,甚至傳送至遠方做進一步應

    用。

    3.2 RS232應用電路

    RS232 串列埠是一個相當重要的介面協定標準,只要彼此有一個共通協定,包括傳輸格式、電器特性等,不同的電子設

    備都可以透過 RS232進行資料傳輸與溝通。如圖 3.4所示,電腦經由 RS232輸出訊號,必須使用轉換電路晶片,例如MAX-232或其相容單晶片,使電腦與 89C51單晶片彼此電位相等,完成硬體設備。接下來,就是設計 RS232軟體程式,須注意的是,電腦程式與 89C51單晶片彼此的傳輸協定-鮑率(Baud-Rate)必須相同(本專題設鮑率:1200 使用 com2),才能確保資料傳輸正確。

    圖 3.4 RS232硬體線路圖

    檢修動作

    當 89C51 單晶片完成基本設計電路時,如果不能做動,基本檢修動作是使用三用電表對下列腳位進行量測:

    7

  • Step1.VCC(pin40)對 GND(pin20)是否為+5V。

    Step2.RESET(pin9)是否為 0V。

    Step3.EA/VPP(pin31)是否為+5V。

    Step4.ALE/PROG(pin30)是否有脈波輸出。

    Step5.MAX-232電位轉換電路晶片之 pin2與 pin6是否

    為+10V與-10V之間。

    3.3自製 5V電源供應器

    5V電源供應器電路圖如圖 3.5 所示,只需要一些電子零件,便可製造出 5V的電源供應器。基本電路原理為變壓器T1將 110伏特降壓到 12伏特交流電,經過橋氏整流器D1到D4變為直流電壓,電解電容作為調整濾波用途,IC 7805的內部線路將輸入的電壓調整為 5V的輸出電壓。

    圖 3.5 5V直流電源供應器電路圖

    表 1所示為自製 5V電源供應器所需的電子零件名稱與數目,這些電子零件的價格非常便宜,而變壓器零件可重複使用,可說

    是一個相當便宜與實惠的自製電源供應器。 值得注意的地方在

    7805的部分要小心它元件本身的腳位正負極性行(pin1:輸入 pin2:接地 pin3:輸出)如圖 3.9所示

    8

  • 元件 名稱 數量

    C1 2200μF,16V電解電容 1

    C2 100μF,16V 電解電容 1

    C3 0.1μF, 1

    D1~D4 1N5400 二極體 4

    IC1 7805 穩壓 IC 1

    P1 交流電源三插頭 1

    T1 12V,1.5A 電源變壓器 1

    表 1. 自製 5V電源供應器所需的電子零件名稱與數目

    自製 5V電源供應器中 T1變壓器主要功能,是將 110伏特交流電壓降為 12伏特交流電壓。如圖 3.6所示,輸入端連接 110伏特,對於三插頭電源而言,綠色接地線必須連接到金屬的機殼;

    而輸出端有三個接點,分別為 12V、0、12V,將 12V的接點互相與橋氏整流器的 a、b 連接即可。

    圖 3.6 變壓器接線圖&電源供應器成品

    9

  • 橋氏整流器是由四個 1N5404矽二極體組合而成,二極體的功用就是電流只能從單一方向流過,圖 3.7是 1N5404矽二極體的外型與表示符號,在焊接電路時,必須特別注意其正負方向性。

    圖 3.7 1N5404矽二極體的外型與表示符號

    電容器是用來儲存與釋放電能,一般電容器會將電容值直接

    標示於外殼,若有極性也會標示出來,不然就是用長短腳來表示。

    圖 3.8 所示為 2200µF、16V 的電解電容,較長的接腳代表正端,在此自製電源供應器電路裡,功能為調整濾波用途。

    10

  • 圖 3.8 2200µF,16V的電解電容與表示符號

    IC 7805是一種穩壓 IC,經由內部線路處理,將輸入的電壓調整為 5伏特的輸出電壓。如圖 3.9所示,Input 連接 5V電源電路圖的 1號位置,Output 連接 2號,Gnd 連接 3號地線共接點。

    圖 3.9 IC 7805接線圖

    可以加裝散熱片在 IC 7805上來幫助散熱。注意要妥善處理高壓與本線路連接的部份,此外如要有良好的隔離設施,可將整體

    電路裝在一控制盒裡。

    11

  • 第四章

    TG-11無線收發模組介紹

    TG-11 無線收發模組是一組由發射器和接收器所組成的模組,系統特性如下:

    (1)具備 UHF發射接收電路,可做無線電傳輸及控制等相關應用。

    (2)搭配編解碼 IC,不易受外界雜訊干擾。

    (3)可搭配 DIP開關裝置來調整密碼設定。

    (4)頻率範圍從 300MHz到 434MHz。

    圖 4.1 與圖 4.2 是 TG-11 無線收發模組的外觀與相關接腳說明。詳細說明請參閱製造廠商所提供的產品資料手冊。

    圖 4.1 發射模組外觀與接腳說明

    12

  • 圖 4.2 接收模組外觀與接腳說明

    4.1收發電路說明 4.1-1發射模組電路圖

    圖 4.3 為發射模組電路圖,使用 315MHz 頻率的發射模組,HT-12E為編碼 IC,其 Pin1~Pin8 連接 DIP開關,調整 JUMP 來設定密碼,當發射模組與接收模組的密碼設定相同時才能進行收發

    動作;HT-12E編碼 IC的 Pin10~Pin13是控制訊號輸入腳位,接收外部 ON/OFF訊號。

    圖 4.3 發射模組電路圖

    13

  • 4.1-2接收模組電路圖

    圖 4.4 為接收模組電路圖,使用 315MHz 頻率的接收模組,HT-12D為解碼 IC,其 Pin1~Pin8 連接 DIP開關,調整 JUMP 來設定密碼,當發射模組與接收模組的密碼設定相同時才能進行收發

    動作;HT-12D解碼 IC的 Pin10~Pin13是控制訊號輸出腳位,隨著發射端的訊號產生不同的動作,如高、低電位。

    圖 4.4 接收模組電路圖

    14

  • 4.2 繼電器

    常用於保護和控制機械,是一種電磁控制開關,有接點電器

    元件以繼電器為記憶元件,當電磁線圈未通電時,接點導

    通,當電磁線圈通電時,產生磁場,線圈上的鐵心將可動金

    屬片吸下,使接點導通,只要線圈電源繼續通電,接點將繼

    續導通。一個繼電器內,通常有許多組開關,可以同時控制

    這些開關之導通或不導通。

    控制電壓未加於電磁線圈上時,共用端 C的金屬接點與常閉B的接點相接觸,故 B接點又稱為 Normal Close,尚未加諸控制電壓時,B-C之間都是保持導通的狀態。 當電壓加於線圈上時,會產生磁性,將共用端 C的金屬接點吸引,與常開 A的接點相接觸,故 A接點又稱為 Normal Open,加諸控制電壓後,A-C之間才會導通。

    15

  • 第五章

    軟體程式

    5.1 RS232 & 89C51無線傳輸控制&直流馬達正反轉

    ORG 0H JMP START

    START: MOV SP,#5FH

    MOV TMOD,#20H MOV TH1,#0E8H

    SETB TR1 MOV SCON,#01010000B

    CPL P0.6 MOV R5,#25

    CALL DELAY1 SETB P0.6

    CALL DELAY1 CPL P0.6

    CALL DELAY1 SETB P0.6

    CALL DELAY1 CPL P0.6

    WAIT: JNB RI,WAIT

    CPL P0.3 CLR RI

    ================================================= RF: CALL DELAY1

    SETB P2.0 SETB P2.2 SETB P2.3 SETB P2.4

    JNB P3.0,RIGHT JNB P3.1,FORWARD JNB P3.2,LEFT JNB P3.3,BACK RIGHT: CLR P2.0

    16

  • SETB P2.2 CLR P2.3 SETB P2.4 JNB P3.0,RIGHT JMP RF FORWARD: CLR P2.0 CLR P2.2 CLR P2.3 JNB P3.1,FORWARD JMP RF LEFT: SETB P2.0 CLR P2.2 CLR P2.3 SETB P2.4 JNB P3.2,LEFT JMP RF BACK: SETB P2.0 SETB P2.2 SETB P2.3 CLR P2.4 JNB P3.3,BACK JMP RF ================================================= DELAY1: DEL11: MOV R7,#100 DJNZ R7,$ DJNZ R6,DEL11

    DJNZ R5,DELAY1 RET

    END

    17

  • 5.2 VB程式碼 5.2-1 VB&RS-232部份:

    Private Sub Form_Load() MSComm1.PortOpen = True End Sub

    Private Sub Command1_Click() buf = Trim(Text1.Text) MSComm1.Output = Chr(buf) End Sub Private Sub Command2_Click() MSComm1.Output = Chr(1) End Sub

    Private Sub Command3_Click() MSComm1.Output = Chr(2) End Sub

    Private Sub Command4_Click() MSComm1.Output = Chr(3) End Sub

    Private Sub Command5_Click() MSComm1.PortOpen = False End End Sub

    18

  • 5.2-2 影像擷取模組部份:

    Option Explicit Declare Function capGetDriverDescription Lib "avicap32.dll" Alias "capGetDriverDescriptionA" (ByVal dwDriverIndex As Long, ByVal lpszName As String, ByVal cbName As Long, ByVal lpszVer As String, ByVal cbVer As Long) As Long Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long Declare Function SendMessage_Long Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Declare Function SendMessage_Any Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long Declare Function SendMessage_String Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Const WS_CHILD = &H40000000 Const WS_VISIBLE = &H10000000 Type POINTAPI

    x As Long y As Long

    End Type Type CAPTUREPARMS

    19

  • dwRequestMicroSecPerFrame As Long fMakeUserHitOKToCapture As Long wPercentDropForError As Long fYield As Long dwIndexSize As Long wChunkGranularity As Long fUsingDOSMemory As Long wNumVideoRequested As Long fCaptureAudio As Long wNumAudioRequested As Long vKeyAbort As Long fAbortLeftMouse As Long fAbortRightMouse As Long fLimitEnabled As Long wTimeLimit As Long fMCIControl As Long fStepMCIDevice As Long dwMCIStartTime As Long dwMCIStopTime As Long fStepCaptureAt2x As Long wStepCaptureAverageFrames As Long dwAudioBufferSize As Long fDisableWriteCache As Long AVStreamMaster As Long End Type Type CAPDRIVERCAPS wDeviceIndex As Long fHasOverlay As Long fHasDlgVideoSource As Long fHasDlgVideoFormat As Long fHasDlgVideoDisplay As Long fCaptureInitialized As Long fDriverSuppliesPalettes As Long hVideoIn As Long hVideoOut As Long hVideoExtIn As Long hVideoExtOut As Long End Type Type CAPSTATUS uiImageWidth As Long

    20

  • uiImageHeight As Long fLiveWindow As Long fOverlayWindow As Long fScale As Long ptScroll As POINTAPI fUsingDefaultPalette As Long fAudioHardware As Long fCapFileExists As Long dwCurrentVideoFrame As Long dwCurrentVideoFramesDropped As Long dwCurrentWaveSamples As Long dwCurrentTimeElapsedMS As Long hPalCurrent As Long fCapturingNow As Long dwReturn As Long wNumVideoAllocated As Long wNumAudioAllocated As Long End Type Const WM_USER = &H400 Const WM_CAP_START = WM_USER Const WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64 Const WM_CAP_SEQUENCE = WM_CAP_START + 62 Const WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41 Const WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46 Const WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42 Const WM_CAP_GRAB_FRAME = WM_CAP_START + 60 Const WM_CAP_FILE_SAVEDIB = WM_CAP_START + 25 Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50 Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10 Const WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14 Const WM_CAP_GET_STATUS = WM_CAP_START + 54 Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52 Const SWP_NOMOVE = &H2& Const SWP_NOZORDER = &H4& Const SWP_NOSENDCHANGING = &H400& Dim CapHWnd As Long '影像截取視窗的 HWnd

    21

  • Function Connect_CaptureDriver(Frm As Form, ByVal nDriverIndex As Long) As Boolean '連結到截取裝置 Dim retVal As Boolean Dim Caps As CAPDRIVERCAPS Dim i As Long Debug.Assert (nDriverIndex < 10) And (nDriverIndex >= 0) '連結到截取視窗的界面 retVal

    =SendMessage_Long(CapHWnd,WM_CAP_DRIVER_CONNECT, nDriverIndex, 0&)

    If retVal = False Then Exit Function '傳回截取界面的能力 retVal = SendMessage_Any(CapHWnd, WM_CAP_DRIVER_GET_CAPS, Len(Caps), Caps) '設定每毫秒的速率 Call Set_PreviewRate(CapHWnd, 66) '15 FPS '啟動攝影機的預視影像 Call Set_Preview '重新調整截取視窗為全部佔滿影像 Call ResizeCaptureWindow Connect_CaptureDriver = True End Function Function Get_AVIWindow() As Boolean '截取連續畫面 Dim p As CAPTUREPARMS With p .fMakeUserHitOKToCapture = 1 .wPercentDropForError = 10 .fUsingDOSMemory = 0 .wNumVideoRequested = 32 .fAbortLeftMouse = 1 .fAbortRightMouse = 1 .wChunkGranularity = 0 .dwAudioBufferSize = 0 .fDisableWriteCache = 1 .fMCIControl = 0 .fStepCaptureAt2x = 0 .fYield = 0 .wNumAudioRequested = 4 .AVStreamMaster = 0&

    22

  • .dwIndexSize = 9000& '15分 60秒,每秒 10張 .dwRequestMicroSecPerFrame = 1000000 \ 15 '設定取樣頻率 .fCaptureAudio = 1 '截取聲音 .fLimitEnabled = 0 '關閉截取時間限制 .wTimeLimit = 30 '設定截取秒數 End With Get_AVIWindow = SendMessage_Any(CapHWnd, WM_CAP_SET_SEQUENCE_SETUP, Len(p), p) Get_AVIWindow = SendMessage_Long(CapHWnd, WM_CAP_SEQUENCE, 0&, 0&) End Function Sub Get_CaptureWindow(Optional nm As Long = 0) '建立一個可截取的視窗 'nm 為,若不只一個截取裝置的話,指定裝置代號 Dim n As String n = "我的攝影機" CapHWnd = capCreateCaptureWindow(n, WS_CHILD Or WS_VISIBLE, 0, 0, 160, 120, Screen.ActiveForm.hwnd, 0) Call Connect_CaptureDriver(Screen.ActiveForm, nm) End Sub Function Get_CaptureWindow_Status(ByVal hCapWnd As Long, ByRef capStat As CAPSTATUS) As Boolean '傳回截取視窗的狀態 Get_CaptureWindow_Status = SendMessage_Any(hCapWnd, WM_CAP_GET_STATUS, Len(capStat), capStat) End Function Function Get_SimpleWindow(n As String) As Boolean '截取單一畫面 'n 為檔名 Dim b As Boolean Call SendMessage_Long(CapHWnd, WM_CAP_GRAB_FRAME, 0&, 0&) b = SendMessage_String(CapHWnd, WM_CAP_FILE_SAVEDIB, 0&, n) Call Set_Preview '__加這一行,才不會截取後,畫面承現凍結

    23

  • (Freeze)狀態 Get_SimpleWindow = b End Function Sub ResizeCaptureWindow() '重新調截取視窗的大小 Dim b As Boolean Dim capStat As CAPSTATUS '傳回截取視窗的狀態 b = Get_CaptureWindow_Status(CapHWnd, capStat) If b = True Then '重新調整截取視窗的大小 CallSetWindowPos(CapHWnd,0&,0&,0&,capStat.uiImageWidth,capStat.uiImageHeight,SWP_NOMOVEOrSWP_NOZORDEROrSWP_NOSENDCHANGING) Screen.ActiveForm.Width = capStat.uiImageWidth * Screen.TwipsPerPixelX + 120 Screen.ActiveForm.Height = capStat.uiImageHeight * Screen.TwipsPerPixelY + 640 End If End Sub Function Set_CaptureSource() '設定截取來源 Set_CaptureSource = SendMessage_Long(CapHWnd, WM_CAP_DLG_VIDEOSOURCE, 0&, 0&) End Function Function Set_CompressRate() As Boolean Set_CompressRate = SendMessage_Long(CapHWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0&, 0&) End Function Function Set_Preview() As Boolean '啟動攝影機的預視影像 Set_Preview = SendMessage_Long(CapHWnd, WM_CAP_SET_PREVIEW, True, 0&) End Function Function Set_PreviewRate(ByVal hCapWnd As Long, ByVal wMS As Long) As Boolean '設定每毫秒預視的速率

    24

  • Set_PreviewRate = SendMessage_Long(hCapWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0&) End Function Function Set_VideoFormat() As Boolean '設定截取畫面的解析度 Set_VideoFormat = SendMessage_Long(CapHWnd, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&) Call ResizeCaptureWindow End Function

    25

  • 第六章

    流程圖

    6.1 8051部分 初始設定

    串列初始設定

    N

    串列資料接收副程式 LED控制副程式

    判斷有

    無資料

    是否為

    1~7

    N

    N

    Y

    是否為

    1

    Y

    Y

    Y

    N

    是否為

    2

    Y

    N

    是否為

    3

    車體前進

    車體後退

    車體左轉

    N 車體右轉 是否為 5

    CCD右轉

    CCD左轉

    Y

    N

    是否為

    6

    Y

    N

    是否為

    7

    Y車體停止 是否為4

    N

    Y

    26

  • 6.2 VB部份

    VB主程式

    設定

    設定鮑率

    傳送

    建立擷取

    連結擷取

    傳回擷取

    宣告模組

    啟動CCD

    進 後

    退 左

    轉 右

    27

  • 6.3 完整電路方塊圖

    圖 6.1完整電路方塊圖

    28

  • 第七章

    結論

    7.1 結論&建議 當我們決定主題是「無線遙控車(影像傳輸)」時,便開始四

    處尋找相關資料,並且做了長期規劃,在硬體部份剛開始的時候

    因 8051 不會動作,所以延遲了大約 1個月的時間都沒有半點的進度,直到我們換了新的 IC燒錄器後,才知是燒錄器壞了,之後 8051的部份告一段落後,接下是撰寫 VB程式,當在 VB與 8051結合時發生傳輸速率的不同而發生了無法傳送資料給 8051的情況‧‧‧。 經過多次的失敗後,總算也算完成了有線傳輸部份。剩下無

    線傳輸的問題,這方面是以 RS232傳輸,再以無線遙控模組傳送接收。這樣大致上就算完成了。這次因種種問題而無法順利完成

    最後的功能和測試使得這次的專題出現了缺陷,也造成我們組員

    的共同遺憾,覺得讓老師們失忘。雖然這次沒有很成功的完成,

    但對我們而言也學到了許多;一切都要以自己的能力去完成工

    作,不管懂不懂如何去做,最後還是要靠自己;這樣讓我覺得學

    得比課堂上的還要多,還要更深刻。我想這可能也是為何要我作

    此專題的原因之一吧。

    29

  • 7.2 製作心得 我利用 VB控制 8051的程式,剛開始時我都不知如何下手去

    做,後來我們參考了幾許相關書籍,終於揣摩出 8051基本電路設計,之後就越來越順,在這一年多做專題的時間內,有好幾次我

    都覺得作不出來很想放棄,後因我積極尋找相關資料,說真的如

    果這積極去找尋資料,我想我可能無法如此順利完成,雖說我是

    一個人獨立完成,因為寫 VB 程式部份是由我和老師共同研究,硬

    體部份全由我自己獨立負責,覺得做此專體看似簡單卻問題多多

    (指硬體部分),軟體部分也不馬虎,我和老師共同一起研究 VB,所以我很感謝我的老師也能在旁幫助,最後我非常的摯謝楊朝欽

    老師,因為有你的指導與支持我們才有最後的成果。

    用來當做 CCD(Charge Coupled Device)的縮寫,中文名稱叫作"電荷耦合元件",不過現在叫它攝影機.對CCD廠商所附的程式,可以應用到範圍滿多,有保全監視。

    可見程式潛力有多大了。當初找這些程式也花了許多時間參考,也

    才成就現在的程式。其實這樣一個程式可以透過 DirectX 來存取,這樣的話會比較單純,也會簡化程式碼,不過也容易受版本的限制,

    就捨棄這個辦法,改用一般 API 方式處理。值得一提,程式中只用

    一個 SendMessage的API函數來完成,其它只是宣告部份做了變化而已,往下的其他功能,也幾乎都是這個函數來完成,所以

    SendMessage 這個函數的功能相當強,若要將自己做好的 VB 程式就要安裝 CCD的驅動程式才可以擷取的影像.

    當決定專題是「無線遙控車(影像傳輸)」時,對於軟硬體都

    不懂的我一開始真的毫無頭緒,所以在剛開始的時候延遲了一段

    時間都沒有半點的進度,直到有相關資料後,老師教我要修改錯

    誤並且增加新進的功能。硬體的基本電路告一段落後,接下是撰

    寫程式,軟體的部份分為用 VB、組合語言及 8051語言去完成‧‧‧。 經過老師的指導督促程式部份也算完成。剩下串列輸出的問

    題,這方面是以 RS232傳輸,再以無線遙控模組傳送接收。這樣大致上就算完成了。這次因種種問題而無法順利完成最後的功能

    和測試使得這次的專體出現了缺陷,也造成我們組員的共同遺

    憾,覺得讓老師失望。雖然這次沒有很成功的完成,但對我而言

    也學到了許多;一切都要以自己的能力去完成工作,不管懂不懂

    如何去做,不會時問老師也只是指導我們而已,最後還是要靠自

    己;這樣讓我們覺得學得比課堂上的還要多,還要更深刻。我想

    30

  • 這可能也是為何要我們作專題的原因之一吧。

    從這次的專題製作過程中,發現到自己非常盡力完成屬於自

    己的一部份,在遇到專題上的電路或者是程式上的問題都會一起

    去找書籍來做為參考,若是書本上找不到還討論不出來的話,我

    會去請教指導老師或是師長來幫忙解決目前所遇到的問題,我本

    身是主要是負責電路的部份,然而在口試之前美中不足的地方就

    是我們無線的部份仍然無法傳輸,在其中指導老師的大力協助之

    下我們也發現我們所使用的繼電器的電源部份會有回授的影響在

    示波器量得的波形會有不正常的輸出,因此我們將電源獨立的情

    況下得到的結果依然得到功能的不正常結果,所以將來我們有機

    會再接觸到相關的無線模組的部份要注意下列幾件事:

    1. 要考慮天線的長短匹配的問題. 2. 最好是加上一組編解碼的 IC 來幫忙減少雜訊的干擾. 3. 使用無線模組必須注意周圍零件是否會產生干擾,在使用上建議是電源需獨立。

    31

  • 7.3 工作時間分配 94.03

    資料整理、電源電路設計製作、電路圖製作、

    VB&RS-232程式撰寫 報告的撰寫。

    94.05 8051程式撰寫及電路設計規劃 材料採購

    VB影像擷取程式撰寫、計劃書規劃排版。

    94.07 基本 VB程式除錯及分析(學生&老師) 電路焊接

    94.09~94.09 8051與有線(RS-232)傳輸測試 電路焊接、整合、測試、除錯

    95.01 無線傳輸電路設計測試

    負責電源電路設計製作、

    排版、整合摘要報告撰寫。

    95.02 成品試驗與網路連結

    客戶端與遠端控制相互連結

    95.04~95.05 報告裝訂成冊

    32

  • 參考文獻

    1.楊忠煌、黃博俊、李文昌 編著,單晶片 8051實務與應用,全華圖書 。

    2.謝澄漢 策劃,微電腦控制 8051單晶片原理與實習,宏友圖書。

    3.鄧錦城 編著,8051單晶片入門與實作,益眾圖書。

    4.范逸之、陳立元、賴俊朋著,Visual Basic 與 RS232 串列通訊控制,文魁。

    5 范逸之、陳立元、孫德萱、程正孚著 Visual Basic與串並列通訊控制實務。

    33

  • 附 錄

    成品實體相片集:

    附錄圖(A).無線模組發射電路 RS-232電腦端-正面電路

    附錄圖(B).無線模組發射電路 RS-232電腦端-背面電路

    34

  • 附錄圖(C).無線模組接收電路 (左)接至受控制端-正面電路 (右) RS-232電腦端-正面電路

    附錄圖(D).89C51受控端之核心電路-正面電路

    附錄圖(E).89C51受控端之核心電路-背面電路

    35

  • 附錄圖(F). 接收電路 接至受控制端-

    89C51受控端之核心電路-正面電路 發射電路 RS-232電腦端

    附錄圖(G).完整專題電路板與影音模組

    36

  • 附錄圖(H).導航車成品

    37

    時脈設計重置電路設計基本I/O電路設計3.2 RS232應用電路檢修動作Dim b As BooleanGet_SimpleWindow = b