目 錄 目錄 I 圖目錄 II 表目錄 IV 摘要 1 前言 2 1. 系統流程圖 硬體流程圖 藍芽 實驗方法與步驟 第一階段實驗

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "目 錄 目錄 I 圖目錄 II 表目錄 IV 摘要 1 前言 2 1. 系統流程圖 硬體流程圖 藍芽 實驗方法與步驟 第一階段實驗"

Transcription

1 朝陽科技大學 資訊工程系 專題成果報告 以藍芽建構多點資料傳輸系統 指導教授 : 林坤緯博士專題組員 : 張起瑞 ( ) 王廷禎 ( ) 張涵 ( ) 陳家偉 ( ) 粘文豪 ( ) 中華民國 100 年 12 月

2 目 錄 目錄 I 圖目錄 II 表目錄 IV 摘要 1 前言 2 1. 系統流程圖 硬體流程圖 藍芽 實驗方法與步驟 第一階段實驗 第二階段實驗 第三階段實驗 第四階段實驗 第五階段實驗 硬體介紹 AT89S51 主要功能 藍芽模組 HL-MD08R-C1AM 藍芽 HL-MD08P-C1M 多工接收器 ADC0804 介紹與特性 熱敏電阻 CM-R 濕度感應器 CD4501B 軟體介紹 KEIL C 程式設計 ISP 燒錄軟體 程式碼 Microsoft Visual Basic 6.0 介面設計 Microsoft Visual Basic 6.0 程式碼 Protel DXP 2004 電路設計 Protel DXP 2004 PCB 實體電路設計 成果電路圖 材料表 實驗結果討論與特色 結論 參考文獻 I

3 圖目錄 圖 1.1 系統流程圖 圖 2.1 硬體流程圖 圖 第一階段硬體流程圖... 6 圖 第一階段系統流程圖... 6 圖 第二階段硬體流程圖... 7 圖 第二階段系統流程圖... 7 圖 第三階段硬體流程圖... 8 圖 第三階段系統流程圖... 8 圖 第四階段硬體流程圖... 9 圖 第四階段系統流程圖... 9 圖 第五階段硬體流程圖...10 圖 第五階段系統流程圖...10 圖 AT89S51 單晶片接腳及功能...11 圖 HL-MD08R-C1AM 接腳圖 圖 HL-MD08P-C1M 介紹 圖 ADC0804 接腳圖...13 圖 CM-R 基本特性圖...14 圖 CD4051 接腳圖...15 圖 開啟 KEIL C 程式軟體...16 圖 開一個專案...16 圖 取名之後在後面加上 ASM 檔名..17 圖 選取 ATMEL...17 圖 選取選單下面的 AT89S51 18 圖 按 YES 允許加入專案...18 圖 選取文件檔...19 圖 開啟文件...19 圖 選取上方選端的 FLASH Configure..20 圖 按選單上的 output, 勾選 Create Hex File.20 圖 將頻率改成 12M HZ...21 圖 按下編譯按鈕, 如無錯誤即可進行燒錄 圖 開啟 ISP 介面...22 圖 選取 Hex 檔案...22 圖 在按下 Write 按之後即可燒錄.23 圖 選擇使用元件...34 II

4 圖 選擇設定元件...34 圖 新增 Timer...35 圖 將所有元件新增...35 圖 Adodc 屬性設定...36 圖 設定 Adodc 設定提供者.36 圖 選擇資料表 ( 資料庫 )...37 圖 選擇資料表 ( 資料庫 ) 連線..37 圖 拉取 DataGrid 元件...38 圖 選擇 DataGrid 連線...38 圖 拉取 Shape 元件...39 圖 開啟 Protel DXP 2004 軟體 47 圖 點選 File -> New -> Schematic 電路圖.47 圖 Schematic 全圖...48 圖 繪圖工具...48 圖 元件型態...49 圖 更換不同的 Libraries...49 圖 完成電路圖...50 圖 命名以及將檔案儲存成.schdoc 檔...50 圖 點選 File -> New -> PCB 電路圖..51 圖 PCB 電路製作圖...51 圖 PCB 繪圖工具...52 圖 PCB 電路圖製作完成...52 圖 命名以及將檔案儲存成.PcbDoc 檔...53 圖 點選 File -> Fabrication Outputs -> Gerber Files 輸出線..53 圖 設置大小和選擇層級...54 圖 選擇底層和框線層...54 圖 輸出後無錯誤, 即可列印.55 圖 點選 File -> Fabrication Outputs -> NC Drill Files 輸出點.55 圖 設置大小...56 圖 輸出後無錯誤, 即可列印 56 圖 7.1 成果電路圖...57 圖 7.2 藍芽模組電路圖...58 圖 7.3 實體電路圖...58 III

5 表目錄 表 CM-R 電器特性...14 表 CD4051 真值表...15 表 8.1 材料規格表...59 表 9.1 比較表...60 IV

6 以藍芽建構多點資料傳輸系統 林坤緯張涵張起瑞王廷禎陳家偉粘文豪 朝陽科技大學資訊工程系 摘要本論文主要研究方向是利用藍芽多點傳送感測資料, 如溫度或者溼度感測, RS232 與 HL-MD08R-C1M 相連, 藍芽晶片 HL-MD08R-C1A 與配製的 8051 電路板配對, 藉由藍芽傳送感測器所偵測到的溫度資料 ( 或其他感測器資料 ) 到電腦並儲存, 使用者只要經由電腦就可以掌握偵測點的情況 有別於傳統偵測方式本研究採用斜率偵測, 在災害剛發生就發出警報並採取應對措施, 除了能夠節省人力和物力的消耗之外, 還可以將災害程度降到最低 本論文研究方面在未來可應用在無人全自動化的工廠防災設備 遠端居家安全設備等等 Abstract In this study, we focus on the wireless data transmission, such as temperature and humidity sensor, by multi-point Bluetooth. RS232 and HL-MD08R-C2A are connected to PC, HL-MD08R-C1A is connected to our studied circuit as data sender. The sensing signals are sent from the former to the latter. The user can easily get the sensing information by computer. As compared to traditional detecting method, we propose a new algorithm, which is a concept of slope. The key merit of our studied detecting system is we can get the warning in the early disaster. It not only can save the consumption of human and material resources, but also can minimize the extent of disaster. Our studied can be applied in entire automation factory disaster prevention equipment or remote home security equipment etc. Keywords: RS232, 8051, Bluetooth - 1 -

