2014-12-16

讓 EV3 來播放聖誕音樂


歲末年冬, 聖誕節與新年也陸續即將到來,所以也就想用EV3來點綴一下年節的氣氛。
而首先可以做的就是讓它來播放應景音樂,也就是透過EV3軟體的Sound Editor工具錄製成EV3Sound Files,再以Sound Block來播放。




EV3Sound Editor可以開啟MP3WAV等格式的音樂檔,再截取約10秒左右的音樂存成Sound File,不過若要播的音樂超過10秒,就需要分割錄製成數的Sound Files再以相同數目的Sound Blocks來播放。
但是因為EV3Sound Editor工具只能顯示音樂檔的播放長度,而沒有起始與結束的時間資訊,所以,不適合用來做為分割的工具,唯有先以其他的音訊編輯軟體切割好數個10秒片斷的音樂檔再由EV3Sound Editor存成Sound Files,或者使用音樂播放軟體或MP3播放器透過Line In到電腦,一邊播放同時由Sound Editor進行錄製,當錄製的時間約8秒時,Sound Editor就會停止錄製,這時候先暫停播放,存檔成Sound Files之後再繼續重複錄製的動作。這樣方式的缺點是Sound files之間可能會有類似跳針的間隔,不過多練習幾遍盡量降低Sound files之間銜接的不順暢就OK了。

在影片中使用的正是邊播放邊錄製的方法,品質也許並非完美,不過還是有它的效果在,如果再配合一些聲光與動作效果,就更能襯托出年節的氣氛 ^^


  1. YouTube中有免費授權的聖誕音樂可以下載,如果要錄製成影片上傳的話,使用這些音樂可以避免被YouTube消音。
  2. 使用Sound Editor tool錄製電腦播放的音樂,再存成Sound File
  3. 存檔的Sound files可以在Project propertiesSounds頁籤中找到。


  4. 再使用連續個相同數目的Sound blocks依序挑選Sound file來播放。

2014-07-27

EV3 對 Arduino 的藍芽通訊測試

EV3軟體中的Messaging Block是唯一使用藍芽通訊的程式區塊,它的功能是在EV3之間傳送與接收郵件訊息(Message),所以只要能夠解析EV3的通訊格式,就同樣可以用來與Arduino進行無線的藍芽通訊。

配對與建立連結

在本次測試,Arduino使用的藍芽模組DFRobot Bluetooth Bee(2.0)

經由EV3進行配對之後,在EV3 UI的藍芽Favorites清單中所顯示的裝置名稱為:Bluebooth_Bee_V2

2014-07-18

EV3與Arduino之間的I2C通訊(測試Dexter的EV3_I2C Block) - (II) 測試案例

依據前一篇對於EV3_I2C Block的功能摘要說明
本測試案例,將Arduino模擬成NXT I2C
類型的數位感應器,
透過預先規劃好的「I2C虛擬暫存器位址映對表(Register layout)」,提供作為回應Master(EV3)的多種功能需求,包含:

暫存器位址
執行功能
0x00
回傳版本資訊 "V1.00   " 8bytes
0x08
回傳廠商名稱 "Arduino " 8bytes
0x10
回傳裝置代號 "UNO     " 8bytes 
0x18
接收來自Master傳送的7個bytes資料並顯示在Serial Console 
0x19
執行開啟 Arduino板的L LED 
0x1A
執行熄滅 Arduino板的L LED  


EV3與Arduino之間的I2C通訊(測試Dexter的EV3_I2C Block) - (I) 功能摘要

五月底,由The NXT得知:DI在他們官網部落格中分享了以自行開發的EV3程式區塊(EV3_I2C)能夠透過I2C連接Arduino的方式,除了有How-To教學之外,也提供EV3 block與Arduino sample code的下載。
這確實是一個好消息,因為EV3除了官方軟體外,不像NXT還有功能彈性高而且簡單容易上手的NXC可以使用,雖然陸續有其他開發工具發展中,終究有些技術門檻,所以目前EV3若要連接外部裝置,唯有依賴第三方開發的程式區塊,而終於Dexter造福Arduino users,提供了可以Import的EV3_I2C block。

下載與匯入

可以到這個網頁的右側找到Download ZIP這個按鍵下載壓縮檔,解壓縮之後再使用EV3軟體匯入Dexter.ev3b這個檔案,就可以在Sensor Blocks裏找到Dexter所有提供的感應器區塊包含EV3_I2C Block。

2014-05-16

Mindstorms EV3基本特性的速查筆記

EV3軟體的Help Files內容大致已經相當完整,不過,到底是別人整理的,要用的時侯還是得花點工夫去找,再加上彙整其他來源的資訊或自己的測試紀錄,整理一份速查筆記方便構思或撰寫程式時的參考,會是一個事半功倍的好習慣。

