part i 進入 arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/aeh001131.pdf · iv...

11
Part I 進入 Arduino 的世界 Chapter 1 初探 Arduino 1-1 物理運算平台 ................................................................................................. 1-2 1-2 話說從頭–從核心談起 .................................................................................. 1-4 1-3 Arduino ........................................................................................................... 1-5 1-4 Arduino 硬體種類介紹 ................................................................................... 1-6 1-4-1 Arduino UNO ......................................................................................... 1-6 1-4-2 Nano ........................................................................................................ 1-6 1-4-3 MEGA ..................................................................................................... 1-7 1-4-4 LilyPad .................................................................................................... 1-7 1-5 自製版的 Arduino ........................................................................................... 1-8 1-5-1 Seeeduino ................................................................................................ 1-8 1-5-2 Roboduino ............................................................................................... 1-8 1-5-3 Funnel IO ................................................................................................. 1-9 1-5-4 Boarduino ................................................................................................ 1-9 1-5-5 Polulu 3pi Robot .................................................................................... 1-10 1-6 Arduino 的好處 ............................................................................................. 1-10 1-7 Arduino 的應用 ............................................................................................. 1-11 1-7-1 數位藝術 ............................................................................................... 1-11 1-7-2 科技 Arduino ......................................................................................... 1-13 1-7-3 通訊網路 Arduino .................................................................................. 1-15 1-8 Arduino UNO ................................................................................................ 1-16 1-9 展望 .............................................................................................................. 1-17 Chapter 2 開發環境介紹 2-1 程式開發流程 ................................................................................................. 2-2 2-1-1 編輯......................................................................................................... 2-2 2-1-2 編譯......................................................................................................... 2-3 2-1-3 鍊結......................................................................................................... 2-3 2-1-4 執行......................................................................................................... 2-3 2-2 Arduino 開發環境 ........................................................................................... 2-7 2-3 程式開發環境介紹 ....................................................................................... 2-10 iv

Upload: ngoxuyen

Post on 18-May-2018

227 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

最簡單的互動設計 Arduino 一試就上手 iv 

Part I 進入 Arduino 的世界

Chapter 1 初探 Arduino

1-1 物理運算平台 .................................................................................................1-2

1-2 話說從頭–從核心談起 ..................................................................................1-4

1-3 Arduino ...........................................................................................................1-5 1-4 Arduino 硬體種類介紹 ...................................................................................1-6

1-4-1 Arduino UNO ......................................................................................... 1-6

1-4-2 Nano ........................................................................................................ 1-6

1-4-3 MEGA ..................................................................................................... 1-7

1-4-4 LilyPad .................................................................................................... 1-7

1-5 自製版的 Arduino ...........................................................................................1-8

1-5-1 Seeeduino ................................................................................................ 1-8

1-5-2 Roboduino ............................................................................................... 1-8

1-5-3 Funnel IO................................................................................................. 1-9

1-5-4 Boarduino ................................................................................................ 1-9

1-5-5 Polulu 3pi Robot .................................................................................... 1-10

1-6 Arduino 的好處 .............................................................................................1-10

1-7 Arduino 的應用 .............................................................................................1-11 1-7-1 數位藝術 ............................................................................................... 1-11

1-7-2 科技 Arduino ......................................................................................... 1-13

1-7-3 通訊網路 Arduino.................................................................................. 1-15

1-8 Arduino UNO ................................................................................................1-16 1-9 展望 ..............................................................................................................1-17

Chapter 2 開發環境介紹

2-1 程式開發流程 .................................................................................................2-2 2-1-1 編輯 ......................................................................................................... 2-2

2-1-2 編譯 ......................................................................................................... 2-3

2-1-3 鍊結 ......................................................................................................... 2-3

2-1-4 執行 ......................................................................................................... 2-3

2-2 Arduino 開發環境 ...........................................................................................2-7

2-3 程式開發環境介紹 .......................................................................................2-10

iv

Page 2: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

目錄 v 

2-4 內建程式範例與程式架構 ............................................................................2-12 2-4-1 setup 範例 ..............................................................................................2-14

2-4-2 Loop 範例...............................................................................................2-15

2-5 程式基本與特殊語法介紹 ............................................................................2-16 2-5-1 資料型態 ................................................................................................2-16

2-5-2 邏輯運算子 ............................................................................................2-17

2-5-3 迴圈與選擇性敘述 .................................................................................2-19

2-5-4 選擇性敘述 ............................................................................................2-19

2-5-5 時間函數 ................................................................................................2-23

2-6 Arduino 1.0 ...................................................................................................2-25

Chapter 3 需要的基本電路原理

3-1 電的基本認識 .................................................................................................3-2

3-2 基本工具 ........................................................................................................3-2 3-2-1 麵包板的藝術 ..........................................................................................3-3

3-2-2 線材介紹 ..................................................................................................3-4

3-2-3 三用電錶 ..................................................................................................3-5

3-3 電子元件介紹 .................................................................................................3-7 3-3-1 電阻介紹 ..................................................................................................3-7

3-3-2 電容介紹 ................................................................................................3-12

3-3-3 二極體介紹 ............................................................................................3-14

3-3-4 LED........................................................................................................3-15 3-3-5 電晶體介紹 ............................................................................................3-16

3-4 Arduino 硬體介紹 .........................................................................................3-17 3-4-1 Arduino 基本電路 ..................................................................................3-19

3-4-2 ATMEGA 系列單晶片 ...........................................................................3-20

3-5 Arduino 擴充模組介紹 .................................................................................3-22

3-6 Fritzing ........................................................................................................ 3-23

Part II 開始來玩 Arduino

Chapter 4 類比訊號的世界

4-1 類比訊號的介紹 .............................................................................................4-2

4-2 AD 轉換 ..........................................................................................................4-3 4-2-1 類比訊號轉換 ..........................................................................................4-4

4-3 電路中的訊號轉換 .........................................................................................4-5 4-3-1 解析度(Resolution)...................................................................................4-5

4-3-2 轉換時間(conversion time) .......................................................................4-6

4-3-3 參考電壓(Reference Voltage) ...................................................................4-6

4-3-4 誤差(Error) ...............................................................................................4-7

4-4 Arduino 世界中的 AD ....................................................................................4-7

4-5 量測可變電阻 .................................................................................................4-8

4-6 量測光敏電阻 ...............................................................................................4-16

v

Page 3: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

最簡單的互動設計 Arduino 一試就上手 vi 

4-7 壓力感測 .......................................................................................................4-19

4-8 位置感測 .......................................................................................................4-21

Chapter 5 數位訊號的世界

5-1 數位表示方式 .................................................................................................5-2

5-2 LED 閃爍 ........................................................................................................5-2

5-3 結合按鈕與 LED.............................................................................................5-6

5-4 霹靂燈 ............................................................................................................5-7

5-5 指撥開關控制 ...............................................................................................5-10

5-6 LED 陣列 ......................................................................................................5-12

5-7 外部控制燈號顯示 .......................................................................................5-18

5-8 7 段顯示器 ....................................................................................................5-25

5-9 PWM (Pulse Width Modulation) ...................................................................5-28 5-9-1 PWM 變化 ............................................................................................. 5-28

5-10 結合按鈕與 PWM 訊號 ................................................................................5-29

5-11 蜂鳴器 ..........................................................................................................5-31

5-12 心型 LED 閃爍 .............................................................................................5-35

5-13 數位擴充 ......................................................................................................5-41

Chapter 6 電腦通訊協定

6-1 硬體介紹 .........................................................................................................6-2

6-2 通訊協定 .........................................................................................................6-3 6-2-1 同步通訊與非同步通訊........................................................................... 6-3

6-2-2 全雙工(Full-Duplex)和半雙工(Half-Duplex) ........................................... 6-3

6-3 RS-232 基本介紹 ............................................................................................6-4

6-4 RS-232 通訊協定 ............................................................................................6-8

6-5 Arduino 與串列埠通訊 .................................................................................6-12

6-6 Hello RS-232.................................................................................................6-13 6-7 輸出資料型態 ...............................................................................................6-15

6-8 輸入資料 .......................................................................................................6-18

6-9 輸出控制 .......................................................................................................6-21

Chapter 7 Arduino 與 LCD

7-1 簡介 LCD........................................................................................................7-2

7-2 液晶顯示模組 .................................................................................................7-2

7-3 Arduino 函式庫 ...............................................................................................7-5

7-4 啟動 LCD........................................................................................................7-6

7-5 LCD 顯示 ........................................................................................................7-8

7-6 LCD 換行控制 ................................................................................................7-9

7-7 LCD 跑馬燈 ..................................................................................................7-11

