搜尋此網誌

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 ApplicationAmarino 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
紅外線循跡感測器
35,共8cnb10010紅外線光反射型感測器。
超音波測距HC-SR04
使用電壓:DC5V;靜態電流:小於2mA;感應角度:大於15度;探測距離:2cm~450cm,精準度可達0.2cm
紅外線測距
紅外線光反射器,主要供平衡車使用。
馬達編碼器
採用5葉光柵,減速比301情況下,300pulse/圈。
藍牙模組HC-05
藍牙指示燈:快閃沒有連接、慢閃AT模式、雙閃已連接,電壓3.6V~6V未配對電流約30mA,配對後電流約10mA
CdS(光敏電阻)
測量環境光
N20微型金屬減速馬達
2顆,額定6V,空載轉速13000RPM,減速比301,空載電流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)背視圖
11  iPOE-A1輪型機器人外觀
2.    元件配置說明


12 iPOE-A1各元件配置圖


13 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
onboardLED (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)


12  iPOE-A1類比腳位配置
分類
程式中腳位名稱
說明
前循跡
感測器
A15A13
為類比值讀取的腳位,由左而右為A15A13,主要功能是進行叉路口的預感測以及45度前進時的校正。
後循跡
感測器
A12A8
為類比值讀取的腳位,由左而右為A12A85個偵測點,主要作為循跡功能。
紅外線測距
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損壞。