Tag Archives: linux

[BlocklyDuino] 自製Blockly積木教學,以Linux、 windows10系統製作積木

本文說明Blocklyduino 的檔案架構以及範例:如何自製一個弧度轉角度的數學指令。

※此例為使用Windows 10 操作

 

作者/攝影 翁偉傑
時間  1小時
成本
難度  *  *  *  *
材料表
  • Linux or Windows10作業環境
  • 7697BlocklyDuino環境

環境需求:

  • win執行需運行Ubuntu Linux 的Bash Shell
  • mac可直接在terminal執行
  • 需安裝Python且須使用7以前的版本,需要import lxml 函式庫(Python) 在shell輸入pip install lxml,此函式庫可處理xml & html格式資料 。
  • blockly/apps/blocklyduino/index.html & offline-editor/main.html

切勿手動修改,會被覆蓋可能引發錯誤

 

BlocklyDuino檔案架構:

1.   首先請用 git 下載 MediaTek-Labs的Github。下載完成後,解壓縮到任何你知道的位置。

2.   解壓縮之後有許多資料夾,簡述如下:

  • blockly:是我們主要新增使用到的資料夾
  • example:範例程式,每個資料夾都會有一個同名的 .ino 與 .xml 檔。Blocklyduino 可匯入這個 .xml檔來開啟範例。

  • offline-editor:是將blocklyduino作為Chrome的擴充套件
  • html:會連結至blockly/apps/blocklyduino/index.html,可離線執行網頁版blocklyduino
  • sh:重新編譯時要用到本指令

  1. 進入blockly/blocks資料夾中,在此有對應設定Blocks外觀之程式碼,可以定義版型、顏色、積木連結位置、輸入… (與arduino程式無關,但在此須設定參數以及其類型 )

例如開啟 dht.js 即可看到 dht溫濕度感測器相關指令

常用的函數指令:

  • setHelpUrl:說明文件網址,在IDE中對某指令點選右鍵->說明(HELP)即可進入。
  • setColour:Block的色調
  • setPreviousStatement & this.setNextStatement:決定本指令的上與下是否能再接受其他Block
  • appendDummyInput():告訴程式此處要塞字串
    • appendField 則是引導程式到字串的地方
      • 延伸用法:appendField(new Blockly.FieldDropdown(OPERATORS), ‘OP’);
      • 可以插入圖片 如下: .appendField(new Blockly.FieldImage(Blockly.Blocks.servo.image, 64, 64))
      • 可以輸入值 如下:.appendField(new Blockly.FieldTextInput(“255″),”TOHIGH”);
    • setCheck:確認資料型別
    • setAlign:確認邊界
    • setTooltip:是將blocky\msg資料夾中相關的說明訊息映射至Block中供使用者可以在IDE中參閱。將滑鼠放置某個block上即會顯示,如下圖。

  • FieldDropdown:建立下拉式選單
    • 以appendField(new Blockly.FieldDropdown(OPERATORS), ‘OP’)為例,OPERATORS是變數名稱。在Logic裡面的範例中,OPERATOR會引導到在同一個Block的Tooltip變數中,再轉換成字串

例如數學中的 + 實際上是六個指令的集合,可以透過下拉式選單來切換

  • setOutput:變成Data Block,從右邊插入其他Block
  • setPreviousStatement上方可接其他Block
  • setNextStatement下方可接其他Block

  • appendValueInput:允許該block右側產生輸入欄位你讓Data Block從右邊插入
    • appendValueInput(“VariableName”):VariableName 可在寫轉換Arduino code時使用
    • .setcheck:則是決定輸入的資料型態。 Number, string …

可以允許多個setcheck,不允許的資料型態將無法放入該輸入欄位中。

 

  • appendDummyInput:沒有讓Data Block從右邊插入的功能,但是可以讓你繼續增加Block內部的文字字串,不需要在appendDummyinput()裡面宣告特定的文字,也可以塞一些選項
    • 可加入上述 appendField()之各種用法

 

4.      blockly/generators/arduino資料夾:此資料夾下皆是負責將blocks轉換為Arduino code,Generator 會生成對應 Blocks 的 Arduino code,因此在 BlocklyDuino\blockly\Blocks 資料夾下的檔案或 function,在 Generator 端都要有一個同樣函數名稱的對應。

  • 注意:Blocks[‘function name’] 務必要注意兩邊function name的名稱要相同
  • 最後要 return,以顯示在 IDE 之 Arduino 頁面
  • 還有要注意的是,在同一個Block中,function name 的部分要避免使用相同的名字,否則在轉為Arduino Code中的時候將會產生後宣告的function覆蓋掉前面的同名Function的情形。
  • 關於Arduino.ORDER_ATOMIC,則是會告訴 Blockyduino 現在即將要進到下一個 Block 而不是進到子Block運行。

 

Example:

  • 當item=1000 賦值完畢後,function將會return Blockly.Arduino.ORDER_ATOMIC,並開始執行下一個Block的指令。

5.     blockly/msg資料夾:msg目錄下的js檔案,此功能為將blocks資料下的變數名稱對映到實際的block上,在js資料夾下還有en.js & zh-hant.js需一併更改,功能為將變數名稱改為不同語系。

※在blockly/blocks與blockly/generators中的js檔創建block時,選擇哪個js檔或自行創建js檔案並不會影響在實際使用blocklyduino時的位置,block位置皆是由category.xml設定之。

 

自製一個弧度轉角度的數學指令

1.   更新 Windows 10

Build 14316  微軟從 Windows 10 開始加入原生的 Ubuntu Linux 環境,Linux 的開發者現在可以在 Windows 10 系統中直接使用 bash shell

2.      安裝 bash

點選Wins 10開始 → 更新與安全性 → 開發人員專用 → 選擇開發人員模式

回到設定首頁 → App → 應用程式與功能 → 程式與功能 → 左側點選開啟或關閉

Windows功能 → 將”適用於Linux的Windows的子系統(搶鮮版(Beta))”勾選 → Windows 點選重新開機

重新開機後 → 開啟cmd → 在cmd輸入”bash” → 依照指示步驟安裝Ubuntu

 

3.      設定block外觀:

於/blockly/blocks 新增該 block 的外觀定義,以本指令來說要加在 math.js 中的最底部,(※注意不要放在任何括號中),如下:

Blockly.Blocks['math_radian_to_degree'] = {
 init: function() {
   this.setHelpUrl(Blockly.Msg.MATH_RADIAN_TO_DEGREE_HELPURL);
   this.setColour(Blockly.Blocks.math.HUE);
   this.appendValueInput("RADIAN")
     .setCheck("Number")
     .appendField(Blockly.Msg.MATH_RADIAN_TO_DEGREE_TITLE);
   this.appendDummyInput()
     .appendField(Blockly.Msg.MATH_RADIAN_TO_DEGREE_APPEND);
   this.setInputsInline(true);
   this.setOutput(true, "Number");
   this.setTooltip(Blockly.Msg.MATH_RADIAN_TO_DEGREE_TOOLTIP);
 }
};

4.      設定block之Arduino轉換碼:

於/blockly/generator/arduino資料夾中,新增該 block的邏輯。以本指令來說要加在 math.js 中的最底部(※注意非3. 的math.js,且不要貼於任何括號中) ,如下:

Blockly.Arduino['math_radian_to_degree'] = function(block) {
 Blockly.Arduino.definitions_['const_pi'] = 'const float __MPI = ' + Math.PI + ';';

 var code_radiansFromDegree = '\n' +
'float __radiansFromDegree(float radians) {\n'+
'  return radians * 360 / 2 / __MPI;\n' +
'}\n';
 Blockly.Arduino.definitions_['radiansFromDegree'] = code_radiansFromDegree;

 var argument0 = Blockly.Arduino.valueToCode(block, 'RADIAN',
                                             Blockly.Arduino.ORDER_NONE) || 0;
 console.log(Math.PI);
 var code = '__radiansFromDegree(' + argument0 + ')';
 return [code, Blockly.Arduino.ORDER_NONE];
};

 

5.      更改block上顯示語言:

更改在msg目錄下的js檔案,此功能為將blocks資料下的變數名稱對映到實際的block上,在js資料夾下還有en.js & zh-hant.js需一併更改,功能為將變數名稱改為不同語系。

先依第1步驟搜尋MATH_DEGREE,接著在第2步的位置放入程式碼,英文版亦同。

Blockly.Msg.MATH_RADIAN_TO_DEGREE_HELPURL = "https://en.wikipedia.org/wiki/Radian";
Blockly.Msg.MATH_RADIAN_TO_DEGREE_TITLE = "Radian";
Blockly.Msg.MATH_RADIAN_TO_DEGREE_APPEND = "turn into degree";
Blockly.Msg.MATH_RADIAN_TO_DEGREE_TOOLTIP = "";
Blockly.Msg.MATH_RADIAN_TO_DEGREE_HELPURL = "https://en.wikipedia.org/wiki/Radian";
Blockly.Msg.MATH_RADIAN_TO_DEGREE_TITLE = "弧度";
Blockly.Msg.MATH_RADIAN_TO_DEGREE_APPEND = "轉換為角度";
Blockly.Msg.MATH_RADIAN_TO_DEGREE_TOOLTIP = "";

6.      加入製作的block至目錄:

將新增的Block加入blockly/apps/blocklyduino/category.xml,這裡的順序、category位置就是實際顯示順序。type名稱需與定義block版型之名稱相同。請注意我們在<category math>標籤中加入了一個新的 block:

 <block type = “math_radian_to_degree”></block>

 

7.      build檔案 :

最後請開啟cmd

輸入bash

輸入cd BlocklyDuino-for-LinkIt-master    進入資料夾

輸入ls    確定資料夾內有make.sh

輸入sh make.sh     去建立檔案

 

make.sh 要沒有 error 才會正確產生所有檔案

目前Github最新版本的資料

為 @x43x61x69 修改後之版本

修改過 make.sh 和其他 script

會檢查所需的 command 是否存在

之前的版本沒有檢查

bash
cd BlocklyDuino-for-LinkIt-master 
ls
sh make.sh

成功建立之畫面

 

Blocklyduino畫面

 

Blocklyduino轉Arduino code畫面

常見問題:

  1. 找不到新增的block:可能在xml新增的位置有問題。

或是如果再terminal看到ERROR訊息寫”NameError: name ‘lxml’ is not defined” or “ImportError: No module named lxml.html”,則需要將lxml安裝後,在重新輸入sh make.sh。

  1. block全部重疊在一起:如下圖,可能有更動到html檔,以至於覆蓋掉原本的code導致出錯,請使用sh make.sh重新建立一次。

 

相關文章:

 

150627 「用Raspberry Pi自造遠端影像監控系統」工作坊

6ec660920f834155b226cf26c0a9ee19

報名請按我

開始時間2015-06-27 09:30

結束時間2015-06-27 16:30地點台北市忠孝東路三段一號 (台北科技大學電子系電腦教室)

主辦單位MakerPRO自造者創業社群平台

相關網址www.makerpro.cc

報名費:$700 元


前兩場的Maker X IOT工作坊,以Arduino Yún為開發平台,並以智慧家庭為學習主題,活動一發出很快就報名額滿,顯現出Maker對此類議題的學習需求極大。本次「Maker進修工作坊」將改以同樣熱門的Raspberry Pi為開發平台,並以Linux/Python的作業系統及OpenCV為進階學習的重點,讓您的創作實力躍升到另一等級。

本次工作坊以【Maker x IOT】為主軸,擬帶領具Raspberry Pi使用基礎的Maker及Pre-Startup,快速學習到完整的物聯網應用開發概念。在一天的工作坊中,你將學得:

1. 認識Raspberry Pi 2開發環境;

2. Python基礎語法、模組的建立與應用

3. Raspberry Pi 2使用伺服機馬達轉動 Webcam

4. 建置遠端影像監控及學習使用OpenCV

註:本次工作坊特別感謝經濟部通訊產業發展推動小組提供補助,讓學員能降低學習進入門檻(免學費、只收必要材料費),希望能培育更多Maker圈的物聯網創新人才。


適合對象:已具備Raspberry Pi實作及電子學基礎的Maker、想要製作超酷物聯網應用,或想發展物聯網相關商業模式與服務的Pre-Startup。參加者應具備電子電路、Raspberry Pi以及程式設計的基礎概念,才能順利實作本次課程中的相關專題。

議程介紹:

時間學習內容
9:00 – 9:30報到
9:30 – 11:00使用 Raspberry Pi安裝可搭配之作業系統

Raspberry Pi作業系統環境設定

