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

33
師:程兆龍 專題製作學生:四技電四乙 周長逸 BD99061 四技電四乙 施博仁 BD99070 中華民國 102 12 26 修 平 科 技 大 學 電 機 工 程 系 DEPARTMENT OF ELECTRICAL ENGINEERING HSIUPING UNIVERSITY OF SCIENCE AND TECHNOLOGY

Upload: others

Post on 27-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

實實務務專專題題報報告告書書

智智 慧慧 手手 機機 遙遙 控控 車車

指 導 老 師:程兆龍

專題製作學生:四技電四乙 周長逸 BD99061

四技電四乙 施博仁 BD99070

中華民國 102 年 12 月 26 日

修 平 科 技 大 學 電 機 工 程 系

DEPARTMENT OF ELECTRICAL ENGINEERING HSIUPING UNIVERSITY OF SCIENCE AND TECHNOLOGY

Page 2: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

目 錄

圖目錄‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 3

摘要‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 4

第一章 導 論‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 5

1-1 專題序論‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 5

1-2 製作動機‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 5

1-3 制作流程圖 ‧‧‧‧‧‧‧‧‧‧‧‧‧ 6

1-4 專題架構圖‧‧‧‧‧‧‧‧‧‧‧‧‧ 6

1-5 程式流程圖‧‧‧‧‧‧‧‧‧‧‧‧‧ 7

第二章 遙控車基本簡介‧‧‧‧‧‧‧‧‧‧‧‧ 8

2-1 遙控系統‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 8

2-2 動力來源‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 8

第三章 專題使用元件介紹‧‧‧‧‧‧‧‧‧‧‧ 9

3-1 Arduino 開發板介紹‧‧‧‧‧‧‧‧‧‧ 9

3-2 L298N 馬達模組驅動介紹‧‧‧‧‧‧‧‧ 13

3-3 Eclipse 開發軟體介紹‧‧‧‧‧‧‧‧‧ 14

3-4 Android 作業系統介紹‧‧‧‧‧‧‧‧‧ 16

第四章 專題製作過程‧‧‧‧‧‧‧‧‧‧‧‧‧ 20

4-1 初步構想草圖及完成實體草圖‧‧‧‧‧‧ 20

1

Page 3: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

4-2 製作過程與改進‧‧‧‧‧‧‧‧‧‧‧ 20

4-3 程式說明‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 25

第五章 總結‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 29

結論‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 29

參考文獻

專題組員介紹

2

Page 4: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

圖 目 錄

圖 01.製作流程圖‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 6

圖 02.專題架構圖‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 6

圖 03.程式流程圖‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 7

圖 04.常見的紅外線遙控車‧‧‧‧‧‧‧‧‧‧‧‧ 8

圖 05.Arduino UNO‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 10

圖 06.ArduinoPro‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 11

圖 07Arduino Nano‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 11

圖 08.LilyPadArduinoUSB‧‧‧‧‧‧‧‧‧‧‧‧‧ 11

圖 09.Arduino Robot‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 11

圖 10.Arduino 開發軟體介面‧‧‧‧‧‧‧‧‧‧‧ 12

圖 11.L298N 馬達驅動模組‧‧‧‧‧‧‧‧‧‧‧‧ 13

圖 12.L298N 馬達驅動模組線路圖‧‧‧‧‧‧‧‧‧ 13

圖 13.Eclipse 軟體標誌‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 14

圖 14.初號車體配置草圖‧‧‧‧‧‧‧‧‧‧‧‧‧ 20

圖 15.完成後車體草圖‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 21

圖 16.電木板車體‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ 22

圖 17.TAMIYA 公司的模型履帶車‧‧‧‧‧‧‧‧‧ 23

圖 18.HC-120 直流減速馬達‧‧‧‧‧‧‧‧‧‧‧ 24

3

Page 5: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

摘 要

本專題主要使用 Arduino實習板與 Android開發平台使用 JAVA

撰寫應用程式,透過藍芽使智慧型手機與遙控車上的 Arduino做連

結,可對遙控車做基本的移動操作。

4

Page 6: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

第一章 導論

1-1 序論:

遙控車(Radio-controlled cars),是 遙控模型 的一種,以