7 前言 近代建築為了美觀往往都採取隱藏式的電線布線, 因其裝修過程時被隱蔽起來, 加上表面上無法看到裝修項目, 也因為如此有散熱不易及遭到電線遭短路時無法察覺等會引發火災的危險, 也因此火災的警報設備也隨著現代的生活建築的趨勢日新月異 參考溫度感測與紅外線控制的論文 [11][12], 得知遠端感測及接收端電腦間的資料傳輸來預防各種災害, 其是由感測端將偵測到的數值藉由紅外線傳輸到接收端, 接收端設定危險溫度值與接收到的資料做比對 ; 但此技術缺點在於紅外線傳輸有死角, 針對此傳輸死角的缺點, 我們參考溫度感測與藍芽傳輸的相關論文 [13] 綜合前述溫度感測技術, 其偵測溫度之方式皆為固定比較值因此無法快速做出反應, 因此我們針對此點進行藍芽偵測溫度的方式進行探討, 參考藍芽偵測溫度相關技術論文 [14], 發現斜率偵測的方式, 斜率偵測除了反應速度較固定式快速以外, 還擁有容易實現架構的優點 本論文針對以上兩點做為深入探討方向, 綜合上述論文歸納出以藍芽傳輸及斜率實作溫度感測 ; 並改善上述論文的單點傳輸的缺點, 以藍芽建構出多點傳輸資料系統 - 2 -

8 1. 系統流程圖 圖 1.1 系統流程圖 - 3 -

9 2. 硬體流程圖 開始 AT89S 51 設定 P1.0 值 通道 0 CD 4051 多工器判斷 通道 1 溫度感測器 溼度感測器 ADC 轉換 ADC 轉換 AT89S51 將數值轉為 16 進位 AT89S51 將數值轉為 16 進位 將值由藍芽傳送至 PC 端 將值由藍芽傳送至 PC 端 圖 2.1 硬體流程圖 - 4 -

10 3. 藍芽 藍芽技術是新一代無線連結科技, 原理是在 2.45 GHz 的頻帶上傳輸, 除了數位資料外, 也可以傳送聲音 每個藍芽技術連接裝置都具有根據 IEEE 802 標準所制定的 48-bit 地址 ; 可以一對一或一對多來連接, 傳輸範圍最遠在 100 公尺, 為我們帶來了更快 更遠 更安全 更方便的網路傳輸方式 3.1 藍芽使用特點 (1) 頻帶範圍 : 使用全世界通用, 不受法令限制的 2.4~4.5GHz 頻帶 (2) 傳輸範圍 :10 公尺到 100 公尺 (3) 最多可進行 1 對 7 的傳輸 (4) 傳輸最大資料量為 1Mbps (5) 每分鐘變換頻率一千六百次 3.2 藍芽使用優點 (1) 資料傳送穩定度高, 不易受到周邊環境干擾 (2) 因為藍芽是屬於低功率, 可以減少電磁波傷害 (3) 比傳統式的紅外線傳輸更快, 不需相互對轉傳輸阜, 使用上更加方便 (4) 低耗電, 節省能源 3.3 藍芽的應用 (1) 取代纜線 : 提供所有行動裝置的無線傳輸功能, 如語音傳輸的免持式聽筒 數位傳輸的週邊設備, 或是指令傳輸的控制設備 (2) 個人隨意網路 : 建構一個隨時隨地提供網路的環境, 以分享網路內其他電腦的資源 - 5 -

11 4. 實驗方法與步驟 4.1 第一階段實驗實驗方法 : 使用可變電阻和 LED 排燈做為輸入與輸出, 將可變電阻與 ADC0804 連結做資料的類比數位轉換, 再由 ADC0804 的數位資料傳至 8051 做數值大小的比較, 數值變大 LED 亮 D1 燈, 數值變小 LED 亮 D0 燈, 將結果輸出至 LED 排燈 開始 可變電阻 ADC 轉換 AT89S51 做數值大小比較 數值變大 排燈 D0 亮 數值變小 排燈 D1 亮 圖 第一階段硬體流程圖 開始 10H=NULL ADC 轉換 儲存到 A 暫存器 A 與 10H 比較 不同 偵測進位旗標 C=0 排燈 D1 亮 C=1 相同 排燈 D0 亮 把目前的值存入 10H 圖 第一階段系統流程圖 實驗結果 : 單純抓數值, 作數值大小的判斷, 為之後的斜率判斷做為基礎 - 6 -

12 4.2 第二階段實驗實驗方法 : 一樣使用可變電阻和 LED 排燈做為輸入與輸出, 將可變電阻與 ADC0804 連結做資料的類比數位轉換, 由 ADC0804 的數位資料傳至 8051 作可變電阻轉動快慢的判斷, 當可變電阻轉動越快 LED 排燈亮越多燈, 將結果輸出至 LED 排燈 開始 可變電阻 ADC 轉換 AT89S51 判斷斜率 斜率變大 排燈亮越多 斜率變小 排燈亮越少 圖 第二階段硬體流程圖 開始 DATA=NULL 啟動中斷模式 等待中斷 ADC 轉換 儲存到 A 暫存器 A 備份到 DATA2 DATA1 與 A 相減 偵測進位旗標 C=0 A 分為八等分顯示相對應燈號 把 DATA2 覆蓋到 DATA1 C=1 把 DATA2 覆蓋到 DATA1 圖 第二階段系統流程圖 實驗結果 : 先以可變電阻作為測量依據, 做為之後溫度感測器測量溫度高低的基礎 - 7 -

