修平科技大學 電機工程系 -...

62
1 實務專題報告書 指導老師:謝承達主任 專題製作學生:四技電四甲王聖硯 BD101031 四技電四甲賴嘉泓 BD101033 中華民國一Ο四年十二月十六日 修平科技大學 電機工程系 DEPARTMENT OF ELECTRICAL ENGINEERING HSIU-PING UNIVERSITY OF SCIENCE AND TECHNOLOGY

Transcript of 修平科技大學 電機工程系 -...

  • 1

    實務專題報告書

    溫 室 遠 端 監 控 裝 置

    指導老師:謝承達主任

    專題製作學生:四技電四甲王聖硯 BD101031

    四技電四甲賴嘉泓 BD101033

    中華民國一Ο四年十二月十六日

    修平科技大學 電機工程系

    DEPARTMENT OF ELECTRICAL ENGINEERING

    HSIU-PING UNIVERSITY OF SCIENCE AND TECHNOLOGY

  • II

    摘要

    「溫室遠端監控裝置」是以 BH1750 光強度感測器以及 DHT11 溫濕度

    感測器作為感測元件,結合 8051 使溫室有密碼鎖、溫度控制、照度控制的

    功能,我們設定的溫度為 30 度以上時將會啟動風扇散熱,26 度以下時則會

    啟動加熱器升溫,溫度 26 度~30 度時將不會進行升溫及降溫動作,並且透

    過藍牙傳輸將溫度、濕度、照度數據回傳至手機遠控端。

  • III

    目錄

    Chapter 1 序論………………………………………………………………1

    1-1 動機……………………………………………………………………….1

    1-2 研究方向與目標………………………………………………………….2

    1-3 系統架構圖……………………………………………………………….3

    Chapter 2 相關硬體原理介紹與說明………………………………………4

    2-1 I2C 介紹………………………………………………………………4

    2-2 AT89S51 單晶片介紹……………………………………………………5

    2-2-1 AT89S51 介紹…………………………………………………………5

    2-2-2 ISP 介紹………………………………………………………………7

    2-3 BH1750 光強度感測器介紹…………………………………………8

    2-4 DHT11 溫溼度感測器介紹……………………………………………9

    2-5 HC-05 藍牙模組介紹 ……………………………………………1 0

    2-6 SSR 固態繼電器介紹…………………………………………………11

    2-7 Step motor 步進馬達介紹……………………………………………13

    2-8 極限開關介紹…………………………………………………………15

    2-9 磁簧開關介紹…………………………………………………………16

    Chapter 3 軟體工具與作業平台……………………………………………18

    3-1 Keilμ Vision5 介紹……………………………………………………18

    3-2 App Iventor 介紹………………………………………………………21

    3-2-1 App 程式編輯介面……………………………………………………22

    Chapter 4 實驗方法………………………………………………………24

    4-1 整體工作流程…………………………………………………………24

    4-1-1 專題製作工作流程……………………………………………………24

    4-1-2 專題製作時程…………………………………………………………25

    4-2 硬體電路設計與製作…………………………………………………26

    4-2-1 密碼鎖電路方塊圖…………………………………………………26

    4-2-2 密碼鎖電路圖………………………………………………………27

    4-2-3 密碼鎖流程圖………………………………………………………28

    4-2-4 密碼鎖實體照………………………………………………………29

  • IV

    4-2-5 溫溼度感測方塊圖……………………………………………………30

    4-2-6 溫溼度感測電路圖……………………………………………………31

    4-2-7 溫溼度感測電路流程圖……………………………………………32

    4-2-8 馬達板電路圖…………………………………………………………33

    4-2-9 動作流程說明…………………………………………………………35

    4-2-10 溫溼度感測PCB板洗電路製作………………………………………37

    4-2-11 溫溼度感測 PCB板實體照……………………………………………39

    4-3 軟體設計與製作原始碼撰寫說明……………………………………40

    4-3-1 跑馬燈程式……………………………………………………………40

    4-3-2 密碼鎖程式……………………………………………………………42

    4-3-3 溫濕度及照度感測程式………………………………………………44

    4-3-4 App Inventor 程式說明………………………………………………47

    Chapter 5 實驗結果………………………………………………………50

    5-1 實驗測試結果…………………………………………………………50

    Chapter 6 討論與結論……………………………………………………51

    6-1 討論…………………………………………………………………51

    6-2 結論…………………………………………………………………52

    6-3 製作過程圖…………………………………………………………53

    附錄一參考文獻……………………………………………………………54

    附錄二作者簡介……………………………………………………………56

  • V

    圖表目錄

    圖 1.1 系統架構圖…………………………………………………………..3

    圖 2.1 AT89S51 接腳圖與實體圖…………………………………………5

    圖 2.2 燒錄程式介面圖…………………………………………………….7

    圖 2.3 BH1750 實體圖……………………………………………………8

    圖 2.4 DHT11 實體圖……………………………………………………9

    圖 2.5 HC-05 腳位及實體圖…………………………………………………10

    圖 2.6 極限開關及接腳圖…………………………………………………15

    圖 3.1 Keil µVision5………………………………………………………….19

    圖 3.2 Keil µVision5 開發介面………………………………………………20

    圖 3.3 App Inventor2 開發介面………………………………………………22

    圖 3.4 App Inventor2 Blocks 編輯介面 1…………………………………….22

    圖 3.5 App Inventor2 Blocks 編輯介面 2………………………………………23

    圖 3.6 App Inventor2 Blocks 編輯介面 3…………………………………….23

    圖 3.7 App Inventor2 Blocks 編輯介面 4…………………………………….23

    圖 4.1 專題製作工作流程圖………………………………………………24

    圖 4.2 密碼鎖電路方塊圖…………………………………………………26

    圖 4.3 密碼鎖電路圖…………………………………………………………27

    圖 4.4 密碼鎖流程圖…………………………………………………………28

    圖 4.5 溫濕度感測方塊圖……………………………………………………30

    圖 4.6 溫濕度感測電路圖……………………………………………………31

    圖 4.7 溫濕度感測電路流程圖………………………………………………32

    圖 4.8 馬達板電路圖…………………………………………………………34

    表 2.1 MMC 信號說明…………………………………………………………4

    表 2.2 步進馬達激磁法……………………………………………………14

    表 4.1 專題製作時程表………………………………………………………25

  • VI

    照片 2.1 ISP 燒錄器實體圖………………………………………………...7

    照片 2.1 SSR 固態繼電器…………………………………………………12

    照片 2.2 步進馬達…………………………………………………………13

    照片 2.3 磁簧開關實體照…………………………………………………17

    照片 4.1 密碼鎖電路板實體照……………………………………………29

    照片 4.2 製作 PCB 電路板工具……………………………………………37

    照片 4.3 印製 PCB 電路至描圖紙…………………………………………37

    照片 4.4 電木單面感光板……………………………………………………37

    照片 4.5 覆蓋描圖紙至感光板並曝光………………………………………38

    照片 4.6 加入顯像劑並顯像…………………………………………………38

    照片 4.7 加入蝕刻劑並蝕刻…………………………………………………38

    照片 4.8 蝕刻完成、電路板變藍……………………………………………38

    照片 4.9 鑽孔…………………………………………………………………39

    照片 4.10 溫濕度感測 PCB 板………………………………………………39

    照片 4.11 溫濕度感測 PCB 板實測…………………………………………39

    照片 4.12 溫濕度感測 PCB 板測試 2…………………………………………39

    照片 5.1 密碼鎖功能實測……………………………………………………50

    照片 5.2 溫室整體功能實測…………………………………………………50

    照片 6.1 製作過程…………………………………………………………….53

  • 1

    Chapter 1 序論

    1-1 動機

    現今許多植物、水果、菌類,都是倚靠溫室植栽,才能在四季產出豐

    沛的成果,溫室可克服地理環境的限制,以及溫濕度的變化,然而大多數

    的溫室都擁有光照設備及溫濕度調節等等的功能,但並沒有明確回傳當前

    溫濕度、亮度等數據的功能,因此在這高科技的時代,我們想透過藍牙結

    合智慧型手機,使溫室的數據能夠回傳到務農或實驗人員手上,並進行簡

    易的操作。

  • 2

    1-2 研究方向與目標

    在這高科技的世代,智慧型手機及行動裝置的普遍使用之下,或許可

    以結合智慧型手機,以達到遠端操控,使遠在他處的務農或實驗人員,可

    以隨時監控溫室的相關數據,並進行基本的操控。

    利用感測器與藍牙及單晶片做結合,使溫濕度及照度的資料能回傳至

    主控端,並且能以智慧型手機的操作以達到控制溫室的溫度、遮陽等功能。

  • 3

    1-3 系統架構圖

    圖 1.1 系統架構圖

  • 4

    Chapter 2 相關硬體元件原理介紹說明

    2-1 I2C 介紹

    傳統上,當有多項裝置要連接到處理器時,各項裝置的住址線以及資料線

    會個別接到處理器上,如此一來,就佔用了處理器的腳位,使得處理器的

    IC 腳數目增加。為了解決這個問題,飛利浦公司在 1980 年代發展出所謂的

    交互整合電路(I2C)匯流排。I2C 是一個低頻寬、短距離的通訊協定。所

    有的裝置藉由兩條線連接在一起,這兩條線分別為串列資料線(SDA)和串

    列時脈線(SCL)。

    I2C匯流排是由飛利浦公司研發的一個二支腳位的序列匯流排,SDA

    資料腳位是作為輸入和輸出功能使用而SCL時脈腳位是用來控制和參考I2C

    匯流排。I2C單元允許應用程式處理器透過I2C匯流排來服務master和slave

    裝置。

    I2C單元啟動應用程式處理器與I2C周邊設備作溝通以及使用微控制器

    達成系統管理功能,I2C匯流排需要極少數的硬體來傳送有關於應用程式處

    理器系統到一個外部裝置的狀態和資料。

    I2C 單元是屬於應用程式處理器內部匯流排的一個周邊設備,資料是經由一

    個緩衝介面來傳送到 I2C 匯流排以及從 I2C 匯流排來接收,控制和狀態資

    訊是透過一組記憶體映像暫存器來傳送。

    信號說明 輸入/輸出 說明

    SDA 雙向 I2C 序列資料/位址信號

    SCL 雙向 I2C 序列時脈線信號

    表 2.1MMC 信號說明

  • 5

    2-2 AT89S51 單晶片介紹

    圖 2.1AT89S51 接腳圖與實體圖

    2-2-1 AT89S51 介紹

    單晶片就是精簡型微電腦晶片,晶片裡面也包含有 3 大系統:中央處

    理單元、輸入輸出單元、記憶單元。中央處理單元負責計算、邏輯判斷、

    提取指令與解碼的控制管理,輸入輸出單元作資料的輸入與結果的輸出,

    記憶單元中的 ROM 用來儲存程式碼,RAM 用來儲存運算結果或是輸入資

    料。

    89S51 是 8BIT的單晶片,有 4 個輸入輸出埠,RAM的大小為 128B,

    ROM 的大小為 4KB,從規格來看,就是微電腦系統的陽春版,很多電子

    品如機器人、音樂娃娃並不需要如電腦般強大功能的微電腦系統,因此,

  • 6

    會有所謂的單晶片,業界為了節省成本與增加毛利率,還有只有 8 隻腳的

    單晶片(2 隻電源腳、6 隻輸入輸出腳)。

    8051 是 INTEL 公司開發相當成功的單晶片,在教育界中用來當作單晶

    片學習的入門首選,由於其使用的普及,因此目前有好幾家設計半導體晶

    片的公司也有製造與 8051 相容的單晶片,而有些公司所製造出來的單晶片

    其執行的速度更快,可以高達 40MHz,若使用者想加快單晶片系統的執行

    速度時可以選用此一類型的 8051 晶片如圖 2.1 所示。

    由於 8051 在教育界的大量使用,業界也有不少的使用,所以未來的市場

    還是相當被看好。無怪乎還有眾多的廠商紛紛推出相容的單晶片,及支援

    8051 程式的發展工具。

    目前市面上還有一種名為AVR的單晶片(由ATMEL公司所開發及生產)。

    AVR 系列單晶片擁有 8051 及 PIC 的特色。AVR 單晶片是精簡指令集電腦

    (RISC)的微控制器(MCU),所有執行效能較 8051 好,但是卻有複雜指令集

    電腦(CISC)有較多較好用的指令可以用,以及原廠提供的完整開發工具,將

    使 AVR 單晶片更有競爭力。

  • 7

    2-2-2 ISP 簡介

    ISP(In System Program),它是一個可線上燒錄的功能,何謂可線上燒

    錄,就是使用者不需將 IC 從機器中取下,放在特定的燒錄器進行燒錄的動

    作,它可直接透過特定的傳輸介面,例如 UART 或 IIC,搭配特定的傳輸協

    定即可進行晶片抹除、寫入,為一便利的功能。但在執行此功能前須預先

    將 ISP 韌體程式透過燒錄器燒進晶片內,這樣才可以跟 PC 端的應用程式進

    行連結與溝通,這種方式我們稱之為 Internal ISP。

    圖 2.2 燒錄程式介面圖

    照片 2.1 ISP 燒錄器實體圖

  • 8

    2-3 BH1750 光強度感測器介紹

    BH1750 光強度感測器內置 16 位的轉換器,它能夠直接輸出一個數字

    信號,不需要再做複雜的計算。這是一種更精良的和容易使用簡易電阻器

    的版本,通過計算電壓,來獲得有效的數據。BH1750 能夠直接通過光度計

    來測量。光強度的單位是流明"lx"。當物體在均勻的光照下它能夠在每平方

    米獲得 1lx 的光通量,它們的光強度是 1lx。有時為了充分利用光源,可以

    增加一個光源的反射裝置。那樣在某些方向就能獲得更多的光通量,以增

    加被照表面的亮度。

    BH1750 之特性:

    (1)I2C 通訊介面(支援 F/S 模式)

    (2)接近於視覺靈敏度的分光特性

    (3)直接將照度值數位轉換 圖 2.3 BH1750 實體圖

    (4)高解析度與寬範圍的照度值(1 to 65535 lx)

    (5)可選擇兩個不同的 I2C 位址

    (6)可在不同環境光源下進行量測

    (7)內建 16-bit AD 轉換器

    (8)模組內建 I2C 通訊電壓準位轉換,因此可適用於 3V3 或 5V 微處理器

    系統

  • 9

    2-4 DHT11 溫溼度感測器介紹

    DHT11溫濕度感測器是一款含有已校準數字信號輸出的溫濕度複合感

    測器。感測器包括一個電阻式感濕元件和一個NTC測溫元件,並與一個高

    性能8位單晶片相連接。因此DHT11具有超快響應、抗干擾能力強、性價比

    極高等優點。

    DHT11 之特性:

    (1)體積小

    (2)低功率消耗

    (3)信號傳輸距離可達 20 米以上

    (4)供電範圍:3.0~5.5V

    (5)測濕濕度範圍: 20-90%RH

    (6)測溫溫度範圍:0-50℃

    (7)測濕精度:±5%RH

    (8)測溫精度: ±2℃

    圖 2.4 DHT11 實體圖

  • 10

    2-5 HC-05 藍牙模組介紹

    HC-05 和 HC-06 的硬體相同,都採用英國劍橋的 CSR (Cambridge

    Silicon Radio) 公司的 BC417143 晶片,支援藍牙 2.1+EDR 規範。HC-05 嵌

    入式藍牙串口通訊模組具有兩種工作模式:命令響應工作模式和自動連接

    工作模式,在自動連接工作模式下模組又可分為主(Master)、僕(Slave)

    和回環(Loopback)三種工作角色。當模組處於自動連接工作模式時,將

    自動根據事先設定的方式連接的數據傳輸;當模組處於命令響應工作模式

    時能執行下述所有 AT 命令,用戶可向模組發送各種 AT 指令,為模組設

    定控制参數或發布控制命令。通過控制模組外部引腳(PIO11)輸入電位,

    可以實現模塊工作狀態的動態轉換。

    圖 2.5HC-05 腳位及實體圖

  • 11

    2-6 SSR 固態繼電器介紹

    固態繼電器(Solid State Relay,縮寫:SSR)是由半導體控制負載流經

    固態開關的無接點繼電器,輸入端係利用發光二極體、光電晶體 、功率晶

    體等半導體電路所組成光耦合器,經內部控制電路觸發輸出端的矽控整流

    器(SCR)或雙向矽控整流器(TRIAC)進而導通負載電流,因此可以接受

    低壓直流或交流信號輸入之後,進而導通高壓、高功率之輸出電流,具隔

    離輸出入及控制高功率輸出電流之效果。

    SSR 之優點:

    (1) 具有良好的耐壓、防潮、防腐、防震等性能

    (2) 工作安全可靠且壽命長

    (3) 超過 2.5kV 的高耐壓、低觸發電流

    (4) 開關速度快,可與數位電路搭配

    (5) 不至於產生觸點燃弧火花、回跳噪音及電磁干擾等問題

    (6) 驅動功率低,可與大多數 IC 電路相容,不需另外加緩衝器或驅動器

    (7) 靈敏度與電磁相容性相對較好,轉換速率可達 ms~μs 等級

    SSR 之缺點:

    (1) 大多數 SSR為一體成型,因此負載增加時溫度升高,需加裝散熱座、

    保險絲,以加強散熱效果

    https://zh.wikipedia.org/wiki/%E7%B8%AE%E5%AF%ABhttps://zh.wikipedia.org/wiki/%E5%8D%8A%E5%B0%8E%E9%AB%94https://zh.wikipedia.org/wiki/%E8%B2%A0%E8%BC%89https://zh.wikipedia.org/wiki/%E7%B9%BC%E9%9B%BB%E5%99%A8https://zh.wikipedia.org/wiki/%E7%99%BC%E5%85%89%E4%BA%8C%E6%A5%B5%E9%AB%94https://zh.wikipedia.org/w/index.php?title=%E5%85%89%E9%9B%BB%E6%99%B6%E9%AB%94&action=edit&redlink=1https://zh.wikipedia.org/w/index.php?title=%E5%8A%9F%E7%8E%87%E6%99%B6%E9%AB%94&action=edit&redlink=1https://zh.wikipedia.org/w/index.php?title=%E5%8A%9F%E7%8E%87%E6%99%B6%E9%AB%94&action=edit&redlink=1https://zh.wikipedia.org/wiki/%E5%85%89%E8%80%A6%E5%90%88%E5%99%A8https://zh.wikipedia.org/wiki/%E6%99%B6%E9%96%98%E7%AE%A1https://zh.wikipedia.org/wiki/%E6%99%B6%E9%96%98%E7%AE%A1https://zh.wikipedia.org/w/index.php?title=%E9%9B%99%E5%90%91%E7%9F%BD%E6%8E%A7%E6%95%B4%E6%B5%81%E5%99%A8&action=edit&redlink=1https://zh.wikipedia.org/wiki/%E4%BD%8E%E9%9B%BB%E5%A3%93%E5%B7%AE%E5%88%86%E4%BF%A1%E8%99%9Fhttps://zh.wikipedia.org/wiki/%E4%BD%8E%E9%9B%BB%E5%A3%93%E5%B7%AE%E5%88%86%E4%BF%A1%E8%99%9Fhttps://zh.wikipedia.org/wiki/%E4%BA%A4%E6%B5%81

  • 12

    (2) 負載會對 SSR 產生脈衝性干擾,也容易燒燬

    (3) 應用於電動機控制時,機構停止後仍有電流存在的缺點

    (4) 售價相對高於傳統繼電器

    照片 2.2 SSR 固態繼電器

  • 13

    2-7 Step motor 步進馬達介紹

    步進馬達(Step motor)是直流無刷馬達的一種,為具有如齒輪狀突起

    (小齒)相鍥合的定子和轉子,可藉由切換流向定子線圈中的電流,以一

    定角度逐步轉動的馬達。

    步進馬達的特徵是採用開迴路控制處理,因此不需要運轉量檢知器或

    編碼器,且因切換電流觸發器的是脈波信號,不需要位置檢出和速度檢出

    的回授裝置,所以步進馬達可正確地依比例追隨脈波信號而轉動,因此就

    能達成精確的位置和速度控制,且穩定性佳。

    本專題所使用之激磁方式為二相激磁,步進馬達激磁方式如下:

    (1) 一相激磁,如表 2.3(a)為一相激磁脈衝信號的順序推動,每次只有一個

    相機磁,因此稱為一相激磁。若要步進馬達反轉,只要將推動順序反過來

    就可以了。

    (2)二相激磁,如表 2.3 (b)為二相激磁脈衝信號的推動順序,每走一步都有

    兩極同時激磁,因此所產生的轉矩比一相激磁的轉矩大。

    (3)一、二相激磁,如表 2.3 (c)為一二相激磁脈衝信號的推動順序,這種方

    法是一相激磁和二相激磁的混合方式。他的最大的優點在於步進馬達每走

    一步的步進角為前兩種激磁方式的一半,因而得到更小的步進角。

    https://zh.wikipedia.org/wiki/%E7%9B%B4%E6%B5%81%E7%84%A1%E5%88%B7%E9%A6%AC%E9%81%94https://zh.wikipedia.org/wiki/%E9%BD%92%E8%BC%AAhttps://zh.wikipedia.org/wiki/%E9%A6%AC%E9%81%94https://zh.wikipedia.org/wiki/%E9%96%8B%E8%BF%B4%E8%B7%AF%E6%8E%A7%E5%88%B6%E5%99%A8https://zh.wikipedia.org/wiki/%E6%97%8B%E8%BD%89%E7%B7%A8%E7%A2%BC%E5%99%A8https://zh.wikipedia.org/w/index.php?title=%E8%84%88%E6%B3%A2%E4%BF%A1%E8%99%9F&action=edit&redlink=1

  • 14

    表 2.3 步進馬達激磁法

    照片 2.3 步進馬達

    (a) (b) (c)

  • 15

    2-8 極限開關介紹

    極限開關簡稱 LS(Limit Switch),亦稱為限動開關、限制開關或微動

    開關,常用來作機械運動至某一位置的檢出開關。

    圖 2.6 極限開關及接腳圖

  • 16

    2-9 磁簧開關介紹介紹

    磁簧開關為一磁感應元件,常為某種設備做定位、計次、了解設備目

    前狀態而設置,一般由一方磁鐵裝置;另一方為磁簧感應器搭配,可垂直

    方向感應或水平方向感應使用,水平感應部分可產生單一或三個脈衝,達

    到除錯功能,避免誤動作情形出現。

    磁簧開關特性:

    (1)動作情形為非接觸性,完全隔離,安全性高。

    (2)磁簧元件高輸入阻抗 10000M 歐姆以上,抗干擾強電路影響低。

    (3)具除錯功能。

    (4)高低溫範圍廣,元件溫度可達負 40 度~正 120 度。

    (5)被動性元件價格便宜,主動元件霍爾及磁阻元件須增加放大電路價格

    高。

    (6)工作電壓範圍廣,不同功率下 AC 110V 及 AC 220V 交流均可直接

    使用。

    (7)可替代機械開關,如微動開關、按鈕開關、霍爾元件、磁阻…等。

    (8)元件內部結構之接點為合金且抽真空灌氮氣,抗汙損及氧化使用壽命

    長。

  • 17

    磁簧開關應用:

    工業用設備、汽機車、洗衣機、門窗防盜、工業機台、通訊設備產業…

    等。

    照片 2.4 磁簧開關實體照

  • 18

    Chapter 3 軟體工具與作業平台

    3-1Keilμ Vision5 介紹

    2013 年 10 月 Keil 正式發布了 keil uVision5 IDE,Keil 的網站雖然沒有

    中文版本,但是 Keil 軟體卻被中國 80%的硬體工程師使用,但凡與電子相

    關的專業都會開始從單晶片和電腦編程開始學習,而學習單晶片自然會用

    到 Keil 軟體。

    操作流程步驟:

    步驟 1:新建或開啟專案新建立的專案必須設定 Target 的 Device,即

    選用晶片的公司與型號。

    步驟 2:在專案中加入程式檔專案內的程式檔來源有兩種方式。第一種

    方式是將已經存在的程式檔直接加入專案;第二種方式是選擇[File]功

    能表的[New]指令,建立一個新檔案,再將此檔案加入專案。存檔要注

    意的是,若準備採用 C51 語言,檔案的附屬名稱使用”*.c”,若使用

    A51 語言,檔案的附屬名稱使用”*.a”。

    步驟 3:編輯/修改程式已加入專案的程式檔,直接在{專案視窗}中雙

    擊該程式檔的檔名,即可開啟該檔案的{程式編輯視窗}。若未加入專案

    的程式檔,使用[File]功能表的[Open] 指令,載入{程式編輯視窗},

  • 19

    進行編輯與修改。

    步驟 4:程式編譯/組譯與連結 µVision5 同時提供了 C51 這個相容於

    ANSI C 標準的編譯器(C51 Compiler),以及 A51 這個組譯器(A51

    Assembler),讓我們可以用這兩種程式語言,開發單晶片程式。當原始

    程式都被編譯/組譯完成後,再透過連結以建置最後可執行的程式,在

    µVision5附有BL51這個連結器來協助達成這項工作。在連結的過程中,

    標準 C 語言的函式庫(ANSI C Standard Library)也會被匯入。另外,想

    使用 CPU 多工處理的開發者也會使用到 RTX51 (Real-Time Operator

    System)這個即時操作系統的程式庫,我們也可以透過 LIB51 這個程式

    庫管理自己撰寫的程式庫。

    步驟 5:除錯與線上模擬完成組譯/編譯與連結的機械碼程式,除了可

    以直接燒錄到晶片上,也可以透過 µVision5 提供的儲錯工具徹底的消

    除程式中的錯誤以及最佳化程式,還可以藉由平行模擬系統在 PC 上直

    接模擬硬體上的各種操作,使我們的程式更加可靠。

    圖 3.1Keil µVision5

    http://milo0922.pixnet.net/blog/post/33737764-%E3%80%90%E4%B8%8B%E8%BC%89%E3%80%91c%E8%AA%9E%E8%A8%80%E8%BB%9F%E9%AB%94%E9%96%8B%E7%99%BC%E7%B3%BB%E7%B5%B1-keil-uvision4-%E5%8F%8A%E6%95%99http://milo0922.pixnet.net/blog/post/33737764-%E3%80%90%E4%B8%8B%E8%BC%89%E3%80%91c%E8%AA%9E%E8%A8%80%E8%BB%9F%E9%AB%94%E9%96%8B%E7%99%BC%E7%B3%BB%E7%B5%B1-keil-uvision4-%E5%8F%8A%E6%95%99

  • 20

    圖 3.2 Keil μ Vision5 開發介面

  • 21

    3-2App Inventor2 介紹

    Google App Inventor2 是一個完全線上開發的 Android 程式環境,拋棄

    複雜的程式碼而使用樂高積木式的堆疊法來完成 Android 程式。除此之外它

    也正式支援樂高 NXT 機器人,對於 Android 初學者或是機器人開發者來說

    是一大福音。因為對於想要用手機控制機器人的使用者而言,只要使用基

    本元件例如按鈕、文字輸入輸出即可。

    App Inventor2的優缺點

    優點:

    (1)適合無 Java 基礎的初學者

    (2)全雲端,所有作業都在瀏覽器完成

    (3)支援樂高機器人

    (4)和原有的 App Inventor 比較,App Inventor2 的 Block 頁面已可以輸入

    繁體中文

    缺點:

    (1)用 Google App Inventor2 開發出來的應用程式,只能下載安裝在手機

    上,或下載到電腦裡,不能發佈在 Android App Market 供人下載。

    (2)App Inventor2 並不產生 Java Source Code。因此沒有辦法在 App

    Inventor2 開發完成後再匯入 Eclipse 進行後續開發

  • 22

    3-2-1 App 程式編輯介面

    圖 3.3 App Inventor2 開發介面

    圖 3.4 App Inventor2 Blocks 編輯介面 1

  • 23

    圖 3.5 App Inventor2 Blocks 編輯介面 2

    圖 3.6 App Inventor2 Blocks 編輯介面 3

    圖 3.7 App Inventor2 Blocks 編輯介面 4

  • 24

    Chapter 4 實驗方法

    4-1 整體工作流程

    4-1-1 專題製作工作流程

    圖 4.1 專題製作工作流程圖

  • 25

    4-1-2 專題製作時程

    項目/月份 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

    初步構想草圖

    相關資料蒐集

    元件、材料購買

    麵包版電路測試

    程式碼撰寫

    第一次專題口試

    電路板 Layout

    印刷電路板製作

    銲接元件面板

    整體功能實測

    展示箱佈線、佈局

    專題企劃書製作

    第二次專題口試

    專題成果展示

    表 4.1 專題製作時程表

  • 26

    4-2硬體電路設計與製作

    4-2-1 密碼鎖電路方塊圖

    8051

    LCM 顯示入口狀態

    3*4鍵盤

    電源供應器 系統電源

    圖 4.2 密碼鎖電路方塊圖

    LED 跑馬燈 顯示保全狀態

  • 27

    4-2-2 密碼鎖電路圖

    圖 4.3 密碼鎖電路圖

  • 28

    4-2-3 密碼鎖流程圖

    圖 4.4密碼鎖流程圖

  • 29

    4-2-4 密碼鎖實體照

    照片 4.1密碼鎖電路板實體照

  • 30

    4-2-5 溫濕度感測方塊圖

    8051

    LCM 顯示資料

    BH1750 光強度感測器

    DHT11 溫濕度感測器

    電源供應器 系統電源

    圖 4.5 溫濕度感測方塊圖

    HC-05 藍牙接收

  • 31

    4-2-6 溫濕度感測電路圖

    圖 4.6 溫濕度感測電路圖

  • 32

    4-2-7 溫濕度感測電路流程圖

    圖 4.7 溫濕度感測電路流程圖

  • 33

    4-2-8 馬達板電路圖

  • 34

    圖 4.8 馬達板電路圖

  • 35

    4-2-9 動作流程說明

    8051 端:

    8051 主程式開始執行

    ->開啟 UART 並啟動藍牙連線

    ->經由 I2C 顯示溫度、濕度、照度數據

    ->8051 內部判斷當前溫度是否達加熱或冷卻標準

    ->溫度大於設定高溫

    ->呼叫副程式->啟動冷卻功能

    ->溫度小於設定低溫

    ->呼叫副程式->啟動加熱功能

    ->當 8051 與手機藍牙連線後,8051 接收到從手機傳過來的字元'p'

    ->呼叫副程式->溫度、濕度數據轉換成 ASCII 傳送至手機

    ->當 8051 與手機藍牙連線後,8051 接收到從手機傳過來的字元'q'

    ->呼叫副程式->啟動手機控制 8051 功能

    手機端:

    手機主程式開始執行

    ->等待藍牙連線

  • 36

    ->關閉接收溫、溼度計數器

    ->當藍牙連線後

    ->啟動接收溫、溼度計數器

    ->當按下'開啟數據監控'

    ->透過藍牙發送字元'p'至 8051

    ->接收 8051 傳送過來的溫、溼度數據

    ->當按下'開啟手控操作'

    ->透過藍牙發送字元'q'至 8051

    ->關閉接收 8051 傳送過來的溫、溼度數據

    ->啟動手控功能

  • 37

    4-2-10 溫濕度感測 PCB 板洗電路製作

    照片4.2製作PCB電路板工具 照片 4.3印製PCB電路至描圖紙

    照片 4.4 電木單面感光板 照片 4.5 覆蓋描圖紙至感光板並曝光

  • 38

    照片 4.6 加入顯像劑並顯像 照片 4.7 加入蝕刻劑並蝕刻

    照片 4.8 蝕刻完成、電路板變藍 照片 4.9 鑽孔

  • 39

    4-2-11 溫濕度感測 PCB 板實體照

    照片 4.10 溫濕度感測 PCB 板照片 4.11 溫濕度感測 PCB 板實測

    照片 4.12 溫濕度感測 PCB 板測試 2

  • 40

    4-3 軟體設計與製作原始碼撰寫說明

    4-3-1 跑馬燈程式

    #include "reg51.h"

    #define LED P1

    void delay_1ms(int count)

    {

    int x,y;

    for(x=0;x

  • 41

    }

    for(i=0;i

  • 42

    4-3-2 密碼鎖程式

    #include

    #include "LCD8bit.h"

    #include "check.h"

    void main()

    {

    int e,j=0,count=1;

    COL0=COL1=COL2=1;

    OUT_ALARM=LED_ALARM=LED_GREED=LED_RED=0; //開機全亮

    do

    {

    lcd_cmd(0x01); //清除螢幕

    lcd_cmd(0x81); //第一行第二位顯示

    lcd("SET PASSWORD:"); //設定密碼提示-第一次顯示

    pass_set(); //輸入設定密碼

    for (e = 0; e < 4; e++)

    {

    dig_input_recheck[e] = dig_input[e];

    }

    lcd_cmd(0x01); //清除螢幕

    lcd("CONFIRM PASSWORD:"); //再次輸入設定密碼-第二次顯示

    pass_set(); //輸入設定密碼

    for (e = 0; e

  • 43

    LED_GREED = 1; //滅

    LED_RED = 0; //亮

    lcd_cmd(0x81); //第一行第二位顯示 lcd("ENTER PASSWORD:"); //MessageBox

    check = 0;

    ROW0 = ROW1 = ROW2 = ROW3 = 0;

    while (COL0 == 1 && COL1 == 1 && COL2 == 1);

    for (i = 0; i

  • 44

    4-3-3 溫濕度及照度感測程式

    #include

    #include

    #include "I2C.h"

    #include "BH1750.h"

    #include "DHT11.h"

    #include "LCD.h"

    #include "DEFINEPORT.h"

    #include "FUNCTION.h"

    #define IIC_BH1750_ADDR 0x46 ///ALT ADDRESS 引腳接地時地址為 0x46,接電源

    VCC 時地址為 0xB8

    void delay(unsigned int);

    void uart_Init(void);

    /*************************************************************************/

    void main()

    {

    unsigned char drhtbuf[5]; // 溫濕度暫存 Buffer

    unsigned char chrbuf[17]; // LCD 顯示的組字陣列

    char percentage = 0x25; // ASCII % = 0x25

    unsigned char Comparators_Num[7]={23,26,27,28,29,33};//比較溫度數值 /*************************************************************************

    * 初始化 * /*************************************************************************/

    unsigned char bhinsts[2]={0x01,0x10}; // BH1750 初始化指令

    initLCD(); // LCD 初始化

    delay(100); // 延遲 100ms

    clearLCD(); // 清除 LCD

    delay(150); // 延遲 150ms

    BH1750_init(IIC_BH1750_ADDR, bhinsts, 2); // BH1750 初始化

    delay(150); // 延遲 150ms

    uart_Init(); // UART 初始化

    delay(150); // 延遲 150ms

    RI=0; // 初始清除 RI、TI TI=0;

    heater=Fan_1=Fan_2=1; // 初始化關閉風扇、加熱器 /*************************************************************************

    * Display *

    /*************************************************************************/

    while(1)

    {

    // DHT11, Temperature, Humidity Sensor

    if(DHT11_read(drhtbuf) == 1)

    {

    sprintf(chrbuf, "Temp=%2dC, RH=%2d%C", (int)drhtbuf[2], (int)drhtbuf[0],

    percentage); // 溫度、溼度、%

    displayCharAtLCD(1, 1, chrbuf, 16); // 第一行、第一欄位、存放顯示

  • 45

    LCD 字元資料、16 字

    //自動判斷加熱、冷卻

    if((drhtbuf[2]>=Comparators_Num[0])&&(drhtbuf[2]=Comparators_Num[4])&&(drhtbuf[2]=Comparators_Num[2])&&(drhtbuf[2]

  • 46

    for (y = 0; y < 122; y++);

    }

    /*************************************************************************/

    // UART

    void uart_Init(void) // Baud 9600

    {

    SCON = 0x50; // Set Mode (8-bit UART) ; Mode1,SM1=1,REN=1

    TMOD = 0x20; // Set Mode (8-bit timer with reload);Timer-1,Mode2

    TH1 = 0xFD; // Baud 9600、11.0592MHZ TR1 = 1; // Start Timer 1 Running

    }

    /*************************************************************************/

  • 47

    4-3-4 App Inventor 程式說明

    使用物件:

    Button: 10個

    BluetoothClient: 1個

    Clock : 3個

    HorizontalArrangement: 2個

    Label : 18個

    ListPicker: 1個

    Notifier: 1個

    TableArrangement: 2個

    VerticalArrangement: 1個

    變數命名: Btn_Plus

    Btn_Minus

    Btn_Receive

    Btn_Control

    Btn_Heater_open

    Btn_Heater_close

    Btn_Fan_open

    Btn_Fan_close

    Btn_Motor_open

    Btn_Motor_close

    BluetoothClient1

    Clock1

    Clock2

    Clock3

    Lab_Temp_set

    Lab_Temp_Rx

    Lab_Temperture

    Lab_Temperture_setting

    Lab_Humidity_set

    Lab_Humidity_Rx

    Lab_Humidity

    Lab_Humidity_setting

    Lab_Illuminance_set

    Lab_Illuminance_Rx

    Lab_Illuminance

    Lab_Illuminance_setting

    Lab_BTDIsconnect

    Lab_Heater

    Lab_Fan

    Lab_Motor

    Lab_Information

    Lab_Message

    ListPicker1

    Notifier1

    Table_Condition

    Table_Contorl

    Table_Information

  • 48

    Table_ListPicker

    Table_SettingValue

    程式說明:

    Screen 螢幕.Initialize

    ->呼叫藍牙尚未連線

    ->開啟藍牙連線列表

    ->關閉計數器

    Screen 螢幕.BackPressed

    ->呼叫藍牙尚未連線

    ->開啟藍牙連線列表

    ->關閉計數器

    藍牙連線前.BeforePicking

    ->如果藍牙尚未連接

    ->呼叫藍牙連線列表

    ->如果藍牙已經連接,賦予字串內容

    ->如果未開啟藍牙裝置

    ->呼叫開啟藍牙裝置提示

    藍牙連線後.AfterPicking

    ->如果藍牙可使用

    ->如果藍牙尚未連線

    ->呼叫藍牙選擇連線列表

    ->賦予字串內容

    ->ShowMessageBox 連線成功

    ->呼叫藍牙尚未連線

    ->賦予字串內容

    ->關閉計數器

    ->開啟藍牙連線列表

    訊息視窗.Message

    ->將 Message 內容輸出

    設定加數.Button.Click

    ->設定上限值 100

    ->按一次+1

    設定減數.Button.Click

    ->設定下限值 1

    ->按一次-1

    開啟數據監控.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'p'

    ->開啟計數器

  • 49

    開啟手控操作.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'q'

    ->關閉計數器

    ->將顯示數值設為 0

    開啟加熱.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'A'

    關閉加熱.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'B'

    開啟冷卻.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'C'

    關閉冷卻.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'D'

    開啟馬達.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'E'

    關閉馬達.Button.Click

    ->如果按下此按鈕,經由藍牙回送字元'F'

    溫度數據計數器.Timer

    ->預設接收 100ms

    ->如果已經開啟計數器

    ->經由藍牙接收 2Bytes 資料

    ->收到的數值收到的數值>=26、收到的數值>=30,將數值變換顏色為紅色

    溼度數據計數器.Timer

    ->預設接收 100ms

    ->如果已經開啟計數器

    ->經由藍牙接收 2Bytes 資料

  • 50

    Chapter 5 實驗結果 5-1 實驗測試結果

    照片 5.1 密碼鎖功能實測

    照片 5.2 溫室整體功能實測

  • 51

    Chapter 6 討論與結論

    6-1 討論

    89S51 是屬於單工類型的晶片,相較於其他市面上常見的多工板,能做

    的事情比較沒這麼多,或許能達到多工的功能,卻是以階層式,短暫的延

    遲誤差,讓使用者感覺確實達到多工的功能。I2C Protocol 是個很好用的串

    列數據傳輸方式,它能提供多個感測模組,以位址的方式做傳輸,在相同

    的條件下,也能夠順利在電路上完成,且能夠從 LCD 面板輸出所需要的資

    訊,不過,在結合了 UART 並配合 Bluetooth 的傳輸後,卻是遇到了眾多的

    疑難雜症,有了 I2C 傳輸,就沒有 UART 功能;反之,有了 UART 功能,就

    沒了 I2C 傳輸,也許這就是我們能力不足之處,無法完美的處理好這個地

    方,導致原先所預定的功能,遲遲無法完整的整合在一塊,如何使用較好

    的處理方式,寫出精湛的程式,是這次的專題當中碰上的最大難處,而這

    個難題也是我們所該學習及探討的。

  • 52

    6-2結論

    透過這次的專題製作,除了將過去學習到的知識學以致用,也融合許

    多過去所未曾接觸的事物,像是軟體、硬體,或是各式 IC 元件…等,市面

    上有太多種類的 IC 及感測元件,當然我們不可能所有的元件都認識,但是

    如何選用所需的元件,而這些元件又該如何使用在專題中也是很重要的。

    或許在電路整合上有許多相關文獻及資料可以參考,但在結合程式後

    的應用,需要反覆調整程式的相容性及實作的結果,難免會遇到些困境,

    在這些困境當中也更顯得自己的能力有許多不足之處,希望藉由此次的專

    題製作機會,能夠精進學習,也有所成長。

  • 53

    6-3製作過程圖

    照片 6.1 製作過程

  • 54

    附錄一參考文獻

    1.佘志龍、陳昱勛、鄭名傑、陳小鳳、郭秩均,2010,,悅知文化。

    2.孫宏明,2012,,碁峰資訊。

    3.林城,2011,,碁峰資訊。

    4.林振漢,2004,,博碩文化。

    5.張義和、陳敵北,2009,,新文京出版社。

    6.張義和、許宏昌、王敏男、余春長,2013,,新文京

    出版社。

    7.蓋索林(gasolin),2013,,

    松崗資產管理。

    8.黃慶璋、石博元,2011,,台科大圖書。

    9.曾吉弘、賴偉民、謝宗翰、林毓祥、薛皓云,2012,,泰電電業。

    10.曾吉弘、蔡宜坦、黃凱群、賴偉民、盧玟攸、施力維,2012,,泰電電業。

    11.郭庭吉,2004,,台科大圖書。

    12.盧正興、陳昭綾,2011,,高立圖書。

    13.蔡朝洋、蔡承佑,2011,,全華圖書。

    14.陳會安,2011,,旗標出版社。

  • 55

    15.維基百科:固態繼電器

    https://zh.wikipedia.org/wiki/%E5%9B%BA%E6%85%8B%E7%B9%BC%E9

    %9B%BB%E5%99%A8

    16.維基百科:步進馬達

    https://zh.wikipedia.org/wiki/%E6%AD%A5%E9%80%B2%E9%A6%AC%E9

    %81%94

    16.步進馬達激磁方式:自走車網站

    http://s07368.myweb.hinet.net/circuitry7.htm

    17.App inventor 中文學習網:

    http://www.appinventor.tw/whatis/

    18.楷鑫電子:磁簧開關

    http://www.cashtec.com.tw/products.asp?p_class=15&sub_class=24

    19.馬達板電路:TEMI 台灣嵌入式暨單晶片系統發展協會

    http://www.temi.org.tw/uploads/tad_uploader/140_Microcontroller%20Practicia

    n%20Class%20Certification.pdf

    https://zh.wikipedia.org/wiki/%E5%9B%BA%E6%85%8B%E7%B9%BC%E9%9B%BB%E5%99%A8https://zh.wikipedia.org/wiki/%E5%9B%BA%E6%85%8B%E7%B9%BC%E9%9B%BB%E5%99%A8https://zh.wikipedia.org/wiki/%E6%AD%A5%E9%80%B2%E9%A6%AC%E9%81%94https://zh.wikipedia.org/wiki/%E6%AD%A5%E9%80%B2%E9%A6%AC%E9%81%94http://www.appinventor.tw/whatis/http://www.cashtec.com.tw/products.asp?p_class=15&sub_class=24

  • 56

    附錄二作者簡介:

    指導老師:謝承達副教授/系主任

    學歷 : 國立中興大學電機博士

    研究專長 : 晶片系統

    研究室 : B0416

    E-mail :[email protected]

    姓名:王聖硯

    學號:BD101031

    班級:電機四甲

    本次專題負責工作: 程式撰寫、元件焊接

    姓名:賴嘉泓

    學號:BD101033

    班級:電機四甲

    本次專題負責工作: 書面報告、電路製作

    mailto:[email protected]