Arduino 智能小車實作-超聲波與紅外線複眼的測試程式

超聲波模組就是透過發射與接收 (Trig/Echo) 音頻的原理來計算距離的。使用方法參考店家對 US-100 型號的說明:

一個控制口發一個10US以上的高電位,就可以在接收口等待高電平輸出;一有輸出就可以開定時器計時,當此口變為低電位時就可以讀定時器的值,此時就為此次測距的時間,方可算出距離。如此不斷的週期測,就可以達到你移動測量的值了。
超聲波模組 US-100

這裡我整理了兩個測試程式。其中第一種方式是直接針對腳位作電位的改變,但需要自行將往返的時間 (每公分的音頻速度為 29 微秒);第二種方式則是透過 <<NewPing.h>> 函式庫,採以 Wrapper 較高階的作法來取得音頻的距離。

實際觀察方式就是透過 Serial Port 回傳所感測的距離資料,所以在 Arduino IDE 環境中,需點選【工具】→ 【序列埠監視窗】開啟監視窗觀察測試的結果。

UltraSoniceTest1.ino:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const byte trigPin = 9;		// Trig 接腳編號
const byte echoPin = 10;	// Echo 接腳編號
unsigned long duration;		// 儲存高脈衝的持續時間
 
unsigned long ping() {
  digitalWrite(trigPin, HIGH);		// 觸發腳位設定成高電位
  delayMicroseconds(5);			// 持續 5 微秒
  digitalWrite(echoPin, LOW);		// 接收腳位設定成低電位
 
  return pulseIn(echoPin, HIGH);
}
 
void setup() {
  pinMode(trigPin, OUTPUT);			// 觸發腳位設為輸出
  pinMode(echoPin, INPUT);			// 接收腳位設為輸入
 
  Serial.begin(9600);				// 初始化序列埠
}
 
void loop() {
  duration = ping() / 58;			// 把高脈衝時間值轉換為公分單位
						// The speed of sound is 29 microseconds per centimeter.
  Serial.print(duration);			// 顯示距離
  Serial.print("cm");
  Serial.println();
 
  delay(1000);					// 延遲一秒鐘再重新測量
}

閱讀全文 »

[好書分享] 超圖解 Arduino 互動設計入門(第二版)

超圖解 Arduino 互動設計入門(第二版) 超圖解 Arduino 互動設計入門(第二版)

作者: 趙英傑
出版社:旗標
出版日期:2014/04/24
語言:繁體中文
ISBN:9789863121954

內容簡介
本書的目標是讓高中以上, 沒有電子電路基礎, 對微電腦、電子 DIY 及互動裝置有興趣的人士, 也能輕鬆閱讀, 進而順利使用 Arduino 控制板完成互動應用。因此, 實驗用到的電子和程式觀念, 皆以手繪圖解的方式說明, 看圖就能懂。

□ 【超清楚手繪接線圖, 不懂電子電路也能接對線】:製作電子實驗一定要動手接電路, 本書利用手繪方式提供超清楚的實體接線圖, 只要對照圖中的接線與電子零件標示, 就可以在麵包板上正確接好線路, 進行實驗。

□ 【程式語言從零開始, 人人都能寫出 Arduino 程式】:使用 Arduino 製作互動設計除了組裝電路外, 最重要的就是利用 Arduino 的程式控制互動的邏輯。本書特別以手繪的程式觀念圖以及清楚易懂的流程圖, 從零開始說明程式設計的基礎觀念, 即使沒有程式設計經驗, 也可依照書中說明製作互動程式。

□ 【改造 3C 小玩意, 享受創意樂趣】:除了花錢購買電子零件以外, 本書還會教您改造身邊的 3C 玩意, 製作出令人驚艷的有趣設計, 像是使用 Wii 遊樂器的手把來控制機器手臂、將廢棄的軟碟片改造成電子鼓、將玩具模型車變成可自動躲避障礙物的智慧型自走車等。

□ 【改造 3C 小玩意, 享受創意樂趣】:包括 Android 手機藍牙遙控機器人、連網智慧家電控制、光感應電子琴、拍手聲控開關、環境感知自動調光小夜燈、LED 動畫看板、避障自走車、Wii 手把控制機器手臂、紅外線遙控縮時攝影、MIDI 電子鼓、用搖桿玩 Flash 動畫、RFID 國民教育問答遊戲等。

這一本書再版的當天,恰時我到光華商場,就在對面的國際廣場B2有一家超小的電腦書局買到,而且折扣是六五折!推薦那家小書局,空間雖然很小,但熱門的電腦書卻都會有。

我在好幾篇文章常透露出以前學生時代因為過於太混,以致於即使讀當時五專最好的學校 (台北工專)還是電子科,但對於電子的基礎近乎為零;重點是明明我對電子很有興趣的,所以可以說那一段頹廢荒唐的時光,讓我相當遺憾。

而最近打著開放硬體原始碼的 Arduino,可以說是重拾我對電子的熱情;而且因為整個重心擺在核心的微處理器,然後再以寫入控制程式的方式,進而控制所連結的電子組件。所以相對來說,學習曲線相對低很多,但可以玩的電子硬件的樂趣,甚至比以前還要廣泛很多。

其實 Arduino 入門不難,網路上也有一大堆相關參考文件與範例等,所以是不太需要實體的入門書籍;不過兩個原因讓我買了這本互動設計入門第二版:一為它的排版是我看過的入門書籍當中最棒的;另一為我想享受下較系統化的電子入門學習。

這本書採兩色的藍白印刷,不會太花俏卻又能突顯出內容的重點。再則,它標榜了「超圖解」;的確,幾乎每頁都有圖例,而且幾乎不是用照片或手稿繪製,應該是使用某電子電路軟體 (如 Fritzing) 儲成圖檔,再搭配上中文的註解。這樣的電路設計暨接線解說,看的相當舒服。
** 有讀者迴響說該書作者是以 Flash 一張張所繪製而成的;實在太過佩服了,沒想到 Flash 可以有這樣的應用~

閱讀全文 »

關於淘寶網電子零組件採購暨貨運台灣之心得分享

自從瞭解如何從大陸淘寶網採購電子零組件後,我就很少到光華商場或露天拍賣購買了 (除非是應急)。主要原因當然是價格-而且差價還不是普通的大。

就以製作智能小車/機器人會常用到普遍成本最低的 SG90 舵機 (servo, 伺服馬達)來說,重慶南路某知名電腦書局 NT$160;光華商場 NT$120;露天拍賣 NT$80;淘寶網-NT$45。看看差了多少!!
SG90 伺服馬達 (舵機、Servo)

所以現在到光華的電子商場,以前會認為某電子零件售價 NT$100 應該是差不多,但一到淘寶網比價後,才知道可能只需人民幣5元不到 (台幣25元),而且越認為單價低、常見的零件價差反而會更大。這使得許多零件實在很難在現場買下手,寧願累積一堆採購需求後在淘寶網採購。

再則一般可能會以為從淘寶網要寄送回來台灣的貨運費用不會便宜吧? 先瞧瞧我這幾天又從淘寶網向兩個商家所訂購的商品。這兩組訂單各自的訂購價格平均約為 RMB$350 左右 (約台幣 NT$1,600),看看其中這一筆訂購,直接寄回台灣快遞費用是多少?人民幣五元 (合新台幣NT$25)!而另一筆訂單更是誇張,不用任何快遞費用,直接快遞寄到我家來。
淘寶網電子零件採購

怎麼有這麼好的事?其實這就是要能懂得與淘寶網上的店家如何「交涉」。

閱讀全文 »

Arduino 智能小車實作-組裝超聲波與紅外線複眼模組

我把兩顆舵機 (MG995)當成小車的頸部,可以上下左右移動;然後安裝在頸部舵機可以隨之移動的裝置則有超聲波與紅外線複眼兩個模組。

超聲波 (或稱為超音波, UltraSonic)模組的作用就是透過感測所發射音頻的往返 (Trig/Echo)時間來計算前方屏障的距離。這裡我使用的型號是 US-100,具有溫度補償的功能。

而紅外線複眼模組,英文稱之為 IR Compound Eye,它的作用是透過四顆LED紅外線的感測以計算上下左右的距離。目前這個模組好像沒有型號可查,也只有一種可以選擇而已。

參考下圖,我把兩個模組上下組裝在一起,上方像兩顆眼睛的是超聲波;下方則為紅外線複眼。
超聲波與複眼紅外線模組

這兩個模組相似的功能都是偵測前方屏障物的距離,不太一樣的是:超聲波只能偵測前方水平位置 (約從 2cm~80cm),但量測結果會很精確;而紅外線複眼可以偵測上下左右四個方向的距離 (最高到 20cm),但常受外界光線干擾而影響距離的計算。

所以我同時裝了兩個感測模組,一則用以精確的計算 (只能水平)、另一則用以模糊的屏障搜索 (可以上下左右四方向)。如此外來的應用也可以比較廣泛,甚至能設計成寵物狗的樣子,用手勢操控來與小車互動。

閱讀全文 »

Arduino 智能小車實作-雙舵機移動的測試程式

我使用了兩個舵機 (MG995) +雲台放置於小車前方,目的是裝上如超聲波感測器後,可以讓其上下、左右移動。
雙舵機移動測試

目前已把兩個舵機含雲台給裝上小車上了,同時也把超聲波感測模組給鎖上雲台支架上,這樣看起來像雙機器人眼睛。
雙舵機移動測試

現在先把兩個舵機的測試程式寫好,至於超聲波模組的測試程式則留待另一篇討論。

舵機控制的程式相當簡單,因為 Arduino 已內建 函式庫,已經把較低階以脈衝訊號控制角度運轉的指令包裹 (wrap)成只用 write() 較高階的指令,並帶入角度 (0~180) 的整數參數即可控制舵機往所指定的角度移動。

舵機有三條電源線,一般棕色為接地、紅色為電線線;還有一條橘色則為訊號線。在 Arduino 擴展板上連接任一編號的 GVS 接腳即可。本例兩個舵機是連接編號為 4與5 的接腳組。

再來注意的是,MG995 舵機的轉向角度為 180度,但實際連接到小車後可移動角度因與其它裝置會碰觸到,所以需要經過調整,往往會小於 180度。本例控制左右的舵機把角度控制在 0~160 度;控制上下的舵機把角度控制在 0~125 度。

測試程式參考如下:

閱讀全文 »

Arduino 智能小車實作-輪胎轉動的測試程式

關於小車的轉動部分,已完成所有的接線,並已撰寫好轉動的測試程式。測試的程序需要包括 前進/後退、左轉/右轉等行進的方向;同時也需要測試轉速部分,可以調整輪胎轉動的速度。

可以先觀賞下我在 Youtube 發佈的影片:

控制小車馬達的行進方向是透過 L298N IN1~IN4 接腳的電位控制;而控制轉速則是將脈衝訊號輸入至 L298N 的 ENA/ENB。
(IN1/IN2/ENA 為馬達A的控制;IN3/IN4/ENB 為馬達B 的控制,一般 L298N 可控制兩顆馬達。)

可以參考如下圖馬達 A 的接腳說明。
L298N EN/IN 接腳說明

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal