61
1 實務專題報告書 藍芽自走車 指 導 老 師: 楊基鑫 專題製作學生:江榮賢 BD101078 中華民國 105 年 12 月 13 日 DEPARTMENT OF ELECTRICAL ENGINEERING HSIUPING UNIVERSITY OF SCIENCE AND TECHNOLOGY

DEPARTMENT OF ELECTRICAL ENGINEERING HSIUPING …ir.hust.edu.tw/bitstream/310993100/5071/1/BD101B14專題報告書.pdf · 一、本研究主要包括 Arduino 控制板、馬達驅動版

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

  • 1

    實務專題報告書

    藍芽自走車

    指 導 老 師: 楊基鑫

    專題製作學生:江榮賢 BD101078

    中華民國 105 年 12 月 13 日

    修 平 科 技 大 學 電 機 工 程 系

    DEPARTMENT OF ELECTRICAL ENGINEERING

    HSIUPING UNIVERSITY OF SCIENCE AND TECHNOLOGY

  • 2

    摘要

    本次專題我們製作 Arduino 遙控自走車,硬體方面,核心控制

    端選擇 了 Arduino UNO 控制板為基礎,搭配 L298N 馬達驅動版

    驅動兩顆 DC 馬達,手機與 Arduino 溝通是使用藍芽的方式搭配

    自主 開發的手機 APP,控制自走車的行動。

  • 3

    目錄 摘要 ........................................................................................................................................... 2

    第一章 前言 .............................................................................................................................. 5

    1-1研究方法 .......................................................................................................................... 5

    1-2研究目的 .......................................................................................................................... 6

    1-3 研究流程.......................................................................................................................... 7

    第二章 文獻探討 ....................................................................................................................... 8

    2-1-1 Android的起源: ......................................................................................................... 8

    2-1-2 Android系統架構:.....................................................................................................10

    2-1-3 Android的特色 ..........................................................................................................11

    2-1-4 Android 的技術優點 ..................................................................................................12

    2-2-1 Eclipse ......................................................................................................................14

    2-2-2 JDK .............................................................................................................................14

    2-3-1 Arduino的起源 ..........................................................................................................15

    2-3-2 Arduino的特色 ..........................................................................................................16

    2-3-3 Arduino UNO板 ..........................................................................................................17

    2-4-1藍芽的起源 .................................................................................................................20

    2-4-2藍芽的特性 .................................................................................................................20

    2-4-3藍芽的應用 .................................................................................................................21

    2-4-4 藍芽模組介紹 .............................................................................................................22

    2-5 L298N 步進馬達驅動模組圖 ..........................................................................................24

    第三章 系統功能 ......................................................................................................................25

    3-1系統流程圖 .....................................................................................................................25

    3-2系統功能 .........................................................................................................................26

    3-3系統架構圖 .....................................................................................................................26

    第四章 操作說明 ......................................................................................................................27

    4-1-1 Eclipse 的安裝及設定 ..............................................................................................27

    4-1-2 JDK的安裝及設定.....................................................................................................29

  • 4

    4-1-3 SDK的安裝及設定 ......................................................................................................33

    4-2 Arduino安裝與設定 ......................................................................................................35

    4-3實作工具 .........................................................................................................................38

    4-4用 SDK測試程式碼 ..........................................................................................................38

    4-5 Arduino程式燒入 ..........................................................................................................44

    4-6藍芽配對與設定 App .......................................................................................................47

    第五章 成品與接線圖...............................................................................................................48

    5-1 L298N 馬達模組與 Arduino UNO 接線圖 ......................................................................48

    5-2 L298N 馬達模組與 Arduino UNO 完成圖 ......................................................................48

    5-3程式 ................................................................................................................................50

    第六章 結論 .............................................................................................................................59

    6-1結論 ................................................................................................................................59

    6-2未來方向 .........................................................................................................................60

    6-3參考文獻 .........................................................................................................................61

  • 5

    第一章 前言

    1-1研究方法

    一、本研究主要包括 Arduino 控制板、馬達驅動版 L298N,藍芽模組

    HC-05。

    二、智慧型行動裝置上 Application出的控制訊號使用藍芽模組來進行

    輸。

    三、手動遙控方式: 利用手機畫面上的方向鍵下達指令,使遙控車朝指定

    方向前進。

  • 6

    1-2研究目的

    研究目的使用者可以藉由智慧型裝置經藍芽模組與智慧循跡自走車後,自

    由的無線操控車體,包括前進、轉彎、後退等相關功能無人載具及遠端操

    控將是現在高度使用的 科技,像是無人飛機的偵查行動、深海探測及天氣

    預測等等,都是現今社會 上常使用的技術,循跡自走可以與固定地區配送

    信件或物品做為結合,節省 人力,以這些相關技術,做出簡易的車體,從

    中激發自我的想法與創意,應 用於不同的層面,就是本次研究所要達到的

    目的。

  • 7

    1-3 研究流程

    研究動機與目的:

    第一步先規劃出可行的專題研究題目,我們是以童年來做出發點於是決

    定以遙控車為題目讓我們童年的夢想再次發光並且從中得到自己做出一台

    遙控車玩具的成就感。

    背景知識與相關研究:

    利用網路多元的資料訊息及書籍探討來做為研究的資訊來源。並且加以

    統整,還有去尋找相關人員詢問方法及我們想法的可行性,把可行的做法

    呈現出來,讓所有看我們專題的人們能做出自己心中獨一無二的遙控車。

  • 8

    第二章 文獻探討

    2-1 Android介紹

    2-1-1 Android的起源:

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

    是用移動式設備,是由 Google 成立的 Open Handset Alliance[4]持續

    領導以及開發。系統最初是由 Andy Rubin[5]開發製作,一開始主要是

    支援手機,但是在 2005年八月被 Google收購。之後 Google成立開放

    手持設備聯盟來改良系統,發布了源代碼。讓其它生產商推出搭載

    Android 的智慧型手機。更逐漸拓展到平板電腦跟其他領域上面。

    Android 目前已經是全球第一大的智慧型手機作業系統。

  • 9

    2-1 Android機器人圖

    Android 硬體支援:

    由於 Android作業系統的開放性和可移植性,讓 Android可以被用在

    大部分的電子產品上面。

    例如:智慧型手機、平板電腦、個人電腦、筆記本電腦、電視、機頂盒、

    MP3播放器、MP4播放器、掌上遊戲機、家用主機、電子手錶、電子收音機、

    耳機、汽車設備、導航儀…等。

  • 10

    2-1-2Android 系統架構:

    Android的系統架構和其操作系統一樣,採用了分層的架構。Android

    的系統架構大致上可分成兩個部分,上半部使用 JAVA Code[6]撰寫應用程

    式,下半部使用 C Code撰寫系統程式,從架構圖看,Android分為四個層,

    從高層到低層分別是應用層、應用框架層、系統執行函數庫層和 Linux核

    心層,如圖 2-2

    圖 2-2 Android 系統架構圖

    Linux核心層(Linux Kernel):

    主要包括驅動程式、記憶體管理、執行緒管理、網路通訊協定等元件。

    (二) 系統執行函數庫層(Libraries & Android Runtime):

    C語言標準函數庫、多媒體函數庫、OpenGL ES、SQLite、Dalvik虛擬機器

    等。JAVA不能直接存取硬體,需要透過 NDK[7]才可以,NDK是由 C/C++語

    言撰寫的函數庫。

  • 11

    (三) 應用框架層(Application Framework):

    通知管理器、活動管理器等組成,開發者透過使用核心應用程式來調用

    Android框架提供的 API[9]。

    (四) 應用層(Applications):

    與同一系列核心應用程式一起發佈,主要由 JAVA語言撰寫。

    2-1-3 Android的特色

    (一) 強大的繪圖能力:

    繪圖分為 2D 與 3D,2D 方面 Android是用一套特有的函式庫,而 3D則是

    使用 OpenGL ES 1.0 ( OpenGL for Embedded Systems )規範的函式庫。

    (二) 媒體支援能力:

    Android 系統支援多種音訊、圖片以及影片等格式,如 MPEG-4、H.264、

    MP3、AAC、AMR、JPG、PNG、GIF …等。

    (三) Android 市場(Android Market):

    Android Market提供了跟 Apple[9]公司所推出的 App Store 一樣功能,

    是一個軟體開發者以及消費者都受惠的銷售平台。

  • 12

    (四) 升級:

    系統每半年進行一次系統升級的,分別定在每年的夏天和年終。

    加強了搜尋、VPN(Virtual Private Network)[10]、簡訊發音、Android

    Market … 以及一些功能上的更新,透過每一次的升級,可以讓 Android

    系統更加強大,這點也是傳統手機所辦不到的。

    2-1-4 Android 的技術優點

    Android 平台的好處是「將開發者侷限在應用層」的開發,並透過一

    個設計良好的 application framework[11]將 library 層「包裝起來」。

    傳統 GNU(Gnu`s Not Unix)/Linux 系統的「開源模式」是「從裡到外」全

    面開放,應用程式來自四面八方,每個應用程式底層使用到的 library 並

    不相同,這讓 Linux 平台的軟體發展容易失控,造成 Linux distribution

    [12]上雖然收錄了豐富的應用程式,但相對的也要包山包海地納入非常多

    的 shared library[13]。

    Android 雖然也採用了其他 open source[14]的專案成果,但

    Android 以很聰明的方式,解決傳統 Linux 開放手機平台的「相依性」問

    題,這也是過去長久以來,匯整使用開放源碼專案開發產品的大問題。

    Application framework 採用 Java 程式語言,並軟性的將開發者限制在

    application level[15]是 Android 解決上述技術難題的一個關鍵。網路

  • 13

    上有著數以萬計的 Free & Open Source Software (FOSS)專案,而被

    Android 採納的 FOSS (Free and open-source software)[16]專案僅有

    約 60 個左右,比起傳統 Linux distribution 必須收錄上千個套件。

    傳統的 Embedded Linux 系統程式基於 GNU C [17]以及大量的相依程式

    庫,因此很容易有「牽一髮而動全身」的問題出現。例如:某一個 library

    的 API(Application Programming Interface)變動將使得其它程式庫與應

    用程式執行錯誤,這時就必須修改原始程式碼並重新編譯才能解決問題。

    這個問題的主因,是因為 Linux 系統是採取動態程式庫的機制,程式庫的

    變更雖然只需要「抽換」掉動態程式庫檔,但是應用程式在執行時,才會

    產生「無法載入符號」的錯誤,除非是「定期」進行「系統重編譯」,否則

    很難即時修正此錯誤。

    Android 的底層並無太複雜的「程式庫相依」問題,這使得 Android

    可以比較容易將系統與 IDE(Integrated Development Environment) 開

    發工具做整合。在標準 C 程式庫方面,Google 則是採用 BSD(Berkeley

    Software Distribution)[19]授權實作了一份適合手機系統使用的版本,

    無疑是一個值得稱許的做法。

  • 14

    2-2 Android開發套件介紹

    2-2-1 Eclipse

    Eclipse[19]最早是由 Object Technologies International[20] 這家

    公司開發,Android 在 Eclipse 中加載 JAVA 和 JDK(Java Development

    kit)[21] 來撰寫 Android程式。

    圖 2-2 eclipse 圖示

    2-2-2 JDK

    JDK指的是一套用來發展 Java程式的工具, 或者你可以把它想成是一個

    讓你從事 Java程式研發工作的環境或平台。簡單的說只要你安裝這個 JDK

    在你的電腦裡,你就能夠寫一些 Java程式,放入自己手機執行,然後還可

    以測試看程式有沒有問題。

    2-2-3 SDK

    當我們用某種電腦語言開發一個程式時,我們會用到那個語言所提供的應

    用程式, SDK(Software development kit)[22]簡單的說就是在電腦上的

  • 15

    虛擬手機,不必在特地去找能執行 JDK的手機,我們會用 SDK軟體來撰寫、

    編譯、執行、除錯…等。

    2-3 Arduino的介紹

    2-3-1 Arduino的起源

    Massimo Banzi 之前是義大利 Ivrea 一家高科技設計學校的老

    師,他的學生們經常抱怨找不到便宜好用的微處理機控制器。西元 2005

    年, Massimo Banzi 跟 David Cuartielles 討論了這個問題,David

    Cuartielles 是一個西班牙籍晶片工程師,當時是這所學校的訪問學者。

    兩人討論之後,決定自己設計電路板,並引入了 Banzi 的學生 David

    Mellis 為電路板設計開發用的語言。兩天以後,David Mellis 就寫出了

    程式碼。又過了幾天,電路板就完工了。於是他們將這塊電路板命名為

    『Arduino』。當初 Arduino 設計的觀點,就是希望針對『不懂電腦語言的

    族群』,也能用 Arduino 做出很酷的東西,例如:對感測器作出回應、閃

    爍燈光、控制馬達…等等。

  • 16

    2-3-2 Arduino的特色

    不僅軟體是開放源碼,連硬體也是一樣開放的,開發軟體用的 IDE[24]

    可以免費下載,以及電路設計圖也是可以從網路上面下載下來。由於

    Arduino的開放,很多人都樂於分享他們的作品。在購買的價格上面也是

    很便宜,有興趣的人都可以花一筆小錢買到,如圖 2-4。

    圖 2-4 Ardunio 程式編輯軟體

  • 17

    2-3-3 Arduino UNO 板

    UNO板子相比並沒有很大的變動,基本上都一樣。可使用 ICSP(In

    circuit serial programming)[25]燒入器,將啟動程式燒入 IC晶片,UNO

    能簡單與各式各樣的電子元件連接,例如 LED 燈、喇叭、馬達、開關、溫

    濕度感測器、紅外線發射與接收器、LCD 顯示裝置,以及 Ethernet、WiFi、

    XBee、Bluetooth…等各種通訊模組。再配合撰寫一些自動控制的程式,能

    利用 Arduino 做出各式各樣的自動控制應用,例如利用溫度感測器控制風

    扇的運轉、使用可變電阻控制燈光的明暗、控制馬達的轉速,以及製作自

    走車、飛行器…等。

  • 18

    (一) MCU:

    UNO的心臟,等同電腦的 CPU,主要功能是利用寫在 MCU(Micro Controller

    Unit)內的軟體,去控制週邊 IO動作。

    (二) USB (Data+PWR):

    支援 USB接頭傳輸資料,還可以提供 5V給電源使用。

    (三) USB to UART converter:

    電腦訊息透過 USB訊號轉成 UART(Universal Asynchronous

    Receiver/Transmitter) (TX/RX) 再送給 MCU。主要使用 upload code到

    MCU

    (四) Digital I/O:

    數位的輸入輸出埠,MCU藉由這 14支數位腳去讀數位值。TX->1 = 電腦訊

    息傳遞到 UNO。RX

  • 19

    (九) Debug LED:

    利用數位腳第 13支控制這顆 LED亮或暗,用於寫 code時 debug使用。

    (十) TX/RX LED:

    upload code進到 MCU時,這兩顆 LED會同時跟著閃爍。

    (十一) Fuse:

    USB的+5V端的保險絲。

    (十二) 7~12V DC-in:

    可以外接電源,輸入電壓必須在 7V~12V。

    (十三) 5V LDO:

    7V~12V的 DC-in轉成 5V供電給板子。

    (十四) 3.3V LDO:

    5V 轉成 3.3V,主要是提供 PWR function上的 3.3V提供外部電路使用。

    (十五) PWR function:

    Vin = 可外接 7V~12V電源,5V、3.3V = 提供外部電路使用,GND、GND = 接

    地接腳,RESET = 短路時會重置 MCU。

  • 20

    2-4藍芽的介紹

    2-4-1藍芽的起源

    易利信(Ericsson)在 1994 年成立一個研發無線通訊標準的專案,主

    要是發展一種低功率的無線電介面,以取代原有行動電話(Mobile Phone)

    與其週邊附件(handset、PC cards、desktop devices)間繁雜的連接問

    題。 1998 年 2 月由易利信(Ericsson)、諾基亞(Nokia)、IBM、英特爾

    (Intel)及東芝(Toshiba)等含蓋了通信、電子、電腦三大領域的五大

    廠商,共同成立一個專門的研究小組 SIG18(Special Interest Group),

    共同發展此種低功率、短距離的無線電通信技術,而將這種新的無線電通

    信技術命名為「藍芽」(Bluetooth)技術。

    2-4-2藍芽的特性

    藍芽技術是一種小範圍的無線電頻率技術,裝置間透過晶片可互相溝

    通,不必再透過纜線傳輸。目前,低功率的無線傳輸仍以紅外線為主,應

    用的層面仍侷限在行動電話、PDA、電腦及其相關產品上。

    藍芽主要特點如下:

    (一) 操作頻段:2.4GHz 工業、科學、醫療頻段。

    (二) 可及範圍十公分到一百公尺。

    (三) 使用跳頻展頻技術 FHSS(Frequency Hopping Spread Spectrum)。

    (四) 最高可支援八個連結埠。

  • 21

    (五) 可以超越紅外線傳輸埠的限制,需要傳輸端與接收端面對面一直線

    的傳輸。

    (六) 支援同步和非同步傳輸模式,易與 TCP/IP[26]整合成網路。

    2-4-3藍芽的應用

    藍芽所帶來的不只是一個更快、更遠、更安全、更方便的網路傳輸方

    式;更重要的,藍芽是一種共通的標準,無論是通訊、資訊、媒體(消費

    性電子)等可攜式終端機,都可以使用一種語言,彼此自由溝通相互傳送

    資訊,打破 3C產品之間的溝通障礙。個人通訊將會因藍芽無線傳輸技術產

    生革命性的演進,突破有線的限制跨入無線傳輸時代。一般使用者最常使

    用藍芽的方式,大部分在使用手機時,使用藍芽耳機來當作無線耳機與麥

    克風。藍芽耳機對健康的好處,由於手機有高功率的電磁波,據報導證實

    電磁波會對人體造成傷害。藍芽比一般傳統式紅外線傳輸更快,且不用一

    直線對準兩個傳輸埠就可以連接。藍芽科技在傳輸方面的好處就是,它能

    夠允許兩個裝置,不需排成一直線的狀態下,還能夠以無線的方式傳送資

    料。

  • 22

    2-4-4 藍芽模組介紹

    至今手機跟電腦都有藍芽配備,電子產品或者是互動藝術的作品,如果

    可以擁有藍芽通訊的能力,便可以跟手機藍芽連結做各種應用。藍芽模組

    分成主機和從機,主機是主動搜尋的,從機是被搜尋的。這次使用從機模

    組,從機模組之間不能連接,因此我們使用手機藍芽連接藍芽模組到 UNO

    板,藍芽模組可以讓你在範圍大約 10米內無線傳輸通信。

    藍芽模組 HC-05

    藍芽模組可以讓你在 10 米範圍內實現無線傳輸通信。該模組無需瞭解 複

    雜的藍芽底層協定,只要簡單的幾個步驟即可享受到無線通訊的便捷。 描

    述 (1). 採用 CSR 主流藍牙晶片,藍牙 V2.0 協定標準 (2). 串口模組工

    作電壓 3.3V。 (3). 串列傳輸速率默認出廠 9600,用戶可設置。 (4). 核

    心模組尺寸大小為:28mm x 15 mm x 2.35mm。 (5). 工作電流: i. 配對

    中:30~40mA ii. 配對完畢未通信:2~8Ma iii. 通信中:8mA (6). 休

    眠電流:不休眠 (7). 用於 GPS 導航系統,水電煤氣抄表系統,工業現場

    采控系統。 (8). 可以與藍牙筆記本電腦、電腦加藍牙適配器、PDA 等設

    備進行無 縫連接 特性 (1). LED 引腳指示藍牙連接狀態,輸出脈衝表示

    沒有藍牙連接,輸出 高表示藍牙已連接並打開了埠 (2). 電源電壓

    3.3V,未配對時電流約 30mA,配對後約 8mA,絕對禁 止接反電源!電源

    絕對禁止超過 4.2V! (3). 介面電位 3.3V,可以直接連接各種單晶片

  • 23

    (51,AVR,PIC,ARM, MSP430 等),5V 單晶片也可直接連接,無需 MAX232

    也不能經 過 MAX232!

    (4). 空曠地有效距離 10 米,超過 10 米也是可能的,但不對此距離的

    連接品質做保證

    (5). 配對以後當全雙工串口使用,無需瞭解任何藍牙協定,但僅支援 8

    位元資料位元、1 位元停止位、無奇偶校驗的通信格式,這也是最常用的

    通信格式,不支持其他格式。

    (6). 在未建立藍牙連接時支援通過 AT Command 設置串列傳輸速率、

    名稱、配對密碼,設置的參數,可保存參數。藍牙連接以後自動切換到傳

    輸模式。

    (7). 體積小巧(2.7cm*1.3cm),工廠貼片生產,保證貼片品質。

    (8). 主機或從機,可通過 AT Command 做設定,從機之間不能配對。

  • 24

    2-5 L298N 步進馬達驅動模組

    1.驅動晶片: L298N 雙 H 橋直流電機驅動晶片 2.驅動部分端子供電範

    圍:Vs:+5V~+12V 3.驅動部分最大電流:2A 4.邏輯部分端子供電範圍:

    Vss:+5V~+7V(可板內取電+5V) 5.邏輯部分工作電流範圍:0~36mA

    6.控制信號輸入端: IN1 IN2 IN3 IN4 7.致能信號輸入端: ENA ENB 8.

    最大功耗:20W(溫度 T=75℃時) 9.工作溫度:-25℃~+130℃

    2-5 L298N 步進馬達驅動模組圖

  • 25

    第三章 系統功能

    3-1系統流程圖

  • 26

    3-2系統功能

    當按下前進、後退、左轉、右轉時,由客戶端手機透過藍芽到

    主控端手機接受訊息後 再把訊息傳給藍牙模組再由客戶端手機透過藍芽

    傳送訊息給遙控車藍芽模組,遙控車接收訊息後,Arduino程式會分析訊

    息,再把訊息傳給 L298N馬達模組,再發送指令讓馬達轉動。

    3-3系統架構圖

  • 27

    第四章 操作說明

    4-1 開發套件的安裝與設定

    4-1-1 Eclipse 的安裝及設定

    依照電腦作業系統環境下載,如圖 4-1

    圖 4-1 Eclipse 下載網頁圖

    安裝完成後,會彈出 workspace,這是設定專案檔案存放位置。(建議別設

    定中文路徑,容易出現問題),如圖 4-2。

  • 28

    圖 4- 2 Eclicpse 工作路徑圖

    點選上方 Help再按 Install New Software 在 Work with 視窗旁邊點選

    Add按鈕在以下視窗填入以下數值完成後,如圖 4-3。

    圖 4-3 Eclicpse 設定圖

    他會把填好的數值帶入欄位內,抓完 Android Developer Tools 套件把

    它給 Select All 勾選,如圖 4-4。

  • 29

    圖 4-5 eclicpse 設定圖

    4-1-2 JDK的安裝及設定

    步驟一我們需要先挑選適合自己電腦的作業系統版本,

    如圖 4-5。

  • 30

    圖 4-5 JDK 下載選擇圖

    步驟二開始安裝 JDK如圖 4-6。

    4-6 JDK 安裝進度圖

    完成 JDK安裝之後,再來設定相關系統環境變數。

    首先找到 JDK路徑,接下來把紅色框起來的路徑複製,如圖 4-7

  • 31

    圖 4-7 複製路徑圖

    找到電腦裡的系統內容的環境變數,反白處 Path系統變數,如圖 4-8。

    圖 4-8 Path 系統變數圖

  • 32

    變數值最後面加入 JDK路徑 C:\ProgramFiles\Java\jdk1.7.0_45\bin,

    如圖 4-9

    圖 4-9 路徑更改圖

    設定完成後,前往命令提示字元,打上 javac

    檢查路徑是否正確,如圖 4-10

    圖 4-10 路徑設定正確圖

  • 33

    路徑設定錯誤,如圖 4-11。

    4-11 路徑設定錯誤圖

    4-1-3 SDK 的安裝及設定

    有兩種格式可以下載,點選.zip 格式的,因為不用安裝,如圖 4-12。

    圖 4-12 SDK 下載選單圖

  • 34

    點選 Eclipse工作選單中的 Windows(23) > Preference。

    點選左側 Android項目,SDK Location 選擇剛才解壓縮的目錄。

    點選 Apply之後點選 OK,如圖 4-13。

    圖 4-13 解壓縮路徑圖

    點選 Eclipse工作選單中的 Window > Android SDK Manager。

    勾選 Tools 以及 Android 2.3.3的版本安裝,之後點選 Apply,如圖 4-13。

    圖 4-15 選擇安裝版本圖

  • 35

    4-2 Arduino安裝與設定

    首先到 Arduino官方網站找適合你電腦的作業系統並下載程式,下載完之

    後直接安裝,如圖 4-16。

    圖 4-16 Arduino 下載選單圖

    接著把你的 UNO 板上的 USB(Data+PWR)接上電腦,這時候你的電腦應該搜

    尋不到 Arduino的 USB Driver。沒關係下載 Arduino IDE時,連帶 USB

    Driver一起下載了,如圖 4-17

  • 36

    4-17 裝置設定圖

    這時候打開電腦管理的裝置管理員查看,基本上會看到無法辨識的裝置。

    接著在無法辨識的裝置上點選右鍵內容,點選更新驅動程式,再點選瀏覽

    選擇路徑,路徑位置在安裝 Arduino時的資料夾內的 drivers,如圖 4-18。

  • 37

    圖 4-18 選擇路徑圖

    瀏覽完畢後,就能順利的安裝 USB Driver,如圖 4-19。

    圖 4-19 安裝 USB Driver 圖

    安裝 USB Driver完成後,可以打開電腦管理的裝置管理員檢查是否正確出

    現 USB Serial Port(COM21),如圖 4-20。

  • 38

    圖 4-20 連接阜選擇圖

    4-3實作工具

    (一) 硬體 : 電腦一台、智慧手機一台、藍芽自走車一台、

    Arduino UNO一塊、HC-5藍芽模組一塊。

    (二) 作業系統 : Windows7、Android4.4。

    (三) 通訊設備/協定 : Bluetooth

    (四) 程式開發環境 : Eclipse、Arduino IDE。

    4-4用 SDK測試程式碼

    如果要將程式碼燒入手機,先使用 SDK虛擬器測試是否能執行,避免

    直接燒入手機發生錯誤帶來的麻煩。首先開啟你的 Eclipse選擇 Window >

    Android Virtual Device Manager,接著按 New,如圖 4-21。

  • 39

    圖 4-21 Android Virtual Device Manager 圖

    AVD Name是打模擬器的名稱,Device是選擇模擬器的畫面大小,Target

    是選擇 Android的版本,請符合目前專案版本或者選擇更新的 Android版

    本,完成點選 OK,如圖 4-22。

    圖 4-22 Android Virtual Device Manager 設定圖

    之後點選 Start開始執行模擬器,成功開啟會出現模擬器主畫面,右側會

    有一些按鍵,如圖 4-23。

  • 40

    圖 4-23 模擬器開啟圖

    接著再專案按右鍵選擇 Run As > Android Application,就會開始把程式

    碼燒入模擬器,如圖 4-24。

    圖 4-24 燒入選擇圖

    在模擬器上就會看到一個 App被開啟,這就是 Eclipse上專案程式碼,並

    且點選 App內部的選項檢查是否出現錯誤,這是一個成功的程式碼,再來

    就是將專案燒入真實手機了,如圖 4-25。

  • 41

    圖 4-25 模擬器畫面圖

    首先將手機的 USB偵錯功能打開,大部分手機都在開發環境選項裡面,

    如圖 4-26。

    圖 4-26 USB 偵錯圖

  • 42

    USB偵錯 : 簡單來說就是開啟 DEBUG功能,這樣才能透過 Google釋放出

    來的 Android SDK開發者工具連線。開啟偵錯之後,到電腦的裝置管理員,

    看是否系統有抓到 Android ADB(Android Debug Bridge) Interface。

    圖 4-27 可攜式裝置介面圖

    如果沒有抓到 Android ADB Interface,如圖 4-27。

    在 SAMSUNG Mobile MTP(Media Transfer Protocol) Device 內容,點選

    更新驅動程式,再點選自動搜尋驅動程式。(一開始下載的 Samsung USB

    driver)

  • 43

    4-28 可攜式裝置搜尋成功圖

    裝置有正確抓到驅動程式,如圖 4-28。完成設定之後,切換到 DDMS畫面

    確認是否有看到手機連線,請務必確認有關閉所有的SDK模擬器和開啟 USB

    偵錯模式,如圖 4-28

    圖 4-28 正確連接手機圖

  • 44

    圖 4-29 程式成功燒入至手機圖

    4-5 Arduino程式燒入

    首先使用傳輸線將自走車與電腦連接,開啟 Arduino 進入程式畫面,

    點選打勾(Verify)檢查程式是否正常運行,如圖 4-30。

  • 45

    圖 4-30 Arduino 測試圖

    在紅色框框裡輸入 W、A、S、D測試程式是否能夠讓自走車運行,如圖

    4-31。

    圖 4-31 程式測試圖

  • 46

    完成測試之後,將程式燒入自走車。

    點選 Tools > Serial Port > COM4(選擇連接阜),如圖 4-45。

    圖 4-32 連接阜選擇圖

    按下→(Upload)將程式燒入自走車,完成下方會顯示 Done

    uploading,如圖 4-33

    圖 4-33 測試成功圖

  • 47

    4-6藍芽配對與設定 App

    此時使用手機開啟藍芽搜尋自走車上的藍芽模組並做配對,如圖

    4-34。

    圖 4-34 藍芽配對圖

  • 48

    第五章 成品與接線圖

    5-1 L298N 馬達模組與 Arduino UNO 接線圖

    圖 5-1 接線圖

    5-2 L298N 馬達模組與 Arduino UNO 完成圖

    圖 5-2 成品圖

  • 49

    圖 5-3 成品圖

  • 50

    5-3程式

    #include

    #include

    // the maximum received command length from an Android system (over

    the bluetooth)

    #define MAX_BTCMDLEN 128

    // // HC-05 Arduino

    // TX RX/Pin13

    // RX TX/Pin12

    SoftwareSerial BTSerial(13,12); // Arduino RX/TX

    byte cmd[MAX_BTCMDLEN]; // received 128 bytes from an Android system

    int len = 0; // received command length

    /* Input for motorA:

    IN1 IN2 Action

    LOW LOW Motor Stop

    HIGH LOW Motor moves forward

    LOW HIGH Motor moves backward

    HIGH HIGH Motor Stop

  • 51

    */

    const int motorIn1 = 5;

    const int motorIn2 = 6;

    const int motorIn3 = 9;

    const int motorIn4 = 10;

    #define LOW 0

    #define HIGH 1

    // the setup function runs once when you press reset or power the

    board

    void setup() {

    Serial.begin(9600); // Arduino 起始鮑率:9600

    BTSerial.begin(9600); // HC-05 出廠的編號:每個藍牙晶片的編號都

    不太一樣,請務必確認

    Serial.println("STart to bbbbbb");

    #if 1

    pinMode(motorIn1, OUTPUT);

    pinMode(motorIn2, OUTPUT);

    pinMode(motorIn3, OUTPUT);

    pinMode(motorIn4, OUTPUT);

    #endif

  • 52

    }

    void motorstop()

    {

    analogWrite(motorIn1, LOW);

    analogWrite(motorIn2, LOW);

    analogWrite(motorIn3, LOW);

    analogWrite(motorIn4, LOW);

    }

    void forward(int value)

    {

    analogWrite(motorIn1, LOW);

    analogWrite(motorIn2, value);

    analogWrite(motorIn3, LOW);

    analogWrite(motorIn4, value);

    }

    void backward(int value)

    {

    analogWrite(motorIn1, value);

    analogWrite(motorIn2, LOW);

  • 53

    analogWrite(motorIn3, value);

    analogWrite(motorIn4, LOW);

    }

    // Let right motor keep running, but stop left motor

    void right(int value)

    {

    analogWrite(motorIn1, LOW);

    analogWrite(motorIn2, value);

    analogWrite(motorIn3, LOW);

    analogWrite(motorIn4, LOW);

    }

    // Let left motor keep running, but stop right motor

    void left(int value)

    {

    analogWrite(motorIn1, LOW);

    analogWrite(motorIn2, LOW);

    analogWrite(motorIn3, LOW);

    analogWrite(motorIn4, value);

    }

    const int DELAY = 1000;

  • 54

    #if 0

    void selfTest()

    {

    char str[MAX_BTCMDLEN];

    sprintf(str,"forward\n");

    Serial.println(str);

    forward();

    delay(DELAY);

    motorstop(); delay(500);

    sprintf(str,"backward\n");

    Serial.println(str);

    backward();

    delay(DELAY);

    motorstop(); delay(500);

    sprintf(str,"right\n");

    Serial.println(str);

    right();

    delay(DELAY);

    motorstop(); delay(500);

    sprintf(str,"left\n");

  • 55

    Serial.println(str);

    left();

    delay(DELAY);

    motorstop(); delay(500);

    }

    #endif

    // the loop function runs over and over again forever

    void loop() {

    //selfTest();

    #if 1

    char str[MAX_BTCMDLEN];

    int insize, ii;

    int tick=0;

    int value = 100;

    while ( tick0 ){ // 讀取藍牙訊

    for ( ii=0; ii

  • 56

    cmd[(len++)%MAX_BTCMDLEN]=char(BTSerial.read());

    }

    } else {

    tick++;

    }

    delay(5); // wait RX signal

    }

    if ( len ) { // 用串列埠顯示從 Android手機傳過來的訊息

    sprintf(str,"%s",cmd);

    Serial.println(str);

    switch ( cmd[0] ) {

  • 57

    case 'f': // DC motor forward

    // Serial.println("forward");

    forward(125);

    break;

    case 'b': // DC motor backword

    // Serial.println("backward");

    backward(125);

    break;

    case 'l': // DC motor left

    // Serial.println("left");

    left(100);

    break;

    case 'r': // DC motor right

    // Serial.println("right");

    right(100);

    break;

    case 'x':

  • 58

    forward(175);

    break;

    case 's':

    default:

    motorstop();

    break;

    }

    memset(cmd,0,sizeof(byte)*128);

    cmd[0] = '\0';

    }

    len = 0;

    // delay(1000);

    #endif

    }

  • 59

    第六章 結論

    6-1結論

    我們的專題研究是結合了電子電路,接麵包板讓她得以通電與匯入程式

    碼使其自走車得以操控,並且結合了目前幾乎人人都有的智慧型手機做結

    合,來完成一台能夠操控的自走車,其中也不乏遭遇了許多困難與挫折,

    如一開始光要怎麼讓自走車與手機做連接我們就煩惱了許久,之後的匯入

    程式碼自己做出一款 APP更是令我們差點放棄,程式碼這方面一直是令我

    們怯步的一大難關,後來靠著翻書上網找資料老師到教導,終於成功讓自

    走車動了起來,經過了許多測試並且從中不斷的除錯與更改才得以完成此

    專題。

  • 60

    6-2未來方向

    其實我們覺得自走車的功能絕對不僅止於能做為遙控車的玩具使用而

    以,她還可以在各式各樣的領域中扮演重要角色。

    例如以我們這次專題中的自走車為例,她可以扮演著探查危險環境中

    的角色,如果用在警察攻堅方面,則可以免去人員需要曝露在危險環

    境下的狀況,達到減少人員傷亡的功能。

    如果再加上其他功能或是機械手臂並能幫助行動不便的人

    對未來有很多幫助 這些構思都值得參考呢~

  • 61

    6-3參考文獻

    http://www.caijia-t.com/prodshow.asp?ProdId=CZ-L298N

    http://ir.lib.cyut.edu.tw:8080/bitstream/310901800/23198/1/010.

    pdf

    http://www.pu-yang.com.tw/media/products/0731191001406789695.pd

    f

    http://gsyan888.blogspot.tw/2014/12/arduino-me-arm-bluetooth-ca

    r.html

    http://gsyan888.blogspot.tw/2014/03/arduino-s4a-app-inventor-bl

    uetooth-car.html

    http://www.techbang.com/posts/23129-maker-club-ad-hoc-arduino-b

    luetooth-remote-control-car

    http://www.caijia-t.com/prodshow.asp?ProdId=CZ-L298Nhttp://ir.lib.cyut.edu.tw:8080/bitstream/310901800/23198/1/010.pdfhttp://ir.lib.cyut.edu.tw:8080/bitstream/310901800/23198/1/010.pdfhttp://www.pu-yang.com.tw/media/products/0731191001406789695.pdfhttp://www.pu-yang.com.tw/media/products/0731191001406789695.pdfhttp://gsyan888.blogspot.tw/2014/03/arduino-s4a-app-inventor-bluetooth-car.htmlhttp://gsyan888.blogspot.tw/2014/03/arduino-s4a-app-inventor-bluetooth-car.htmlhttp://www.techbang.com/posts/23129-maker-club-ad-hoc-arduino-bluetooth-remote-control-carhttp://www.techbang.com/posts/23129-maker-club-ad-hoc-arduino-bluetooth-remote-control-car