13 4.3 第三階段實驗實驗方法 : 將可變電阻改為溫度感測器, 利用 OP 放大電路將溫度感測器所測到的數值做放大, 把放大後的數值傳輸至 ADC0804, 將類比資料轉為數位資料傳至 8051, 在 8051 做斜率的計算, 若溫度越高 LED 排燈亮越多格 開始 溫度感測器 ADC 轉換 AT89S51 判斷斜率 斜率變大 排燈亮越多 斜率變小 排燈亮越少 圖 第三階段硬體流程圖 開始 DATA=NULL 啟動中斷模式 等待中斷 ADC 轉換 儲存到 A 暫存器 A 備份到 DATA2 DATA1 與 A 相減 偵測進位旗標 C=0 A 分為八等分顯示相對應燈號 把 DATA2 覆蓋到 DATA1 C=1 把 DATA2 覆蓋到 DATA1 圖 第三階段系統流程圖 實驗結果 : 以溫度感測器測量到溫度的數值變化, 利用先前斜率方法判斷溫度是否異常上升 - 8 -

14 4.4 第四階段實驗實驗方法 : 將溫度感測器接上藍芽傳輸部分, 由 PC 接收端設定通訊埠 鮑率 同步位元 資料長度及停止位元, 把溫度感測的感測數值經由藍芽傳輸至指定的通訊埠, VB 開啟指定的通訊埠, 將其數值存置資料庫, 再將數值由 VB 視窗顯示 開始 溫度感測器 ADC 轉換 AT89S51 將數值轉為 16 進位 由七段顯示器輸出 將值由藍芽傳送至 PC 端 圖 第四階段硬體流程圖 開始 建立溫度表 DATA1=NULL 啟動中斷模式 等待中斷 ADC 轉換 儲存到 A 暫存器 比對溫度表數值存到 A 暫存器 將 A 暫存器數值輸出到七段顯示器 將 A 暫存器 16 進制轉 10 進制 傳送給藍芽 圖 第四階段系統流程圖 實驗結果 : 將溫度感測器感測到數值, 傳輸到 8051 做判斷, 之後再由藍芽傳輸至 PC 端的 VB 視窗上顯示出來 - 9 -

15 4.5 第五階段實驗實驗方法 : 同時接上溫度感測器以及濕度感測器, 由 PC 接收端設定通訊埠 鮑率 同步位元 資料長度及停止位元, 把溫度感測數值和濕度感測數值經由藍芽傳輸至指定的通訊埠, 用 VB 開啟指定的通訊埠, 將其數值存置資料庫, 再將數值由 VB 視窗顯示 開始 AT89S51 設定 P1.0 值 通道 0 CD4051 多工器判斷 通道 1 溫度感測器 濕度感測器 ADC 轉換 ADC 轉換 AT89S51 將數值轉為 16 進位 AT89S51 將數值轉為 16 進位 由七段顯示器 將值由藍芽傳送 由七段顯示器 將值由藍芽傳送 輸出 至 PC 端 輸出 至 PC 端 圖 第五階段硬體流程圖 開始 多工器初始化 建立溫度表 濕度表 DATA1=NULL 啟動中斷模式 等待中斷 多工器通道 A=0 開啟溫度表 A=1 開啟濕度表 ADC 轉換 ADC 轉換 儲存到 A 暫存器 儲存到 A 暫存器 比對溫度表數值存到暫存器 A 比對溫度表數值存到暫存器 A 將 A 暫存器數值輸出到七段顯示器 將 A 暫存器數值輸出到七段顯示器 將 A 暫存器 16 進制轉 10 進制 將 A 暫存器 16 進制轉 10 進制 傳送給藍芽 圖 第五階段系統流程圖實驗結果 : 將溫度感測器及濕度感測器感測到的數值, 傳輸到 8051 做判斷, 之後再由藍芽分批傳輸至 PC 端的 VB 視窗上顯示出來

16 5. 硬體介紹 5.1 AT89S51 主要功能 (1)8 位元 CPU (2)4KB 內部程式記憶體, 最大可擴充至 64KB (3)128Bytes 內部資料記憶體, 最大可擴充至 64KB (4) 具有邏輯代數運算功能 ( 位元邏輯 ) (5)4 組可位元定址的 I/O 埠 P0 P1 P2 P3 (6)2 組 16 位元計時 / 計數器 T0 T1 (7)5 個中斷源 INT0 INT1 T0 T1 RXD TXD (8)1 組全雙工串列埠 UART 圖 AT89S51 單晶片接腳及功能 腳位介紹如下 : (1)VCC: 接正電源 5V (2)GND: 接地 (3)PORT0: 可做一般 I/O 使用, 外部記憶體擴充時, 當作資料匯流排 (D0~7) 及位址匯流排 (A0~7) (4)PORT1: 一般 I/O 使用, 內部設有提升電阻 (5)PORT2: 一般 I/O 使用, 內部也有提升電阻, 外部記憶體擴充時, 當作位址匯流排 (A8~15) 使用 (6)RST: 晶片重置信號輸入腳, 只要輸入一高電位脈衝, 大於 2 個機械週期, 就可以完成重置動作

17 (7)PSEN: 當作程式儲存致能外部程式記憶體之讀取脈波, 在每個機械週期會動 2 次, 外接 ROM 時, 與 ROM 的 /OE 腳連接 (8)EA/VPP: 接高電位時, 讀取內部程式記憶體 ; 接低電位時, 讀取外部程式記憶體 (9)XTAL1,XTAL2: 接石英晶體振盪器, 工作機械週期 = 1/12MHz 石英晶體 5.2 藍芽模組 HL-MD08R-C1AM 圖 HL-MD08R-C1AM 接腳圖 當連接其他設備請注意 TX 應與 RX 對接, 資料才能對傳 腳位介紹如下 : (1) 腳位 1 為 +5V (2) 腳位 2 為 GND (3) 腳位 4 為 TX (4) 腳位 5 為 RX 5.3 藍芽 HL-MD08P-C1M 多工接收器 圖 HL-MD08P-C1M 介紹 我們使用 HL-MD08P-C1M 當 Sever 端接收 HL-MD08R-C1AM 所傳來的所有數值

