搜尋此網誌

2014/10/31

iPOE-A1 範例程式下載與說明

這裏提供幾個範例程式供下載與使用,若有引用,標頭部分請保留;檔案請按此下載,解壓縮後即可使用,但因為範例檔絕大部分都用到函式庫,請務必先安裝函式庫後再使用。

範例檔案包含二個資料:

  1. 01_basic:提供基本的小測試,包含有
    • chap3_1_led_test:LED閃爍的程式測試
    • chap4_button_test:按鈕開關的讀取,本例可讀取三顆按鍵開關的狀態,
      0:代表 IDLE (未按)
      1:代表 PRESSED (剛按下0.5秒以內)
      2:代表 HOLD (長按開關超過0.5秒以上)
      3:代表 RELEASED (放開)
    • chap6_1_LCD_test:LCD5110的簡易測試,可顯示四個角落的文件,並顯示捲動的Hello
    • DisplayIRSensor:顯試感測板中 8 顆紅外線光反射器的感測狀態
    • LCD5110_Graph_Demo:完整繪圖型的LCD測試
    • VoltageTest:顯示目前電池電壓, 並以條狀圖顯示方便觀測與警示
  2. 02_advance:提供進階完整的自走車循跡程式,包含有
    • line8Follow:走 8 字形路徑--IRA初級題目的解題程式範例
    • BlockRun:走口字形的方塊路徑,有提示點的版本 (工科賽教師組 "競速類" 的範例程式)

其中BlockRun是由二張IRA初級認證地圖組成,樣式如下:

P1100676

2014/10/30

iPOE-A1 函式庫安裝

在安裝好的Arduino目錄下,例如C:\arduino-1.0.6或C:\arduino-1.0.5,底下有一個libraries,此資料夾包含了基本的函式庫,也可包含網路上其它玩家或第三方廠商的函式庫,安裝時非常方便,例如下載了一個繪圖型LCD的函式庫LCD5110_Graph,只要將LCD5110_Graph的函式庫資料夾複製至此libraries下即安裝完成;若要移除,也只要將LCD5110_Graph的資料夾刪除即可。

iPOE-A1範例程式使用到的函式庫包含

  1. IpoeA1:iPOE-A1基礎函式庫,包含腳位宣告、LED、Button、Motor
  2. LCD5110_Graph:繪圖型LCD函式庫
  3. MeetAndroid:與Android手機互動的Amarino函式庫
  4. QTRSensors:感測器校正與線性化的函式庫
  5. FlexiTimer2:計時器中斷函式庫

請點此下載,解壓縮至libraries資料夾即可使用。

iPOE-A1的腳位宣告如下

// 腳位宣告
#define RED_LED 31 // 紅色LED腳位
#define YELLOW_LED 30 // 黃色LED腳位
#define GREEN_LED 29 // 綠色LED腳位
#define Buzzer 35 // 蜂鳴器腳位
#define AButton 34 // 按鈕開關腳位 button A
#define BButton 33 // 按鈕開關腳位 button B
#define CButton 32 // 按鈕開關腳位 button C
#define mleft2 44 // 左馬達控制腳(PWM)
#define mleft1 12 // 左馬達控制腳(PWM)
#define mright2 45 // 右馬達控制腳(PWM)
#define mright1 46 // 右馬達控制腳(PWM)
#define ServoPin 38 // 伺服機腳位
#define LCDLight 11 // LCD背光控制腳(PWM)
#define onboardLED 13 // onboard的LED(PWM)
#define Trig_pin 36 // 觸發接腳 36
#define Echo_pin 37 // 反射接腳 37

#define AphaseLeft 18 // 編碼器 A 相輸出腳位(left motor)
#define BphaseLeft 22 // 編碼器 B 相輸出腳位
#define AphaseRight 19 // 編碼器 A 相輸出腳位(right motor)
#define BphaseRight 23 // 編碼器 B 相輸出腳位

2014/10/26

第2章 出廠範例程式

第2章 出廠範例程式