使用Linux基礎指令操作系統

11:00 – 11:15Break
11:15 – 12:00Python基礎語法、模組的建立與應用

Raspberry Pi開機指定執行自己的python程式

12:15 – 13:15午餐
13:15 – 13:45建立遠端連線程式、使用Linux圖形化、文字、檔案傳輸介面
13:45 –14:45GPIO 結合硬體(可遠端): Raspberry Pi 2使用伺服機馬達轉動 Webcam
14:45 – 15:00Break
15:00 – 16:20遠端影像監控(可遠端):Webcam機器視覺,建立攝影機影像,使用OpenCV建立二色化影像、辨識指定顏色與座標追蹤
16:20 – 16:30結語、賦歸

註:在不影響工作坊學習主旨的前提下,主辦單位保留議程修訂權利;若有修訂之必要,將在開課前通知學員。


主辦單位:經濟部通訊產業發展推動小組

執行單位:MakerPRO自造者創業社群平台

教學單位:CAVEDU

時間:2015年6月27日(六)

報名費:Free(只收材料費:700NTD)

人數:27人(材料費繳費完成者額滿27位為止)


注意事項:

  1. 本工作坊的實作平台,包括Raspberry Pi 2 Model B、Raspberry Pi Model B、Raspberry Pi Model B+、Banana Pi等4種控制板皆可用,請自備。若需代購,CAVEDU只提供Raspberry Pi 2 Model B。
  2. USB WEBCAM建議選用”正牌”產品,若需代購,CAVEDU提供羅技C170。
  3. 請自備Micro SD SD卡,8G以上就可以,重點是速度要Class 10,也可代購。
  4. 電源供應器請自備平板或是智慧型手機的充電器,只要其輸出電壓為5V,輸出電流在1A以上,並準備micro USB線。
  5. 其他自備(或代購)材料請見報名表。
  6. 材料費700元的材料清單,包括:170孔麵包板、路線線材、LED(5mm 紅)、色碼電阻、微動開關、Servo伺服器MG90、WEBCAM旋轉台。
  7. 代購材料請於報到時繳費領取。

講師介紹:

徐豐智, CAVEDU 教育團隊講師。專長為Arduino、嵌入式系統、iOS/Android行動裝置應用與Python等教學應用。

Raspberry Pi 教學-使用網路線讓電腦與樹莓派進行連線(For Mac OS X)

本篇內容是由cavedu的實習生-袁佑緣使用MAC學習樹莓派的心得,用網路線將樹莓派與MAC連接再一起,使用MAC內建的終端機就可以控制樹莓派,讓我們一起來看看~

事前準備工作可以參考Raspberry Pi 教學-燒錄SD卡(For Mac OS X)

試問使用這一個方法究竟有什麼好處?好處是:

1、不需要為樹莓派連接一個螢幕

2、不需要為樹莓派另外接鍵盤、滑鼠

3、樹莓派上網可以直接透過筆電的網路進行上網,不需要另外接網路線或使用WIFI連線

一、設定Mac與Raspberry Pi連線設定

1.將燒好的SD卡插入Raspberry Pi,並將網路線兩端接上Mac與Raspberry Pi,然後插上電源開機,這時候你會看到Raspberry Pi的指示燈有四顆亮著:PWR,FDX、LNK、100,PWR是3.3V電源而其他三個是跟網路相關,另一顆在閃爍的ACT是SD卡讀寫。

2.設定Mac的網路連線:System Preferences -> Network,左欄選擇Ethernet,右欄設定Using DHCP,上面Location設定Automatic,等一陣子後就能看Status變成Connected,這樣就代表連上Raspberry Pi囉!

Rpi_mac05

 

3.設定Mac的網路分享:System Preferences -> Share,在這裡要分成兩個case

(1)如果你處在沒有無線網路的環境下,那就選擇從Ethernet分享到Ethernet

Rpi_mac06

(2)如果你處在有無線網路的環境下,那就可以選擇從Wifi分享到Ethernet,

這樣一來你的Raspberry Pi就可以透過這條網路線上網,相當於你真的接上一條數據機分出來的網路線!

Rpi_mac07

 

4.獲得Raspberry Pi的IP

先安裝mac port(官方安裝網址),安裝完後,

再開啟終端機,輸入指令:sudo port install nmap,安裝Nmap這款網路掃描工具,

完成後再在終端機輸入指令:ifconfig,如下圖並注意下面框起來的IP(192.168.2.1),也就是我們Mac的IP

Rpi_mac08

現在我們必須去掃描DHCP分配給Raspberry Pi的IP,通常是192.168.2.XXX,於是我們使用剛剛安裝的nmap,

在終端機中輸入指令:nmap -sn 192.168.2.1-255 ,從1掃到255如下圖我們掃到了一個IP(192.168.2.22),

這個IP就是Raspberry Pi的IP

Rpi_mac09

5.透過ssh連上Raspberry Pi

接下來讀者只要透過ssh(Secure Shell)遠端連線上Raspberry Pi,就可以在Mac上使用Raspberry Pi了,

首先在終端機裡輸入指令:ssh pi@”剛剛搜到Raspberry Pi的IP”,pi是預設的使用者帳號,範例如下:ssh pi@192.168.2.22,出現問你要不要連線時,輸入yes,然後輸入預設的密碼raspberry

Rpi_mac10

 

如果你的終端機顯示pi@raspberry~$,代表你已經成功與樹莓派進行連線,可以對樹莓派進行控制,如果你對只有使用終端機控制樹莓派感到困難,只要你知道樹莓派的IP,你也可以尋找有GUI介面的連線程式,這樣就更加貼近你平常使用的樹莓派囉~~

python on EV3 機器人-使用python控制EV3馬達

這次分享的是由ev3主機的python檔案,讓EV3的A、B兩個馬達持續轉動,

2_4_python

想用python控制EV3馬達,需要(1)先安裝dev-ev3的環境(python on EV3 機器人 – 整理好的 img 檔送給您!),

建議(2)先體驗dev-ev3環境下控制馬達(Python EV3 速記 – 控制馬達轉速與方向)

與(3)基本的python語法(python on EV3 機器人-基礎python撰寫)

這是這次分享的的程式碼,程式的內容由python on EV3 機器人-基礎python撰寫所改編,

不一樣的是這次加入python-ev3模組的內容,我們可以使用這個模組裡的語法。

執行此程式後,輸入”A”可以讓馬達A轉動,輸入”B”可以讓馬達B轉動,輸入”stop”可以讓所有馬達停止轉動,

2_1_python

以下皆為使用python-ev3模組的內容:

(1)將模組ev3.lego輸入至檔案中

(2)由LargeMottor決定控制哪一個馬達(A、B、C、D)

(3)使用reset重新設置馬達,重複宣告使用馬達時,需要重新將數值設置

(4)開啟regulation_mode模式(on、off),開啟會使你的馬達輸出比較穩定,比較不受剩餘電池電量的影響

(5)使用run_forever讓馬達持續運轉(-900~900)

(6)使用stop讓馬達停止

你可以在dev-ev3的環境下編寫python的檔案,也可以在你的電腦編寫好檔案之後再把檔案傳送到ev3,

小編我是在電腦寫好主要程式後再傳送,推薦這款好用的軟體cyberduck,支援Windows與Mac系統

2_3_python

選擇SFTP傳輸協定後,輸入EV3主機的ip並輸入帳號與密碼,你的電腦就可以與EV3進行檔案傳輸了

馬上來體看看吧~

python on EV3 機器人 – 整理好的 img 檔送給您!

本篇要介紹如何燒錄給樂高EV3 機器人開機用的SD卡,內含的作業系統是 Debian,並已經掛好版本相當新的 Python2 與 Python 3。本文是按照 ev3dev 網站來操作,歡迎您與我們一起來玩玩看喔!

先讓大家看看成功的畫面,讚啦!在這個 terminal 下面可以玩的事情實在是太多了。要做到以下畫面,您需要兩件事:

1. 下載 img 映像檔並燒錄到 micro SD 卡中,插入EV3的SD卡插槽即可開機(無需更改原本的作業系統)2. 完成 Ethernet over USB,讓這台EV3模擬成一個網路裝置。我們就是這樣透過 SSH 來登入它,它也能利用電腦的網路來上網更新套件等等。本文以 Windows 來示範(說真的在 Linux / MAC 上來處理簡單多了)

009

1. 請下載我們幫您包好的 img 檔,與官方的差別在於我們有幫大家把一些python 套件與官方開發的 EV3 library 整理得更好一點。這個解壓縮完會有 15G,所以您需要16G 的記憶卡喔。使用 Win32DiskImager 燒錄,燒錄完畢插入 EV3 的 micro SD slot 即可開機。開機完成畫面如下:

 

2. 請進入 USB 選單,啟動RNDIS(Remote Network Driver Interface Specification、遠端網路驅動程驅動規格… 好拗口)。接著回到上一層,進入 Networking 選單,啟動 Gadget 選項即可。

    

 

3. 接著請將您的 EV3 接上電腦,並開啟控制台 / 裝置管理員。在此由於 Windows 會自動安裝好 driver ,但這不是我們要的,所以在此要重新做一遍。請在網路介面卡下找到 Remote NDIS based Internet Sharing Device

004

4. 請對它點選右鍵來更新驅動程式,並選擇[從指定位置來安裝]。接著選擇網路介面卡,製造商選擇 Microsoft,並在右側找到 Remote NDIS Compatible Device。這時就會您是否確定要更新 driver,點選確定後即可,在此需要等一下(約1~2分鐘)。

5. 最後一步是把我們聯外的網路分享給 EV3 使用。請回到控制台 / 網路與共用中心,請點選畫面左側的[變更介面卡設定]。您在其中會看到一個 USB Ethernet/RNDIS Gadget,這就是 EV3 啦。

005

6. 請回到控制台/網路與網際網路/網路連線,找到您聯外的網路名稱(下圖為 ROBOTKINGDOM-WIRELESS),對它點右鍵,找到[共用]選項。

006

7. 請勾選其中的選項,這樣就能讓 EV3 藉由這個網路來聯外了。

 

008

 

8. 電腦設定完成了,請回到EV3 主畫面。Networking / Manage connections,會看到一個 Wired 選項,請點選它

在 IPv4 標籤下點選 Change…

選擇 Load Windows Defaults,藉此仔入我們之前辛辛苦苦做好的設定啊 QQ

這時還沒有連線,所以您會看到 State 顯示為離線(offline)。請切到 Conn. 標籤,點選 Connect automatically,這樣 EV3 就會在每次開機時試著去用這組設定去連上網路。

最後點選Connect,一切順利的話就可以在 IPv4 標籤下看到您的 EV3 取得的 IP了!下圖為 192.168.137.3,我們就是透過這個 IP 來登入 EV3。

 

9. 請用 putty 或其他類似功能的連線程式,使用 SSH 連到這個 IP。預設帳密為 root / r00tme <- 兩個 zero 不是O。登登登!登入之後的歡迎畫面如下:

009

 


 

 

 

 

登入之後就來玩看看,首先切換到  /sys/class 裡面看看有什麼,相關的硬體都有:gpio (EV3的按鈕好像是歸類在這,還要確認一下)、leds、tacho-motor 與 i2c 裝置等等。再進入 /tacho-motor 資料夾看看:有一個 motor0 ,這代表一個實體樂高EV3馬達。

請注意您必須真的接上一個馬達才會在 /tacho-motor 資料夾下看到 motor0

013

輸入 cat /sys/class/tacho-motor/motor0/position 即可讀取馬達角度感測器值,下圖讀了兩次:-33 與 239

011

要直接這樣子讓馬達轉起來也是可以的:請先 echo 50 > ~/duty_cycle_sp,代表設定馬達電力為 50%,接著再 echo 1 > ~/run。馬達就會轉動啦!延伸閱讀:Python EV3 速記 – 控制馬達轉速與方向

012

Python EV3 速記 – 控制馬達轉速與方向

EV3 改用 Linux 為核心之後,真是創意無限。只要燒錄好 SD 卡,就能讓 EV3 用不同的作業系統開機。繼 leJOS 之後,也可以用 Debian 開機了。既然是一台完整的作業系統,自然是寫什麼程式語言都可以,但 python 最近實在是太夯了,所以 ev3dev 這個網站就提供了全套的 python + EV3 教學。您只要燒錄好 SD 卡並設定好 Ethernet over USB 就可以了。(本文為速記,日後會補上完整的環境建置教學)

http://www.ev3dev.org/

先來看影片,下指令控制馬達轉動,停止還可以控制轉速

控制轉速:echo 50 > /sys/class/tach0-motor/motor0/duty_cycle_sp   (0為靜止,100為最高速)

轉動: echo 1 > /sys/class/tach0-motor/motor0/run

停止:echo 0 > /sys/class/tach0-motor/motor0/run

設定好 Ethernet over USB 之後,可以透過 Putty 小程式來 SSH 登入 EV3,下圖中的 192.168.137.3 就是 EV3 的 IP。登入後就能進行各種 linux command。

009

EV3 的各類硬體裝置(LED,發音器,馬達,感測器等等)是列在 /sys/class 中,馬達是位於 /tacho-motor 資料夾中

013

在 terminal 中輸入 cat /sys/class/tach0-motor/motor0/position 即可讀取指定馬達的角度感測器值。下圖共讀取兩次: -33 與 239

011

 

[leJOS] 準備開機用 SD記憶卡 – 用 Java 程式控制樂高EV3機器人

 2014-02-25 18.45.34

本文是根據 leJOS 官方文件說明來 建置能讓 EV3 藉由 leJOS 來開機的 micro SD卡。這張SD卡是用來讓 EV3 得以執行 Java /leJOS  程式,是根據標準樂高韌體來建置,但提供了以下進階功能:

1. 不需執行 Lego 虛擬機即可載入 Lego device access Kernel module。
2. 藉由支援的USB WiFi 轉接器來載入 WiFi 模組來建立連線。這讓您得以藉由Telnet, SSH 與 NFS 來連接EV3,讓程式開發更容易。.
3. 已包含了使用  Atheros ATH9K 與 Realtex 8192cu 晶片組的裝置驅動模組,會根據偵測到的晶片組來自動載入。 EV3 已確認可使用 NetGear WNA1100 與 EDIMAX EW-7811Un 這兩種無線網路轉接器,其它使用相同晶片組的轉接器應該也可使用。
4. 需安裝 Oracle Java SE Embedded JVM, JNA 與 leJOS 等class,才可在 EV3 上執行各種 Java 程式
5. 包含了可在 Linux 關閉時,一併關閉EV3主機電源的scripts 。


 

我需要什麼?

        1. 一張容量至少為1 Gb (大一點比較好) 的 micro SD卡。

2. (非必要), 一隻支援 EV3 的WiFi 無線網路 USB轉接器。截至目前為止,可用的只有NetGear WNA1100 與 EDIMAX EW-7811Un 這兩款,但日後應該會有更多。

3. 可執行 Linux 或 Microsoft Windows 作業系統的電腦,或任何可執行 Eclipse 以及完整 Java JDK 的電腦。

4. (非必要), 一個可供連線的 WiFi 網路(當然也要知道網路的 SSID 與 金鑰等資訊)

5.下載 Oracle Java SE Embedded JVM

6. (非必要), 可連接 EV3的 Telnet 或 ssh 程式。

7. (非必要), 一個可執行在PC 端所開發程式的 NFS server。

8. 在Microsoft Windows, 您需要像 win32DiskImager 這樣的燒錄軟體好將映像檔燒錄到SD卡中。


開始動工:

1. 請下載 EV3開機映像檔的壓縮檔(sd.zip,17.6mb),解壓縮之後即為單一個映像檔,檔名為 sd.img 。
2. 請下載 Oracle Java SE Embedded JVM
3. 如果您是使用 Micrsoft Windows,請下載win32DiskImager 或類似的燒錄軟體。

OK,接著來燒錄SD卡吧!

本文假設您使用的是Microsoft Windows,您可使用 win32DiskImager 這樣的燒錄軟體,將映像檔燒錄到SD卡中。操作很容易,只要指定好檔案來源,燒錄位置就可以了,在此就不多說了。

Linux 與 MAC 的朋友,請自行參閱官網說明來執行,不過基本步驟是差不多的。

檔案燒錄完成之後,將記憶卡移除之後再次插入電腦。這時候,記憶卡的名稱會變成 LMS2012 。請將剛才下載的 Oracle Java SE Embedded JVM 的 .gz  壓縮檔(檔名:ejre-7u51-fcs-b13-linux-arm-sflt-headless-18_dec_2013.tar.gz)放到 LMS2012 資料夾中,最後移除記憶卡。

螢幕快照 2014-02-28 上午12.56.01