無線電 或 紅外線 等無線操控的方式控制的 玩具車 或 模型車。

遙控車的控制訊號透過遙控器上的發射器發出,由裝在車上的

接收器 接收,接收器根據接收到的訊號控制 車速、改變 車輪 的轉

動方向以及馬達 或 引擎 的運轉。簡單的遙控車只是能控制停與走的

玩具,而高級的遙控車可以是功能強大的 賽車,具所有實際賽車的

複雜和可調節的特性,速度更可超過時速一百公里。

1-2 制作動機:

本專題針對小時候每個人都玩過的遙控模型車做為製作方向,市

售便宜的遙控車多是利用紅外線控制,進行操控時容易被物體阻礙紅

外線訊號的傳遞,另外也有適用無線電作為操控的方式,但價格較昂

貴,跟專題指導老師討論過後,本專題選擇使用藍芽作為遙控車控制

的方式,在有效的範圍內訊號傳地幾乎不受干擾。

5

Page 7: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

1-3 製作流程圖:

圖 01:製作流程圖

1-4 專題架構圖:

圖 02:專題架構圖

6

Page 8: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

1-5 程式流程圖:

圖 03:程式架構圖

7

Page 9: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

第二章 遙控車基本簡介

2-1 遙控系統:

2-1.1 紅外線遙控車為一般市售最常見的,價格低廉,但操控過

程易受阻礙。

2-1.2 無線電訊號則為專業遙控車玩家常用的遙控系統,其中

2.4Ghz 頻段最常使用。

2-2 動力來源:

2-2.1 電動遙控模型車就是使用電池做為動力,輸出電能到電動機

上,電動機再推動動車子。

2-2.2 油動力遙控模型車是使用專用的燃料作為動力,優點是速度

快,維修簡單。

圖 04:常見的紅外線遙控車

8

Page 10: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

第三章 專題使用元件介紹

3-1 Arduino 開發板介紹

Arduino 是源自義大利的一個開放源程式碼的硬體專案平台,該

平台包括一塊具備簡單 I/O 功能的電路板以及一套程式開發環境軟

體,可以用來開發交互產品。

Arduino 也可以開發出與 PC 相連的周邊裝置,能在運行時與

PC 上的軟體進行通信。Arduino 的硬體電路板可以自行焊接組裝,

也可以購買已經組裝好的模組,而程式開發環境的軟體則可以從網上

免費下載與使用。

因為 Arduino 是一塊基於開放原始碼的 Simple I/O 版,並且具

有使用類似 java、C 語言的開發環境。可以快速使用 Arduino語言與

Flash 或 Processing 等軟體作出互動作品。

9

Page 11: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

一、 Arduino 硬體介紹:

圖 05:Arduino UNO

如上圖所示:

1. USB 連結孔,用於傳輸資料及供電。

2. 穩壓器。

3. 電壓輸入孔,不使用 USB 孔時可接上 5V 變壓器或電池直接供電。

4. 電源控制接腳。

5. 類比訊號接腳。

6. 控制晶片。

10

Page 12: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

7. LED:電源。

8. 數位訊號接腳。

9. LED:顯示區域 9 的 13 接腳為高電壓或低電壓。

10. LED:用來顯示傳遞接受的資料 RX 和傳遞出去的資料 TX。

11. RESET 按鈕。

12. USB Client 端晶片。

二、其他類型的 Arduino 開發板:

圖 06:Arduino Pro 圖 07:Arduino Nano

圖 08:LilyPad Arduino USB 圖 09: Arduino Robot

11

Page 13: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

三、Arduino開發環境:

圖 10:Arduino 開發軟體介面。

Arduino 開發環境的主介面,如上圖所示,中間區域就是程式編輯區,

下方的黑色區域為資訊提示區。

Arduino 的開發環境是以 AVR-GCC 和其他一些開源軟體為基礎,採

用 Java 編寫的, 使用的語法與 c/c++相似,非常容易使用。

12

Page 14: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

3-2 L298N 馬達驅動模組介紹

圖 11:L298N 馬達驅動模組。

這是一個很方便的 L298N模組,它可以驅動兩個直流馬達或

是一個步進馬達,控制訊號可以用 Arduino或是其它微控制