18 5.4 ADC0804 介紹與特性 ADC 是類比轉數位的 IC, 具有 8 位元解析能力 輸出為 8Bit 的 2 進制碼 轉換 時間約為 100μS 採取差動式類比輸入 三態式數位輸出 圖 ADC0804 接腳圖腳位介紹如下 : (1) 腳位 分別為 CS RD WR INTR 控制信號端, 使 A/D 可與微處理機配合使用 (2) 腳位 4 為時脈輸入接腳, 時脈可由外接輸入或內建時脈電路產生 將腳 4 接電容 CT, 腳 19 接電組 RT 即可 (3) 腳位 6 與腳位 7 為類比信號輸入端 (4) 腳位 8 與腳位 10 分別為類比及數位的接地端 (5) 腳位 9 為二分之一的參考電壓 VREF/2, 若不接電壓, 則腳位 20 的電源電壓成為參考電壓 (6) 腳位 11~18 為二進制數位信號輸出端 腳 11 為 MSB, 腳 18 為 LSB (7) 腳位 20 為 VCC, 電壓輸入為 4.5~6.3V 5.5 熱敏電阻熱敏電阻是一種高溫度系數的電阻體, 此電阻值會隨著溫度的變化而改變, 可分為正溫度系數與負溫度系數 (1) 正溫度系數 : 當溫度上升時, 電阻值也會跟著上升 (2) 負溫度系數 : 當溫度上升時, 電阻值則會隨之下降

19 電阻 ( 千歐姆 ) 5.6 CM-R 濕度感應器 CM-R 是一種耐水性強的感應器可放置水中達 10 分鐘 CM-R 是電阻式感測器, 會隨著濕度變化而改變 濕度愈高電阻愈低, 為負濕度電阻係數 CM-R 特性 :(1) 耐水性強 (2) 穩定性強 (3) 溫差少 (4) 響應快 (5) 測量範圍寬 表 CM-R 電器特性 型號 CM-R 額定電壓 5VAC Max.(Sine wave) 額定功率 5mW.AC(MAX) 使用溫度範圍 -20 to 70 使用濕度範圍 95%RH or Less 使用頻率範圍 100Hz~10kHz 標準電阻值 31K ohm(at 25,60 ) 儲存溫度範圍 -20~85 儲存濕度範圍 95%RH or Less 周波數依存性 2%RH 響應時間 60sec(30%RH<=>90%RH) 6000 CM-R 基本特性 相對溼度 (%RH) 圖 CM-R 基本特性圖

20 5.7 CD4501B CD4051 是八選一模擬開關 它是一個帶有禁止端 (INH) 和三位譯碼端 (A B C) 控制的 8 路模擬開關電路 ; 各模擬開關均為雙向, 既可實現 8 線 1 線傳輸信號, 也可實現 1 線 8 線傳輸信號 圖 CD4051 接腳圖 表 CD4051 真值表

21 6. 軟體介紹 6.1 KEIL C 程式設計 KEIL C 是一套在 Windows 環境下 8051 單晶片整合性開發介面, 提供編輯器以及編寫程式及說明文件, 可以協助我們編寫 翻譯 ( 包含 C 的編譯器 C51 Compiler 以及 A51 組譯器 ) 除錯測試嵌式系統程式 圖 開啟 KEIL C 程式軟體 圖 開一個專案

22 圖 選取自己想要存放的資料夾, 並取名之後在後面加上 ASM 檔名 圖 選取 ATMEL

23 圖 選取選單下面的 AT89S51 之後按確定 圖 按 YES 允許加入專案

24 圖 選取左邊資料夾, 往下選取下面的文件檔 圖 將文件按兩下

25 圖 選取上方選端的 FLASH Configure 圖 按選單上的 output, 勾選 Create Hex File

26 圖 將選單的 Target 目錄底下將頻率改成 12M HZ, 然後按確定 圖 然後將程式打好之後按下編譯按鈕, 如無錯誤即可進行燒錄

27 6.2 ISP 燒錄軟體 圖 開啟 ISP 介面 圖 按 Open File 選取剛剛建立好的 Hex 檔案, 按開啟之後

28 圖 在按下 Write 按之後即可燒錄

29 程式碼 DATA1 EQU DATA2 EQU DATA3 EQU 33H DATA4 EQU 34H 30H 31H FLAG EQU 20H.0 SEC EQU 32H START: LOOP: ORG 00H JMP START ORG 0BH JMP TIMER0 MOV P2,#00H CLR P2.1 CLR P2.0 MOV SEC,#51 // 跳至 START 副程式 MOV SCON,#50H SETB EA // 設定中斷向量致能開關, 使 6 個中斷功能 可以使用 SETB ET0 / 啟動 TIMER0 MOV TMOD,#21H MOV TH0,#8AH MOV TL0,#0CFH SETB TR0 // 設定中斷向量模式在 MODE1(16 位元的計 時 / 計數器 ) ;0.1ms // 設定 TIMER0 高位元 // 設定 TIMER0 低位元, 兩者差值即為倒數 秒數 MOV TH1,#0FDH SETB TR1 //TR0 為 TIMER0 的啟動位元, 當 TR0 為 1 CLR FLAG // 以下為主程式 時啟動 TIMER0 // 清除旗標位元 JMP LOOP // 主程式結束

30 //A 暫存器 : 用來儲存目前抓取訊號,DATA1 位址 : 用來存取前一次訊號, 以方 便做比較判讀,DATA2: 用來備份的暫存 TIMER0: PUSH ACC K1: K2: MARK2: DA1: DA2: DA3: MOV R7,SEC DJNZ R7,MARK2 MOV SEC,#51 MOV A,#00H MOV 20H,P2 CJNE A,20H,K1 MOV DPTR,#TABLE JMP K2 MOV DPTR,#TABLE1 JB P3.5,$ MOVX MOVC CJNE A,#10H,DA1 SUBB A,#06H JMP GO MOV SEC,R7 MOV TH0,#3CH MOV TL0,#0AFH POP ACC RETI JC DA2 CJNE A,#20H,DA3 SUBB A,#0CH JMP GO JMP GO JC DA4 // 預防 A 值 ( 目前抓取訊號 ) 被改變, 先將 A 值 PUSH 到 ACC( 堆疊 ) 當作備份暫存 // 發送一個脈波 // 偵測 P3.5 改變, 收集環境資訊 // 偵測可變電阻 ( 訊號產生器 ) 改變值

