Presentation is loading. Please wait.

Presentation is loading. Please wait.

蔡明智 睿揚創新科技 mctsaione@gmail.com Arduino 循跡自走車 蔡明智 睿揚創新科技 mctsaione@gmail.com.

Similar presentations


Presentation on theme: "蔡明智 睿揚創新科技 mctsaione@gmail.com Arduino 循跡自走車 蔡明智 睿揚創新科技 mctsaione@gmail.com."— Presentation transcript:

1 蔡明智 睿揚創新科技 mctsaione@gmail.com
Arduino 循跡自走車 蔡明智 睿揚創新科技

2 Agenda Arduino UNO 板介紹及IDE安裝確認 寫第一個程式(使用蜂鳴器) 馬達及馬達控制IC介紹
馬達控制程式測試 紅外線及其模組介紹 紅外線循跡模組安裝與測試 紅外線循跡原理及程式說明 循跡自走車試跑與調整 Motoduino板介紹 補充: 手機+藍牙模組控制

3 起源 : 2005 意大利米蘭互動設計學院………………………
Arduino 歷史 現在這樣廣是歡迎的arduino 當初的出現,是很戲劇化的,在2005年 意大 利米蘭互動設計學院的教師Massimo Banzi ,當初他的學生在做專題的時候,跟他常常抱怨不能找到一塊價格便宜且功能強大的控制主板來設計他們的專題機器人,並且大多數的學生都無法再負荷購買貴的控制版。所以在2005 年的冬天他與 Banzi 和 David Cuartielles 討論到這個問題對他在教學時所帶來的困擾,這時這位西班芽的微處理器設計工程師David CuaItielles 在當時,在這所意大 利米蘭互動設計學院做訪問研究,再跟學生討論之後,他們幾位決定自己設計一塊控制板。他們找來了 Banzi 的學生DaVid Mellis, 讓他來設計程式碼,而這位天賦亦稟的學生David Mellis 只花了兩天時間就完成了程式碼的設計,然後又過了三天,板子就設計出來了,取名為 Arduino。很快,這塊板子就在學校中,受到了廣大學生熱愛和的歡迎。 這些學生當中那些甚至完全不懂電腦程式語言的同學,都用Arduino 做出了非常驚人的作品, 有人用arduino 來控制和處理其他的感測器,也有其他的同學用Arduino 來控制電力的開關,當然也有學生朝著他們的目的製作出機器人。 而 Banzi、Cuartielles 和 Mellis感受到這個股威力,並且想要與更多得人一同分享與解決跟他一樣招遇到相同問題的人,所以便將設計圖上傳到網路上,並且花了 3000 歐元加工出第一批工廠layout 出來的板子。 當時Banzi 等人,因為工廠出貨的關係,最少也要加工了200 塊板子,但是除了給學校的 50 塊版子,他們還有剩下的 150 塊,對他們來說很擔心的是要怎麼賣出去,總不能放在自己的車庫之中吧,但是別忘了,當初他們不是把設計圖放在網路上嗎?但是陸陸續續的收到很多網友的熱愛,並且在幾個月內,他們收到了幾個上百塊板子的定單。這時他們明白 Arduino 是很有市場的潛力。 但是他們又擔心大公司會把這樣的成品給商業化,並提高售價,這時他們又有個驚人的想法,硬體設計開放設計圖與程式碼。他們規定任何人都可以拿他們所設計的 arduino加以複製、 重新設計、甚至出售 Arduino 板子。商人們不用花錢購買版權,連申請許可權都不用。但 是,如果你加工出售 Arduino 原板,版權還是歸Arduino 團隊所有。如果你是在基於 Arduino 的設計上修改,你的設計必須也和 Arduino 一樣開源,意思是只要有人跟你要原始程式碼,和設計圖,你都需要公布分享。 Arduino 設計者們唯一所有的就是“Arduino”這個商標。如果你的設計也想用 Arduino 命名,那麼你就得支付使用這個名稱的費用。這樣做是為了保護“Arduino”這個商標不被仿冒與盜用在其他地方。 也因為是這樣的想法與理念,這也就是僅幾年arduino在硬體、韌體設計業,翻天覆地如旋風一樣,廣受大家的歡迎。 所有的硬體設計者,都有不同的考慮跟想法,,Cuartielles認為自己是 個主張開放原始程式的自由開發者,不喜歡因為賺錢而限制大家的創造力,從而導致這個Arduino的作品 得不到廣泛使用。於是便把硬體也開源,“如果有人要複製與製造Arduino,沒問題。複製只會讓它更出名。”Cuartielles 在某次演講中甚至說“請你們複製它吧!“Banzi則恰恰相反,他更像一個精明的商 人。他現在已經退休了,不再教書,開了一家科技設計公司。他猜想,如果 Arduino 開源,相比那些不開源的作品,會激發更多人的興趣,從而得到更廣泛的使用。還 有一點就是,一些電子瘋狂愛好者會去尋找Arduino 的設計缺陷,然後要求 Arduino 團隊做出改進。利用這種免費的勞動力,他們可以開發出更好的新產品。 實際情況,也就正如他所想的,在接下來的幾個月內,很多人提出重新佈線、改進編 程語言等建議。後來曾有銷售商要求代理 Arduino 產品。2006 年,Arduino 方案獲得 Prix Art E1ectronica 電子通信類方面的榮譽獎。那一年,他們銷售了5000 塊板子。 第二年,他們銷售了 30000 塊。Arduino 接下來的發展,便開始被大量的開發者,用來設計機器人、還有車載系統、無人飛機等硬體設備。 起源 : 2005 意大利米蘭互動設計學院……………………… Massimo Banzi, David , Mellis , Martino , Tom 3

4 Arduino UNO 板及IDE安裝確認

5 Arduino UNO 板介紹 支援USB接頭傳輸資料及供電(不需額外電源)。
輸入電壓Power Jack,可以單獨使用,不需連接USB電腦時就可以直接接上 7V_12V電源,或是使用9V電池供電。(所以1和2只要選選擇一個就可以了) 3. USB轉換IC:作為Arduino與電腦USB溝通的序列轉換介面,透過這個晶片就可以跟電腦溝通連結傳遞資料。

6 Arduino UNO 板介紹 4. Voltage Regulator:穩壓器,保持電壓的穩定。
RX/TX LED 燈:用來顯示接受的資料RX和傳遞出去的資料TX,如有資料進去 跟出去的話這LED燈都會閃爍一下,並且這兩個LED燈, 和區域7的接腳0和接腳1是相連結的。 6. LED 燈:用來顯示區域7的接腳13,是高電壓還低電壓。

7 Arduino UNO 板介紹 7. 數位接腳:由右到左分別是 7-1:數位接腳0到數位接腳13:你注意看一下印刷,有些字前面有~符號,
例如說~10,意思是當它可當成數位接腳10,也可以做PWM (Pulse Width Modulation)模擬類比(analog)資料輸出,可控制LED亮度及馬達速度快慢 7-2:GND: 接地接腳。 7-3:AREF:AREF 是指模擬參考。英文全名是 Analogue REFerence,它可以讓 我們知道Arduino的參考電壓。例如,如果我們要測量的最大電壓範圍 3.3V, 我們就需要有一個很好的3.3V就可以從AREF接腳取得。

8 Arduino UNO 板介紹 RX(0) 和 TX (1):支援串列埠傳輸UART(通用非同步串列通訊) ,要把資料傳進
去arduino 的話,可以透過RX (接腳0); 資料傳遞出去用TX (接腳1) 提醒: 這兩個接腳平常與USB連接線連結在一起了,如果要把程式燒錄透過USB 到這個版子上時,請確定接腳0和接腳1上面是沒有任何接線的,不然程式 燒錄的動作就會失敗!

9 Arduino UNO 板介紹 9. LED 燈:電源顯示燈。 10. 重新執行程式按鈕。
11. ICSP Header:英文的全名是In-circuit serial programming序列燒錄方式, 用來燒錄bootloader到ATmega晶片。 12 Microcontroller: 微控制晶片(ATmega328)。

10 Arduino UNO 板介紹 13. 類比訊號接腳:a0,a1,a2,a3,a4,a5
電源控制的接腳: : Vin (電源輸入) /3: Gnd (接地) : 5V (5V 電源輸出) : 3V3 (3V電源輸出) : RESET (重新執行程式) 14-7: IOREF(輸出入埠電壓參考):和5V插孔相連,可讓擴充板得知MCU運作電壓

11 Arduino IDE安裝與確認 1. 下載Arduino IDE (Integrated Development Environment) 找到下載的壓縮檔並解壓縮到任意資料夾位置後執行 2. 安裝USB驅動程式(USB driver) a.下載Arduino IDE後, 利用USB將Arduino和PC相連 接後,螢幕上會出現安裝驅動程式畫面。 指定驅動程式安裝路徑 (arduino資料夾裡 ->[drivers] 目錄,執行安裝即可) b.開始->控制台->硬體->裝置管理員->連接埠(或其他) 按右鈕->更新驅動程式

12 選取正確微控制板及所在埠位: 12

13 使用LED 閃爍程式確認 13

14 寫第一個程式(使用蜂鳴器) 14

15 直流馬達及馬達控制IC介紹

16 直流馬達及馬達控制IC介紹 直流馬達基本架構
一般馬達的基礎結構可劃分為機殼、定子、轉子(電樞)等三個部分,將定子固定在機殼上後,透過通電後磁場的改變來驅動轉子轉動,而微型馬達通常轉子扭矩極小而轉速極高,則可加裝減速機(齒輪箱)來降低轉速及提升輸出的扭矩(力),馬達的基礎結構如圖所示: 改變馬達直流電壓的大小及其極性,便可改變速度和轉向,故是最適於做速度控制用之馬達。

17 直流馬達方向控制原理

18 直流馬達控制IC TA7291

19 電路圖 P5 P10 P6 P11

20 電路裝配 (電源接線+馬達+馬達控制IC)
接至7 1接P6 9接P5 接至3 接至7 9接P10 1接P11 接至3

21 PWM 脈波寬度調變 PWM (Pulse Width Modulation) 是一種利用數位訊號模擬類比訊號的方式。
常用於調整燈光的亮度、馬達的轉速、RGB LED 的配色、螢幕亮度控制、喇叭的大小聲/聲音頻率等… PWM 的原理是甚麼?想像我們用點亮一盞燈,用肉眼快到不能察覺的速度,開關開關開關開關開關開關開關~~~~ 當快到不行的時候,我們其實就會看到燈光較暗,而看不到一閃一閃光;當我們微調開與關的長度比例變成,開--關開--關開--關開--關開--關開--關開--關開--關~ 我們就會看到燈光稍微的變亮了。這就是 PWM 的原理,藉由數位訊號高頻率的切換,調整開關的比例,我們可以模擬出我們需要的類比訊號。

22 PWM 脈波寬度調變 Duty Cycle = Ton/Toff (%),為 ON 的時間與 OFF相除的百分比
模擬出的電壓 V = Von x duty cycle (%) 可以知道 duty cycle 越高模擬出的電壓越高,當完全沒有 OFF 的時候,duty cycle = 100%,V = Von 為最大可輸出的電壓,這時候電燈會最亮 Arduino PWM 的使用方式其實超簡單 格式:analogWrite(pin, value) 參數: pin:輸出 PWM 的 pin ,上面的例子可以是 pin 3/5/6/9/10/11 value:duty cycle,介於0~255。 0 = 0%,127 = 50%,255 = 100% analog(3,127),就是代表由 pin 3 輸出 duty cycle 50% 的訊號。 若VCC=5V,此時Pin3輸出2.5V

23 PWM 脈波寬度調變 一個簡單的 sketch: int ledPin = 3; // 把 LED 接上 PWM pin3
void setup() { pinMode(ledPin, OUTPUT); // 設定 pin 3 為輸出 } // 下面這個 loop 會讓 LED 燈由暗漸變為變成最大亮度 void loop() { analogWrite(ledPin, 0); // LED 不亮 delay (1000); analogWrite(ledPin, 64); // LED 1/4亮度 analogWrite(ledPin, 175); // LED 1/2亮度 analogWrite(ledPin, 255); // LED 最大亮度 }

24 馬達控制測試(Motor_Test_by_serial_port.ino)
//IR Sensor #define L 8 #define R 7 //Right #define MA1 5 #define MA2 6 //Left #define MB1 10 #define MB2 11 int i,SP_R,SP_L; char val ; void setup() { Serial.begin(9600); //for arduino serial port mointor pinMode(MA1,OUTPUT); pinMode(MA2,OUTPUT); pinMode(MB1,OUTPUT); SP_R=200; //150~255 SP_L=200; // 150~255 } void loop() if(Serial.available()) val = Serial.read(); Serial.println(val); switch (val) { case 'F' : forward(); break; case 'L' : right(); case 'R' : left(); case 'B' : backward(); case 'S' : motorstop(); void forward(){ analogWrite(MA1,SP_R); digitalWrite(MA2,LOW); analogWrite(MB1,SP_L); digitalWrite(MB2,LOW); } void right(){ digitalWrite(MB1,LOW); void left(){ digitalWrite(MA1,LOW); void backward(){ analogWrite(MA2,SP_R); analogWrite(MB2,SP_L); void motorstop(){ delay(5000);

25 紅外線及其模組介紹

26 光譜圖

27 紅外線感測器種類 熱電型紅外線感測器 (Passive_IR, 被動式) 又稱焦電型紅外線感測器
主要利用焦電效應的焦電型紅外線感測器,就是利用利用吸收紅外線來感應溫度的變化。 若是沒有溫度變化,即無法生電荷輸出訊號。 焦電型紅外線感應器 PIR:利用焦電效應的紅外線感應器。焦電效應簡單而 言即是利用溫度的變化而產生電荷之現象。因此,若是沒有溫度變化,即無法生 電荷輸出訊號;簡單而言,即為利用溫度變化,來感應待測物體之移動。 舉例來說,人在 PIR 感應範圍內移動,PIR 上的感應點會因為溫度的變化 而轉化為電流訊號之輸出去,此訊號可以使電燈開啟、警報器作響等,達 「焦電型」人體紅外線感測器(5~14um)

28 紅外線感測器種類 量子型紅外線感測器 原理是利用光電效應來感應溫度的變化,例如光二極體,以及利用光電效應的 CdS、PbS 等元件。
光敏電阻 光子能促使半導體內電子(電洞)的遷徙,從而打破載流電子平衡的局面,進而影響半導體的導電能力,(稱為光電導),那麼,利用這一事實將某一類半導體製成特殊的電阻器件─光敏電阻。                                                                 檢視圖片所謂光敏,顧名思義就是對光反應敏感。光敏電阻,就是電阻率隨入射光的強弱(光子的多寡)而變化的電阻,這種光敏電阻的特點之一是「敏感」的範圍較大,他不像光電效應那樣,只是某一特定頻率的光子照射時才會擊出電子,一般地,他對某一頻率範圍的光都敏感,以鍺為例(Ge)為例。他對波長在0.6微米~1.5微米範圍內的光,都有很多的光電導效應,只在超過1.5微米的波段,光電導才會驟然下降(圖五)通常,不同半導體具有不同的光敏特性。        如下所示: j硫化鎘(CdS)、硒化鎘(CdSe): 可用於可見光範圍的探測。 k硫化鉛(PbS)、硒化鉛(PdSe): 用於近紅外線波段的探測,響應波長 1µm~3.4µm,典型響應時間為200µs l銻化銦(InSb):  他的波長響應至 7µm,響應時間達 50ns,可在溫室下工作,如在液氦溫度下工作,使熱噪音降到最小。 m碲鎘汞: 他的峰值波長在 5µm~14µm,一般要在 77K下工作。 n參有鋅和硼的鍺半導體:          其響應波長可由 20µm延伸至 100µm,一般要冷至4K可減少背景噪音。 由上述五種光敏材料,可分別作為各自對應光波。 紅外線感測器 CNY70光感測器 紅外線LED 與接收器 註: 硫化鎘(CdS)可用於可見光範圍的探測。硫化鉛(PbS):用於近紅外線波段的探測。

29 紅外線感測器之應用 工業上的應用—計件器 以電子電路偵測紅外線發射與接收之間的阻隔或反射情形來判斷是否物體通過。 物體反射紅外線
物體阻隔紅外線

30 紅外線感測器之應用 耳溫槍(或額溫槍) 人體在不同體溫時,輻射出的紅外線頻率會有微量的不同。因此,透過紅外線偵測器,就可以測出人的體溫。

31 紅外線感測器之應用 警報系統 利用焦電型紅外線感測器,可偵測人體幅射出的紅外線,也有些是利用紅外線發射器與接收器之間的接收狀況,來偵測是否有物體的存在。 感應照明

32 紅外線感測器之應用 夜間拍攝 利用紅外線發射器發射紅外線,再利用紅外線感測器接收反射回來的紅外線,因此,可在黑夜中拍攝影像。

33 紅外線感測器之應用 紅外線測距感測器 利用紅外線具有在氣體中傳播時容易衰減的特性,所以當接收端接收到特定波長的紅外線的時候,會根據所接收到紅外線的功率來算出離目標物還有多少距離。

34 紅外線感測器之應用 自走車—循線感測器 利用反射式紅外線感測器達成循跡動作

35 自走車—循跡感測器

36 電路裝配—紅外線循跡感測器

37 TCRT5000的操作及連接方式

38 偵測距離

39 IR循跡感測器接線方式 IR循跡感測器與底板接合後需靠近地面 <=2cm感測效果較佳
IR感測器V+(5V)端接至麵包板再接至UNO的5V IR感測器G(GND)端接至麵包板再接至UNO的GND 右IR感測器S端接Pin 7 左IR感測器S端接Pin 8

40 IR感應距離調整 下載 IR_CAR.ino 程式 先不接Vin(電池) 手指或紙片靠近IR 約2cm指示燈亮 移開後指示燈滅
若指示燈不正確 請用小一字起子 調整感應靈敏度

41 循跡原理-1 二個IR跨線二側 車身在中央 決策: 直線前進 41

42 循跡原理-2 右邊IR壓線 車身偏左 決策: 右轉修正 42

43 循跡原理-3 左邊IR壓線 車身偏右 決策: 左轉修正 43

44 IR循跡程式說明 //IR Sensor test void loop(){ #define L 8
#define R 7 //Right #define MA1 5 #define MA2 6 //Left #define MB1 10 #define MB2 11 //LED #define LED 13 // Music #define Buzzer 2 int i,STATE_L,STATE_R,SP_R,SP_L; void setup(){ Serial.begin(9600); pinMode(R,INPUT); pinMode(L,INPUT); } void loop(){ STATE_L = digitalRead(L); STATE_R = digitalRead(R); i= STATE_L*10 + STATE_R; //Serial.println(i); // delay(500); switch (i){ case 0: //Forward forward(); break; case 1: //Turn Left left(); case 10: //Turn Right right(); case 11: //STOP motorstop(); }

45 循跡自走車試跑與調整 下載 IR_CAR.ino 程式 接上Vin(電池) 若車速過慢或快請修改程式:
SP_R=170; //右輪範圍150~255 SP_L=170; //左輪範圍150~255 若車身易偏離跑道請確認: 1.IR感應器在黑色跑道上方時指示燈滅(白色上方亮) 2.調整兩個感應器距離略大於黑色跑道寬度 3.左右IR控制線是否接反

46 Motoduino板介紹 motoduino為台製的特有Arduino(ATMEGA328),其將直流馬達驅動晶片和Arduino整合在一塊,另外留了藍芽模組的插座,省去了接線的麻煩.

47 Motoduino板介紹 特點: 1. 可驅動兩顆馬達 7V ~ 12 V 2. 每 channel 工作電流 <= 600mA
3. PIN 5, PIN 6, PIN 7 和PIN 8 專門用來驅動馬達 4. 支援PWM 馬達轉速控制 5. 完全相容於Arduino Duemilanove 6. 兩顆DC 馬達正反轉LED 指示燈 7. ATMEGA328P IC Socket 可以容易置換 IC 8. 提供獨立或共用板子電源驅動馬達

48 Motoduino板介紹 motoduino用來控制2個直流馬達的腳位分別為D5+D8、D6+D7兩組,用來做方向及轉速的控制,以下為簡單示意: 決定方向 決定轉速 馬達1 D8 值=true   順時針 值=false  逆時針 D5 值0~255 馬達2 D7 值=true   順時針 值=false  逆時針 D6

49 Motoduino板IR_CAR

50 補充: 1.S4A腳位修改for IR_CAR 2.手機+藍牙模組控制

51 藍芽模組 USB GPIO 藍芽模組 51

52 藍芽模組操作 A.手機先安裝利基app程式: innoSCar.apk
載點: B.Arduino_UNO 端: 1. 不接電源 2. 接藍牙於麵包板(VCC接5V,GND接GND;TXD接Pin3,RXD接Pin4) 3. 接USB線到電腦 3. 下載 BT_For_UNO_CAR.inb 檔 5. 此時藍牙燈快速閃爍等待與手機配對 C.手機端: 1.掃描藍芽Connect Device (Scan) 2.Device名稱: HC-06 3.ID碼=1234 4.打開app程式Connect上藍牙,此時燈閃爍變慢後開始遙控車子 52


Download ppt "蔡明智 睿揚創新科技 mctsaione@gmail.com Arduino 循跡自走車 蔡明智 睿揚創新科技 mctsaione@gmail.com."

Similar presentations


Ads by Google