新購的iPOE-A1本身就已經預先載入範例程式,讓使用者可測試各項功能是否正常運作,底下逐一介紹其功能及操作。

2-1 操作前的準備

首先您需先準備好底下的材料及設備,其中若無5、6、7項,無法進行某些項目的測試。
  1. iPOE-A1輪型機器人一臺。
  2. 2顆14500(3號電池大小)鋰電池,其規格為3.7V;鋰電池最好選用有加過放保護板的電池。
  3. 一個繪圖型LCD模組(LCD5110)。
  4. 一個HC-SR04超音波測距模組。
  5. 一個HC-05藍牙模組,鮑率需設為57600,0,0,代表鮑率57600bps,1個停止位元,無同位元。
  6. 一張黑底白線的IRA初級的場地圖,樣式如圖 2‑1所示;若沒有,可在一個黑色不反光地板上,使用白色電工膠帶仿造製作出地圖即可。
02-01
圖 2‑1 IRA初級場地圖
  1. 一張IRA中級認證場地圖,樣式如圖 2-2所示。
02-02
圖 2‑2 IRA中級認證場地圖

2-2 安裝與啟動

接著請按下圖的外觀替iPOE-A1裝上電池、LCD、藍牙模組與超音波,請注意方向,操作如下所示。
一、 電池安裝:請按電池座的極性方向,將鋰電池放入。
02-02a

二、 LCD安裝&藍牙模組、超音波模組的安裝

  1.  LCD5110的正面如圖 2‑3所示,LCD模組的上下邊都有排針,可視需求使用上或下排針,但無論使用哪一種接法,方向一定要對。
    • 若會使用到擴展腳位上的I/O,為避免LCD擋住I/O腳座,LCD適合裝在下方,也就是使用圖 2‑4(a)上排針的安裝方式。
    • 若使用到平衡車的應用,為避免LCD撞到地板,LCD適合裝在上方,也就是使用圖 2‑4(b)下排針的安裝方式。
  2. 超音波模組的安裝上較簡單,直接插入Sonar J1的插座上即可。
  3. 藍牙模組的安裝請注意方向,使用前應先將藍牙模組鮑率設成57600、停止位元1位元、無同位元(57600,0,0)。設定方法請見http://topic.tiked.com.tw/ipoeA1/,底下以設定好的藍牙設備名稱「Tiger-II」進行示範。

02-03
圖 2‑3 LCD的安裝
02-04
(a)安裝在下方的外觀(上排針)   (b)安裝在上方的外觀(下排針)
圖 2‑4 LCD的安裝位置
三、 啟動電源
一切就緒後,接著打開圖 2‑4(a)標示的電源開關即完成啟動的動作。
 

2-3 LED及LCD背光測試

系統剛啟動,你會聽到蜂鳴器發出一聲"嗶"聲,然後在LCD螢幕上看到iPOE的Logo圖,如同圖 2‑4(a)LCD顯示的內容;接著系統會進入電池電壓的顯示介面,如圖 2-4(b)LCD顯示的內容。
  LCD顯示的同時,位於按鍵旁的LED也會持續變化,請確認紅、黃、綠燈能正常閃滅顯示,如圖 2‑5所示,還有LCD的背光也會規律呈現呼吸燈狀態。
02-05
圖 2‑5 LED及LCD背光測試

2-4 光感測器校正

接著請將iPOE-A1放置在場地圖的白線上,並按下按鈕A進入iPOE底部8顆光感測器的校正程式,校正時,車子會原地向右轉,然後向左轉,最後轉正。校正的目的是讓8顆感測器的感測值範圍都相同(歸一化),0代表最白、1000代表最黑,同時將同排的感測器線性化成一個位置值。


2-5 光感測器值讀取