31 DA4: DA5: DA6: DA7: DA8: DA9: DA10: GO: CJNE A,#30H,DA5 SUBB A,#12H JMP GO CLR C SUBB A,#06H JMP GO JC DA6 CJNE A,#40H,DA7 SUBB A,#18H JMP GO CLR C SUBB A,#0CH JMP GO JC DA8 CJNE A,#50H,DA9 SUBB A,#1EH JMP GO CLR C SUBB A,#12H JMP GO JC DA10 SUBB A,#1EH JMP GO CLR C SUBB A,#18H JMP GO MOV R1,A MOV A,#00H MOV 20H,P2 CJNE A,20H,T2-26 -

32 CLR C MOV A,R1 MOV DATA2,A SUBB A,DATA1 JC SAFE CJNE A,#03H,WAR MOV R4,#200 MOV R5,#200 MOV R6,#200 PLUSE: CLR P3.4 MOV A,R6 DJNZ ACC,$ SETB P3.4 MOV A,R6 DJNZ ACC,$ DJNZ R5,PLUSE MOV DATA1,DATA2 MOV A,DATA2 JMP CON WAR: JC SAFE MOV R5,#200 MOV R6,#200 PLUSE1: CLR P3.4 MOV A,R6 DJNZ ACC,$ SETB P3.4 MOV A,R6 DJNZ ACC,$ DJNZ R5,PLUSE1 MOV DATA1,DATA2 MOV A,DATA2 JMP CON SAFE: MOV DATA1,DATA2 MOV A,DATA2-27 -

33 JMP CON T2: MOV A,R1 MOV DATA4,A CLR C SUBB A,DATA3 JC SAFE1 CJNE A,#03H,WAR1 MOV R5,#200 MOV R6,#200 PLUSE2: CLR P3.4 MOV A,R6 DJNZ ACC,$ SETB P3.4 MOV A,R6 DJNZ ACC,$ DJNZ R5,PLUSE2 MOV DATA3,DATA4 MOV A,DATA4 JMP CON WAR1: JC SAFE1 MOV R5,#200 MOV R6,#200 PLUSE3: CLR P3.4 MOV A,R5 DJNZ ACC,$ SETB P3.4 MOV A,R5 DJNZ ACC,$ DJNZ R5,PLUSE3 MOV DATA3,DATA4 MOV A,DATA4 JMP CON SAFE1: MOV DATA3,DATA4-28 -

34 CON: MOV A,DATA4 MOV R1,A MOV A,#00H MOV 20H,P2 CJNE A,20H,H1 MOV A,R1 MOV SBUF,#02h JNB TI,$ CLR TI MOV SBUF,#01h JNB TI,$ CLR TI H1: MOV SBUF,A JNB TI,$ CLR TI JMP MARK3 MOV SBUF,#02h JNB TI,$ CLR TI MOV A,R1 MOV SBUF,#02h JNB TI,$ CLR TI MOV SBUF,A JNB TI,$ CLR TI JMP MARK3 // 跳至 MARK3 MARK1: JMP MARK3 // 跳到 MARK3 MARK3: CPL P

35 MOV TH0,#0FFH MOV TL0,#9BH POP ACC RETI DELAY: MOV R2,#200 F1: MOV R3,#200 DJNZ R3,$ DJNZ R2,F1 RET TABLE: DB 00H DB 25H DB 44H DB 62H DB 00H DB 26H DB 45H DB 62H DB 00H DB 27H DB 46H DB 63H DB 01H DB 28H DB 47H DB 63H DB 02H DB 29H DB 48H DB 64H DB 03H DB 49H DB 64H DB 04H DB 50H DB 65H DB 05H DB 51H DB 65H DB 06H DB 51H DB 66H DB 07H DB 32H DB 52H DB 66H DB 08H DB 33H DB 53H DB 67H DB 09H DB 34H DB 54H DB 67H DB 10H DB 35H DB 55H DB 68H DB 11H DB 36H DB 55H DB 68H DB 12H DB 37H DB 56H DB 68H DB 13H DB 38H DB 56H DB 69H DB 15H DB 39H DB 57H DB 69H DB 17H DB 40H DB 58H DB 69H DB 20H DB 41H DB 59H DB 70H DB 21H DB 41H DB 60H DB 22H DB 42H DB 60H DB 23H DB 42H DB 61H DB 24H DB 43H DB 61H

36 TABLE1: DB 16H DB 26H DB 32H DB 32H DB 16H DB 26H DB 26H DB 32H DB 16H DB 27H DB 26H DB 26H DB 17H DB 27H DB 26H DB 26H DB 17H DB 27H DB 27H DB 26H DB 17H DB 27H DB 27H DB 27H DB 18H DB 28H DB 27H DB 27H DB 18H DB 28H DB 27H DB 27H DB 18H DB 28H DB 28H DB 27H DB 18H DB 28H DB 28H DB 28H DB 19H DB 29H DB 28H DB 28H DB 19H DB 29H DB 28H DB 28H DB 19H DB 29H DB 29H DB 28H DB 19H DB 29H DB 29H DB 29H DB 20H DB 29H DB 29H DB 20H DB 29H DB 29H DB 20H DB 29H DB 21H DB 21H DB 21H DB 22H DB 22H DB 22H DB 23H DB 23H DB 23H DB 24H DB 24H DB 24H DB 24H DB 25H DB 32H DB 25H DB 32H DB 25H DB 32H DB 32H DB 25H DB 32H DB 32H DB 32H DB 26H DB 32H DB 32H DB 26H DB 26H DB 32H DB 32H DB 26H