器輸入。

圖 12:L298N 馬達驅動模組線路圖。

13

Page 15: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

3-3 Eclipse 開發軟體介紹

圖 13:Eclipse 軟體標誌

Eclipse 是著名的跨平台開源整合式開發環境(IDE),最初主要

用來 Java 語言開發,目前亦有人透過外掛模組使其作為 C++、Python

等其他語言的開發工具,Eclipse 的本身只是一個框架平台,但是眾

多外掛模組的支援,使得 Eclipse 擁有較佳的靈活性。

一、 歷史:

Eclipse 最初是由 IBM 公司開發的替代商業軟體 Visual Age for

Java 的下一代 IDE 開發環境,2001 年 11 月貢獻給開源社群,現在

它由非營利軟體供應商聯盟 Eclipse 基金會(Eclipse Foundation)管

理。2003 年,Eclipse 3.0 選擇 OSGi 服務平台規範為執行時架構。2007

14

Page 16: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

年 6 月,穩定版 3.3 發行;2008 年 6 月發行代號為 Ganymede 的 3.4

版;2009 年 6 月發行代號為 Galileo 的 3.5 版;2010 年 6 月發行代號

為 Helios 的 3.6 版。

二、架構:

Eclipse 的基礎是富客戶機平台(即 RCP)。RCP 包括下列元件

核心平台(啟動 Eclipse,執行外掛模組)。

OSGi(標準框架)。

SWT(可移植構件工具包)。

JFace(檔案緩衝,文字處理,文字編輯器)。

Eclipse 工作台(Workbench),包含檢視(views)、編輯器

(editors)、視角(perspectives)、和精靈(wizards)。

Eclipse 採用的技術是 IBM 公司開發的(SWT),這是一種基於

Java 的窗口元件,類似 Java 本身提供的 AWT 和 Swing 窗口元件;

不過 IBM 聲稱 SWT 比其他 Java 窗口元件更有效率。Eclipse 的使用

者介面還使用了 GUI 中間層 JFace,從而簡化了基於 SWT 的應用程

式的構建。

15

Page 17: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

3-4 Android 作業系統介紹

Android 是一個以 Linux為基礎的開放原始碼作業系統,主要用

於行動設備,由 Google 成立的 Open Handset Alliance(OHA,開放

手持設備聯盟)持續領導與開發中。安卓已發佈的最新版本為

Android 4.4。

一、 歷史:

2003 年 10 月,有「Android 之父」之稱的安迪·魯賓(Andy Rubin)

在美國加利福尼亞州帕洛阿爾托建立了 Android科技公司(Android

Inc.),並與利奇·米納爾(Rich Miner)、尼克·席爾斯(Nick Sears)、

克里斯·懷特(Chris White)共同發展這家公司。談到建立 Android

科技公司的原因,魯賓說:「聰明的移動設備能更好的意識到用戶的

愛好和要求。」儘管 Android 科技公司的創始人和員工過去都具有各

自的科技成就,但是 Android 科技公司的經營只顯露出它在智慧型手

機軟體的方面。 同年,魯賓為 Android 科技公司花光了所有的錢。

就在這時,史蒂夫·帕爾曼(Steve Perlman)遞給了魯賓一個信封,

在裡面裝有 1 萬美元的現金;帕爾曼並不是以投資的方式給魯賓這筆

錢,因為他拒絕了魯賓給他的股份。

16

Page 18: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

2005 年 8 月 17 日,Google 收購了 Android 科技公司,Android

科技公司成為 Google 旗下的一部分。包括米奇·米納爾、克里斯·懷

特等所擁有的全資子公司,所有 Android 科技公司的員工都被併入

Google。當時沒有人知道 Google 為什麼作出這項收購,有許多的猜

測,後來證明 Google 正是藉助此次收購正式進入行動領域。

在 Google,魯賓領導著一個負責開發基於 Linux 核心移動作業

系統的團隊,這個開發項目便是 Android 作業系統。Google 的合作

平台為 Android 提供了廣闊的市場,Google 給予各大硬體製造商、

軟體開發商一個靈活可靠的系統升級承諾,並保證將給予它們最新版

本的作業系統。