校正後LCD上會呈現光感測器值讀取到的狀態,如圖 2‑6所示,其中LCD左側條狀圖代表後5顆感測狀態,最大時代表1000,條狀最小時為0,而上方數字代表5顆感測器線性化後的位置值,正中央為2000,車身偏離白線最右到最左為0~4000;右側條狀圖代表前3顆感測狀態,最大時代表1000,條狀最小時為0,上方數字同樣為線性化後的位置值,但因3顆感測器距離太遠,此數值無參考作用。操作時可移動一下車子與白線的位置,了解感測器的顯示狀態。
02-06
(a)車身在正中央的狀態
02-06bc
(b)車身偏左的狀態 (c)車身偏右的狀態
圖 2‑6 光感測器值讀取的顯示圖

光感測器值讀取的動作非常重要,操作過程中若有發生誤感測,很容易影響結果,若發現有異狀,例如同樣偵測黑色結果有些感測值偏小、偵測白色有些感測值偏大,則需按RESET鍵重新進行光感測器校正。

2-6 功能選單

光感測器感測值沒問題後,按KEY_A即可顯示iPOE-A1的主功能表,如圖 2‑7所示,共有6個選項;操作時,我們可透過KEY_B(上移鍵)移至上一列功能,按KEY_C(下移鍵)移至下一列功能,選擇後按KEY_A(確認鍵)執行。
02-07
圖 2‑7 iPOE-A1功能選單
接下來逐一說明各項功能。
 

2-7 馬達及編碼器測試

執行Draw Encoder前建議將iPOE-A1架高,避免操作過程中車子亂跑;當進入馬達及編碼器測試時左右馬達均會同時向前或向後轉動,並出現圖 2‑8的畫面:

  1. 左上方指示目前正在顯示左(left)或右(right)馬達的狀態。
  2. 右上方顯示現行馬達的PWM速度值,0代表停止、255代表最高速,正值代表馬達向前轉動、負值代表馬達向後轉動。
  3. 下方顯示馬達編碼器A、B相的狀態(為方波),若A相領前B相代表正轉,B相領前A相代表反轉,頻率愈高代表速度愈快。

02-08
圖 2‑8 Draw Encoder的LCD畫面
02-09
(a)右輪狀態 (b)左輪高速狀態 (c)左輪反轉狀態
圖 2‑9 Draw Encoder的LCD畫面

2-8 IRA中級認證地圖試跑

1. 基本測試:
(1) 執行IRA Mission前請將iPOE-A1放在大紅色的起點/終點上。
(2) 按下KEY_A後即開始IRA中級認證任務B的行走,如圖 2‑10所示。
(3) 行走中車子遇到障礙物會停止,並且蜂鳴器嗶3聲,相關IRA認證的內容請見網站
http://topic.tiked.com.tw/showcontent.asp?pf=tp9168udle。
(a)IRA任務的起點/終點 (b)遇障礙物停止並”嗶”3聲
圖 2‑10 IRA Mission示意圖
2. 加入手機APP的控制測試:
(1) 首先請至http://topic.tiked.com.tw/ipoeA1/下載「IRA認證設定端」的手機APP程式,安裝好並啟動後的畫面如圖 2‑11(a)所示。
(2) 開啟手機藍牙功能,並新增設備,操作如圖 2‑12所示。
(3) 回到「IRA認證設定端」畫面點選圖 2‑11(a) Bluetooth Device List按鈕,並選擇配對好的藍牙設備,例如Tiger-II。
(4) 點選連線後呈現圖 2‑11(b)的成功畫面。
  02-11
(a)剛開啟未選擇裝置的畫面 (b)配對並連線後的畫面
圖 2‑11 IRA藍牙連線圖
  02-12a
(a)在手機設定中開啟藍牙設備
 02-12b
(b)搜尋並進行藍牙配對
圖 2‑12 藍牙裝置設定圖
(5) 接著可進行不同前進速度及任務的練習;首先請點選圖 2‑13(a)中的速度捲軸,拖曳設定不同前進速度,接著點選任務A、B或C,最後點傳送即可讓iPOE-A1前進。其中任務C的起點,iPOE-A1需朝向右邊,如圖 2‑13(b)所示。
(a)設定要傳給iPOE-A1的速度值及任務 (b)任務C的起點方向
02-13 
圖 2‑13 不同前進速度及任 務的練習

2-9 循跡程式

將iPOE-A1放在圖 2‑14場地圖中間的8字形路徑上,按Following即可開始繞8字行走的循跡程式,當行經交叉點時,蜂鳴器會”嗶”一聲。拿起iPOE-A1車子時,系統會自動回到選單畫面。
圖 2‑14 繞8字的循跡測試圖

2-10 方形競速程式

將iPOE-A1放在圖 2‑15場地圖外側的綠色方形區塊上,按Block Run即可開始方形競速的循跡程式,其中:
1. 路徑右側的提示點為起點/終點,繞一圈結束後,車子需靠右側的提示點偵測停在綠色方塊內(含蓋1/2的綠色方塊即可)。
2. 路徑左側的提示點為轉彎提示點,提前告接下來的10cm路口要轉彎。
  02-15
圖 2‑15 方形競速的起點
圖 2-16 方形競速行進間狀態
3. 接著可同IRA中級認證地圖試跑中的手機APP程式,透過「IRA認證設定端」進行速度控制。從不同的速度試跑中可看出程式中對於遇轉彎提示點需減速的作用,若沒有減速,在高速的場合很容易轉彎失敗。
 

2-11 音樂測試Sing a song

當按下Sing a song時LCD會出現iPOE_lucky 的圖案,接著蜂鳴器開始演奏歌曲,任何時間可長按KEY_A返回主選單。
 

2-12 手機姿態控制-搖控車

一、 安裝手機端的Amarino應用程式
iPOE-A1的手機姿態控制是使用Amarino來連接 Android 與 Arduino,首先請至網站http://www.amarino-toolkit.net/點選Download頁面,下載圖 2‑17中Amarino相關的兩支APP,分別是Amarino - Android Application、Amarino Plug-in Bundle,請點選圖 2‑17圈出處的連結,並依序安裝。
  02-17
圖 2‑17 Amarino的下載頁面
安裝完成後,請在手機端開啟Amarino 2.0,接著請底下的步驟操作:
1. 第一次還沒有連接裝置的使用者,請點選圖 2‑18的 加入新的藍牙裝置,並點選搜尋到的藍牙裝置(例如圖 2‑18右圖的Tiger-II)。若沒有找到iPOE-A1的藍牙裝置,代表你未在手機的藍牙裝置中建立連線,請參考圖 2‑12的操作建立新裝置。
  02-18
圖 2‑18 新增BT Device的操作
2. 點選找到的藍牙設備,例如圖 2‑19左圖的Tiger-II,點選橘色框框處進到圖 2‑19右圖的事件列表。
  02-19
圖 2‑19 新增感測器事件的操作
3. 在圖 2‑19右圖的事件設備點橘色框框處的Add Event,顯示所有可用的Events,如圖 2‑20所示,然後依序先點選Accelerometer Sensor(如圖 2‑20右圖),點Save。
  02-20
圖 2‑20 新增感測器事件的操作II
4. 依步驟3的操作,請再新增一個Light Sensor事件,操作如圖 2‑21。
  02-21
圖 2‑21 新增感測器事件的操作III
5. 接著請回到圖 2‑19右圖的畫面點選Connect,連線成功後,點選圖 2‑19橘色框框處即可看到運作中的二個事件,如圖 2‑22左圖所示,其中ID:A為手機三軸加速度感測器的值,由上而下顯示X、Y、Z三軸的資料;ID:B為手機亮度感測的值。
6. 若連線後仍沒看到圖 2‑22左圖感測值的變動,請參考圖 2‑22右圖的操作,在事件上方長按ID:A、ID:B,點選Force Enable即可。
  02-22
圖 2‑22 啟用的Amarino事件
7. 一切就緒,可看到圖 2‑22左圖感測值變動後,即可開始與iPOE-A1連線進行手機姿態控制實驗了。
二、 手機與iPOE-A1的連線測試
1. 點選iPOE-A1選單中的最後一項Remote Car,進行手機姿態控制-搖控車測試。
2. 手機平放時,車子不會前進,如圖 2‑23所示用手遮住超音波,可在LCD上顯示車子與障礙物的距離。為避免超音波測量太遠距離影響到操作速度,本範例限制超音波最長的偵測距離為34cm。當前方10cm內有障礙物時,車子會自動刹車避免撞擊障礙物。
3. 手機的亮度感測器會控制LCD的背光亮度,試著用手遮著手機亮度感測器,可發現iPOE-A1 LCD背光變亮,用手電筒照手機時,LCD背光變暗。
  02-23
圖 2‑23 手機平放時可顯示超音波測到的距離
4. 手機左右翻轉可控制車子左、右轉彎,翻轉角度控制轉彎的速度,如下圖所示。
圖 2-24 轉彎速度控制
5. 手機前、後傾斜可控制車子的前進、後退。
6. 姿態控制一開始不習慣,角度儘可能的小,待習慣後再加大控制角度。

第1章 iPOE-A1簡介

1-1 概述

iPOE愛寶設計(intelligent public open easy)是勁園國際股份有限公司針對輪型機器人所製作的自走車,取其智能、開源、簡易的特性,讓學生可以透過開放原始碼(source code)的軟硬體平台Arduino,學習自走車的控制;A1屬於競速用車,速度比較快,專門為特定功能所設計的車子,適合學習循跡、競速、避障、線迷宮、平衡車技能,還可搭配手機做成遙控車、寵物車等,當然也可自行改造成更適合比賽的車種;iPOE採用Arduino Mega架構,保留擴展板及眾多控制腳可擴充。底下為iPOE-A1輪型機器人的特色介紹、核心說明,以及規格表。

一、 產品特色

  1. 具備基本競賽用的感測與行走能力,可作為競速、循跡、線迷宮、避障,以及平衡車等應用場合。
  2. 採用Mega架構,除iPOE A1用掉的I/O外,仍提供多組擴充腳座及控制腳,外接彈性大。

二、 iPOE A1核心

  1. 電路採用Arduino Mega 2560 Rev3架構
  2. 微控制器核心採用ATmega 2560
  3. 有54組數位I/O端(其中14組可做PWM)
  4. 16組類比輸入端
  5. 4組UART(硬體串列埠)
  6. 時脈頻率:16 MHz。

三、 擴充腳座

  1. 保留D0~D10 + D13~D15 + A0~A5,接至標準Arduino UNO板的位置,可接擴展板。
  2. 另保留D20、D21的I2C通訊,以及額外的12組數位I/O腳可用。

四、 規格:

  長13.5 cm × 寬13.8 cm × 高8 cm (±0.5cm),現有已配置好的設備項目條列如下表。
項目
說明
微控制器
ATmega 2560
紅外線循跡感測器
前3後5,共8顆cnb10010紅外線光反射型感測器。
超音波測距HC-SR04
使用電壓:DC5V;靜態電流:小於2mA;感應角度:大於15度;探測距離:2cm~450cm,精準度可達0.2cm。
紅外線測距
紅外線光反射器,主要供平衡車使用。
馬達編碼器
採用5葉光柵,減速比30:1情況下,300pulse/圈。
藍牙模組HC-05
藍牙指示燈:快閃沒有連接、慢閃AT模式、雙閃已連接,電壓3.6V~6V未配對電流約30mA,配對後電流約10mA。
CdS(光敏電阻)
測量環境光
N20微型金屬減速馬達
2顆,額定6V,空載轉速13000RPM,減速比30:1,空載電流30mA
輪子
2個,直徑:42mm 寬:19mm
材質:ABS塑料+橡膠。
繪圖型LCD Nokia 5110
84*48繪圖型點陣液晶3.3V。
蜂鳴器
3-7V電磁式無源蜂鳴器。
電池
鋰電池3.7V×2顆。
按鈕與LED
設定與指示燈。



1-2 外觀及元件配置

1.    外觀:圖 1‑1(a)為iPOE-A1的前視圖,圖 1‑1(b)為iPOE-A1的背視圖
 

(a)前視圖                                                                (b)背視圖
圖 1‑1  iPOE-A1輪型機器人外觀
2.    元件配置說明


圖 1‑2 iPOE-A1各元件配置圖


圖 1‑3 iPOE-A1背面元件配置圖

1-3 腳位配置

  iPOE-A1已配置好的數位腳位如表 1‑1所示,本書程式中的I/O腳位及名稱皆以此為命名;另外表 1‑2為類比腳位的配置說明。

表 1‑1  iPOE-A1數位腳位配置
分類
程式中的腳位名稱
腳位
說明
LED
RED_LED
31
紅色LED腳位
YELLOW_LED
30
黃色LED腳位
GREEN_LED
29
綠色LED腳位
LCDLight
11
LCD背光控制腳 (PWM)
onboardLED
13
onboard的LED (PWM)
蜂鳴器
Buzzer
35
蜂鳴器腳位
按鈕
AButton
34
按鈕開關腳位KEY_A
BButton
33
按鈕開關腳位KEY_B
CButton
32
按鈕開關腳位KEY_C
伺服機
ServoPin
38
伺服機腳位
超音波測距
Trig_pin
36
觸發接腳
Echo_pin
37
反射接腳
馬達編碼器
輸出
AphaseLeft
18
編碼器A相輸出腳位(leftmotor)
BphaseLeft
22
編碼器B相輸出腳位
AphaseRight
19
編碼器A相輸出腳位(rightmotor)
BphaseRight
23
編碼器B相輸出腳位
馬達控制腳
mleft1
12
左馬達控制腳(PWM)
mleft2
44
左馬達控制腳(PWM)
mright1
46
右馬達控制腳(PWM)
mright2
45
右馬達控制腳(PWM)


表 1‑2  iPOE-A1類比腳位配置
分類
程式中腳位名稱
說明
前循跡
感測器
A15~A13
為類比值讀取的腳位,由左而右為A15~A13,主要功能是進行叉路口的預感測以及45度前進時的校正。
後循跡
感測器
A12~A8
為類比值讀取的腳位,由左而右為A12~A8共5個偵測點,主要作為循跡功能。
紅外線測距
A7
提供紅外線測距,可作為平衡車感測器。
電池電壓
偵測
A6
可透過J13的短路pin決定要偵測哪一種。
CdS亮度偵測
A6

1-4        安全警告及注意事項

  1. iPOE-A1輪型機器人使用鋰電池,無論充電或使用中,電池接反都有可能造成不可預期的損壞,使用前請注意方向。
  2. 當電池耗盡時,請勿試圖燒錄iPOE-A1,燒入過程失去電力有可能造成核心元件的永久停用;iPOE-A1的範例程式提供有電力監控的程式,方便隨時監控電力狀態,請善加利用。
  3. 電路板通常都有含鉛,操作中請勿邊操作邊飲食,使用後請清洗雙手。
  4. 車輪輪胎為ABS塑料+橡膠,出廠時會有橡膠臭味,請置放空氣流通處透氣,使用一段時間後味道會逐漸消失。
  5. iPOE-A1馬達的減速齒輪無保護蓋,請勿工作於高粉塵的環境,避免灰塵、頭髮等異物卡在齒輪間。馬達編碼器光柵無保護蓋,操作時應避免誤觸及被雜物勾到,造成葉片損壞。
  6. 由於PCB板採雙面銲接,所有元件均暴露在外,請採取標準的ESD(靜電放電)預防措施保護iPOE-A1,以免損毀主板、感測板上的電子零件。
  7. LCD有方向性,當你移除LCD裝置前請先關閉電源並留意方向及插座位置,如果接反或腳位錯位可能導致LCD或iPOE-A1損壞。