2014-04-23

兩種EV3馬達「Power Level設定」與「輸出轉速」之間的關聯測試

EV3馬達的Power Level是一個重要的控制參數,如果參考EV3軟體的Help File,在Large Motor與Medium Motor Action Blocks的說明文件中,都提到馬達轉速大致與設定的Power Level值成正比:
"The rotation speed of a motor will be roughly proportional to the power level specified, although rotation speed is also affected by how much load is put on the motor."

而Danny在哨兵機器人(SENTIN3L)的專題中,更進一步的說明EV3馬達每一單位Power Level值對應的馬達轉速等於:每0.1秒1度 或 每秒10度,所以當Power Level=10,對應的馬達轉速也就是100 度/秒。

對於Danny所提供的參考數據,雖然大部分的專題很少有機會會直接使用到馬達的轉速值,通常只要能理解「Power Level值越大,馬達就會轉得越快」這樣的觀念就足夠了,
不過剛好手上有一個HiTechnic的角度感應器(Angle Sensor),可以用來測量不同Power Level下馬達RPM值的變化,而再將RPM值轉換成每秒旋轉度數,這樣就可以實際觀測到Danny所提到的比例關係。同時,測試數據也可以當作EV3馬達的特性記錄,用來佐證EV3 Help File的說明。

測試過程摘要

  • 測試的方式很直覺,就是以十字軸連接EV3馬達與HiTechnic的角度感應器,同時因應兩種馬達特性的差異,所以也分開進行測試。

  • 測試時,先由Power Level=10設定開始,每次增加10,直到Power Level=100止,共分成10個階段測量馬達的RPM值。
  • 測量同時並立即將RPM值換算成每秒旋轉速度:
    RPM值 * 360度 / 60秒  = RPM值 * 6
    這樣可能會放大角度感應器的誤差,不過如果只是作為觀察變化趨勢與關聯性,實際並不致於對結果有顯著的影響。
  • 使用NXC的Screen Capture記錄測試過程,
    由EV3 LCD顯示:Power Value(%)、RPM以及轉速(Degrees / Second)三項資訊。

2014-04-16

Danny EV3 Lab:使用Math Block處理複雜的邏輯運算


EV3軟體的Logic Block對於基本的邏輯運算,如:ANDORXORNOT等,一般而言功能足夠同時也很容易使用。不過如果是較為複雜的運算,則會需要組合數個Logic Block,包含Data Wire的連接以及Block執行順序的安排,程式難免會變得比較龐雜,以下面的運算式為例,就需要四個Logic Block來完成:
Result = (A AND B) OR (C AND NOT (B))
(DannyEV3Lab_ComplexLogicOp)
過去NXT-G的數值運算也有類似的問題,而如今EV3改進了Math Block,增加提供Advanced Mode的功能,可以自行建立組合的數值計算式,簡化不少編寫程式的工作。
但是對邏輯運算如何能夠有類似Advanced Mode的功能?Danny在他的EV3 Lab書中,提到一個透過簡單步驟的方法,也一樣可以組合邏輯運算式,而且還是使用Math BlockAdvanced Mode做出來的,很值得學習。

2014-04-13

Danny EV3 Lab: 使用電子式差速器的 SUP3R CAR

雖然Danny形容SUP3R CAR是一部有著邪惡外觀的裝甲車(我倒覺得比較像「汽車總動員(Cars)」的卡通車),實際上就是一部典型的前輪轉向、後輪驅動的四輪車。


(SUP3R-CAR_CoolView)

在車上駕駛座位置裝有一個IR Sensor,讓它具有障礙偵測以及使用Remote IR Beacon遙控的功能,同時為了能夠更順手地操控,所以改造了成為具有控制前進/後退與左右轉彎兩個搖桿功能的遙控器。

 (SUP3R-CAR_R3MOTE)

2014-04-10

Danny EV3 哨兵機器人(SENTIN3L)的可程式化功能示範影片

Danny的哨兵機器人(SENTIN3L)最主要的主題就是可程式化的功能,這個功能如果用文字形容,不外就是使用Color Sensor再加上特製的顏色方塊(Color Cube)輸入代表指令的顏色之後再去執行,但無論如何,總比不上實際的示範影片來得生動。

所以,重新整理了SENTIN3L機器人關於操作可程式化功能的整個過程的記錄影片,
由一開始啟動程式之後,SENTIN3L會先活動一下四隻前腳讓它們都確實著地,
接著使用顏色方塊依序輸入:白/黑/紅三種顏色指令;
從影片中可以看到,SENTIN3L會以喇叭說出所辨識到的顏色,相當的人性化 ^^,
啊! 在錄這段影片的同時正好收音機在播一首有版權的音樂,所以連同SENTIN3L回報顏色的聲音都被YouTube消音了,
之後接下來就是執行這些指令。

因為是使用手機拍的影片,品質不是很好,不過盡可能透過旁白註解補充說明,還是可以瞭解Danny設計這個機器人的構想與概念。

在這本書的五個機器人專案都相當有原創性,有許多值得借鏡之處,所以盡可能留下影片,以便將來回顧書中內容時,可以相互參照。

2014-04-09

Danny EV3 Lab: 可程式化哨兵機器人(SENTIN3L)

機器哨兵(SENTIN3L)Danny EV3 Lab書中的另一個專案。

外觀上雖然看似三足,事實上這是一個四足步行機器人;另外在頭部有一個IR Sensor,身體有一對可以前後擺動的雷射槍手臂,分別裝有Touch Sensor以及Color Sensor
(SENTIN3L_Robots)
SENTIN3L
後面接一個萬向輪,它的四足步行機構是利用兩個並列的L-Motor以凸輪(Cam)方式各自驅動一對腳,將馬達輸出的連續旋轉運動轉換成為往復擺動的步行動作,所以SENTIN3L可以使用EV3Move SteeringMove Tank Block來控制機器人的前進/後退與轉彎,只不過一開始需要先調整四隻腳的初始位置能夠完全著地(*1),這樣開始步行之後才不致於產生搖晃以及兩對腳不協調的情形。
(SENTIN3L_Foots)
至於雷射槍手臂的擺動動作也是相同的原理,以M-Motor驅動一對球型接頭連結的凸輪,再加上音效和Color Sensor LED的顏色變換(*2),聲光效果十足。
(SENTIN3L_HeadAndArms)

2014-03-29

Danny EV3新書的暴王龍機器人(T-R3X)

      Danny (Daniele Benedettelli)在去年底(2013)出了一本教導以Lego Mindstorms EV3市售版(L31313)製作五個機器人專案的書:The Lego Mindstorms EV3 Laboratory
      Danny的書一向內容紮實、言之有物,這本書也不例外,無論是對EV3硬體、軟體的導引說明,亦或是機器人專案中的機構設計與程式技術,詳讀研究必定能獲益良多,作為工具書也非常合適。
   本書所採用的EV3市售版(L31313)相較於教育版(L45544),雖然少了陀螺儀(Gyro)超音波感應器(Ultrasonic sensor),不過多了IR SensorIR Beacon發射器,這兩者的組合可以提供EV3具有遙控障礙迴避以及偵測IR信號源方位(Heading)與迫近程度(Proximity)等功能,而這些功能在本書的各個專案中都有相關的應用範例,這也是值得一提的內容特色。
在封面上的威猛機器暴龍(T-R3X)正是本書的五個專案之一,這是一種利用重心移位方式邁步的雙足步行機器人(Weight-shifting biped walker)

下面的影片是它完成後的運作情形:


  從影片的00:40開始,可以觀察到控制T-R3X邁步的方式為:
(1)
身體向右傾斜,
(2)
以著地的右腳為支點抬起左腳向前
(3)再將身體向左傾斜,
(4)
以著地的左腳為支點抬起右腳向前。
  01:30處開始,當T-R3XIR Sensor偵測到前方有障礙物時,先以Sound Block撥放恐龍吼叫的聲音檔案,同時張合上下顎作出嘶吼的動作,接下來以IR Sensor判斷應該轉彎的方向,由影片可以看到T-R3X開始往它的左側轉彎。
  01:40起到01:59可以看到T-R3X如何進行向左轉彎的動作,這裡需要一點想像力,據Danny在書中說明的原理和方法是這樣的:
(1)
將身體向右傾斜,讓重心支點落在右腳,
(2)
當正在移動左腳的同時突然再向右傾斜,這時基於角動量守恆定律,下半部的足部因重量較輕,所以會往左偏轉。

2014-01-06

Mindsensors EV3 sensor adapter for NXT的基本功能測試

去年底(2013) 收到mindsensors Mr. Deepak寄來了作為beta testEV3 sensor adapter for NXT or Arduino(NXT/ArduinoEV3 sensor轉接器,簡稱ESA),利用這幾天的元旦假期作了一些基本的功能測試,簡單的結論是確實有它的實用性,同時在上週mindsensors也開始上市販售,價格為$15.5還算實惠。
ESA用途顧名思義就是提供NXT可以連接使用EV3的數位感應器,包含:顏色感應器(Color)超音波感應器(Ultrasonic)陀螺儀(Gyro) 以及零售版(31313)紅外線感應器(Infrared)共四種。
另外用於ArduinoNXTShield以及Raspberry PiBrickPi也同樣可以轉接使用這四種EV3數位感應器。