二、 系統特色:

當前的 Android作業系統具有以下幾個功能:

顯示佈局:Android作業系統支援更大的解析度,給予 OpenGL ES

3.0標準規格(4.3版本開始支援 OpenGL ES 3.0)。

資料存儲:Android作業系統內置 SQLite小型資料庫管理系統來

負責儲存資料。

網路:Android作業系統支援所有的網路制式,包括 GSM/EDGE、

IDEN、CDMA、EV-DO、UMTS、Bluetooth、Wi-Fi、LTE、NFC和 WiMAX。

17

Page 19: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

訊息:作為原設計給智慧型手機使用的作業系統,Android作業

系統原生支援簡訊和郵件,並且支援所有的雲端訊息和服務器訊

息。

語言:Android作業系統支援多語言。

瀏覽器:Android作業系統中內置的網頁瀏覽器基於 WebKit核

心,並且採用了 Chrome V8引擎。

支援 Java:雖然 Android作業系統中的應用程式大部分都是由

Java編寫的,但是 Android卻是以轉換為 Dalvik executables

的檔案在 Dalvik虛擬機上執行的。由於 Android中並不自帶 Java

虛擬機,因此無法直接執行 Java程式。

媒體支援:Android作業系統本身支援眾多格式的音樂、影片、

圖片格式,用戶可隨自己的需求安裝其他第三方應用程式。

串流媒體支援:Android作業系統支援 RTP/RTSP(3GPP PSS, ISMA)

的流媒體以及(HTML5 <video>)的流媒體,同時還支援 Adobe

的 Flash,在安裝了 RealPlayer之後,還支援蘋果公司的流媒體。

硬體支援:Android作業系統支援識別並且使用強大的照相機鏡

頭、多點觸控螢幕、GPS、加速計、陀螺儀、鍵盤、鼠標、USB Disk、

專用的遊戲控制器、體感控制器、藍芽設備、無線設備等。

18

Page 20: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

多點觸控:Android支援原生的多點觸控,在最初的 HTC Hero智

慧型手機上即有這個功能。

藍芽:Android支援 A2DP,AVRCP,發送檔案(OPP),存取電話

簿(PBAP),語音撥號和智慧型手機之間的聯繫。同時支援鍵盤、

滑鼠和搖桿。

多工處理:Android作業系統支援原生的多工處理。

語音功能:除了支援普通的電話通話之外,Android作業系統從

最初的版本開始就支援使用語音操作來使用 Google進行網頁搜

尋等功能。而從 Android OS v2.2開始,語音功能還可以用來輸

入文字、語音導航等功能。

無線共享功能:Android作業系統支援用戶使用本機充當「無線

路由器」,並且將本機的網路共享給其他智慧型手機,其他機器

只需要通過 WiFi尋找到共享的無線熱點,就可以上網。

截圖功能:從 Android OS v4.0版本開始,Android作業系統便

支援截圖功能,該功能允許用戶直接抓取智慧型手機螢幕上的任

何畫面,用戶還可以通過編輯功能對截圖進行處理,還可以通過

藍芽、電子郵件及其他社群分享發送給其他用戶或者上傳到網路

上,也可以拷貝到電腦中。

19

Page 21: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

第四章 專題製作過程

4-1 初步構想草圖及完成實體草圖:

最初的構想是在一片 16*11的電木板上將本專題所需的元件裝

設上去,但後來發現這項會讓整台車體看起來很擠,且在第一次裝設

時發現鑽孔不甚理想,導致車體水平不均,車體移動時會特別偏向某

一邊。

圖 14:初號車體配置草圖。

20

Page 22: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

跟專題指導老師討論過後決定採用雙層車體,雖然車體重量變重了,

但各元件之間有更大的空間,測試時能更方便拆裝,也容易找到問題

點。

圖 15:完成後車體草圖。

21

Page 23: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

4-2 製作過程與改進:

剛開始遇到的瓶頸應該是車體材料的選擇,最先我們考慮使用壓

克力材質作為我們的車體材料,但去店家詢問後發現價格跟我們預想

的不同只好作罷。

圖 16:電木板車體。

最後選擇使用價格低廉且硬度還算不錯的電木板作為本專題車

體的材料。

22

Page 24: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

至於輪子部分,我們試過用各種材料如:寶特瓶蓋、木頭、模型

履帶車,前兩者因為遙控車跑起來的順暢度不甚理想,模型履帶車我

們在網路上有看到相關影片,雖然符合我們理想中的樣子,但也因為

經費受限所以放棄。

圖 17:TAMIYA 公司的模型履帶車。

23

Page 25: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

為求精準我們選擇了 HC-120直流減速馬達。

圖 18:HC-120 直流減速馬達。

圖 19:HC-120 直流減速馬達規格圖。

24

Page 26: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

4-3 程式說明:

4-3.1 手機程式: //顯示主要活動 public class BluetoothChat extends Activity { private static final String TAG = BluetoothChat; private static final boolean D = true;

//從 BluetoothChatService 傳來的訊息類型

public static final int MESSAGE_STATE_CHANGE = 1; //狀態變化 public static final int MESSAGE_READ = 2; //寫入 public static final int MESSAGE_WRITE = 3; //讀取 public static final int MESSAGE_DEVICE_NAME = 4; //裝置名稱 public static final int MESSAGE_TOAST = 5; //快顯視窗 //從 BluetoothChatService 傳來的名稱 public static final String DEVICE_NAME = device_name; public static final String TOAST = toast; //請求碼 private static final int REQUEST_CONNECT_DEVICE = 1; private static final int REQUEST_ENABLE_BT = 2; //輸出界面 private TextView mTitle; private String mConnectedDeviceName = null; private StringBuffer mOutStringBuffer; private BluetoothAdapter mBluetoothAdapter = null; private BluetoothChatService mChatService = null; private ImageButton mImgBntTop; private ImageButton mImgBntDown; private ImageButton mImgBntLeft;

25

Page 27: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

private ImageButton mImgBntRight; private byte bImageKeyDown_n = 0x00; //宣告腳位 private Handler mHandlerTime = new Handler(); //尋找 Handler @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(D) Log.e(TAG, +++ ON CREATE +++); //建立視窗輸出 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); //建立標題 mTitle = (TextView) findViewById(R.id.title_left_text); mTitle.setText(R.string.app_name); mTitle = (TextView) findViewById(R.id.title_right_text); //藍芽連接 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter == null) { Toast.makeText(this, Bluetooth is not available, Toast.LENGTH_LONG).show(); finish(); return; } //宣告按鈕名稱 mImgBntTop = (ImageButton)findViewById(R.id.ImgBntTop); mImgBntDown = (ImageButton)findViewById(R.id.ImgBntDown); mImgBntLeft = (ImageButton)findViewById(R.id.ImgBntLeft); mImgBntRight = (ImageButton)findViewById(R.id.ImgBntRight); //按下前進 mImgBntTop.setBackgroundResource(R.drawable.btn_autobacklightselect);

26

Page 28: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

mImgBntTop.setOnTouchListener(new ImageButton.OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN){ bImageKeyDown_n = 0x01; v.setBackgroundResource(R.drawable.btn_autobacklightn); Log.v(TAG,User press the button); }else if(event.getAction() == MotionEvent.ACTION_UP){ bImageKeyDown_n = 0x00; v.setBackgroundResource(R.drawable.btn_autobacklightselect); Log.v(TAG,User release the button); } return false; } }); //按下後退 mImgBntDown.setBackgroundResource(R.drawable.btn_autobacklightselect); mImgBntDown.setOnTouchListener(new ImageButton.OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN){ bImageKeyDown_n = 0x02; v.setBackgroundResource(R.drawable.btn_autobacklightn); Log.v(TAG,User press the button); }else if(event.getAction() == MotionEvent.ACTION_UP){ bImageKeyDown_n = 0x00; v.setBackgroundResource(R.drawable.btn_autobacklightselect); Log.v(TAG,User release the button); } return false; } });

27

Page 29: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

