3 伺服馬達 藍芽遙控自走車 4 -...

103
NTU CSIE 講師 張傑帆 Chang, Jie-Fan 近年來,機器人與相關技術的發展,在很多行業的應用被逐漸深 入和拓寬,機器人設計有移動機構、傳感器和控制器來組成。自 動化的自走車,也算是機器人的一種,稱為輪型機器人或車型機 器人,我們將透過Arduino來實做一簡單可遙控且可以自重尋找 路線的遙控自走車專案, 藍芽遙控自走車 1 直流馬達控制 2 自走車 3 伺服馬達 4 藍芽通訊 5 藍芽遙控自走車

Upload: others

Post on 29-Oct-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

  • NTU CSIE

    講師張傑帆 Chang, Jie-Fan

    近年來,機器人與相關技術的發展,在很多行業的應用被逐漸深入和拓寬,機器人設計有移動機構、傳感器和控制器來組成。自動化的自走車,也算是機器人的一種,稱為輪型機器人或車型機器人,我們將透過Arduino來實做一簡單可遙控且可以自重尋找路線的遙控自走車專案,

    藍芽遙控自走車

    1 直流馬達控制

    2 自走車

    3 伺服馬達

    4 藍芽通訊

    5 藍芽遙控自走車

  • NTU CSIE

    藍芽遙控自走車

  • NTU CSIE

    材料

    縲絲起子車底盤+馬達+電池盒電線for馬達*49V電池接口+電源接頭3號電池*49V電池*1L9110

    SG90 server

    HC-SR04 測距SR04支架mini 麵包版 *1HC-05藍芽模組公母線排 4+6+4

  • NTU CSIE

    作品賞析

  • NTU CSIE

    作品賞析

  • NTU CSIE

    作品賞析

  • NTU CSIE

    作品賞析

  • NTU CSIE

    作品賞析

  • NTU CSIE

    組裝底盤

  • NTU CSIE

  • NTU CSIE

  • NTU CSIE

    認識直流馬達玩具和動力模型的直流馬達,通常是FA-130, RE-140, RE-260或RE-280型。

  • NTU CSIE

    (a) 小功率型 (b) 大功率型

    圖 12-1 直流馬達

    直流馬達(direct current motor,簡稱DC motor)是由法拉第(Faraday)設計並經實驗成功的最早期電動機。

    當加一直流電源在馬達線圈上使其產生電流時,在線圈旁的永久磁鐵因電磁作用,會將電能轉換成機械動能驅使馬達轉動。

    直流馬達普遍應用於日常生活中,如玩具車、模型汽車、電動刮鬍刀、錄音機、錄影機、CD唱盤、電動跑步機、電車、快速電梯、工作母機(車床、銑床)等。

  • NTU CSIE

    直流馬達的規格書

    RF-300型的主要規格

    FA-130型的主要規格

    設計馬達的電晶體控制電路時,最重要的兩個參數是工作電壓和堵轉電流。馬達的負荷越重,轉速會變慢,耗電流也越大,發熱量也增加。

  • NTU CSIE

    電壓驅動:當兩極的電壓差愈大時,則馬達轉速愈快,反之當兩極的電壓差愈小時,則馬達轉速愈慢。

    電流驅動:當通過線圈的電流愈大時,則馬達扭力愈大,反之當通過線圈的電流愈小時,則馬達扭力愈小。

    直流馬達的轉速不受電源頻率的限制,因此可以製作出高速馬達。

    有刷馬達控制電路簡單,但是馬達內的碳刷使用一段時間後會磨損,必須定期更換。無刷馬達不須更換碳刷,強大有效率,但控制電路較複雜。

    Arduino板輸出電流約25mA,無法直接驅動直流馬達,必須外接電晶體或驅動電路,才能有足夠電流來驅動直流馬達轉動。

    12-1-1 驅動方式

  • NTU CSIE

    直流馬達外部有兩個電極M+及M-,當M+極電壓大於M-極電壓時,馬達正轉,反之當M+極電壓小於M-極電壓時,馬達反轉。

    只要改變電壓極性,即可控制馬達轉向。

    轉向控制

    轉速控制

    平均直流電壓T

    tVV Hmdc

    T

    tH

    Vm

    tL

    t0

    Vdc

    T

    tHtH

    Vm

    Vm

    tLtL

    t0

    Vdc

    Vdc

    PWM信號

    利用脈波寬度調變(pulse width modulation,簡記PWM)來控制直流馬達轉速。

    馬達有基本的起動轉矩以抵抗摩擦力,兩極的電壓差必須大於馬達的最小工作電壓,馬達才會轉動,因此PWM信號的工作週期不能太小,否則太小的平均直流電壓,將無法驅使馬達轉動。

  • NTU CSIE

    控制馬達正反轉的H橋式馬達控制電路

  • NTU CSIE

  • NTU CSIE

    控制馬達正反轉的H橋式馬達控制電路

  • NTU CSIE

    L298N馬達控制電路板

  • NTU CSIE

    L9110

    • On-board 2 L9110 motor control chip

    • Module can be driven by two dc motors at the same time or one phase 4

    line 2 type stepping motor

    • Input voltage: 2.5-12V DC

    • Each channel has a continuous output current 800 ma

    • PCB Size: 29.2mm x 23mm

    1. B-IA: Motor B Input A 2. B-IB: Motor B Input B 3. GND: ground 4. VCC: 2.5V-12V DC 5. A-IA: Motor A Input A 6. A-IB: Motor B Input B

  • NTU CSIE

    直流馬達轉向控制實習

    功能說明:

    利用Arduino板控制直流馬達轉動方向。本例由Serial Monitor視窗傳送命

    令控制馬達轉動方向,

    當輸入R鍵時,馬達右轉;

    當輸入L鍵時,馬達左轉;

    當輸入S鍵時,馬達停止轉動。

    如圖下所示L9110 全橋(full-H)驅動器,其工作電壓 2.5 V到12V,提

    供內部邏輯電源,可以連接至Arduino板的+5V腳,為外接電源,提供輸

    出端馬達所需電源。

  • NTU CSIE

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3.3

    V5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~11

    ~10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    直流馬達

    Vcc1 1A 2A 3A 4A

    GND

    GND

    GND

    1Y 2Y 3Y 4Y

    L293D

    半橋驅動器

    Vcc2

    1,2EN

    3,4EN

    馬達電源

    16

    1

    GND

    4

    5

    12

    13

    2 7

    3 6

    8

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3.3

    V5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~11

    ~10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3.3

    V5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~11

    ~10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz16MHz

    直流馬達

    Vcc1 1A 2A 3A 4A

    GND

    GND

    GND

    1Y 2Y 3Y 4Y

    L293D

    半橋驅動器

    Vcc2

    1,2EN

    3,4EN

    馬達電源

    16

    1

    GND

    4

    5

    12

    13

    2 7

    3 6

    8BIA BIB AIA AIB

    MoterB MoterA

    L9110

    1. B-IA: Motor B Input A 2. B-IB: Motor B Input B 3. GND: ground 4. VCC: 2.5V-12V DC 5. A-IA: Motor A Input A 6. A-IB: Motor B Input B

  • NTU CSIE

    C01.ino

  • NTU CSIE

  • 條件控制指令—if-else-if敘述 if-else if 敘述

    使用 if-else if 敘述時,必須注意 if 與 else if 的配合,其原則是 else if 要與最接

    近且未配對的 if 配成一對,通常我們都是以 Tab 定位鍵或空白字元來對齊配對

    的 if-else,才不會有錯誤動作出現。在 if 敘述或 else 敘述內,如果只有一行敘

    述時,可以不用加大括號{},但是一行以上敘述時,一定要加上大括號"{ }"。

    指令格式

    if( 條件1 ) //條件1成立?

    { //條件1成立,執行敘述1。

    //敘述1;

    }

    else if( 條件2 ) //條件2成立?

    { //條件2成立,執行敘述2。

    //敘述2;

    }

    else if( 條件3 ) //條件3成立?

    { //條件3成立,執行敘述3。

    //敘述3;

    }

    else //條件1、2、3皆不成立。

    { //條件1、2、3皆不成立,執行敘述4。

    //敘述4;

    }

    Arduino程式流程控制

  • NTU CSIE

    序列埠監控視窗Arduino內建處理序列埠連線的Serial程式庫建立序列埠連線的首要任務是設定資料傳輸率,底下的程式設定為9600bps序列埠監控視窗的連線速率要和Arduino程式一致。

  • NTU CSIE

    從Arduino接收序列資料

    微處理器內部有一個類似儲存槽的緩衝記憶區(buffer),用於暫存來自序列埠的輸入資料。

    如果緩衝記憶區裡面沒有資料,Serial.available()將傳回0。

  • NTU CSIE

    1.設計 Arduino 程式,使用 Serial Monitor 視窗控制直流馬達轉向。當輸入R鍵時,馬

    達右轉 2 秒停止;當輸入L鍵時,馬達左轉 2 秒停止。

    2.設計 Arduino 程式,使用 Serial Monitor 視窗控制直流馬達轉向。當輸入0~9鍵時,

    設定馬達轉動秒數;當輸入R鍵時,馬達右轉所設定的秒數,例如輸入2R代表右

    轉 2 秒停止;當輸入L鍵時,馬達左轉所設定的秒數,例如輸入5L代表左轉 5 秒

    停止。

    (回家)實作練習

  • NTU CSIE

    12-3-4 電動車行進方向控制實習

    功能說明:

    利用 Arduino 板控制電動車前進、後退、右轉、左轉及停止等功能。本例

    使用 L293D IC 組成全橋驅動器,控制電動車的左、右兩組直流馬達,並以 Serial

    Monitor 視窗輸入按鍵 0~4 來控制直流馬達轉向。按鍵功能說明如表 12-2 所示,

    本例利用左、右兩個馬達的正、反轉來控制電動車行進方向。

    表 12-2 電動車行進方向控制

    按鍵 左馬達 右馬達 功能

    0 停止 停止 停止

    1 反轉 正轉 前進

    2 正轉 反轉 後退

    3 反轉 停止 右轉

    4 停止 正轉 左轉

  • NTU CSIE

    電路圖及麵包板接線圖:

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3.3

    V5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~11

    ~10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    左馬達

    Vcc11A 2A 3A 4A

    GND

    GND

    GND

    1Y 2Y 3Y 4Y

    L293D

    半橋驅動器

    Vcc2

    右馬達

    1,2EN

    3,4EN

    馬達電源

    16

    1

    9

    GND

    4

    5

    12

    13

    2 7 10 15

    3 6 11 14

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3.3

    V5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~11

    ~10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3.3

    V5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~11

    ~10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz16MHz

    左馬達

    Vcc11A 2A 3A 4A

    GND

    GND

    GND

    1Y 2Y 3Y 4Y

    L293D

    半橋驅動器

    Vcc2

    右馬達

    1,2EN

    3,4EN

    馬達電源

    16

    1

    9

    GND

    4

    5

    12

    13

    2 7 10 15

    3 6 11 14

    圖 12-10 電動車行進方向控制實習電路圖

    圖 12-11 電動車行進方向控制實習麵包板接線圖

    L9110

    BIA BIB AIA AIB

    MoterB MoterA

  • NTU CSIE

    switch...case控制結構

    switch具有「切換」的涵意:透過比對switch()裡的變數和case後面的值,來決定切換執行哪一段程式

  • NTU CSIE

    C02.ino

  • NTU CSIE

    12-3 實作練習

  • NTU CSIE

  • NTU CSIE

    1.設計 Arduino 程式,以 Serial Monitor 視窗控制電動車行進方向。輸入'F'鍵,車子前

    進;輸入'B'鍵,車子後退;輸入'R'鍵,車子右轉;輸入'L'鍵,車子左轉;輸入'S'鍵,

    車子停止。

    2.設計 Arduino 程式,以 Serial Monitor 視窗控制電動車行進方向。輸入'F'鍵,車子前

    進,同時 L0 燈亮;輸入'B'鍵,車子後退,同時 L1 燈亮;輸入'R'鍵,車子右轉,同

    時 L2 燈亮;輸入'L'鍵,車子左轉,同時 L3 燈亮;輸入'S'鍵,車子停止,所有燈均

    不亮。

    (回家)實作練習

  • NTU CSIE

    自動迴避障礙物的自走車

  • NTU CSIE

    超音波數位量尺

    藉由測量脈衝時間長度的pulseIn()函數,可得知超音波的回應時間並藉此計算距離。

  • NTU CSIE

    HC-SR04• HC-SR04 是一個超音波感測器

    • 探測的距離為 2cm-400cm

    • 精度為 0.3 cm

    • 感應角度為 15 度

    • HC-SR04 總共只有 4 支接腳。

    HC-SR04 Arduino

    Vcc +5V

    Trig GPIO

    Echo GPIO

    GND GND

  • NTU CSIE

    線路連接圖

  • NTU CSIE

    C10.ino

    超音波測距儀範例

  • NTU CSIE

    C11.ino

    自走車 –簡易版

  • NTU CSIE

  • NTU CSIE

  • NTU CSIE

    C12.ino加入選單功能

  • NTU CSIE

  • NTU CSIE

    動動腦

    每次都只能向右轉?能不能向左轉?

    能不能自動判斷向左還是向右?

    以什麼為依據向左還是向右?

    會轉頭的感測器!!!

  • NTU CSIE

    認識伺服馬達

    伺服馬達(Servo)是一種用於精確移動、定位場合的動力裝置。

    它由普通的直流馬達,再加上偵測馬達旋轉角度的電路,以及一組減速齒輪所構成。

    伺服馬達有三條接線,分別是正電源、接地和控制訊號線。

  • 圖 13-1 伺服馬達

    第13章 伺服馬達控制實習

    伺服馬達(servo motor)又稱為伺服機,其基本原理與一般直流馬達相同,但兩者的使用場合不同,因此所要求的特性也不同。

    一般直流馬達較注重啟動及運行,而伺服馬達則注重輸出位置的精確度及穩定度。

    伺服馬達具有體積小、重量輕、輸出功率大、扭力大、效率高等特性,常被廣泛地運用於位置及速度的控制應用,例如機器人、遙控車、遙控直昇機、遙控船及無人搬運車等。

  • 表 13-2 伺服馬達電氣規格

    接腳 名稱 說明 最小值 典型值 最大值

    橙(白) Signal 輸入 3.3V 5.0V Vservo+ 0.2V

    紅(紅) Vservo 電源 4.0V 5.0V 6.0V

    棕(黑) VSS 接腳 0

    伺服馬達有三條控制線,一條為電源線、一條為接地線、另一條為信號線,雖然顏色不同,但是排列順序大致相同。

    電源線通常是紅色,接地線通常是黑色或棕色,信號線通常是黃色、橙色或白色。

    伺服馬達的電源Vservo必須使用穩定且輸出電流足夠的電源供應,馬達才能正常動作。

    伺服馬達在某些角度會輕微斗動為正常現像。

    注意:電源與接地不可反接,否則伺服馬達將會卡死故障!並發燙

  • NTU CSIE

    控制伺服馬達的PPM訊號

    伺服馬達接收脈衝比例調變(Pulse Position Modulation,簡稱PPM)訊號,來指揮它的轉動角度。

  • 13-2-1 Servo 函式庫

    早期 Servo 函式庫只能使用 Arduino 板數位接腳 9、10,現今能支援多數 Arduino

    板 12 個伺服馬達,而在 Mega 板子上可支援 48 個伺服馬達。在 Uno 板子上使用 Servo

    函式庫時,Servo 函式庫會關閉數位接腳 9、10 的 analogWrite()功能。Servo 函式庫

    可以控制 standard 型伺服馬達的移動角度(0~180之間),也可以控制 continuous 型

    伺服馬達的旋轉速度。

    格式: Servo

    範例: include //使用Servo函式庫。

    Servo myservo; //建立一個伺服馬達物件myservo。

  • 13-2-2 attach( )函式

    attach( )函式的功能是用來指定連接至伺服馬達的 Arduino 板數位接腳,有 pin、

    min 及 max 等三個參數必須設定,pin 參數設定連接至伺服馬達的數位接腳;min 參

    數(可選的)設定最小脈波寬度,單位是微秒,與伺服馬達的最小角度(0 度)有關,

    預設值是 544;max 參數(可選的)設定最大脈波寬度,單位是微秒,與伺服馬達的

    最大角度(180 度)有關,預設值是 2400。在使用 attach()函式之前,必須先使用 Servo

    宣告一個 Servo 資料型態的物件。

    格式: myservo.attach(pin,min,max)

    範例: include //使用Servo函式庫。

    Servo myservo; //建立一個伺服馬達物件myservo。

    myservo.attach(9); //伺服馬達連接至數位接腳9。

  • 13-2-3 write( )函式

    write( )函式的功能是用來指定 standard 型伺服馬達的轉動角度或是 continuous

    型伺服馬達的轉動速度,只有一個參數 angle 必須設定。如果使用 standard 型伺服馬

    達,則 angle 參數可以設定轉動的角度(以度為單位,範圍 0~180)。如果使用

    continuous 型伺服馬達,則 angle 參數可以設定轉動的速度,當 0angle

  • 電路圖及麵包板接線圖:

    +5V

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3

    .3V

    5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~1

    1~

    10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    信號(橙)

    地線(黑)

    電源(紅)

    Servo外接電源

    +5V+5V

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3

    .3V

    5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~1

    1~

    10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3

    .3V

    5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~1

    1~

    10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz16MHz

    信號(橙)

    地線(黑)

    電源(紅)

    ServoServo外接電源

    圖 13-5 控制固定角度型伺服馬達轉動角度實習電路圖

    圖 13-6 控制固定角度型伺服馬達轉動角度實習麵包板接線圖

  • 13-3-2 鍵盤控制伺服馬達轉動固定角度實習

    功能說明:

    利用串列埠傳送電腦鍵盤按鍵值控制伺服馬達轉動固定角度。當按下 a 鍵時,伺

    服馬達轉動至 0 度位置;當按下 b 鍵時,伺服馬達轉動至 90 度位置;當按下 c 鍵

    時,伺服轉動至 180 度位置。

  • 程式: ch13-2.ino

    #include //使用Servo.h函式庫。

    Servo servo; //建立Servo資料型態的物件。

    void setup()

    {

    Serial.begin(9600); //初始化串列埠,設定鮑率9600bps

    servo.attach(2); //數位接腳2連接伺服馬達信號線。

    }

    void loop()

    {

    if(Serial.available()) //鍵盤輸入任意鍵?

    {

    char ch=Serial.read(); //讀取按鍵值。

    Serial.println(ch); //顯示按鍵值。

    if(ch=='a') //按下a鍵?

    servo.write(0); //伺服馬達轉動至0度位置。

    else if(ch=='b') //按下b鍵?

    servo.write(90); //伺服馬達轉動至90度位置。

    else if(ch=='c') //按下c鍵?

    servo.write(180); //伺服馬達轉動180度位置。

    }

    }

    C22.ino

    10

  • 1.設計 Arduino 程式,利用鍵盤控制伺服馬達轉動角度。當按下 a 鍵時,伺服馬達轉

    動至 0 度位置;當按下 b 鍵時,伺服馬達轉動至 45 度位置;當按下 c鍵時,伺服轉

    動至 90 度位置;當按下 d 鍵時,伺服馬達轉動至 135 度位置;當按下 e鍵時,伺服

    轉動至 180 度位置。

    2.設計 Arduino 程式,利用鍵盤控制伺服馬達轉動固定角度。當按下 a 鍵時,伺服馬

    達轉動由 0 至 180 度來回擺動;當按下 b 鍵時,伺服馬達轉動由 45 至 135 度來回擺

    動;當按下 c鍵時,伺服馬達轉動至 90 度後停止。

    (回家)實作練習

  • NTU CSIE

    安裝超音波感測器

  • NTU CSIE

    C23.ino

    自動判斷左右轉

  • NTU CSIE

  • NTU CSIE

    同場加映-超音波雷達

  • NTU CSIE

    C41.ino

  • NTU CSIE

  • NTU CSIE

  • NTU CSIE

    Processing• 簡單易用的程式語言

    • 著重在「繪圖」

    • 用它來畫出雷達的畫面

  • NTU CSIE

    改 COM port 改成Arduino的 port

    C41_2.pde

  • NTU CSIE

    完成

  • NTU CSIE

    認識藍牙(Bluetooth)

    近距離無線數據和語音傳輸技術,主要用於取代線材和紅外線傳輸採用世界各國共通的ISM頻段(2.4GHz)。為了要確保藍牙設備間的互通性,藍牙技術聯盟(SIG),制定了多種藍牙規範(Profile)取代有線序列埠的藍牙裝置規範,簡稱SPP

  • 藍牙(Bluetooth)

    藍牙(Bluetooth)技術由Ericsson、IBM、Intel、NOKIA、Toshiba等五家公司協議,標準版本為802.15.1,為低成本、低功率、涵蓋範圍小的跳頻(Frequency Hopping)RF系統,所謂跳頻是指載波快速在不同頻率中切換,可以非常有效抵禦蓄意的干擾。

    藍牙適用於連結電腦與電腦、電腦與周邊以及電腦與其他行動數據裝置如行動電話、呼叫器、PDA等。

    IrDA是一種視距的傳輸,兩個通訊設備必須對準,而且中間不能被其它物體阻隔,而藍牙使用2.45GHz載波傳輸,傳輸不會受物體阻隔的限制。

    每個藍牙技術連接裝置都依IEEE 802標準所制定的48位元位址,可以一對一、一對多連接,傳輸範圍最遠10公尺,傳輸率每秒1MB~2MB,頻寬可達1Mbps。

    藍牙技術可以加密保護,保密性高而且較不受電磁波干擾。

  • NTU CSIE

    藍牙序列通信模組(一)常見的兩種支援SPP序列埠規範的藍牙模組:• HC-05:主/從(host/slave)一體,支援30多道AT命令• HC-06:主機或從屬模式,出廠前就設定好,不能更改;支援少數AT指令

    HC-05和HC-06的硬體是相同的,只是晶片內部的韌體不同。

  • NTU CSIE

    藍牙序列埠模組

    支援SPP序列埠規範的藍牙模組外觀:

    藍牙模組最常用的四個接腳如下:•Vcc:正電源,依製造商而定,可能是5v或3.3v•Gnd:接地•TxD:訊號傳送•RxD:訊號接收

  • NTU CSIE

    藍牙序列通信模組(二)附帶底板(已焊接引腳)的藍牙序列通信模組:

  • NTU CSIE

    藍牙模組選購要點

    務必跟廠商索取datasheet(含AT指令表)

    HC-05板建議購買有引出Key接腳的模組

    多數的應用,HC-06足敷使用。

    HC-05能和HC-06配對。

    Bluetooth 4.0具備藍牙低功耗(Bluetooth Low Energy, BLE)模式,耗電量低,但電腦、手機和平板等裝置的支援/普及程度,不及2.1版。

    註:模組(硬體)的選購,不影響Arduino,程式碼都一樣。

  • NTU CSIE

    連接電路(一)

  • NTU CSIE

    連接電路(二)

  • NTU CSIE

    麵包板接線 本圖接線參考用請改用:

    RxD 接 11

    TxD 接 12

  • NTU CSIE

    藍牙模組的兩種操作模式

    自動連線(automatic connection),又稱為透通模式( transparent communication)

    命令回應(order-response),又稱為AT模式(AT mode)

    註:藍牙模組的「自動連線」模式的傳輸速率,通常是9600bps。

  • NTU CSIE

    HC-06模組的AT指令

    HC-05模組的設定方式:http://swf.com.tw/?p=335

    http://swf.com.tw/?p=335

  • NTU CSIE

    透過Arduino設定AT命令

    #include // 引用程式庫

    SoftwareSerial BT(8, 9); // RxD, TxDchar val; // 儲存接收資料的變數

    void setup() {Serial.begin(9600);Serial.println("BT is ready!");BT.begin(9600); // 藍牙模組的連線速率

    }

    void loop() {// 若收到藍牙模組的資料,送到「序列埠監控視窗」if (BT.available()) {val = BT.read();Serial.print(val);

    }

    // 若收到「序列埠監控視窗」的資料,送到藍牙模組if (Serial.available()) {val = Serial.read();BT.print(val);

    }}

    參閱:http://swf.com.tw/?p=712

    http://swf.com.tw/?p=712

  • 功能說明:

    電腦透過藍牙與 Arduino板建立連線,並控制 LED亮與暗,按 1鍵點亮 LED,

    按 0鍵,關閉 LED。Arduino UNO板只有一個硬體串列埠,使用數位接腳 0(RX)

    及數位接腳 1(TX),當做程式上載及【Serial Monitor】視窗使用。本例使用

    SorfwareSerial 函式庫建立軟體串列埠,定義藍牙裝置使用 Arduino板的數位接腳

    3(RX)及數位接腳 4(TX)當做藍牙串列埠使用。

    KEYRXDTXDVCC50VCC33GND

    HC-05

    KEYRXDTXDVCC50VCC33GND

    KEYRXDTXDVCC50VCC33GND

    HC-05

    (a) 元件 (b) 接腳

    圖 15-4 HC-05藍牙模組

  • 電路圖及麵包板接線圖:

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3

    .3V

    5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~1

    1~

    10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    KEYRXDTXDVCC50VCC33GND

    HC-05

    220

    LED

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3

    .3V

    5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~1

    1~

    10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz

    ATMEGA328P

    UNOONL

    IOR

    EF

    RE

    SE

    T3

    .3V

    5V

    GN

    DG

    ND

    Vin

    ANALOG IN

    A0

    A1

    A2

    A3

    A4

    A5

    AR

    EF

    GN

    D 13

    12

    ~1

    1~

    10

    ~9 8 7

    ~6

    ~5 4 ~3 2

    TX

    1R

    X 0

    RX

    TX

    RE

    SE

    T

    DIGITAL (PWM~)

    POWER

    SC

    LS

    DA

    16MHz16MHz

    KEYRXDTXDVCC50VCC33GND

    HC-05

    KEYRXDTXDVCC50VCC33GND

    KEYRXDTXDVCC50VCC33GND

    HC-05

    220

    LED

    本圖接線參考用

    請改用:

    RxD 接 11

    TxD 接 12

  • NTU CSIE

    使用軟體序列埠程式連接Arduino與藍牙模組

    Arduino微電腦板預設只有一個序列埠。SoftwareSerial(直譯為軟體序列埠),能讓Arduino的其他接腳變成序列埠。

    透過SoftwareSerial程式庫,將數位9和10腳指定成序列埠:

    本圖接線參考用

    請改用:

    RxD 接 11

    TxD 接 12

  • NTU CSIE

    Android手機藍牙遙控機器人從手機藍牙傳遞字元給機器人,機器人的微電腦將依照收到的'w', 'a',...等字元,執行前進和轉彎等動作。

  • NTU CSIE

    Bluetooth SPP Pro安裝手機藍芽APPhttps://play.google.com/store/apps/details?id=mobi.dzs.android.

    BLE_SPP_PRO&hl=zh_TW

    https://play.google.com/store/apps/details?id=mobi.dzs.android.BLE_SPP_PRO&hl=zh_TW

  • NTU CSIE

    • 配對藍芽裝置 (有可能會配對到同學的喔~)

    • 藍牙裝置的配對碼通常是1234或0000

    • 使用鍵盤模式

    • 設定結束符號為其它(無)

  • NTU CSIE

  • NTU CSIE

  • NTU CSIE

    15-3 實作練習

    C31.ino

  • 1.設計 Arduino 程式,電腦透過藍牙與 Arduino 板建立連線控制 LED 閃爍與暗,按 1

    鍵時,閃爍 LED,按 0 鍵,關閉 LED。

    2.設計 Arduino 程式,電腦透過藍牙與 Arduino 板建立連線控制 LED1~LED4,按鍵 1

    控制 LED1 亮與暗;按鍵 2 控制 LED2 亮與暗;按鍵 3 控制 LED3 亮與暗;按鍵 4

    控制 LED4 亮與暗。

    (回家)實作練習

  • NTU CSIE

    其它Android藍芽通訊軟體

    https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=zh_TW

    https://play.google.com/store/apps/details?id=com.shenyaocn.android.BlueSPP

    https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=zh_TWhttps://play.google.com/store/apps/details?id=com.shenyaocn.android.BlueSPP

  • NTU CSIE

    整合藍芽遙控自走車

  • NTU CSIE

    C32.ino

  • NTU CSIE

  • NTU CSIE

    C33.ino

    加入監看距離功能

  • NTU CSIE

  • NTU CSIE

    整合電源離線控制

  • NTU CSIE

    原本長這樣

  • NTU CSIE

    改成這樣

  • NTU CSIE

    修正問題:

    轉向會卡住!?

    改變轉彎方式,成為後退轉彎

    停得太慢會撞到!

    增加距離threshold

    降低前進速度

    減短偵測距離間隔

  • NTU CSIE

    C34.ino

    改成後退轉彎

    請測試出最佳的偵測間隔!

  • NTU CSIE

    回家作業

    Hw1 請將以上自走車範例實作完成後

    上傳到網頁中

    格式一個字都不能錯,尤其是_底線

  • NTU CSIE

    其它自走車與課外參考資料

    循線自走車

    http://sinocgtchen.blogspot.tw/2013/05/motoduinoarduino-

    l293d-ir-tracker-sensor.html

    套裝自走車

    http://www.86duino.com/wp-includes/file/Chapter07-TC.pdf

    基本焊接與佈線

    http://blog.163.com/pvc_robot/blog/static/1752764322011101

    244642538

    http://sinocgtchen.blogspot.tw/2013/05/motoduinoarduino-l293d-ir-tracker-sensor.htmlhttp://www.86duino.com/wp-includes/file/Chapter07-TC.pdfhttp://blog.163.com/pvc_robot/blog/static/1752764322011101244642538