現在開機SD卡已經完工了,將 micro SD卡插入 EV3之後啟動,就會由 SD卡來開機囉!

Arduino 雲(Yun)來了 – Raspberry Pi 強勁對手?

http://arduino.cc/en/Main/ArduinoBoardYun?from=Main.ArduinoYUN

2013-10-15 15.23.55  2013-10-19 23.02.48

(以下圖片引用自 Arduino 官方網站)

Arduino 雲來了, 支援雙處理器以及板載 Wifi 無線與有線網路功能, 還有 Linux 作業系統. 看來 Raspberry Pi 有個非常強勁的對手呀!(Pi 還是有價格以及應用上的優勢, Arduino YUN 的價格按照Arduino store 的售價是 52歐元, 呼呼)

NOTE: 要使用 Arduino YUN, 您必須使用 Arduino 1.5 BETA

Arduino Yun 是最新款的 Arduino 開發板, 亮點在於有線與無線通訊的能力, 具備了一個乙太網路接頭與 Wifi功能. 並且具有雙處理器:

ATmega 32U4 是用來處理 Arduino 相關的 I/O 功能, 另一個 Atheros AR9331 處理器則可用 Linux 作業系統(OpenWRT 的 linux distribution: linino)來開機. Arduino Yun 上的 16mb  flash 已經包含了這個 linux 作業系統, 完整支援 python 並且您可透過 package manager 來自由安裝其他軟體.

AR9331 處理器有 64mb 的 DDR2 RAM, 當做 web server 或是處理 webcam 影像串流可說是綽綽有餘. 如果覺得空間不夠用的話, 買張 micro SD卡或是直接用隨身碟就可以了, Arduino YUN 都能自動辨識到這些外部裝置.

以下是 Arduino YUN 的硬體配置圖, 詳細的 I/O 配置請自行參考Arduino官方網站. 為了節省空間, 新款的Arduino 開發板都改用 micro USB 接頭. 由下圖可看到一些重要硬體的位置. Arduino YUN 一共有 20個數位 I/O腳位(7個支援 PWM),  12個類比輸入腳位

 

這樣做的好處在哪裡呢?

Arduino YUN  藉由板載的 Linux OS 就能兼顧 Arduino 的易用性, 同時又有強大的網路功能. 除了一般的 Linux 指令都可使用之外, 您也可以自行寫 shell 或是 python 腳本來達到更多的效果.

下圖中的 Bridge 是讓 Arduino YUN 上的兩個處理器彼此溝通, 能讓 Arduino code 就能直接執行 shell 腳本, 與網路介面溝通或是接收從 AR9331 處理器來的指令. USB host 接頭(USB周邊, 隨身碟, webcam, 鍵盤滑鼠都接在這), 網路介面以及 SD卡是由 AR9331 負責而非 ATmega32U4.  Bridge 就是負責讓 Arduino 可以和這些周邊來進行互動. 由這張圖就能明白ATmega 與 AR9331 是如何溝通的:

Raspbmc – Raspberry Pi 家庭劇院

Raspbmc 是 XBMC 的 Raspberry Pi 版本,讓您輕鬆將 Raspberry Pi 變成一台
 
請注意:Raspbmc 是另一個可安裝於 Raspberry Pi 的作業系統,專門用於播放各種影音,建議您準備另一張 SD卡來抽換,這樣就不用反覆安裝作業系統。
 
下圖是我們將 Raspberry Pi 灌好接到一般液晶電視上來看影片(HDMI),很方便唷!
 

130909 Raspberry Pi 雲端應用之夜

今天三個小時的研習, 聚焦在 Raspberry Pi 的雲端應用, 包含了遠端登入, 遠端桌面, 網頁伺服器還有 Raspbmc 家庭劇院. 好充實的周一晚上, 一點都不會 blue 唷!

延伸閱讀: CAVE實驗室的 Raspberry Pi 研究室

Continue reading

Raspberry Pi 雙輪機器人


Raspberry Pi 上的 GPIO 腳位不好好利用實在可惜,但它對於電路的保護不算太好,所以周邊的擴充板也應運而生。在此使用 Adafruit 所出品的 Pi Plate 做一台雙馬達機器人,請看影片:
[youtube=http://www.youtube.com/watch?v=2XQYf00wYEc]