37 DB 26H DB 33H DB 37H DB 42H DB 27H DB 33H DB 37H DB 42H DB 27H DB 33H DB 37H DB 42H DB 27H DB 33H DB 37H DB 42H DB 27H DB 33H DB 38H DB 42H DB 28H DB 33H DB 38H DB 43H DB 28H DB 33H DB 38H DB 43H DB 28H DB 33H DB 38H DB 43H DB 28H DB 33H DB 38H DB 43H DB 29H DB 34H DB 38H DB 43H DB 29H DB 34H DB 38H DB 43H DB 29H DB 34H DB 38H DB 43H DB 29H DB 34H DB 38H DB 44H DB 34H DB 39H DB 44H DB 34H DB 39H DB 44H DB 34H DB 39H DB 44H DB 34H DB 39H DB 44H DB 35H DB 39H DB 44H DB 35H DB 39H DB 44H DB 35H DB 39H DB 45H DB 35H DB 39H DB 45H DB 35H DB 40H DB 45H DB 35H DB 40H DB 45H DB 35H DB 40H DB 45H DB 35H DB 40H DB 45H DB 36H DB 40H DB 45H DB 36H DB 40H DB 46H DB 36H DB 40H DB 46H DB 36H DB 41H DB 46H DB 32H DB 36H DB 41H DB 46H DB 32H DB 36H DB 41H DB 46H DB 32H DB 36H DB 41H DB 46H DB 32H DB 36H DB 41H DB 46H DB 32H DB 37H DB 41H DB 47H DB 32H DB 37H DB 41H DB 47H DB 32H DB 37H DB 42H DB 47H DB 32H DB 37H DB 42H DB 47H

38 DB 47H DB 47H DB 47H DB 48H DB 48H DB 48H DB 48H DB 48H DB 48H DB 48H DB 49H DB 49H DB 49H DB 49H DB 49H DB 49H DB 49H DB 50H DB 50H DB 50H DB 51H DB 51H DB 51H DB 52H DB 52H DB 52H DB 53H DB 53H DB 53H DB 54H DB 54H DB 54H DB 55H DB 55H DB 55H DB 56H END DB 56H DB 56H DB 57H DB 57H DB 57H DB 58H DB 58H DB 58H DB 58H DB 59H DB 59H DB 59H DB 59H DB 60H DB 61H DB 62H DB 63H DB 64H DB 65H DB 66H DB 67H DB 68H DB 68H DB 69H DB 69H DB 70H DB 71H DB 73H DB 75H DB 77H DB 79H DB 82H DB 85H DB 88H

39 6.4 Microsoft Visual Basic 6.0 介面設計 在工作列上按下右鍵, 選擇 設定使用元件, 如圖 所示 圖 選擇使用元件 選擇要使用的元件 在 控制項 分頁選擇要使用的元件, 分別為 Microsoft ADO Data Control 6.0(OLEDB) Microsoft Chart Control 6.0(OLEDB) Microsoft Comm Control 6.0 Microsoft DataGrid Control 6.0(OLEDB) 圖 選擇設定元件

40 在工具列選擇 Timer 並新增 圖 新增 Timer 將所有元件新增的畫面如圖 所示 圖 將所有元件新增

41 在 Adodc 元件上按右鍵, 選擇 ADODC 的屬性 圖 Adodc 屬性設定 在 一般 分頁下選擇 使用連線字串 點選 建立, 在 提供者 分頁上選 擇 Microsoft Jet 4.0 OLE DB Provider 點選 下一步, 如圖 所示 圖 設定 Adodc 設定提供者

42 在 選擇或輸入資料庫名稱 下選擇要對應的資料表 ( 或資料庫 ), 再點選 測試 連線, 再點選 確定 如圖 所示 圖 選擇資料表 ( 資料庫 ) ADODC 的屬性頁面下, 資料錄來源 分頁選擇, 命令類型 選擇 2 ad Cmd Table, 資料表或預存程序名稱 選擇要連線的資料表, 如圖 所示 圖 選擇資料表 ( 資料庫 ) 連線

43 在工具列中點選 DataGrid 元件在資料庫的 Frame 拉取元件, 如圖 所示 圖 拉取 DataGrid 元件 點選拉取出來的 DataGrid 元件, 在屬性視窗的 DataSource 項目中選取 Adodc, 如圖 所示 圖 選擇 DataGrid 連線

44 在工具列中的 Shape 拉取三個圓形元件, 圖 所示 圖 拉取 Shape 元件

45 6.5 Microsoft Visual Basic 6.0 程式碼 Dim SysSet As String Dim ComPort As Single Dim DataBit As Single Dim StopBit As Single Dim BaudRate As Single Dim Count_clr As Integer Dim L As Integer Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim Arr() As Byte Dim buffer As String Dim s() As String Dim a As Integer Dim b As Integer Dim c As Integer Dim k As Integer Dim s11 As Integer Dim s12 As Integer Dim s21 As Integer Dim s22 As Integer Dim s31 As Integer Dim s32 As Integer Dim t11 As Integer Dim t12 As Integer Dim t21 As Integer Dim t22 As Integer Dim t31 As Integer Dim t32 As Integer Dim sp1 As Integer Dim sp2 As Integer Dim sp3 As Integer Dim chose As Integer Private Sub btnset_click() '************************* 'RS232 設定 '************************* ComPort = (Text1.Text)

46 MSComm2.CommPort = ComPort DataBit = (Text2.Text) StopBit = (Text3.Text) BaudRate = (Text4.Text) SysSet = BaudRate & "," & "n" & "," & DataBit & "," & StopBit MSComm2.Settings = SysSet MSComm2.RThreshold = 1 MSComm2.InputMode = cominputmodebinary MSComm2.PortOpen = True s11 = 0 s21 = 0 s21 = 0 s22 = 0 s31 = 0 s32 = 0 btnset.enabled = False Shape1.BackColor = RGB(0, 255, 0) ' 設定燈亮 Shape2.BackColor = RGB(0, 255, 0) ' 設定燈亮 Shape3.BackColor = RGB(0, 255, 0) ' 設定燈亮 End Sub Private Sub close_click() chose = 0 ' 關閉偵測 End Sub Private Sub Command1_Click() End Sub sp1 = 0 sp2 = 0 sp3 = 0 Shape1.BackColor = RGB(0, 255, 0) ' 設定燈恢復原狀 Shape2.BackColor = RGB(0, 255, 0) ' 設定燈恢復原狀 Shape3.BackColor = RGB(0, 255, 0) ' 設定燈恢復原狀 Private Sub Form_Load() Text1.Text = "1" ' 初始設定 Text2.Text = "8" Text3.Text = "1" ' 初始設定 ' 初始設定 Text4.Text = "9600" ' 初始設定 chose = 0 ' 初始設定

47 End Sub Private Sub open_click() chose = 1 ' 開啟偵測 End Sub Private Sub Timer1_Timer() Text6.Text = Now ' 系統時間 End Sub Private Sub Timer2_Timer() On Error Resume Next Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB_Temp.mdb" conn.open rs.open "select * from Temp", conn, adopenkeyset, adlockoptimistic If MSComm2.InBufferCount > 0 Then If chose = 1 Then ' 判斷是否有開啟偵測 Arr = MSComm2.Input ' 把接收端的值丟進 Arr For i = LBound(Arr) To UBound(Arr) buffer = buffer + Hex(Arr(i)) + Chr(32) ' 將值改成 16 進位 Next i Text5.Text = buffer s = Split(buffer, " ") a = 0 + k b = 1 + k c = 2 + k s(c) = "&H" + s(c) Label2.Caption = s(a) Label6.Caption = s(b) Label7.Caption = CLng(s(c)) ' 將 buffer 分割 'a 為佈點位置 'b 為溫度或濕度的點 'c 為偵測值 ' 將 c 改成 10 進位 j = Adodc2.Recordset.RecordCount Label8.Caption = j ' 判斷為第幾個佈點 Select Case s(a) Case 1 Select Case s(b) Case 1 s11 = CLng(s(c)) ' 判斷是否為溫度

48 Case 2 Case 2 s12 = CLng(s(c)) End Select Select Case s(b) Case 1 s21 = CLng(s(c)) Case 2 s22 = CLng(s(c)) ' 判斷是否為濕度 ' 判斷是否為溫度 ' 判斷是否為濕度 End Select Case 3 ' 判斷是否為佈點 3 Select Case s(b) Case 1 s31 = CLng(s(c)) Case 2 s32 = CLng(s(c)) End Select End Select ' 前一筆資料值 t11 = Adodc2.Recordset(1).OriginalValue t12 = Adodc2.Recordset(2).OriginalValue t21 = Adodc2.Recordset(3).OriginalValue t22 = Adodc2.Recordset(4).OriginalValue t31 = Adodc2.Recordset(5).OriginalValue t32 = Adodc2.Recordset(6).OriginalValue ' 判斷是否為溫度 ' 判斷是否為濕度 Adodc2.Recordset.AddNew ' 將偵測到的值存進資料庫 Adodc2.Recordset(" 時間 ") = Text6.Text Adodc2.Recordset(" 溫度 1") = s11 Adodc2.Recordset(" 濕度 1") = s12 Adodc2.Recordset(" 溫度 2") = s21 Adodc2.Recordset(" 濕度 2") = s22 Adodc2.Recordset(" 溫度 3") = s31 Adodc2.Recordset(" 濕度 3") = s32 Adodc2.Recordset.Update ' 更新資料庫 ' 顯示偵測到的值 Text7.Text = s11 Text8.Text = s

49 Text9.Text = s21 Text10.Text = s22 Text11.Text = s31 Text12.Text = s32 k = k + 3 ' 斜率判斷區 If t11 > 0 Then If s11 - t11 >= 3 Then sp1 = 1 End If ElseIf s11 - t11 <= -3 Then sp1 = 1 End If If t12 > 0 Then If s12 - t12 >= 3 Then sp1 = 1 End If ElseIf s12 - t12 <= -3 Then sp1 = 1 End If If t21 > 0 Then If s21 - t21 >= 3 Then sp2 = 1 End If ElseIf s21 - t21 <= -3 Then sp2 = 1 End If If t22 > 0 Then If s22 - t22 >= 3 Then sp2 = 1 End If ElseIf s22 - t22 <= -3 Then sp2 = 1 End If If t31 > 0 Then If s31 - t31 >= 3 Then sp3 = 1 End If ' 繼續下一筆資料位置

50 ElseIf s31 - t31 <= -3 Then sp3 = 1 End If If t32 > 0 Then If s32 - t32 >= 3 Then sp3 = 1 End If ElseIf s32 - t32 <= -3 Then sp3 = 1 End If ' 如果有危險亮紅燈 If sp1 = 1 Then Shape1.BackColor = RGB(255, 0, 0) End If If sp2 = 1 Then Shape2.BackColor = RGB(255, 0, 0) End If If sp3 = 1 Then Shape3.BackColor = RGB(255, 0, 0) End If End If End If 'MSChart 設定的部分 With MSChart1.chartType = 3 ' 以線條方式顯示.Plot.Axis(VtChAxisIdY).ValueScale.Auto = True.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 1 ' 設置每格為 1.ColumnCount = 6.Title.Text = " 溫度與時間對應曲線 ".ShowLegend = True If rs.recordcount > 0 Then Else End If rs.movefirst Exit Sub

51 For L = 0 To rs.recordcount - 1.Column = 1.RowCount = rs.recordcount.row = L + 1.RowLabel = CStr(rs(" 時間 ")).Plot.AutoLayout = False.Plot.UniformAxis = False.Data = rs(" 溫度 1").ColumnLabel = " 溫度 1".Column = 2.Data = rs(" 濕度 1").ColumnLabel = " 濕度 1".Column = 3.Data = rs(" 溫度 2").ColumnLabel = " 溫度 2".Column = 4.Data = rs(" 濕度 2").ColumnLabel = " 濕度 2".Column = 5.Data = rs(" 溫度 3").ColumnLabel = " 溫度 3".Column = 6.Data = rs(" 濕度 3").ColumnLabel = " 濕度 3" rs.movenext Next End With End Sub

52 6.6 Protel DXP 2004 電路設計 圖 開啟 Protel DXP 2004 軟體 圖 點選 File -> New -> Schematic 電路圖

53 圖 Schematic 全圖 圖 紅色框框由左至右分別是畫線 排線 排線點 NetLabel 接地 電源 和元件

54 圖 點選紅色框框換元件型態 圖 更換不同的 Libraries, 以選擇不同元件

55 圖 完成電路圖後, 點選儲存 圖 命名以及將檔案儲存成.schdoc 檔, 整個電路圖就算完成

