Category Archives: Programming Language & IDE

[科技新訊] 2018.08.14- C的速度、Ruby的動態、Python的好用、R的處理統計能力、Perl的處理字串能力、學習曲線極致簡單 新的程式語言Julia 1.0誕生!!

翻譯

Julia Taiwan社群成員

紀錄攝影

CAVEDU教育團隊、pixabay

講師訪問地點
授權

轉載自julia官方網站,由Julia Taiwan社群成員協助翻譯,特此致謝!

眾所期待的 Julia 語言 1.0 版是近十年的心血結晶。在 JuliaCon 2018年會上,Julia 社群歡慶並共同正式將該版本升級為 1.0.0

 

Julia 語言第一次公開發佈,並有不少強烈的期待:

我們想要一個開源的語言,擁有自由的版權。我們想要 C 的速度及 Ruby 的動態。我們想要有一個語法與內在表示有一致性(homoiconic)的語言, 並且像 Lisp 一樣擁有真的macro,但是擁有像 Matlab 一樣熟悉好懂的數學符號。我們也想要像Python 一樣好用的泛用型程式語言, 處理統計要和 R 一樣,處理字串要和 Perl 一樣地自然,要有和 Matlab 一樣強大的線性代數功能,串接程式要如同 shell 一樣好用。要學習的東西極致簡單,同時能讓大多數嚴苛的黑客寫起來開心。我們希望它是互動式且也是可編譯的。

圖1

 

一個充滿活力和繁榮的社群圍繞著這樣的語言成長起來,來自世界各地的人們都在為這個目標而努力不懈改進並塑造 Julia。 超過 700 人對 Julia 做出貢獻,更多人創造了上千的開源的 Julia 套件。總而言之,我們創造了這樣一種語言:

  • 快速:Julia 一開始就是為高效能設計的。Julia可藉由 LLVM 被編譯成不同平台的高效機器碼。

  • 泛用:Julia使用多重分派(multiple dispatch)作為程式典範(paradigm),可以更容易表達物件導向和函數式的設計模式。標準函式庫提供了非同步I/O、行程控制、日誌記錄、效能分析、套件管理器⋯⋯等等。

  • 動態:Julia是動態型別的,用起來像腳本語言,並且很好支援了互動式的操作方式。

  • 技術:Julia擅長數值運算,有非常貼近數學的語法,支援多種數值型別,並且支援平行運算。Julia 的多重分派,結合數值和陣列相關的資料型別,可說是渾然天成。

  • 選擇性的型別標註:Julia有豐富的資料型別描述,型別宣告可使得程式更加清楚且穩固。

  • 組合性:Julia的套件可以很和諧地一起運作。矩陣的單位數量或是資料表中一行的貨幣和顏色可一起運作,並且擁有良好的效能。

圖2

 

現在可下載 Julia 1.0 版本來試試 Julia。若您現在從 Julia 0.6 或更早的版本開始升級程式碼,我們建議您先使用過渡的0.7版本, 其中包括了棄用警告(deprecation warning)來指導您升級的過程。一旦您的程式碼無警告通過, 那麼您可無痛將程式碼更改為1.0版本。 已註冊過的套件可利用這個作為墊腳石,並發佈與1.0相容的版本更新。

 

當然,在Julia 1.0版本中一個最重要的新特性,是對語言API穩定性的保證:您為 Julia 1.0撰寫的程式碼,將可繼續在Julia 1.1、1.2中執行。這種語言是足夠成熟的。基於這樣一個穩固的基礎,核心語言的開發者與社群,皆可集中於第三方套件、工具及新特性的開發上。

 

但是 Julia 1.0 並不只意味著穩定,它也引入一些新的、強大的及新穎的語言特性。其中一些新的特性是0.6版就有的:

  • 一個全新的內建套件管理器。它比過去的套件管理器效能更好,在安裝套件上也比以往更加簡單。它也為每個專案支援虛擬環境,並記錄目前工作環境的狀態,然後將它分享給其它開發者或者是自己。最後重新設計的套件管理器,也帶來了私有套件和repository的無縫銜接。您同樣可使用開源套件的方式,管理並安裝自己的私有套件。這個JuliaCon 的演講展示了套件管理器的新設計。

  • Julia 具有新的遺失值(missing value)的正式表示法。能表示及處理遺失值是統計學及資料科學一項基本能力。在典型的 Julia 寫法(Julian fashion)內,新的解決方案是具有廣義性、組合性,也是高效能的。任何一般的集合型別(collection type)皆可以簡單地使用預先定義好的 missing 變數有效支援遺失值。而這種集合型別的效能在過去的 Julia 版本裡可能會很慢,但現在編譯器已可使得 Julia在遺失值的表示上,達到類似C或C++的速度,然而遠比C或C++更廣義且靈活。

  • 內建的 String 型別可安全地使用並處理任意的資料。您的程式不會因一個無效 Unicode 字元而壞掉好幾個小時或好幾天。所有的字串資料會保留,同時指出哪些字元是有效的,哪些是無效的。這樣允許您的應用程式,安全且方便地執行在不可避免缺陷的真實世界的資料中。

  • Broadcasting已成為語言的核心特性,並且有著方便的語法支援。現在,它將比過去更加強大。在 Julia 1.0 裡,賦予自定義型別 broadcasting 特性,以及在 GPU 和向量化硬體上實作最佳的運算皆更加容易, 這是為未來更多的效能提升鋪路。

  • Named tuples是一個新的語言特性,它允許高效且方便地表示和存取資料的名字以獲取資料。例如,你可以這樣表示一列資料 row = (name=”Julia”, version=v”1.0.0″, releases=8) 並且透過 row.version 存取 version 資料,而這和 row[2] 有著同樣的效能,卻更加方便。

  • 點運算子現在可被重載,並且允許型別使用 obj.property 的方式來存取物件資訊,而不是用額外撰寫欄位setting和getting function的方式。 這有助於將以類別為基礎的語言,例如Python或Java更加流暢地翻譯至Julia。屬性存取器的重載讓存取一行資料與named tuples的存取語法一致:您可以寫 table.version 來獲取表格中的 version 這一行,就如同 row.version 會取得 version 這一列的這個欄位一樣。

  • Julia 語言的最佳化器在多個方面皆更加聰明,我們無法全部羅列,但有值得列舉的一些重要的特點。最佳化器現在可在函式呼叫間傳遞常數,這將使得編譯器可有比過去更好執行死碼刪除(dead-code elimination)和靜態求值。編譯器現在也能避免對短期封裝(short-lived wrappers)的長期物件(long-lived objects)做記憶體配置,這讓程式設計師可用方便的高階抽象,而不會有效能損失。

  • 參數化型別(Parametric type)的建構子(constructors),現在將使用和宣告同樣的語法進行呼叫,這將減少一些對語法的困惑。

  • 迭代器協定被重新設計。新的迭代器協定更加簡單,不需要定義三個不同的函式:startnextdone。現在只需定義一個參數和兩個參數的 iterate 函式即可。這允許我們可簡單定義一個帶有預設值的函式給出一個初始值。更重要的是,這也實現了一個只有在嘗試回傳失敗後就結束的迭代器。這種迭代器可以非常普遍使用在I/O、網絡及生產者-消費者模型中;而Julia現在可更直接並正確地撰寫這樣的迭代器。

  • 作用域的規則被簡化了。引入區域作用域的結構提高了一致性,而不需要管全域的命名綁定是否已經存在。 這將消除之前的「軟/硬作用域」的區別,也意味著現在 Julia可靜態地確定變數是區域的還是全域的。

  • Julia 語言本身變得更加輕量級,很多部分皆被從核心分離至標準函式庫中。這個標準函式庫將與Julia一起發佈,但是不會作為語言的基礎。 若您需要他們,只需引入這些函式庫即可(不需再安裝),但是不會強制使用。在未來,這些標準函式庫將會獨立被標記版本和更新,以達成更快的改進和升級。

圖3

 

我們仔細地審查了Julia的API,並且提高了它的一致性和可用性。許多費解的命名和低效的實作皆被重新命名和重構, 能夠更優雅地發揮Julia的能力。這樣的改變促使集合的使用方式更加一致和連貫,確保在整個語言中,遵循一致的參數的順序, 並且將關鍵字參數(現在更快了)整合至API中。

  • 我們特地創建了一些新的外部套件相容於Julia 1.0的新特性,例如:

    • 資料處理相關套件已經改版並支援新的遺失值

    • Cassette.jl 提供了Julia程式碼轉換至編譯器中的強大機制,允許post-hoc analysis和拓展既有程式碼。除了提供profiling和debugging這樣的工具之外, 甚至可用於實現機器學習任務的自動微分。

    • 異質架構(Heterogeneous architecture)的支援被大大提高,並且從 Julia編譯器中解耦了出來。Intel KNL系列硬體上可直接使用 Julia。而Nvidia的GPU 也可透過CUDANative.jl直接編寫程式(不需撰寫 CUDA 程式碼), 而支援 Google TPU的介面也正開發中。

還有無數個大大小小的改善。你可以查看0.7 NEWS 文件當中的完整的更新。在我們 2012 年的“為什麼我們創造 Julia” 文章內,我們寫到:

它還沒有完工,但是是時候發佈一個 1.0 版本了(其實歷時 6 年才發布)—— 我們創造了一個語言叫做 Julia。

 

雖然對1.0的發佈,我們放了大家好幾次鴿子,但這一次我們終於正式發佈了。 我們真心為上千位,以各種形式貢獻給這個真正的數值計算,和泛用程式設計的現代語言的人,感到自豪及無比欣喜。

圖4

 

相關文章

[教學文] What!智能寶比可遙控!!沒錯,用超級搭檔LinkIt 7697 + Robot Shield達到(文末有彩蛋喔)

作者/攝影

文:Mason Chen (Mason亦為遙控智能寶比的作者,特此致謝!)

圖:Mason Chenfreepik (主題圖片背景)

文字潤飾:CAVEDU 宗諭

文章分類教學技術文
時間

成本

難度

材料表
  • LinkIt 7697*1

  • Robot Shield*1

  • 寶工智能寶比*1

  • 用來遙控的手機 *1

近來,不少Maker皆喜愛把現成的套件、模組加以改裝,置入開發板,例如LinkIt 7697、Arduino系列⋯⋯等等,使改裝後的套件、模組有更、更聰明的應用。比如之前我門曾專文介紹過的Wall-E機器人,便是一個很好的例子。

 

接著這股趨勢,本文所要介紹的,是由Mason Chen大大所改裝,可用手機的低功耗藍牙遙控的AI智能寶比。

 

寶工(Pro’s Kit)出品的「AI智能寶比」是一款智慧型機器人,能與8歲以上的小朋友一起互動、遊玩。它配有紅外線感應器,因此具備避障的功能,經過Mason的改裝後,把原先的紅外線感應玩法,改換成以手機的低功耗藍牙( BLE )進行遙控。

圖1 卡哇伊的智能寶比

 

小知識:什麼是低功耗藍牙(Bluetooth Low Energy,簡稱BLE)?

低功耗藍牙是一種個人區域網路技術,多應用於醫療保健、運動健身、家庭娛樂⋯⋯等領域。顧名思義,低功耗藍牙跟經典藍牙相比,目的在於保持同等通訊範圍的同時,顯著降低功耗及成本。根據藍牙技術聯盟(SIG)預測,至2018年,高於90%有藍牙的智慧型手機將支援低功耗藍牙。

 

接下來,我們就要進到硬體改裝部分:

 

Step1:把寶比的頭部拆下來,並且以斜口鉗或適當工具,把原先的電池檔板破壞掉。這部分會需要花點時間,且要小心處理,只破壞裏面,外殼要保留好。 處理完後可試擺LinkIt 7697與MiniPlan出品的Robot Shield,看看是否可以完全置入。

圖2

 

圖3

 

圖4

 

Step2:把原先的馬達插頭,按照圖5中所標示的,連接至 Robot Shield 中。

圖5

 

Step3:再把寶比的頭部小心地裝回去。這樣,硬體部分就完成了。

 

再來,是軟體開發部分:

Step1:我們使用 LinkIt 7697 arduino 進行開發。

  • 設定好Arduino IDE的環境,並燒錄已經寫好的程式至LinkIt 7697 中。
圖6

 

Step2:手機端請下載LinkIt Remote APP

  • 請打開手機藍芽,以及Robot Shield的電源。
  • 開啟 LinkIt Remote APP,順利的話,便可以找到已改裝好的寶比。
圖7

 

  • 按住Joystick移動,便可遙控寶比了。
圖8

 

文末彩蛋:透過Scratch 3.0遙控智能寶比

還記得之前的一篇文章,教大家運用Scratch 3.0連接micro:bit嗎?在Masen Chen大大的努力下,現在Scratch 3.0也可連接LinkIt 7697,進而控制智能寶比囉!其基本原理仍是運用Scratch Link連接Scratch 3.0與LinkIt 7697,然而,因Scratch 3.0並不支援LinkIt 7697,所以在運用Scratch Link之外,LinkIt 7697的韌體及Scratch 3.0上的指令積木皆必須重寫。至於如何撰寫、操作,就請各位讀者多跟Mason Chen大大交流了。

 

備註:若想購買相關開發板,請點這裡,謝謝。

 

相關文章

[教學文] 當Scratch 3.0連接上micro:bit 驚人的創意產生了⋯⋯

作者/攝影

撰寫:宗諭

圖片:freepik

文章分類教學技術文
時間1hr
成本