//按下左轉 mImgBntLeft.setBackgroundResource(R.drawable.btn_autobacklightselect); mImgBntLeft.setOnTouchListener(new ImageButton.OnTouchListener(){ public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN){ bImageKeyDown_n = 0x04; v.setBackgroundResource(R.drawable.btn_autobacklightn); Log.v(TAG,User press the button); }else if(event.getAction() == MotionEvent.ACTION_UP){ bImageKeyDown_n = 0x00; v.setBackgroundResource(R.drawable.btn_autobacklightselect); Log.v(TAG,User release the button); } return false; } }); //按下右轉 mImgBntRight.setBackgroundResource(R.drawable.btn_autobacklightselect); mImgBntRight.setOnTouchListener(new ImageButton.OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN){ bImageKeyDown_n = 0x08; v.setBackgroundResource(R.drawable.btn_autobacklightn); Log.v(TAG,User press the button); }else if(event.getAction() == MotionEvent.ACTION_UP){ bImageKeyDown_n = 0x00; v.setBackgroundResource(R.drawable.btn_autobacklightselect); Log.v(TAG,User release the button); } return false; } }); //延遲 mHandlerTime.removeCallbacks(timerRun); mHandlerTime.postDelayed(timerRun, 500);}

28

Page 30: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

第五章 總結

結論:

本專題從一開始的構思階段到最後完成一路上遇到不少

挫折,車體的配置、程式的撰寫到最後的實際測試。

完成後我們分成幾個階段進行測試,發現幾個問題,智

慧手機上的操控 APP 程式從按下按鈕到遙控車動作有短時

間的延遲,我們嘗試著去調整它的延遲時間,但會導致程式

出現錯誤,且遙控車在移動時我們發現移動的路徑會特別偏

向某一邊,這個問題在我們製作出初號車時就有發現,我們

猜想應該是組裝上不是很完美,馬達連接車體部分的螺絲孔

因為重複鑽孔的關係會讓它些微滑動,這些問題是我們需要

克服的。

關於這次智慧手機遙控車的製作,我們花了很多時間在

學習程式及硬體架構上,如果時間允許的話還想為遙控的部

分增加一些動作及功能,應用程式 APP 也想美化一些,這部

分有點遺憾。

29

Page 31: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

參考文獻 [1]文淵閣工作室,Android 初學特訓班(第三版),碁峯資訊股份有

限公司,2013 年 4 月。

[2]于志鵬、林彥君,Android 關鍵技術:102 個核心問題解決方案分

析與設計,博碩文化股份有限公司,2012 年 4 月。

[3]陳會安,Android SDK 程式設計範例教本,旗標出版股份有限公

司,2012 年 7 月。

[4]孫駿榮、吳明展、盧聰勇,最簡單的互動設計 Arduino 一試就上

手(第二版),碁峯資訊股份有限公司,2012 年 9 月。

[5]柯博文老師,Arduino 教學

http://www.powenko.com/wordpress/?p=4163

[6]鐘家強,遙控車入門

http://goo.gl/C3zvcv

30

Page 32: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

專題組員介紹

組長:

班級:四技電機四年乙班

學號:BD99061

姓名:周長逸

工作項目:撰寫 Arduino 程式、購買材料

專題製作心得:

我們這組作的式智慧型手機遙控車,主要是因為歷屆學

長以來所做的都是以 8051晶片作為主軸,手把做為遙控方

式,還沒有用過 Arduino來做過主軸和 Android作遙控,再

來因為 Arduino的使用方式非常的廣泛,三年級時也學過相

關的課程,改良過廁所手機遙控燈板,所以想將這個經驗用

來做我們這次的專題。

31

Page 33: 修 平 科 技 大 學 電 機 工 程 系 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4058/1/BD99B10-智慧手機遙控車... · 智慧手機遙控車 指 導 老 師:程兆龍

組員:

班級:四技電機四年乙班

學號:BD99070

姓名:施博仁

工作項目:撰寫 Android 程式、硬體架構

專題製作心得:

這個專題真的對我來說是一大挑戰,主要是想做些有

趣的題目,工具最好是手邊就有的,但沒想到難度還蠻大

的,程式的部分就讓我困擾了一段時間,解決了一個問題又

有另一個問題出來,可是跟專題指導老師以及組長一起討論

過後問題也漸漸解決了,這次專題實作讓我學到很多,也感

謝老師的指導還有一路上幫助我們度過難關的人讓我們能

夠有這樣的成果。

32