Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
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