56 6.7 Protel DXP 2004 PCB 實體電路設計 圖 點選 File -> New -> PCB 電路圖 圖 PCB 電路製作圖

57 圖 上方框框由左至右分別劃線 接點 通道點 圓形圖 方塊圖 接點設 定 文字和元件, 下方框框則是選擇屬於哪一層 圖 PCB 電路圖製作完成, 點選儲存

58 圖 命名以及將檔案儲存成.PcbDoc 檔, 整個電路圖就算完成 圖 點選 File -> Fabrication Outputs -> Gerber Files 輸出線

59 圖 設置大小和選擇層級 圖 選擇底層和框線層

60 圖 輸出後無錯誤, 即可列印 圖 點選 File -> Fabrication Outputs -> NC Drill Files 輸出點

61 圖 設置大小 圖 輸出後無錯誤, 即可列印

62 7. 成果電路圖 圖 7.1 成果電路圖

63 圖 7.2 藍芽模組電路圖 圖 7.3 實體電路圖

64 8. 材料表表 8.1 材料規格表 名稱 型號 / 規格 數量 AT89S51 單晶片 40Pin 3 ADC0804 單晶片 20Pin 3 CD4051 單晶片 16Pin 3 石英振盪器 M Hz 3 電解電容 100 F 3 陶瓷電容 30pF 6 陶瓷電容 151pF 3 電阻 1k 6 電阻 10k 3 電阻 33k 3 電阻 熱敏電阻 UEI 溫度感測器 CM-R 3 藍芽多工接收器 HL-MD08P-C1M 1 藍芽模組 HL-MD08R-C1A 3 玻單感光板 10x15 cm 2 銅柱 2 cm 12 蜂鳴器 YMD IC 腳座 40Pin 3 IC 腳座 20Pin 3 IC 腳座 16Pin 3 電源線 110 V 轉 5 V

65 9. 實驗結果討論與特色 根據傳統溫度感測與紅外線控制技術 [11][12] 及本研究論文, 列出下列比較 表 : 表 9.1 比較表 論文 溫度感測與紅外線控 藍芽建構多點資料 項目 制技術 傳輸 傳輸距離 較短 (1m~5m) 較長 (1m~100m) 價格 便宜 昂貴 設備連接 一對一傳輸, 單點偵測 多對一傳輸, 多點偵測 傳輸的安全性 較差 較好 傳輸阻礙 有死角問題 沒有阻礙的問題 偵測方式 到達設定溫度做出反應 斜率達到危險值做出反應 感測範圍 感測範圍小 感測範圍廣 傳輸速度 較慢 較快 由上表得知紅外線傳輸技術, 其不足的地方在於傳輸距離過短 單點傳輸 死角及阻礙問題 感測範圍小, 於是我們使用藍芽傳輸技術改善紅外線傳輸上的缺點, 並針對傳統溫度感測設定溫度點的部分改用斜率計算, 以不同的偵測方式改善其偵測上的缺點, 並變成我們的特色 特色 : 1. 多點偵測 可感測多點溫度與濕度的數值, 也可將溫度或溼度感測器更換成其他種類之感測器, 並可將感測器佈點在很多地方, 達到多點多數值感測 2. 以斜率運算 我們使用的方法是斜率運算, 不同於傳統感測方法 -- 到一定溫度才發出警報, 斜率感測可快速知道現在溫度或現在溼度, 並知道是否該發出警報告知使用者 3. 遠端監看 採用藍芽連線, 不同於傳統紅外線連線方式, 藍芽連線可繞過傳送器與接收器中所有的障礙物, 最遠傳輸可到達 100 公尺, 以達到遠端監看之效果 4. 即時繪圖 資料傳送至後端電腦可提供即時繪圖與即時警訊之功能, 以便使用者觀看之用 5. 資料庫 資料庫紀錄所有佈點溫度與溼度之數值, 以便使用者分析 讀取數值之用

66 10. 結論我們參考了溫度感測與紅外線控制相關技術文件與論文, 得知紅外線還有許多不足的地方, 於是我們利用藍芽 HL-MD08R-C1A 晶片, 解決傳輸距離過短 單點傳輸 死角及阻礙問題 感測範圍小等問題, 藉由藍芽建構多點資料傳輸系統的實現, 其傳輸距離加大 多點傳輸 感測範圍變廣等優點改善了傳統紅外線技術的不足 藉由這次研究探討經驗, 讓我們對於藍芽傳送技術相關技術基礎有所了解, 對於接觸類似進階應用或是相關技術理解都有很大的幫助 11. 參考文獻 [1] 單晶片 8051 專題製作 / 郭庭吉 吳金戌編著 [2] 單晶片微電腦原理與應用 8051 / 蔡朝洋著 [3] 8051 入門 - 輕鬆學 / 楊明豐著 [4] Protel DXP 電腦輔助電路設計快速入門 / 張義和著 [5] Visual Basic 2008 程式設計 / 葉倍宏編著 [6] 微電腦控制 : 專題製作 :VB 串並列埠控制 / 陳永達 詹可文編著 [7] Visual Basic 6 程式語言入門與應用 / 許慶芳著 [8] Pocket PC 無線網路與 RS232 程式設計 / 龍仁光著 [9] Visual Basic 6.0 程式設計實務手冊 /John Clark Craig Jeff Webb 原著 ; 溫宗正 編譯 [10] 實用電腦流程圖學 COMPUTER FLOWCHARTING/ 許靈翔編著 [11] 廖奕豪 / 溫度感測與紅外線控制 / 朝陽科技大學資訊工程系專題成果報告 /December,2009 [12] 林冠伯 廖世雄 / 火災警報系統 / 國立勤益科技大學電子工程系專題報告 /January,2011 [13] 陳佑銓 / 無線多功能環境監測裝置 / 南台科技大學電子工程系專題成果報告 /June,2010 [14] 曾暄哲 傅得榮 楊家泰 / 火災警報系統 / 逢甲大學自動控制工程學系專題 論文 /June,

67 CYUT-CSIE B010 專題成果報告 以藍芽建構多點資料傳輸系統 朝陽科技大學資訊工程系