7-8 顯示輸入資料 ...............................................................................................7-13

v i

Page 4: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

目錄 vii 

Chapter 8 Arduino 與控制馬達

8-1 直流馬達 ........................................................................................................8-2

8-2 控制直流馬達 .................................................................................................8-7

8-3 步進馬達 ...................................................................................................... 8-14

8-4 控制步進馬達 ...............................................................................................8-17

8-5 控制伺服馬達 ...............................................................................................8-25

8-6 2 軸控制機構 ................................................................................................8-33

8-7 光線自動追蹤系統 .......................................................................................8-42

Chapter 9 Arduino 與紅外線、超音波

9-1 超音波測距 .....................................................................................................9-2

9-2 紅外線測距 .....................................................................................................9-8

9-3 紅外線反射式模組用於循跡 ........................................................................9-15

9-4 紅外線人體感測 ...........................................................................................9-19

Chapter 10 Arduino 與無線通訊

10-1 無線通訊的挑戰 ..........................................................................................10-2 10-1-1 可靠度不如有線通訊 ...........................................................................10-2

10-1-2 確定只有一對一? ...............................................................................10-3

10-1-3 無線電力 ..............................................................................................10-3

10-1-4 電磁波? ..............................................................................................10-3

10-2 無線通訊網路架構 .......................................................................................10-4 10-2-1 一對多通訊 ..........................................................................................10-5

10-2-2 多對多 ..................................................................................................10-6

10-2-3 混合式架構 ..........................................................................................10-7

10-3 常見之無線通訊協定 ...................................................................................10-8 10-3-1 短距離 ................................................................................................ 10-11

10-3-2 RF 模組 .............................................................................................. 10-11

10-3-3 紅外線(Infrared ray,IR).................................................................... 10-12

10-3-4 藍芽(Bluetooth,BT).......................................................................... 10-12

10-3-5 ZigBee ................................................................................................ 10-13 10-3-6 UWB( Ultra-wideband,UWB) ............................................................ 10-14

10-3-7 長距離 WiFi ....................................................................................... 10-14

10-3-8 行動通訊 ............................................................................................ 10-15

10-4 315MHz RF 模組 ....................................................................................... 10-19

10-5 27MHz RF 模組 ......................................................................................... 10-25

10-6 RFID .......................................................................................................... 10-28

Part III 進階實作 Arduino

Chapter 11 Arduino+Wii 11-1 Wii 基本介紹 ...............................................................................................11-2

v i i

Page 5: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

最簡單的互動設計 Arduino 一試就上手 viii 

11-2 Wii Remote 的操作原理 ...............................................................................11-3 11-2-1 手把按鈕介紹 ...................................................................................... 11-4

11-3 Sensor Bar 介紹............................................................................................11-7

11-4 Wii Remote 內部感測裝置 ...........................................................................11-9 11-4-1 加速度計 ............................................................................................. 11-9

11-4-2 陀螺儀 ................................................................................................11-12

11-4-3 ADXL335 ...........................................................................................11-13

11-4-4 IDG-650..............................................................................................11-15

11-5 Processing ..................................................................................................11-18 11-6 Arduino 結合 Nunchuck .............................................................................11-24

11-7 Nunchuck 和 Processing .............................................................................11-33

Chapter 12 Arduino+GPS 12-1 GPS 簡介 ......................................................................................................12-2

12-1-1 GPS 衛星簡介 ..................................................................................... 12-3

12-1-2 GPS 系統組成 ..................................................................................... 12-3

12-1-3 GPS 誤差來源 ..................................................................................... 12-4

12-2 GPS 修正技術 ..............................................................................................12-6

12-2-1 DGPS................................................................................................... 12-6

12-2-2 AGPS................................................................................................... 12-8

12-3 GPS 其他技術 ..............................................................................................12-9

12-3-1 GLONASS ..........................................................................................12-10 12-3-2 Beiduo(北斗) .................................................................................12-10

12-3-3 Galileo ................................................................................................12-10

12-4 GPS 模組介紹 ............................................................................................12-12

12-5 GPS 輸出訊息 ............................................................................................12-15

12-6 使用 EM-408 ..............................................................................................12-19

12-7 GPS 使用設定 ............................................................................................12-21 12-7-1 GPS 通訊埠設定 .................................................................................12-22

12-8 接收 NMEA 訊息 .......................................................................................12-25

Chapter 13 Arduino+自走車

13-1 自走車行走方式 ..........................................................................................13-3

13-2 室內定位 ......................................................................................................13-6 13-2-1 到達時間-Time of Arrival (TOA) ......................................................... 13-7

13-2-2 到達時間差-Time Difference of Arrival (TDOA) ................................. 13-8

13-2-3 到達角-Angle of Arrival (AOA) ........................................................... 13-8

13-2-4 接收訊號強度-Received Signal Strength Indication(RSSI) ................... 13-8

13-3 自走車驅動方式 ........................................................................................13-10 13-3-1 前輪驅動和後輪驅動 .........................................................................13-10

13-3-2 差動驅動 ............................................................................................13-11

13-4 電腦鼠 ........................................................................................................13-13 13-4-1 迷宮演算法 ........................................................................................13-14

13-4-2 沿壁演算法(Wall Following) .........................................................13-14

v i i i

Page 6: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

目錄

ix

ix 

13-4-3 深度優先演算法(Depth First Search) ............................................. 13-14

13-4-4 向心搜尋演算法 ................................................................................. 13-15

13-4-5 洪水填充演算法(貝爾曼演算法–Bellman’s algorithm) ................ 13-16

13-4-6 A*演算法 ........................................................................................... 13-18

13-5 自走車方位判定–電子羅盤 ..................................................................... 13-18

13-6 車輪轉動角度量測 ..................................................................................... 13-30

13-7 實作自走車 ................................................................................................ 13-35

Chapter 14 Arduino+Flash 14-1 基本介紹 ...................................................................................................... 14-2

14-2 Arduino + Flash............................................................................................14-3

Chapter 15 無線感測網路(WSN)

15-1 XBee 規格 ....................................................................................................15-6

15-2 X-CTU .........................................................................................................15-7 15-3 XBee S1 的參數設定 ................................................................................. 15-10

15-3-1 命令模式設定(command mode).......................................................... 15-12

15-3-2 參數模式設定(Modem Configuration) ................................................ 15-14

15-4 XBee S2 的參數設定 ................................................................................. 15-16

15-5 XBee 資料傳輸 .......................................................................................... 15-17

15-5-1 Point-to-Point ..................................................................................... 15-17

15-5-2 Point-to-Multipoint ............................................................................. 15-20

15-6 API 模式(1 對 2 通訊架構) ........................................................................ 15-22

15-7 Broadcast ................................................................................................... 15-23 15-8 XBee 類比訊號讀取 ................................................................................... 15-25

Appendix A 事前的準備

A-1 基本工具 ....................................................................................................... A-2

A-2 實驗相關模組 ............................................................................................... A-2

A-3 Where to BUY............................................................................................... A-4

Appendix B 數值計算

B-1 十進位(Decimal) ........................................................................................... B-2

B-2 二進位(Binary).............................................................................................. B-2

B-3 16 進位(Hexadecimal) ................................................................................... B-3

B-4 辨認數值的方式............................................................................................ B-4

B-5 小算盤 ........................................................................................................... B-5

Appendix C 檢查碼

C-1 循環冗餘檢查碼 ........................................................................................... C-2

C-2 checksum....................................................................................................... C-4

Appendix D ASCII 碼

Page 7: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

13-1 自走車行走方式

13-2 室內定位

13-3 自走車驅動方式

13-4 電腦鼠

13-5 自走車方位判定–電子羅盤

13-6 車輪轉動角度量測

13-7 實作自走車

Page 8: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

Chapter 13 Arduino+自走車

8-35

13-35

timeold)和這次的時間 (函式:millis())的差值,計算出 1 秒會跑幾圈。但因為

RPM 是指一分鐘轉了幾圈,因此還要乘上 60 把單位換成分鐘。那就奇怪了,

這邊怎麼只乘上 30 呢?那是因為我在輪圈上設置了兩顆磁鐵,因此每偵測到 1次的變化實際上才轉半圈而已,因而將 60 除以 2。

如果再加上 LCD,就可以裝在腳踏車上當作轉速計和時速計了唷!你問時速計

怎麼做?很簡單其實就是轉速的部分乘上輪子的周長,便可以得到單位時間內

所走的距離。再換算一下,就是時速啦!

13-7 實作自走車

前面介紹了那麼多東西,到了章節的最後我們終於要完整的測試一台能自己避

障的自走車了。第 1 步驟當然是要規劃需要的功能和需求,才可以找出適當的

硬體模組來搭配。

一般我們都習慣用方塊圖來繪製表示,這樣比較清楚每個模組之間的相互關係:

圖 13-33:避障車輛平台方塊圖

可以看到其實都是在本書已經介紹過的各種模組,我們在這邊徹底發揮

Arduino 的精神,把功能像積木一樣堆疊起來,就可以將開發簡單化,時間最

小化。

Page 9: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

最簡單的互動設計 Arduino 一試就上手

13-36

使用 L298N 擴充板的範例已經在前面看過了,也寫好了函式的部分,因此這邊

不多做說明,我們從障礙物偵測的部分開始講起。

車輛在自主前進時,需要隨時去觀察前方是否有障礙物,並能夠判斷方位,重

新找出一條可以繼續前進的路徑,所以前方的超音波測距需要能夠左右移動,

既然要精準地左右移動角度,那就非伺服馬達莫屬啦!

圖 13-34:將超音波模組固定在伺服馬達上

我們選定前方左右各 60 度作為偵測的範圍,每 20 度一個間隔:

圖 13-35:超音波偵測角度

由圖可以看出共有 7 個角度,因此我們需要一個陣列來儲存這些角度所量測到

的距離值。接著就是車輛平台的移動規則了,規則的複雜程度會影響自主運動

的成功性,考慮的越完善越能解決可以遇到的狀況,規則可以利用多次的實驗

結果來補充、學習。

Page 10: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

Chapter 13 Arduino+自走車

8-37

13-37

這邊的規則如下:

(1) 當 7 個距離值皆大於 30 公分時,表示目前尚未偵測到障礙物,繼續直走。

(2) 當 7 個距離值皆小於 10 公分時,表示可能進入了死胡同,原地旋轉 180度,重新偵測。

(3) 當距離數值不太相同時,找尋有最大距離的角度,轉向再前進。

將 7 個角度的距離量測寫成一個函式:seeker()。記得留點時間給伺服馬達轉到

下一個角度,這樣才不會當馬達尚未轉到定位時,就量測到不正確的距離。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

void seeker() { int i=0; for(int j=0;j<=120;j=j+20) { float temp=0; USservo.write(30+j); delay(5); temp = analogRead(0) ; temp = temp*5/1024; //記得換算成電壓 val[i] = 12.726*pow(temp,-1.061); if(val[i]>30) val[i]=30; //避免超出可量測範圍 if(val[i]<5) val[i]=5; //避免超出可量測範圍 i++; } }

避障的部分就透過上面的搜尋功能來做判斷。接著我們就要設定幾個載具運動

的狀態,我們把它分為:前進、左轉、右轉和原地迴轉。這些動作都是要靠精

準的馬達控制來完成,一般車輛上都會搭配直流馬達,但是不同於競速用的四

驅車,在機器人領域常用的自走車都會搭配減速齒輪,讓馬達輸出的扭力加

大、速度減慢,避免一股腦的撞上障礙物造成搭載的設備損壞。

下圖是我們要採用的 VEX robotics 公司出產的 VEXplorer 自走車套件中,驅動

馬達的減速機構:

Page 11: Part I 進入 Arduino 的世界 - epaper.gotop.com.twepaper.gotop.com.tw/pdf/AEH001131.pdf · iv 最簡單的互動設計Arduino 一試就上手. Part I 進入Arduino 的世界. Chapter

最簡單的互動設計 Arduino 一試就上手

13-38

圖 13-36:驅動馬達的減速機構

這家公司針對許多機器人比賽提供了很多套件,也將套件模組化,方便使用者

依據不同的使用目的,組合出最佳的配備,以最好的性能完成考驗。

原先 VEXplorer 上頭搭載一機械手臂,可以透過遙控的方式來控制,不過在這邊

我們將其拆除後,使用 Arduino 的 L298N 直流馬達驅動板來做左右差動的控制:

圖 13-37:VEXplorer 下方運動平台與 L298N 馬達驅動板

還記得在第 8 章時,我們控制了單顆馬達的正反轉和轉速,這邊因為需要左右

的前進和後退,需要 6 隻數位接腳,我們定義為: 1 2 3 4 5 6 7 8

// motor A int dir1PinA = 13; int dir2PinA = 12; int speedPinA = 10; // motor B int dir1PinB = 11; int dir2PinB = 8; int speedPinB = 9;