材料表
  • micro:bit*1(如欲購買,請洽機器人王國

  • USB2.0 A公 to Mini-B/公傳輸線*1

之前阿吉老師曾拍攝過一段影片,也同步發表了一篇文章,向大家解說如何運用Scratch 3.0介面連接LEGO EV3機器人,獲得許多讀者的迴響。因此,CAVEDU教育團隊再接再厲,將透過本文跟大家分享,如何運用Scratch 3.0介面連接時下最夯的micro:bit。一起來操作吧!

 

Step1:點選程式左下角的「擴充功能」

圖1

 

Step2:在擴充功能頁面中,點選「micro:bit」。

圖2

 

Step3:若您首次嘗試用Scratch 3.0連接micro:bit,將跳出一個視窗,詢問:(1)確定已經安裝並執行Scratch Link;(2)檢查藍牙是否開啟。直接點選「?幫助」即可。

圖3

 

Step4:根據您電腦的作業系統是Windows或macOS,下載並安裝適合的「Scratch Link」。筆者的電腦是Macbook air,但在Windows作業系統上的操作步驟也是大同小異的。

圖4 點擊藍色按鈕,下載並安裝「Scratch Link」。

 

Step5:安裝好「Scratch Link」後,在您的電腦的程式集中點擊Scratch Link的圖標,啟動Scratch Link。

圖5 啟動Scratch Link

 

如果Scratch Link有成功被啟動的話,應該會有小圖標顯示在工具列上,如圖6。

圖6

 

Step6:將micro:bit連接至電腦

圖7

 

Step7:接下來,要下載Scratch micro:bit HEX檔案。請點擊圖中箭頭指示處。

圖8

 

小知識:HEX檔案是什麼?

HEX文件檔案是嵌入式軟體開發中,經常可見的數據格式,常被用來保存單晶片或其它處理器的目標程序代碼。而HEX文件包含了地址資訊,所以在燒入或下載HEX檔案時,一般都不需要使用者指定地址資訊。

 

Step8:然後,我們要把剛剛下載的HEX檔案,拖曳至micro:bit中,如圖9。

圖9

 

Step9:讓我們回到Scratch 3.0編輯器,選擇「擴充功能」,點選「micro:bit」。

圖10

 

Step10:會看到圖11的畫面,按下「開始連線」。

圖11

 

這樣就連線成功了,請參考圖12。接下來,讓我們回到Scratch 3.0編輯器進行一點小測試。

圖12 連線成功!請點選「回到編輯器」。

 

回編輯器後,可看見指令積木區當中,多了一個micro:bit指令區,見圖13。

圖13

 

然後我們拉出兩個指令積木:「when A button pressed」及「display Hello!」,然後組合起來,如圖14。

圖14

 

現在,按一下micro:bit上的A按鈕,是不是看到LED矩陣閃爍出「Hello!」呢?接下來,就是讀者們發揮創意的時間囉!

 

相關文章

[教學文] 老爸,父親節快樂!!自己動手做互動式父親節卡片 from Scratch

今天就是一年一度的父親節囉!!讀者們想好要送什麼給最親愛的老爸了嗎?

 

刮鬍刀,恩,老爸好像已經有了;領帶(搔搔頭),不知道要選什麼款式好?吃大餐,好像會發胖耶;按摩椅,似乎有點超出預算。那⋯⋯就用Scratch來幫老爸設計設計一張互動式卡片好了!

 

會不會很難啊?沒問題,就讓我們CAVEDU教育團隊一步步引導您吧!Let us code.

作者/攝影

撰寫:宗諭

圖片:pixabay

文章分類教學技術文
時間1hr
成本

難度*(1-10)

Step1:先申請一個Scratch帳號。透過建立Scratch帳號,我們可以在Scratch中「分享、儲存」所有的專案。

圖1

 

Step2:點選「Join Scratch」後,會跳出一個視窗,按照上面的步驟即可建立Scratch帳號。

圖2 按照指示一步步操作,即可建立Scratch帳號。

 

Step3:帳號建立後,讓我們開始製作互動式父親節卡片吧!有看到螢幕左上邊有一隻小貓嗎?請將滑鼠移至它的身上,按下滑鼠右鍵,然後選擇「刪除」,小貓就被刪除而消失了。

圖3 先把小貓刪除

 

Step4:在Scratch中,人物和物體都叫做「角色(Sprites)」。有4種方式可以在Scratch中增加角色,以下一一介紹:

1.從範例庫挑選角色

圖4 用滑鼠點選範例庫

 

圖5 範例庫內有許多角色可供挑選

 

2.自己繪製新的角色

圖6 點選「自行繪製新的角色」

 

圖7 Scratch介面右方,出現了一個類似「小畫家」的繪圖介面,讀者可在其上繪製自己的角色。

 

3.上傳自己的圖像或角色

圖8 點選「從電腦中挑選角色」,便可以從電腦中挑選適合的照片作為角色。

 

4.從網路攝影機拍一張照片作為角色

圖9 點選圖標,若您的電腦有安裝網路攝影機,即可開啟並進行拍照。

 

Step5:那我們先從角色範例庫中,選擇一個角色。因為是要送給老爸的互動式卡片,那我們就挑選一個「禮物」的角色。

圖10 點選「禮物」角色,並按下「確定」。

 

Step6:那我們現在就讓「禮物」角色產生一些祝福老爸的話,然後加強角色的互動性。

1.在指令積木區塊,讓我們先點選「外觀」。

圖11 點選「外觀」,可以看見下面有許多指令積木。

 

2.先拉出一個包含時間的「說出」指令積木,然後把文字改成「爸爸」,時間改成「3」秒。

圖12

 

3.再拉出一個不包含時間的「說出」指令積木,並把文字改成「祝您父親節快樂!!」,並與2.的積木組合在一起。

圖13

 

4.現在角色還沒有互動性,所以,讓我們從「事件」程式積木指令區中,取出「當角色被點擊」指令積木,然後與之前兩個步驟的指令積木組合在一起。

圖14

 

5.現在,用滑鼠點擊一下「禮物」角色,禮物是不是說話了呢?

圖15 透過「事件」指令區中的指令積木,我們幫角色增添了互動性。

 

這只是小小嘗試,您也可以發揮自己的創意,幫老爸製作互動式卡片。比方說,您可以把自己的照片作為「角色」,然後運用剛剛的方式,讓角色對爸爸說話⋯⋯等等。接下來,我們要幫互動式卡片增加背景。

 

Step7:增加「背景」有四種方式,跟前面提到的增加「角色」十分類似,請參考圖16、17。

圖16 增加「背景」的功能列位於Scratch介面的左下方

 

圖17

 

Step8:就讓我們從範例庫中增加一個背景

圖18 讓我們增加一個「party」背景

 

圖19 卡片會如此呈現

 

Step9:現在讓我們互動式卡片增加一點聲音。點選「音效」標籤,可以看見1.音效範例庫;2.錄音;3.從電腦檔案中增加音效。

圖20

 

Step10:讓我們從音效範例庫中增加一段音效

圖21 選擇「人類」類別中的「clapping」音效,並按確定。

 

Step11:如何把音效加入互動式卡片呢?讓我們回到程式區,從「音效」指令積木櫃中,取出「播放音效……到底」指令積木,並組合在前面指令積木的下方。

圖22

 

點擊一下「禮物」角色,是不是有拍手的聲音呢?

 

Step12:也許讀者們會有一個問題:「當我們分享這個互動式卡片給老爸時,他要怎麼樣才會知道如何互動呢?」OK!現在,就讓我們增加一些指示。打開「事件」指令積木區,取出「當 綠色旗子 被點擊」指令積木。然後再從「外觀」指令積木區中,取出不包含時間的「說出」指令積木,並在「說出」指令積木上,寫下「請點擊禮物一下」。

圖23

 

現在點擊一下Scratch介面中上方的「綠色旗子」,是否出現了指示呢?

圖24

 

Step13:最後,就是要分享我們的互動式卡片囉!點選Scratch介面右上角的「分享」,然後進入到專案頁面,填寫「專案名稱」、「操作說明」及「備註與謝誌」。最後,點選右上角的「分享」,就大功告成了。

圖25

 

圖26

 

圖27

 

現在,把專案網頁上的網址寄給老爸就可以了。趕快動手製作最酷、最炫的互動式卡片給老爸吧!

圖28

 

備註:這篇文章是以Scratch 2.0編寫而成,但目前MIT Scratch團隊已發佈Scratch 3.0的Beta版,所以讀者們也可以運用3.0版製作互動式卡片,而互動式卡片的指令積木如下圖:

圖29 Scratch 3.0的操作方式與2.0並沒有很大差異,但選擇角色、背景及音效的位置不太一樣。

 

相關文章

[介紹文] BlocklyDuino進化——一次搞懂BlocklyDuino v2跟v3的四大差異點

作者/攝影

資料提供:MediaTek Labs(特此致謝!) 

文字整理:宗諭、鈺莨

圖片:鈺莨、pixabay

文章分類介紹文
時間

成本
難度

公佈將近一年的BlocklyDuino v2,已於7月份升級至v3了!根據聯發科技創意實驗室官方公布的資料,他們廣泛收集了使用者、教育單位及教師們的建議,然後進行改版,易用性大幅提升!

 

什麼是BlocklyDuino?

若您還不太了解BlocklyDuino,它是個視覺化程式語言編輯器, 能透過拖拉方塊以產出Arduino 程式。 它同時也是個開源專案, 基於 Google所提供的Blockly(視覺化語言編輯程式庫)之上。

LinkIt 7697 BlocklyDuino Editor則是基於BlocklyDuino發展出符合LinkIt 7697 + MCS 雲服務 + 周邊的視覺化程式編輯器。其目的在讓開發者可透過拖拉積木的方式,迅速組好一些應用, 並透過產生出的 Arduino 程式, 學習實際的程式流程。此編輯器特別將複雜的Wi-Fi 連線BLE(Bluetooth Low Energy)設定和連線、MCS 雲服務的對接及周邊硬體的控制,簡化成幾個淺顯易懂的積木,非常適合作為學習基礎互動硬體及物聯網概念的第一步。

圖1

 

V2 v.s. V3,好多V啊!

讓我們先看一個由聯發科技創意實驗室所製作的比較表:

BlocklyDuino v2BlocklyDuino v3
發佈時間2017/062018/07
編譯環境需另外安裝 Arduino IDE,於 IDE 內編譯。編譯環境整合入 BlocklyDuino 開發包內
Arduino IDE手動開啟可於 BlocklyDuino 內一鍵開啟
周邊程式庫驅動或函式庫需另於 Arduino IDE 內另外安裝預裝所有支持積木的驅動或函式
序列埠監視器使用 Arduino IDE 的序列埠監視器,需於 Arudino 內開起。整合 Putty,可於 BlocklyDuino 內一鍵開啟。
周邊支援
  • 基礎 Digital / Analog / PWM 等 IO 元件
  • Grove Starter Kit 套件
  • 基礎 Digital / Analog / PWM 等 IO 元件
  • Grove Starter Kit 套件(購買請點這裡
  • 常用感測/顯示/傳輸模組
聯網支援
  • Wi-Fi
  • MCS
  • BLE
  • Wi-Fi
  • MCS
  • BLE
  • LinkIt Remote(手機搖控)
支援OS
  • Windows
  • MacOS
  • Linux
  • Windows
下載下載連結下載連結 (BETA)
圖示

 

以下針對上面的比較表,進行重點說明:

1.編譯環境、序列埠監視器:

過去使用BlocklyDuino v2時,想要將寫好的程式燒錄至LinkIt 7697,需用到Arduino IDE進行程式的編譯和燒錄;而想監視程式執行的狀況,需使用Arduino IDE的序列埠監視器。現在,在BlocklyDuino v3時,聯發科技的工程師都幫大家想好了,BlocklyDuino開發包內已包括Arduino IDE和Putty程式,使用者可直接在BlocklyDuino Editor內,進行一鍵燒錄,並一鍵開啟Putty進行監視,避免Arduino IDE佔用同一個COM port 而無法開啟Serial port。

 

2.周邊程式庫、周邊支援:

在這次BlocklyDuino v3的開發包中,已預裝了所有支持積木的驅動或函式庫,所以更可支持常用的感測、顯示及傳輸模組。

 

3.聯網支援:

BlocklyDuino v3可透過LinkIt Remote進行手機遙控。

 

4.支援OS:

BlocklyDuino v3目前只支援Windows OS,而聯發科技工程師獨家向我們說明,Blocklyduino本質是一個網頁(Chrome Web App),原本只能執行於Chrome Browser。目前,我們看到像是一個執行檔,是他們使用了NW.js來解決兩個問題:

(1)讓BlocklyDuino不需依賴於Chrome Brower,而變成一個可獨立執行的App;

(2)讓BlocklyDuino可和OS提供一些服務對接,以連接至Arduino和Putty等外部工具鍊。

 

就架構上,MacOS未來也有機會加,但目前尚未規劃出明確時程。

 

結語

以上就是BlocklyDuino v2與v3差異上的說明。其實,Facebook上有個針對LinkIt系列開發板的社團「LinkIt開發社群」,聯發科技的工程師也有加入這個社團。若讀者們覺得在BlocklyDuino的使用上,想提出相關的建議,可在社團內與他們直接交流喔!最後,就祝大家使用BlocklyDuino愉快。

 

相關文章

[教學文]久等囉!Scratch 3.0可以與Lego EV3 機器人連線了!

作者/攝影曾吉弘
文章分類

教學 (介紹性)

時間0.5小時
成本
難度**(1~10)
材料表

Scratch 3.0 preview版

八月快到了,對於全球Scratch的使用者來說,最引頸期盼的就是Scratch 3.0的發佈。雖然許多功能仍在緊鑼密鼓製作的階段,但Scratch團隊已在3個月前提供了Scratch 3.0 preview版。今天阿吉老師也發現,在擴充功能中的Lego EV3與Micro:bit皆可以使用了,一起來玩玩看吧!

 

CAVEDU教育團隊有參與正體中文的翻譯,若您覺得哪個語詞可以更好的話,請截圖跟我們說喔!另外,還記得阿吉老師曾與Mitchel Resnick教授聊過Scratch 3.0的影片嗎?來聽聽看M教授想對台灣使用者說的話吧:


那就開始吧!

 

STEP1:請用瀏覽器開啟Scratch 3.0 preview版,主畫面如下:

圖1

 

STEP2:點選右下角的extension,並點選 Lego EV3。此時,系統會開始尋找是否有可用的EV3,先跳過沒有關係。

圖2

 

若您的電腦還未與Lego EV3主機進行藍牙配對的話,請參考本頁說明。首先要下載一個小檔案名為「ScratchLink」,這個檔案Windows/MAC作業系統皆支援。

圖3

 

點選下載,解壓縮後安裝即可。

圖4

 

也有說明如何讓電腦與Lego EV3進行連線。

圖5

 

實際上,只要點選Lego EV3指令區的連線icon就可開啟連線畫面,只要先打開EV3的藍牙就可搜尋了(預設的配對密碼為1234)。

 

連線、斷線皆相當方便,操作上可感受藍牙傳輸的延遲,也可從Lego EV3指令區的連線icon 為打勾或驚嘆號,看出是已經連線或尚未連線等狀態。

圖6

 

 

圖7

 

圖8

 

頁面下方有提供入門範例,都相當可愛。

圖9

 

寫一個簡單的範例看看吧!以下是實際執行的影片:

圖10

 

 

也可以這樣試試看喔!

圖11

 

圖12

 

今天阿吉老師便介紹至此,日後若有Scratch 3.0的相關消息,我們也會以最快的速度,幫大家進行相關介紹,敬請期待!

相關文章

[ 教學文 ] 深度剖析:如何在QNAP上架設App Inventor私服器

作者/攝影

文/林祥瑞

文字整理/CAVEDU 宗諭

圖/CAVEDU教育團隊

文章分類教學技術文

App Inventor原來是Google實驗室(Google Lab)的一個子計畫,由一群Google工程師,以及勇於挑戰的Google使用者共同參與。App Inventor是一個完全線上開發的Android程式環境,拋棄複雜的程式碼,而使用樂高積木式的堆疊法,來完成使用者的Android程式。Google實驗室後於2012年1月1日,將App Inventor整個計畫移交給麻省理工學院行動學習中心進行維護,並維持免費及開放原始碼的精神繼續運作。

圖1 App Inventor原來是Google實驗室(Google Lab)的一個子計畫

 

使用App Inventor其實相當直覺、方便,開發一個App Inventor程式,就從使用者的網路瀏覽器展開!使用者首先要設計程式的外觀;接下來是設定程式的行為,這部分就如同玩樂高積木般簡單有趣。最後,只要將手機與電腦連線,剛出爐、熱騰騰的程式就會出現在使用者的手機上了。

圖2 App Inventor的設計介面

 

正因使用起來簡易、直覺、方便,連小學生也能使用App Inventor撰寫手機應用程式,所以,App Inventor被相當程度應用於教育領域。在台灣,有不少關於App Inventor的課程,以CAVEDU教育團隊為例,一年至少有30至40場的研習。正因持續辦理研習,CAVEDU團隊在教育現場發現了一些使用App Inventor的問題和需要,而這正是本文將教導在QNAP上架設App Inventor私服器的主要原因。

圖3 在App Inventor設定程式的行為,如同玩樂高積木般簡單有趣。

 

為何要在QNAP上架設App Inventor私服器?

因著推廣App Inventor,CAVEDU教育團隊在研習過程中發現,許多學校的教室能夠讓學生上網,但在使用App Inventor時,因為每位使用者皆需一定的網路頻寬,而教室的網路頻寬並不足以應付這麼多學生,往往導致教室的網路斷線,眾人都連不上網路。

 

除了在教育現場發現上述問題外,為了想知道App Inventor使用者究竟在做些什麼,例如,在課堂上教導學生製作一個程式,大家普遍會使用什麼樣的元件?然而,因麻省理工學院行動學習中心的App Inventor伺服器上的資料不對外公開,若是自己架設一台App Inventor私服器,便能有效獲得前述問題的答案,掌握使用者行為,進行大數據分析。

圖4 自己架設一台App Inventor私服器, 便能有效掌握使用者行為,進行大數據分析。

 

至於為什麼要將App Inventor私服器架設在QNAP上,主要原因是學校等教育機構時常在管理資訊技術及大量的教師與學生資料上面臨挑戰,往往需要以有限的預算建置儲存平台,以實現檔案共用與更精簡的管理,而QNAP正提供了很好的解決方式。

圖5 在QNAP上自行架設App Inventor私服器

 

基於以上幾點原因,所以,CAVEDU教育團隊不僅在有需要時自己架設App Inventor私服器,也盼望藉由這篇文章的分享,讓更多人可以在QNAP上自行架設App Inventor私服器,不僅避免了網路頻寬不足的問題,更進一步掌握使用者行為,甚至還有更多的應用!

圖6 CAVEDU教育團隊所維護的「App Inventor中文學習網」

 

以下,我們將一步步向您示範,如何在QNAP上架設App Inventor私服器。而下文將介紹到QDK 這個開發者工具,若想更多了解QDK,歡迎收看這段影片:

 

編譯 MIT AppInventor 伺服器

準備工作

專案仰賴兩個重要工具,一是我們藉由git 版本控制工具獲取原始碼;二是我們需要Apache Ant執行自動化組建,我們確認環境已經安裝。

 

apt-get install ant git  # Debian/Ubuntu

pacman -S apache-ant git # Arch Linux

dnf install ant git      # RHEL/Fedora

 

此外,執行伺服器需要 Google App Engine for Java 的工具,請到下載頁取得最近版本,本文截稿前的版號是 1.9.63 。

 

# 移到家目錄

cd ~/ 

 

# 使用指令下載檔案的範例,請自行修改版號

wget ‘https://storage.googleapis.com/appengine-sdks/featured/appengine-java-sdk-x.y.zz.zip’ 

 

# 解壓縮檔案

unzip appengine-java-sdk-x.y.zz.zip

 

組建伺服器

獲取原始碼

MIT AppInventor 專案寄託在GitHub,每位參與者都必須透過 git 提交程式碼,我們自然也是用 git 來下載所有原始碼。

 

# 獲得原始碼

git clone https://github.com/mit-cml/appinventor-sources.git

 

# 進入專案目錄

cd appinventor-sources/appinventor

 

# 下載子模組

git submodule init

git submodule update

 

上述有 git submodule 相關的指令,在有些專案這不是必要步驟,由於 AppInventor 的原始碼有引用其他專案,我們必須透過這些指令把引用的專案一併下載下來。

 

GitHub 不僅僅是來放置原始碼的空間而已,同時也作爲對開發者友善的工作環境,開發者可以在討論區回報臭蟲後者討論新功能,此外提供Pull request機制,當你想對專案提報你的修改,只要去他的專案上發送 pull request ,經專案負責人審查通過,你的修改就會被併入原始碼。

 

執行編譯

執行 ant 指令就行了,就像呼吸一樣簡單。由於專案相當龐大,所有編譯流程至少耗時三分鐘以上,直到 BUILD SUCCESSFUL 字樣出現即編譯成功。

 

ant

 

如果你不幸編譯失敗,最後跑出 BUILD FAILED 字樣,建議回前面步驟再三確認有沒有遺漏。在你重新編譯前,先執行 ant clean 清理前一次組建留下來的垃圾再執行 ant 。

 

執行伺服器

開始前先提醒 AppInventor 並非單一的程式,我們總共會開啓兩個不同的伺服器,除了 App Engine 寫成的網頁伺服器之外,還有一個專門打包 apk 檔案的伺服器,我們在 AppInventor 網頁上寫成的程式必須透過打包伺服器來編譯成 apk 檔案。

 

啓動網頁伺服器

這時候就是 App Engine 出馬的時機了,如果已經依照前面步驟下載好工具,我們用它的工具啓動本地的伺服器。

 

~/appengine-java-sdk-x.y.zz/bin/dev_appserver.sh –address=127.0.0.1 –port=8888 appengine/build/war

 

啓動後開啓瀏覽器進入網址 http://127.0.0.1:8888/ 來檢查是否有登入頁面。

–address=127.0.0.1 伺服器的位置 綁定 在代表本機的特殊 IP 位置 127.0.0.1 ,只能在本機使用,若要允許外部連線,可以考慮改成 –address=0.0.0.0 。

–port=8888 表示伺服器使用 8888 埠口來提供服務,你也可以改成其他的數字。

 

啓動 apk 打包伺服器

我們再開啓另外一個終端,透過 ant 指令幫啓動打包伺服器。

 

# 進入專案目錄

cd ~/appinventor-sources/appinventor/

 

# 啓動打包伺服器

ant RunLocalBuildServer

 

在 QNAP NAS 執行 MIT AppInventor

準備工作

編譯 AppInventor

進入正題之前,我們得確認已經下載 Google App Engine ,且 AppInventor 已經編譯完成,操作方式請參考文章「編譯 MIT AppInventor 伺服器」。之後的段落我們假定幾個配置好的目錄如下:

 

  • ~/appinventor-sources/ 包含已經編譯好的 AppInventor 程式。

  • ~/appengine-java-sdk-x.yy.zz 爲解壓縮的 Google App Engine SDK for Java ,版號請自行填入。

 

下載 QPKG 打包工具

一般而言,打包 QPKG 過程中必須根據 QNAP 公司提供的 QPKG 開發手冊 撰寫套件設定檔,並使用他們提供的 QDK 開發工具打包套件。這部分我們提供已經寫好的設定環境,請使用 git 下載。

 

cd ~/

git clone https://github.com/jerry73204/appinventor-qpkg.git

 

在我們的設定環境下有兩個目錄:

 

  • package-source/ 檔案結構是根據 QPKG 開發手冊的內容配置,屆時要打包進入 QPKG 套件的檔案都放置於此。

  • qnap-chroot/是引用他人的 chroot 環境,可以幫我們在本機即可完成QPKG打包,而不需要透過QNAP NAS機器。

 

目錄結構的說明如下,其說明請參考 QPKG 開發手冊

appinventor-qpkg/

├── package-source/

│   ├── package_routines/

│   ├── qpkg.cfg                 # 套件設定檔

│   ├── icons/                   # App 圖示

│   │   ├── appinventor_80.gif

│   │   ├── appinventor.gif

│   │   └── appinventor_gray.gif

│   └── shared/                  # 安裝於各類 NAS 的檔案目錄

│       ├── appinventor.sh       # 服務控制腳本,可命令啓動、關閉 AppInventor 服務

│       ├── run_appinventor.py   # 啓動 AppInventor 伺服器的腳本

│       └── run_buildserver.py   # 啓動 apk 打包伺服器的腳本

└── qnap-chroot/

 

準備 QPKG 套件

帶入 Google App Engine for Java

考慮到 QNAP NAS 上面沒有預載 Google App Engine ,必須一併打包到套件裏面。

 

cd ~/appinventor-qpkg/shared/

cp -rv ~/appengine-java-sdk-x.y.zz/ appengine-java-sdk/

 

帶入編譯好的 AppInventor

編譯完成的 AppInventor 檔案相當龐大,我們只需要其中包含網頁伺服器及打包伺服器的兩個目錄,因此做工會細一點。

 

# 準備 AppInventor 目錄

cd ~/appinventor-qpkg/shared/

mkdir appinventor-bin/

cd appinventor-bin/

 

# 複製 AppInventor 網頁伺服器

mkdir -p appengine/build/

cp -rv ~/appinventor-sources/appinventor/

appengine/build/war appengine/build/war/

 

# 複製 apk 打包伺服器

mkdir -p buildserver/build

cp -rv ~/appinventor-sources/appinventor/

buildserver/build/run buildserver/build/run/

 

完成準備

這段告一個段落前,我們再三檢查一下套件目錄是不是如下方式配置。

package-source/

├── appengine-java-sdk/

├── appinventor-bin/

│   ├── appengine/build/war/

│   └── buildserver/build/run/

├── appinventor.sh

├── run_appinventor.py

└── run_buildserver.py

 

編譯 QPKG 套件

起手式

根據 QPKG 開發手冊的做法,我們必須在 NAS 上面安裝 QDK 開發工具,把我們的套件工作目錄 package-source 傳到 NAS 上面之後方能打包。不過,作者常常有手邊沒有 NAS 機器的困擾,本文介紹 chroot 的技巧,可以在你的本機創造一個模擬 QNAP NAS 的環境(這裏聲明 chroot 不是 虛擬機),我們在此環境下打包 QPKG 套件。

 

這部分感謝 plexinc 這位大大在 GitHub 提供了 qnap-chroot 工具,讓我們省去不少設定 chroot 環境的功夫,我們也引用在 qnap-chroot 目錄下。

 

準備並進入 chroot 環境

準備工作我們需要完成兩件事,一是掛載 devtmpfs 至下面的 /dev 目錄下,再者是要把做好的 package-source 目錄複製一份到 chroot 環境下。

 

cd ~/appinventor-qpkg/

 

# 掛載 devtmpfs

mkdir -p qnap-chroot/dev

sudo mount –bind /dev qnap-chroot/dev

 

# 複製套件目錄

cp -rv package-source/ qnap-chroot/package-source/

 

完成準備工作後便可以進入 chroot 環境。

 

sudo chroot –userspec=$(id -un):$(id -gn) qnap-chroot/

 

打包 QPKG 套件

這步驟也會花許久時間,請耐心等候。

 

# 更改 PATH 環境變數

export PATH=/bin:/usr/bin:/sbin

 

# 打包套件

cd package-source/qbuild

 

一旦打包成功, qbuild 指令會生成一個 build 目錄放置我們的 qpkg 套件,完成後離開 chroot 環境。

 

ls build/  # 得到檔名 appinventor_2.0.0.qpkg

exit

 

清理 chroot 環境

完成工作後,當然得有始有終把之前設定好的 chroot 環境清理乾淨。

 

# 取出 QPKG 套件

mv qnap-chroot/package-source/build/appinventor_2.0.0.qpkg .

 

# 清理工作檔

rm -rf qnap-chroot/package-source/

 

# 卸載 devtmpfs

sudo umount qnap-chroot/dev

 

在 NAS 上安裝 QPKG 套件

啓動 App Center

首先我們進入 NAS 的管理界面,啓動 App Center 程式。

 

安裝 JRE 套件

由於我們的套件相依於 Java 程式,我們點選左邊選單的 Developer Tools ,然後點選並安裝 JRE 。

 

手工安裝 AppInventor 套件

點選在 App Center 右上角有一個手工安裝的圖示。

 

在跳出的小視窗上點選我們提供的 QPKG 檔案,然後點選安裝,這步驟會花點時間,請耐心等待。

 

安裝完畢後,在 App Center 選單就會出現 AppInventor 選項,點選選項即可進入 AppInventor 界面。

 

相關文章

[翻譯] 2018.06.19- 根據MIT Scratch Team,Scratch 3.0的3大重點

原文作者

MIT Scratch Team

紀錄攝影
翻譯宗諭訪問地點
訪問時間

原文刊登日期:2018年6月18日

 

簡單說,不囉唆,Scratch 3.0要上線啦!

 

Beta版預計2018年8月上線,正式版預計2019年1月2日上線。

 

  然而,在Scratch 3.0上線前,有3件事您需要知道:

  1. Scratch 3.0將有更多創作與分享的方式

  • 將可在平板電腦上創作、分享及組合專案。

  • 將有數十個新的角色、背景及聲音可以選擇。

  • 透過新的繪畫與聲音編輯器,將更容易組合並控制角色、音樂及聲音。

  • 伴隨著新的延伸系統,孩童可以替實體裝置(例如Micro:bit)與網路服務(例如Google翻譯)撰寫程式。

圖1 Scratch 3.0將有更多不同角色

2.對於Scratch新手,Scratch 3.0有新的支援服務

  • 對於初次使用者,有新的編輯體驗。

  • 新的教學短片

  • 更新「Scratch活動卡片」與「教育者指引」

  • 透過哈佛大學ScratchEd的朋友們,更新了「創意運算課程(Creative Computing Curriculum)」。

  • 透過「Code Club」與「CS First」的朋友們,更新了教學文件。

圖2 新的教學短片

 

3.然而,Scratch 3.0仍是那個你熟悉且喜愛的Scratch!

  • 所有現存的專案和帳號將可繼續在Scratch 3.0上使用

  • 所有現存的程式積木都還在(而且我們還會增加新的程式積木)!

  • Scratch 3.0將有諸多不同語言的版本

  • Scratch 1.4和0的離線版本仍可繼續使用

  • 對每一位使用者,Scratch仍然免費(萬歲)!

 

  詳情請見原文:https://medium.com/scratchteam-blog/3-things-to-know-about-scratch-3-0-18ee2f564278

 

相關文章

[Scratch]Scratch Day 2018

 

作者/攝影

曾吉弘

文章分類

活動紀錄

時間
成本
難度
材料表

 

  5/12對於全球的Scratch使用者來說是個大日子,今天就是2018的Scratch Day!自2006年發佈以來,已經是第十三年了。來自世界各地的大小朋友齊聚一堂,一齊歡慶Scratch帶給大家的各種樂趣。阿吉老師(就是我)人在MIT當然也不能錯過啦,對於Lifelong Kindergarten(本文後簡稱LK)團隊,把兩個小時規劃得毫無冷場熱鬧非凡,令我非常佩服。

 

  另一方面,許多攤位乍看之下都是一個亂字,但這符合Mitchel Resnick在LCL課程中提到的 tinkering(修補式學習)精神,雖可能在一定程度上看起來亂糟糟,其實所獲得的遠比「完成這件事」來得更多。失敗的經驗也是很可貴的呢。

 

  當天活動從10:00開始至11:40左右結束,雖然不到兩個小時,但感覺得出每個攤位皆精心規畫過,不管年齡、身分皆可找到一個位子同樂喔!平常很安靜很學術的Media Lab,搖身一變成了遊樂場,熱鬧非凡!Media Lab一樓變成報告處,大廳也掛起了超大的Scratch小貓海報:

 

 

  先來回顧一下,在2017年,全世界共舉辦了500場左右的Scratch day(只要你願意,三個人在一起也算喔!)

 

  穿著藍色T-shirt的LK團隊,逐一上台介紹今天各自負責的攤位,也有不少青少年志工。不知道該如何可以擔任志工,被選上應該會很開心吧!

 

  這個背影就是Mitchel Resnick教授。他的身高應該有190公分,在現場是很好認的。此外,他也受邀參加了5月18至20日,在加州 San Mateo舉辦的Maker Faire Bay Area 進行分享。

 

 

  當天的活動使用了Media Lab的六樓及部分的五樓,分成諸多主題,包括音樂、互動、繪畫、機器人、說故事分享、大型裝置(big things)及烤餅乾(Computational cookies & Codeable cupcakes),詳細如下圖:

 

  活動即將展開,布置得很華麗。

 

  整桌的勞作材料,看了就讓人開心!

 

  這個桌子在示範顏色偵測,有注意到畫面右上角的webcam嗎?小朋友使用樂高積木排在紙上,就可以做出牆壁或水溝,讓角色在遊戲裡跳來跳去。

 

  樂高桌一擺出來,小朋友就不想走啦!

 

  你可以把自己的Scartch專案,在這個大螢幕秀出來給眾人看,也可以接大按鈕來玩。

 

  這個就是大按鈕,可以看到裡面是一個開關接到makey makey板子,再以USB線接上電腦,Scratch便可以知道按鈕有沒有被按下。

 

  另一個使用makey makey的作品,既是翹翹板又可以當成飛機的操縱桿來使用,鋁箔接觸到盤子就會觸發,概念十分簡單。

 

Light play:小朋友使用Scratch,搭配簡易的感測器控制馬達、燈光。

 

  登記Share & Tell 的時間表。每人只有三分鐘,一下就額滿囉。

 

  每個人皆有機會與來自世界各地的玩家碰面。

 

Art bot:Scratch + Wedo,在畫布上畫出簡單的樣式。

 

  看到畫成這樣,就知道有多受歡迎啦!

 

 

  這是傳說中的 Computational cookies 和 Codeable cupcake。現場選好Scratch角色後,做出簡單的樣式(當然也是用Scratch),直接用印表機搭配可食用顏料印出來後,放上餅乾就可以吃了,真的很捨不得吃啊!

 

  這是大頭貼機。有許多道具讓大家拍照,並拿貼紙回家。

 

  現場有看到LK團隊自行設計的Scratchbit,預計明年上kickstarter募資。使用藍牙與電腦連線,有光感測器、加速度計(XY軸)、陀螺儀(Z軸)與指示LED,看來是下一代主推的互動體感核心元件。目前外殼皆是用3DP製造。MIT人員表示,是新設計的電路,所以應該與Micro:bit無關。

 

  從影片可看到操作效果相當靈敏,雜訊處理後的效果也很不錯。現場的3D列印配件,讓Scratchbit可以裝在球拍、呼拉圈、鏟子或帽子上,好想趕快入手啊!

ScratchBit影片

 

  裝在呼拉圈或是桌球拍上都是不錯的應用喔!

 

  這是玩具屋,擺滿了各式各樣Scratch結合硬體的應用,樂高的EV3與Wedo都在這邊。

 

現場拍攝的影片集錦:

 

更多照片請看這:

 

相關文章

[新品介紹]MIT App Inventor Codi Bot物聯網教學互動機器人

作者/攝影曾吉弘
文章分類產品介紹
時間
成本
難度*  (1~10)
材料表

對於會寫程式的人來說,Python/C/Java是完全不同的程式語言。但對於沒接觸過的人來說,通通都是一樣的:很可怕。因此程式語言需要一個圖騰來代表,例如,Scratch的那隻小貓、 Linux的企鵝、Java的咖啡,以及Android的小機器人⋯⋯等等,在相關場合中,我們都可以看見這樣的代表符號。

    MIT App Inventor去年發起了一項募資計畫,目標是加速App Inventor 的 iOS版本。贊助$1500美金以上者可以收到一套實體的物聯網教育套件,但這時大家對於內容還不是很清楚應該如何規劃。Hal Abelson教授就問是否可以幫忙?

當然可以啦,不就是為了幫忙才去MIT的嗎?

輪型或多足型機器人設計相關課程算是CAVEDU教育團體的專長,但MIT App Inventor小組盼望能結合它們的新logo,因為之前的logo太Android了,所以他們於去年推出了新的小蜜蜂logo,與Android 3.0 honeycomb 相當神似。

經過一番努力之後,MIT App Inventor Codi Bot 誕生了!

圖1

MIT App Inventor Codi Bot在設計上有幾項重點:

可愛、易用、教育、可擴充

特色:

為了讓使用者更易入手,我們開發了 LinkIt 7697 的 App Inventor extension,(個人覺得比Arduino 101的好用多了)。LinkIt 7697端只要上傳一次程式就可以順利與App Inventor溝通,也就是使用者只要專心寫App Inventor程式即可。如果在辦短期營隊或是體驗活動的時候,可以先把LinkIt 7697準備好,這樣可以省去現場上傳程式的各種麻煩事。

核心使用 LinkIt 7697Robot Shield V2.0,這樣使得整理電線變得很輕鬆,國內也有許多團隊使用兩者開發出許多有趣的專題。

當然,Codi Bot能做的不只是如此,7697 可以結合 MediaTek Cloud Sandbox等雲端服務結合LINE、IFTTT等通訊軟體

 

教學文件:

  • 單機執行:直接執行 (影片)
  • LED:使用按鈕、滑桿來控制翅膀與底座的LED (影片)
  • 翅膀:使用按鈕、滑桿來控制翅膀(伺服機) (影片)
  • 聲音:控制蜂鳴器發出各種音符或自訂義頻率與時間長度 (影片)
  • 完整app:整合上述功能 (影片)

來看實體照片吧,LED亮起的時候真的很漂亮,影片中可以看到翅膀拍動以及發出聲音的效果。

 

圖2

 

圖3 背面

 

圖4側面

    開發過程中,非常感謝聯發科技實驗室MiniPlan,CAVEDU同仁的超強後勤。

7697 extension感謝林祥瑞袁佑緣兩位小超人,以及MIT App Inventor Codi Bot的設計者:游允赫老師。

比較一下 MIT App Inventor的logo 與 Android 3.0 honeycomb:

圖5 App Inventor的logo

 

圖6 Android3.0 honeycomb

 

相關文章:

Mitchel Resnick教授給台灣孩子、家長與教學者的一段話

作者/攝影曾吉弘

 

CAVEDU與Mitchel Resnick教授的淵源相當深,要說是這行的祖師爺也不為過。阿吉老師早在大學時代就與M教授碰面過了,他從1999年的RCX(甚至更早的Cybermaster與Scout,沒聽過了吧~) 就開始與樂高公司在 Mindstorms 系列上有密切合作,所以M教授在2004 Mission Mars 與2006 NXT 發表兩次訪台時都有幸與他見面過。

 

Scratch從2006年誕生以來,介面與風格可說是沒什麼變動。相較於軟體上大家都在追求”還要有什麼?” 我反而佩服的是M教授說過的”我們要保留哪些核心功能?”

人生能有幾個15分鐘能與心目中的大師聊天?2016年來MIT受訓時,好不容易才和他約吃早餐,把我們出版的[Scratch 數位互動我最行]致贈給M教授。更何況這次來美國將近半年,知道他就在斜對角300公尺外的Media lab,心情可是大大不同。

M教授對於即將在今年八月上線的Scratch 3.0非常非常期待(他用了super super excited),期待能幫助所有的孩子們”創意思考 (think cratively) “並成為”創意思考者 (creative thinker)”,這正是LCL課程的核心觀念所在。如果大家想要多了解 Lifelong Kindergarten小組的理念的話,建議一定要看看Learning Creatvie Learning的課程網站,六周課程每周都非常實用且精彩。CAVEDU教育團隊很高興能協助LCL網站與課程內容的繁體中文化,並於2016 17年度與台灣Intel公司協助推廣Computer Clubhouse,M教授認為這某方面來說可視為maker space的源頭。

 

對於Scratch 3.0,他題到了以下幾點功能:

  1. mobile device better
  2. extension
  3. 網路服務 (在此提到一個Scratch結合Spotify的範例)

 

這次抓緊機會請他錄一段影片給台灣的大家,也讓他與團隊同仁知道台灣在使用Scratch教學上非常活躍。期待他有機會能再來台灣。

 

M教授在訪談中提到學習如何創意性思考、系統性推理,還有彼此合作來完成事情,這些技能可說是前所未有地重要。Lifelong Kindergraten小組會變得更開放來堅持Scratch的原初精神。讓大家在運用Scratch來”做什麼”與”怎麼做”等方面有更多可能性。我也非常期待看到台灣的小朋友們運用Scratch 3.0所完成的作品。

當天也感謝謝宗翰(目前在Meida lab Biomechanics小組攻讀博士,領域為機器義肢/腳)協助訪談與拍攝照片喔。這個樂高桌子實在是太搶鏡頭了~

 

更多照片

從Media lab一樓大廳走上去到4樓就是Scratch大本營

大廳中央有用樂高完成的Media lab建築模型,好精緻啊

挑高樓中樓,採光非常好,基本上除非陰天不然白天不太需要開燈。

每個小角落都充滿驚喜呢,可以看到 Scratch結合各種裝置的應用:樂高Wedo, Boost、Microbit、Makey Makey,還有他們自己作的硬體等等。也可以看到歷代樂高的智慧型積木主機,一下子就快20年過去了啊~

 

相關文章:

[情人節快樂,自製屬於自己的Google doodle吧!] 使用Scratch設計Google doodle 互動小動畫

本次Google與Scratch公開教學剛好搭上了二月的情人節節慶,也維持著Google doodle的老傳統(每當節慶時都會有特別的字樣設計或是互動式小動畫),結合了Scratch的圖形化程式後讓人人都可以成為Google doodle設計者,這樣的想法真的是很棒呢!

作者/攝影  曾吉弘
時間  1小時或看您想要花多少時間!
成本
難度 * *
材料表可連網之個人電腦

 

Google與Scratch聯手推出基礎教學課程,告訴您如何自行設計 Google doodle,就是在Google 首頁看到的各種以Google字樣為主的簡易小動畫,還有12堂基礎課程,有興趣的家長老師們可不要錯過喔!

由此進入教學網頁,看完教學影片請點選右邊的 “Starter Project” 就會進入這次主題的 Scratch 樣板,相關的圖檔與效果檔都已經預先載好了。

開啟專案會看到基礎的Google字樣,每一個字母都是一個獨立的角色(sprite)。已經玩過Scratch的朋友到此應該已經一頭栽進去了,馬上就有很多東西可以玩啊~

您可以點選某個字母之後點選造型(costumes),可以看到本專案已經預先提供了非常多可愛的造型。

那沒學過的呢?別擔心,網頁下方一共有12個基礎課程,每一個課程都有影片,邊看邊學很方便 (以下按照原文順序翻譯):

切換角色(Switch Costume)說說話(Say Something)
加入背景(Add Backdrop)改變顏色(Change Color)
編輯、畫畫或加入字母( Edit, Draw or Add Letters)追著滑鼠跑(Chase)
修改舞台(Change Scene)讓字母旋轉(Spin)
字母隨機移動(Jumble Letters)讓字母消失(Disappearing Sprites)
讓字母隨著音樂畫遍(Dance Whirl)字母彈跳球(Bouncing Sprites)

 

這是阿吉老師做到一半的截圖,一起來玩玩看吧!

您當然也可以結合目前很熱門的實體運算概念來與真實世界互動,例如Scratch board、Arduino與樂高Wedo等等都是很不錯的喔!

 

相關文章:

[ App Inventor + Microbit ] RGB LED控制

本文要介紹如何使用App Inventor來控制 micro:bit的 I/O腳位,以 RGB LED作為輸出應用。(原始碼下載請按我)

請務必先讓您的手機與Micro:bit進行藍牙配對,否則無法正確執行本範例。

作者/攝影  曾吉弘
時間  2小時
成本
難度 * * *
材料表
  • 個人電腦
  • App Inventor開發環境
  • 支援BLE的Android手機
  • BBC Micro:bit開發板
  • RGB LED燈

 

 

硬體清單

本範例所使用的RGB LED實際上是把紅綠藍三色的LED整合到同一個元件中,並且有陰極共用與陽極共用兩種規格。本範例使用的是共陰 RGB LED。以下是本專題的硬體清單:

  • BBC micro:bit 微控制板, 1
  • 麵包板, 1
  • 跳線, 4
  • RGB LED (共陰), 1

 

注意:如果您使用共陽RGB LED的話,最長腳要接到 micro:bit 的 3.3V腳位,並且 App Inventor 端給 1 會讓腳位變成低電位,這與共陰的行為剛好相反

 

 

範例影片

 

請根據以下資訊來連接Micro:bit RGB LED:

Micro:bitRGB LED (共陰)
GNDGND (最長腳、灰線)
P0R (紅線)
P1G (綠線)
P2B (藍線)

完成如下圖。

您可使用鱷魚夾或把線彎成U形來勾住Micro:bit腳位上的圓孔,當然後者比較容易鬆脫囉。

App Inventor

本範例要示範使用 app 來控制接在 micro:bit 腳位上的 RGB LED 發出四種不同的顏色。首先請登入 MIT App Inventor 並建立一個空白專案。.

 

以下步驟是根據App Inventor IoT分站上的基本範例開始一步步加入本專題所需的元件,當然也可以直接下載完整的 .aia。

 

首先要加入本專案所需的擴充檔。

  • 左側Palette區中,找到最下方的Extension,點選”Import extension” → “URL
    • 貼上micro:bit extension的網址: http://iot.appinventor.mit.edu/assets/com.bbc.micro:bit.profile.aix
  • 新增一個Microbit_IOpin元件,設定其BluetoothDevice屬性為”BluetoothLE1” (別忘啦!)

接著加入本範例所需的元件:

  • 新增一個TableArrangement元件
    • 設定寬度為”Fill parent“、高度為”200 pixels“,row(列數)為2,最後設定column(行數)為3
    • 設定其Visible屬性為false,我們會在與micro:bit建立連線之後讓它顯示出來,才能點選按鈕來發送藍牙指令。
  • 新增五個按鈕到tablearrangement元件,將其文字分別改為”Red“, “Green“, “Blue“, “White“與”Off“對應不同的LED動作。

調整之後,您的畫面應該會類似下圖。有一點點不同沒關係,背景顏色、位置與顏色都可以修改,喜歡就好!

 

Blocks

 

STEP 1:連線後要求更新腳位狀態

BluetoothLE1.Connected事件中,我們顯示連線確認訊息,並設定micro:bit腳位為”digital output“,這是因為我們要控制RGB LED所以得這麼作。在此會用到三個Microbit_Io_Pin.ConfigurePin指令,分別設定pinNumber為0, 1, 2 (代表micro:bit的P0, P1與P2腳位),analog欄位設為false,input欄位設為false

仔細來看看Microbit_Io_Pin.ConfigurePin指令,它有三個參數:pinNumber (腳位編號), analog (true代表類比模式,false代表數位模式),input (true代表輸入,false為輸出)。

所以下圖是把micro:bit P0腳位設定為”數位輸出(digital output)“,可連接像是LED、繼電器這種數位輸出元件。更多micro:bit I/O腳位的詳細設定請參考:http://microbit.org/guide/hardware/pins/

下圖則是設定micro:bit P2腳位為”類比輸入(analog input)“。可連接旋鈕電位計、光敏電阻等元件。o this pin.

STEP2: 更新LED狀態的副程式

為了讓程式意讀易懂,我們使用副程式來管理控制micro:bit腳位狀態的多個指令。新增一個副程式(procedure),改名為”ledControl”。

 

接著點選藍色小齒輪來新增三個參數,分別改名為”r”, “g”, “b”。顯然這三個參數是用來代表micro:bit用來控制RGB LED的腳位狀態。

在副程式中加入三個Microbit_Io_Pin.WriteOutputPinData指令,每一個分別控制micro:bit一隻腳位的狀態。因此第一個指令請設定pinNumber為0,pinValue為 r 參數值。後兩者以此類推,完成如下圖:

STEP2: Button to light up red

按下Button_R按鈕會讓RGB LED亮起紅燈,作法是呼叫ledControl副程式並設定參數為(1, 0, 0),代表P0為高電位(1),P1 / P2 為低電位(0)。

STEP3: other buttons for different colors

另外四個按鈕的差別只在於參數差異,這樣您應該可以感受到使用副程式的號處了吧:

  • Button_G: (0, 1, 0) 亮起綠色
  • Button_B: (0, 0, 1) 亮起藍色
  • Button_W: (1, 1, 1) 亮起白色
  • Button_Off: (0, 0, 0) 熄滅.

STEP4: 中斷藍牙連線

點選ButtonDisconnect按鈕會中斷藍牙連線,會讓app回到初始狀態並等候下次連線。

操作

完成啦!請確認您的Android裝置與 micro:bit 已經藍牙配對好了。接著從App端去連線到 micro:bit,連線成功後會出現五個按鈕,點選不同按鈕就可以看到RGB LED亮起紅綠藍白四種顏色與熄滅,如果亮起的顏色不對或是無法亮起請再次檢查接線是否鬆脫與腳位順序是否正確。

 

小挑戰

  1. 試著讓RGB LED更繽紛,例如紅色與藍色腳位同時點亮,就是紫色的光芒喔。
  2. 加入SpeechRecognizer元件,用語音來控制RGB LED。

 

 

相關文章:

[App Inventor IoT] LinkIt 7697使用BLE(藍牙4.0)傳送光感測器數值

作者/攝影  袁佑緣
時間  1小時
成本
  • 約900元
難度  * *
材料表
  • LinkIt 7697
  • LinkIt 7697擴充板
  • Grove光感測器
  • micro usb線
  • 電腦

本文章教各位讀者如何用手機撰寫App Inventor的應用程式,並透過Buletooth Low Energy來得到遠端LinkIt 7697的光感測器讀值。

 

App Inventor Extension 安裝

請先進到App Inventor的網站,並建立一個專案,在左下角Extension的部份,點選import extension,如下圖。

並把從MIT App Inventor Extensions網站(http://appinventor.mit.edu/extensions/)上的BLE套件裝上去。

如果讀者想要直接取用本範例的aia檔也可以,這樣就不需要再手動安裝Extension,因為已經包含在aia檔中了。

 

本範例的aia檔請到此處下載-連結

 

 

App Ineventor 程式設計 

首先請確認您有按照前面的步驟將BLE元件新增App Inventor中,如下圖。

接下來請看到Desginer的部份,Connect按鈕是用來連接到指定藍牙MAC位址的7697,連上之後就會變成Disconnect按鈕,可以用來斷掉連接的藍牙。而最底下的有一個label元件用來顯示感應器的數值。

接下來看到後台的Blocks端,首先我們要先定義一個addr的變數,用來指定要連接的LinkIt 7697的MAC address,至於這個MAC address會根據每一塊不同的板子而有所不同,請讀者按照待會Arduino程式設計的部份所顯示的MAC Adress填入正確的位址。

再來當按鈕connect按下去之後,就會嘗試連上指定MAC address的控制板,如果成功的話,按鈕就會切換到Disconnect,以等待下一次使用者按下時就會斷線。

 

如果連接成功的話,應用程式的標題就會切換成Connected,反之則顯示Unconnected。

接下來是本範例的重點部份,如果此刻的狀態是正確連接的話(也就是按鈕是顯示用來Disconnect的狀態),Clock元件每隔一段時間就會啟動一次接收BLE訊息的服務,而這個服務會透過指定的Service跟Characteristic讀到7697上的光感測器數值(提醒讀者這邊的UUID務必確認跟Arduino程式碼端的設定一樣喔),最後當App讀到BLE的Int值時(when BluetoothLE1.IntValueRead),就會將數值顯示在Label元件上,讓使用者可以在手機螢幕上看到光感值!

 

LinkIt 7697 程式設計

請打開Arduino IDE,並確定您的控制板在編輯器中切換成7697,再上傳以下的程式碼到7697上。

本範例的ino檔請到此處下載-連結

#include <LBLE.h>
#include <LBLEPeriphral.h>

int item;

LBLEService AService("19B10010-E8F2-537E-4F6C-D104768A1214");
LBLECharacteristicInt ARead("19B10011-E8F2-537E-4F6C-D104768A1214", LBLE_READ | LBLE_WRITE);

void setup()
{
  Serial.begin(9600);
  LBLE.begin();
  while (!LBLE.ready()) { delay(100); }
  Serial.println("BLE ready");

  Serial.print("Device Address = [");
  Serial.print(LBLE.getDeviceAddress());
  Serial.println("]");

  AService.addAttribute(ARead);

  LBLEPeripheral.addService(AService);
  LBLEPeripheral.begin();
  LBLEAdvertisementData advertisement;
  advertisement.configAsConnectableDevice("BLE Ana");
  LBLEPeripheral.advertise(advertisement);


}


void loop()
{
  item = analogRead(A0);
  Serial.println(item);
  ARead.setValue(item);
  delay(1000);
}

成功上傳本隻程式碼到7697上後,請打開Serial Monitor,7697將會印出這塊板子的MAC Address,請務必記得把這段位址修改到App Inventor端的addr變數上喔。

 

 

範例影片

 

相關文章:

[ App Inventor IoT ] LinkIt 7697使用 BLE(藍牙4.0)控制伺服馬達

這次向各位介紹常用的雲端服務,分別是台灣聯發科技公司搭配旗下LinkIt系列開發板之MCS與ThingSpeak,我們透過LattePanda實作。你可以從遠端來控制板子的腳位狀態或是檢視板子狀態與感測器的數值變化。類似的雲服務近年來如雨後春筍般冒出來,對於想找尋免費方案的使用者或教學單位來說是相當好的事呢。

作者/攝影  袁佑緣
時間  1小時
成本
  • 約800元
難度  * *
材料表
  • LinkIt 7697*1
  • micro usb線*1
  • 伺服馬達*1
  • 電腦*1
  • Android手機*1

本文章教各位讀者如何用手機撰寫App Inventor的應用程式,並透過Buletooth Low Energy來遙控LinkIt 7697的伺服馬達。

App Inventor Extension 安裝 

請先進到App Inventor的網站,並建立一個專案,在左下角Extension的部份,點選import extension,如下圖。

並把從MIT App Inventor Extensions網站(http://appinventor.mit.edu/extensions/)上的BLE套件裝上去。

如果讀者想要直接取用本範例的aia檔也可以,這樣就不需要再手動安裝Extension,因為已經包含在aia檔中了。

 

本範例的aia檔請到此處下載-連結

 

App Ineventor 程式設計 

首先請確認您有按照前面的步驟將BLE元件新增App Inventor中,如下圖。

接下來請看到Desginer的部份,首先在第一行有TextBox元件,用來顯示現在控制的伺服馬達角度,接下來有兩個按鈕,左邊的connect按鈕主要是用來連線到7697,右邊的Disconnect則是斷線,最後,在最下面有一個滑桿,可以用拖曳來控制馬達的角度(注意因為這邊控制的伺服馬達可控角度為0~180度,所以在Slider元件上要設定最大值為180最小值為0)。

接下來看到後台的Blocks端,首先我們要先定義一個addr的變數,用來指定要連接的LinkIt 7697的mac address,至於這個mac address會根據每一塊不同的板子而有所不同,請讀者按照待會Arduino程式設計的部份所顯示的MAC Adress填入正確的位址。

再來當按鈕connect按下去之後,就會嘗試連上指定mac address的控制板,如果成功的話,滑桿跟計時器就會被啟動。

而斷線的部份則跟連線差不多,只是Enabled跟Disabled的元件會相反。

接下來是本範例的重點部份,Clock元件每隔一段時間就會啟動一次傳送BLE訊息的服務,而這個服務會將滑桿上此刻的數值先轉成整數後透過指定的Service跟Characteristic送出,而在這邊的UUID務必確認跟Arduino程式碼端的設定一樣,7697才能成功接收到數值喔!

LinkIt 7697 程式設計

 請打開Arduino IDE,並確定您的控制板在編輯器中切換成7697,再上傳以下的程式碼到7697上。 本範例的ino檔請到此處下載-連結

 

#include <LBLE.h>
#include <LBLEPeriphral.h>
#include <Servo.h>

Servo my_servo;
int servo_position = 90;

// Define a simple GATT service with only 1 characteristic
LBLEService servoService("19B10010-E8F2-537E-4F6C-D104768A1214");
LBLECharacteristicInt positionCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", LBLE_READ | LBLE_WRITE);


void setup() {


  //Initialize serial and wait for port to open:
  Serial.begin(9600);

  // to check if USR button is pressed
  pinMode(6, INPUT);

  my_servo.attach(10);
  my_servo.write(servo_position);

  // Initialize BLE subsystem
  LBLE.begin();
  while (!LBLE.ready()) {
    delay(100);
  }
  Serial.println("BLE ready");

  Serial.print("Device Address = [");
  Serial.print(LBLE.getDeviceAddress());
  Serial.println("]");

  // configure our advertisement data.
  // In this case, we simply create an advertisement that represents an
  // connectable device with a device name
  LBLEAdvertisementData advertisement;
  advertisement.configAsConnectableDevice("BLE Servo");

  // Configure our device's Generic Access Profile's device name
  // Ususally this is the same as the name in the advertisement data.
  LBLEPeripheral.setName("BLE Servo");

  // Add characteristics into servoService
  servoService.addAttribute(positionCharacteristic);

  // Add service to GATT server (peripheral)
  LBLEPeripheral.addService(servoService);

  // start the GATT server - it is now 
  // available to connect
  LBLEPeripheral.begin();

  // start advertisment
  LBLEPeripheral.advertise(advertisement);
}

void loop() {
  delay(300);

  Serial.print("conected=");
  Serial.println(LBLEPeripheral.connected());

  if (digitalRead(6))
  {
    Serial.println("disconnect all!");
    LBLEPeripheral.disconnectAll();
  }

  if (positionCharacteristic.isWritten()) {
    servo_position = positionCharacteristic.getValue();
    Serial.println(servo_position);
    my_servo.write(servo_position);
  }


}

成功上傳本隻程式碼到7697上後,請打開Serial Monitor,7697將會印出這塊板子的MAC Address,請務必記得把這段位址修改到App Inventor端的addr變數上喔。

範例影片:

 

相關文章: