Author Archives: 科技編輯

[ 介紹文 ] 一窺水下機器人ROV航海家號(Voyager) I的研發奧秘

作者/攝影

ROV MAKER團隊(特此致謝!!)

文章分類介紹文
時間

成本
難度

ROV MAKER團隊開始於2012年大仁哥研究遙控潛艇。航海家號I是ROV MAKER團隊首台嘗試自造的消費型ROV。(ROV MAKER心路歷程可參考連結:https://youtu.be/XNyclrNijgo

 

在優化遙控潛艇,以及改造遙控潛艇微電腦控制的過程中,ROV MAKER團隊深刻了解到,防水的模組化設計完善的電子電路及軟體,是阻礙愛好者進入DIY ROV世界的主要限制原因。

 

ROV MAKER團隊參考了現實世界的潛艇造型,認為以原球殼玻璃艙罩的潛艇,擁有較佳的外觀亮麗造型。

圖1

 

圖2

 

2016年12月著手進行航海家I開發的同時,ROV MAKER團隊以「水下載具模組化專案」向經濟部SBIR提出第一期申請,並於2017年2月獲得委員會評審通過,進行為期半年的開發補助。

 

研發航海家I,ROV MAKER團隊同時朝四個方向進行開發設計:(1)圓球殼艙罩的設計與樣品(Mockup)製作;(2)控制電路板/感測器版設計;(3)軟體開發;(4)機身設計。經過為期半年的努力,我們開發了自有的電路板和軟體,並組裝了航海家號I第一台樣機。

 

我們的控制板是基於路由器晶片,因為未來兩年的產品效能瓶頸主要是資訊流傳輸,而非多媒體影像的問題。

圖3 航海家I的控制板

 

IMU感測板設計,仿效OpenROV初代設計,因為9250磁力計校正問題,改採用愛盛科技 IST8310晶片。

圖4

 

軟體架構則採用OpenROV初代設計概念,以Node.js為主的網路伺服機主從概念,讓使用者可利用瀏覽器及搖桿進行操控。

圖5

 

在機身設計上,團隊一致決定向無敵鐵金剛的指揮艇致敬。

圖6

 

圖7

 

圖8

 

研發過程的種種概況,請讀者們參考圖9:

圖9

 

2017年7月,航海家號I在海科館進行了首次測試,進行一系列的驗證及軟體校正。

圖10

 

圖11

 

圖12

 

航行動態請參考以下影片:

https://youtu.be/Ti7iBGjiFcs

https://youtu.be/1Ricc10u1pc

 

在基隆海科館的測試後,我們檢討了軟體和機構的缺失,並且在SBIR結案前,前往石門水庫進行最後測試驗收。而在石門水庫的測試中,我們分別測試了水深20米及43米的深度測試,並留下寶貴的測試影片,43米的限制來自於水庫的最深深度。

https://youtu.be/P-4taTfF8v8

 

因台灣夏天的午後雷陣雨,所以測試當天石門水庫水質欠佳,以致於水下影像畫面欠佳。但我們依舊得到相當有趣的水文數據,例如,隨著深度的溫度變化。

 

航海家號I是以Maker 的角度,利用隨手可買到的簡單材料,搭配自行設計的電路板、IMU板及自行開發的軟體組裝而成。動力方面僅利用現有多軸穿越機(Drone)無刷馬達,以及簡易的船槳,所以速度表現仍有相當大的進步空間。

圖13

 

隨著航海家號I樣機開發完畢,ROV MAKER團隊持續各模組化零件的開發。目前,已陸續完成 (1)可至70米深球殼防水模組Asgard;(2)推進器槳葉設計;(3)防水電池盒;(4)航海家號II機身設計。

 

航海家號II預計於於2018年10月亮相。若讀者們想關注更多水下機器人ROV的訊息,可關注ROV MAKER的Facebook粉絲頁,或官網 www.rovmaker.com

 

相關文章

[翻譯] 2018.8.14-根據TensorFlow團隊,TensorFlow 2.0預覽版預計於下半年發佈(繁、簡中文版)

原文作者

Martin Wicke

發佈時間

原文發佈日期:2018年8月14日

翻譯宗諭審閱吉弘
說明

轉載自TensorFlow團隊社群內的公開公告,非常感謝TensorFlow團隊的授權翻譯,特此致謝!

Since the open-source release in 2015, TensorFlow has become the world’s most widely adopted machine learning framework, catering to users and use-cases. In this time, TensorFlow has evolved along with rapid developments in computing hardware, machine learning research, and commercial deployment.

 

自從TensorFlow於2015年以開放原始碼形式發佈後,已成為全球最廣為採用的機器學習框架,提供給廣泛的使用者及案例。時至今日,TensorFlow也隨著運算硬體、機器學習研究及商用部署的快速發展而不斷進化。

 

自从TensorFlow于2015年以开放原始码形式发布后,已成为全球最广为采用的机器学习框架,提供给广泛的使用者及案例。时至今日,TensorFlow也随着运算硬体、机器学习研究及商用部署的快速发展而不断进化。

 

Reflecting these rapid changes, we have started work on the next major version of TensorFlow. TensorFlow 2.0 will be a major milestone, with a focus on ease of use. Here are some highlights of what users can expect with TensorFlow 2.0:

  • Eager execution will be a central feature of 2.0. It aligns users’ expectations about the programming model better with TensorFlow practice and should make TensorFlow easier to learn and apply.
  • Support for more platforms and languages, and improved compatibility and parity between these components via standardization on exchange formats and alignment of APIs.
  • We will remove deprecated APIs and reduce the amount of duplication, which has caused confusion for users.

 

爲回應這股快速變遷的趨勢,我們(TensorFlow團隊)已開始研發TensorFlow下一個主要版本。TensorFlow 2.0將會是重要的里程碑,著眼於讓大家更容易使用。以下是一些使用者可期盼的焦點:

  • Eager execution將會是0版本的中心特色,它能滿足使用者對於實做更棒的程式模型的期待,並且應該會使TensorFlow更易於學習及應用。
  • 支援更多的平台及語言,亦改善了相容性,並且透過交換格式及API調整的標準化,在這些元件中取得平衡。
  • 我們將會移除已棄用的API,並且降低重複性,避免造成使用者混淆。

 

为回应这股快速变迁的趋势,我们(TensorFlow团队)已开始研发TensorFlow下一个主要版本。 TensorFlow 2.0将会是重要的里程碑,着眼于让大家更容易使用。以下是一些使用者可期盼的焦点:

  • Eager execution将会是0版本的中心特色,它能满足使用者对于实做更棒的程式模型的期待,并且应该会使TensorFlow更易于学习及应用。
  • 支援更多的平台及语言,亦改善了相容性,并且透过交换格式及API调整的标准化,在这些元件中取得平衡。
  • 我们将会移除已弃用的API,并且降低重复性,避免造成使用者混淆。

 

We are planning to release a preview version of TensorFlow 2.0 later this year.

 

我們預計於2018年下半年發佈TensorFlow 2.0的預覽版本。

 

我们预计于2018年下半年发布TensorFlow 2.0的预览版本。

 

Public 2.0 design process

Shortly, we will hold a series of public design reviews covering the planned changes. This process will clarify the features that will be part of TensorFlow 2.0, and allow the community to propose changes and voice concerns. Please join developers@tensorflow.org if you would like to see announcements of reviews and updates on process. We hope to gather user feedback on the planned changes once we release a preview version later this year.

 

公開的 TensorFlow 2.0設計程序

簡而言之,我們將針對已在計劃中的更新有一系列的「公開設計評論」。這個過程會說明那些即將納入TensorFlow 2.0中的功能,並且允許社群提出修改且表達關切。若您想得知評論的公告與設計過程的進展,請加入developers@tensorflow.org。一旦預覽版本於2018年下半年發佈之後,我們期盼收到使用者對於計畫中的更新的回饋意見。

 

公开的 TensorFlow 2.0设计程序

简而言之,我们将针对已在计划中的更新有一系列的「公开设计评论」。这个过程会说明那些即将纳入TensorFlow 2.0中的功能,并且允许社群提出修改且表达关切。若您想得知评论的公告与设计过程的进展,请加入developers@tensorflow.org。一旦预览版本于2018年下半年发布之后,我们期盼收到使用者对于计画中的更新的回馈意见。

 

Compatibility and continuity

TensorFlow 2.0 is an opportunity to correct mistakes and to make improvements which are otherwise forbidden under semantic versioning.

 

相容性與連續性

TensorFlow 2.0的發佈是一個改正錯誤的好機會,並且針對在semantic versioning下被禁止的部分作出改善。

 

相容性与连续性

TensorFlow 2.0的发布是一个改正错误的好机会,并且针对在semantic versioning下被禁止的部分作出改善。

 

To ease the transition, we will create a conversion tool which updates Python code to use TensorFlow 2.0 compatible APIs, or warns in cases where such a conversion is not possible automatically. A similar tool has helped tremendously in the transition to 1.0.

 

為減緩過渡時期的衝擊,我們將提供一個轉換工具,它具備兩項功能:(1)更新Python程式碼得以使用相容於TensorFlow 2.0的API;(2)假如轉換無法完全自動完成時,將發出警告。類似的工具在當年轉換到Tensorflow1.0版時可真是幫了大忙呢。

 

为减缓过渡时期的冲击,我们将提供一个转换工具,它具备两项功能:(1)更新Python程式码得以使用相容于TensorFlow 2.0的API;(2)假如转换无法完全自动完成时,将发出警告。类似的工具在当年转换到Tensorflow1.0版时可真是帮了大忙呢。

 

Not all changes can be made fully automatically. For example, we will be deprecating APIs, some of which do not have a direct equivalent. For such cases, we will offer a compatibility module (tensorflow.compat.v1) which contains the full TensorFlow 1.x API, and which will be maintained through the lifetime of TensorFlow 2.x.

 

並非所有的更新皆可全部自動完成。例如以棄用API來說,有些將要被棄用的API並沒有一個直接可對應的應用程式去處理。針對這樣的情況,我們將提供一套相容性模組(tensorflow.compat.v1),包含完整的TensorFlow 1.x API,並且確保它在TensorFlow 2.0的產品週期中被維護。

 

并非所有的更新皆可全部自动完成。例如以弃用API来说,有些将要被弃用的API并没有一个直接可对应的应用程式去处理。针对这样的情况,我们将提供一套相容性模组(tensorflow.compat.v1),包含完整的TensorFlow 1.x API,并且确保它在TensorFlow 2.0的产品周期中被维护。

 

We do not anticipate any further feature development on TensorFlow 1.x once a final version of TensorFlow 2.0 is released. We will continue to issue security patches for the last TensorFlow 1.x release for one year after TensorFlow 2.0’s release date.

 

一旦TensorFlow 2.0最終版本發佈後,就不會在開發任何TensorFlow 1.x的功能了。我們將在TensorFlow 2.0發佈一年之內,針對TensorFlow 1.x的最新版持續提供安全性修正程式(Security Patch)。

 

一旦TensorFlow 2.0最终版本发布后,就不会在开发任何TensorFlow 1.x的功能了。我们将在TensorFlow 2.0发布一年之内,针对TensorFlow 1.x的最新版持续提供安全性修正程式(Security Patch)。

 

On-disk compatibility

We do not intend to make breaking changes to SavedModels or stored GraphDefs (i.e., we plan to include all current kernels in 2.0). However, the changes in 2.0 will mean that variable names in raw checkpoints might have to be converted before being compatible with new models.

 

儲存的相容性

我們無意針對SavedModels或儲存的GraphDefs做出大幅度的修改。(例如,我們想在TensorFlow 2.0中納入所有現行的核心。)然而,在TensorFlow 2.0中的更新代表在原始檢查點中的變數名稱,在順利相容於新模型前可能需要進行轉換。

 

储存的相容性

我们无意针对SavedModels或储存的GraphDefs做出大幅度的修改。 (例如,我们想在TensorFlow 2.0中纳入所有现行的核心。)然而,在TensorFlow 2.0中的更新代表在原始检查点中的变数名称,在顺利相容于新模型前可能需要进行转换。

 

tf.contrib

TensorFlow’s contrib module has grown beyond what can be maintained and supported in a single repository. Larger projects are better maintained separately, while we will incubate smaller extensions along with the main TensorFlow code. Consequently, as part of releasing TensorFlow 2.0, we will stop distributing tf.contrib. We will work with the respective owners on detailed migration plans in the coming months, including how to publicise your TensorFlow extension in our community pages and documentation. For each of the contrib modules we will either a) integrate the project into TensorFlow; b) move it to a separate repository or c) remove it entirely. This does mean that all of tf.contrib will be deprecated, and we will stop adding new tf.contrib projects today. We are looking for owners/maintainers for a number of projects currently in tf.contrib, please contact us (reply to this email) if you are interested.

 

tf.contrib

TensorFlow的contrib模組的規模已超過可在單一版本庫中維護並支援的程度。較大的專案最好是獨立維護,同時我們會讓較小的擴充檔去跟著TensorFlow主線去走。結論是,作為發佈TensorFlow 2.0過程的一部分,我們將停止發佈tf.contrib。我們會在這幾個月之內針對個別擁有者去敲定遷移的細節,包括如何在我們的社群網頁和文件中宣傳您的TensorFlow擴充。針對每一個補充支援模組,我們將採取以下三項措施中的一項:

(a)整合專案進TensorFlow中;

(b)移至另外的版本庫,或

(c)將它整個移除。

這代表所有的tf.contrib未來都不會再使用,並且從今天起就不再允許加入新的補充支援模組專案。我們對目前tf.contrib的某些專案正在徵求維護者,如果您有興趣的話請和我們連繫(announce@tensorflow.org)。

 

tf.contrib

TensorFlow的contrib模组的规模已超过可在单一版本库中维护并支援的程度。较大的专案最好是独立维护,同时我们会让较小的扩充档去跟着TensorFlow主线去走。结论是,作为发布TensorFlow 2.0过程的一部分,我们将停止发布tf.contrib。我们会在这几个月之内针对个别拥有者去敲定迁移的细节,包括如何在我们的社群网页和文件中宣传您的TensorFlow扩充。针对每一个补充支援模组,我们将采取以下三项措施中的一项:

(a)整合专案进TensorFlow中;

(b)移至另外的版本库,或

(c)将它整个移除。

这代表所有的tf.contrib未来都不会再使用,并且从今天起就不再允许加入新的补充支援模组专案。我们对目前tf.contrib的某些专案正在征求维护者,如果您有兴趣的话请和我们连系(announce@tensorflow.org)。

 

Next steps

For questions about development of or migration to TensorFlow 2.0, contact us at discuss@tensorflow.org. To stay up to date with the details of 2.0 development, please subscribe to developers@tensorflow.org, and participate in related design reviews.

 

下一步

針對TensorFlow 2.0的開發或轉的的相關問題,請來信discuss@tensorflow.org 詢問。若想要得知TensorFlow 2.0的最新進度,請訂閱developers@tensorflow.org ,並且參與相關的設計評論,謝謝。

 

下一步

针对TensorFlow 2.0的开发或转的的相关问题,请来信discuss@tensorflow.org 询问。若想要得知TensorFlow 2.0的最新进度,请订阅developers@tensorflow.org ,并且参与相关的设计评论,谢谢。

 

On behalf of the TensorFlow team,

Martin

 

謹代表全體TensorFlow團隊

Martin

 

谨代表全体TensorFlow团队

Martin

 

相關文章

[ 教學文 ] 自己的Arduino車自己造——如何使Arduino車課程回歸生活科技的基本面?

作者/攝影

文、圖作者:永春高中生活科技趙珩宇老師(特此致謝!)

主題圖片背景:starline / Freepik

文字潤飾:CAVEDU 宗諭

文章分類教學技術文
時間

成本

難度

材料表

108課綱講求教師自行依照自己的課程需求發展課程,而筆者是生活科技老師,因此在課程中便希望可依據學生程度,以及生活科技課程所需的內容,設計自己的課程和教具。

 

過去在Arduino車的課程中,教師通常會使用現成的模組,搭配常見的Arduino開發板及模組進行組裝。但就生活科技課程中,這樣的方式少了生活科技中的機構、電子電路等內容,使得實作會專注於程式設計。為讓課程更能符合生活科技所需的內容,所以筆者就製作了可讓學生自行焊接、設計機構、車體及程式撰寫的Arduino車。

 

車體設計

車體設計部分,為符合教學時的學生能力,讓學生可自行焊接,因此首要的要求就是所有的原件皆須使用DIP封裝的元件。因此在車體上即使用了18650電池座,雖然自己不是太喜歡18650電池座,但因現在許多教師都有買這類電池,所以車體部分便依照這顆電池進行設計,另外搭配L9110 H橋IC,以及其他DIP的電容及電阻元件。

 

小知識:什麼是DIP封裝?

DIP是Dual In-Line Package的縮寫,中文名稱是雙列直插封裝,是一種積體電路的封裝方式。DIP是較早期的封裝方法,零件皆具備兩支以上的金屬腳,利用人工方式插入PCB上預留之焊點位孔,再進行點焊或過熔錫爐完成焊接。因插孔需人工進行,較不利於大量生產。然而,筆者在此的目的就是要讓學生可以人工焊接,所以才會要求皆使用DIP封裝的元件。

圖1 18650電池

 

在電路板繪製上,現在其實有許多不同的軟體可搭配。若讀者是處於剛入門時期,可用Frizing這套軟體協助設計,入門門檻會降低許多。若需教學可參考CAVEDU教育團隊不定期安排的課程,亦可參考筆者的教學網站(https://livingtech.education/elec/)所分享的自行洗電路板的方法。

 

課程設計

1.電子電路

本教具設計的目的,在於讓Arduino車的教學重點回歸到生活科技,因此,這台車子需要讓學生自行焊接製作完成,所以在製作時,教師應準備焊接用的工具,如電烙鐵、焊錫、烙鐵架⋯⋯等等,並教導學生正確的焊接操作方式,使學生可以安全地完成焊接。而在焊接中,可逐步介紹每個電子元件的名稱、用途、IC名稱、如何找IC資料⋯⋯等等內容,並自行做一些小實驗示範。

圖2 焊接時應將工具準備齊全

 

圖3 讓學生學習自行焊接

 

2.機構與外觀設計

製作完車體後,則可讓學生設計車體外觀、車體結構⋯⋯等等。在這台車上留有許多雷射切割可用的螺絲孔,或是3D列印件的組裝孔,這些螺絲孔可讓學生將自行製作的車體結構與電路板車體結合。因此,教師可引導學生在「避震」、「轉向結構」⋯⋯等等的教學內容。

圖4

 

圖5

 

圖6

 

結語

在這項教具的設計上,重點就是希望學生可將學習內容拉回生活科技範疇,因此,這篇文章在資訊科技的程式部分就不多加著墨了。對於遙控車的程式撰寫有興趣的讀者,可直接與CAVEDU教育團隊聯繫,他們有許多不同類型的程式實作課程,也歡迎多多關注他們的Facebook粉絲團

 

備註:自製Arduino遙控車課程可參考過去研習課程頁面

 

相關文章

[課程紀錄文] 2018.8.13-14-跟著CAVEDU學AI人工智慧:一堂結合機器學習中的影像辨識及邊緣運算的深度課程

記錄

宗諭

攝影

吉弘

講師

吉弘、豐智

上課地點台灣微軟大樓
課程時間

2018年8月13-14日

8月13至14日,一場AI人工智慧的深度學習課程,在台灣微軟大樓展開⋯⋯。

 

然而,早在課程開始前的一個月,CAVEDU教育團隊這邊的兩位講師:「阿吉老師」曾吉弘與徐豐智,以及與此次課程的相關人員,便已針對這門課程展開緊鑼密鼓地準備。從剛開始針對課程內容進行深入研究、討論;至中期的針對「Microsoft Azure DSVM資料科學虛擬機器」持續調整、設定,並且訓練模型;最後一週與課程各單位間的持續溝通、協調、聯繫,針對上課要使用的RK Car不斷調測,設計、印刷試跑RK Car需用的道路地墊⋯⋯等等。可以說,CAVEDU教育團隊真是為這次課程卯足全勁了!

 

課程的結果也是十分甜美。根據微軟方面人員的統計,參與課程21位學員的AI AGV車皆成功跑車,一個步驟都沒有漏掉。而微軟方面亦十分肯定CAVEDU教育團隊,在這次課程中展現出的專業能力

圖1 講師之一「阿吉老師」曾吉弘

 

圖2 另外一位講師徐豐智(中著紅衣者)

 

回到這門課程,究竟教授給學員的是什麼呢?

 

課程的設計是屬於實務導向,簡而言之,就是訓練無人車達成路牌辨識的目標,等學員訓練好模型後,再至CAVEDU教育團隊設計、製作的地墊上試跑。

圖3 學員讓RK Car在CAVEDU製作的道路地墊上試跑

 

我們運用什麼工具訓練模型呢?答案是微軟的Azure DSVM資料科學虛擬機器。Azure DSVM是一種雲端服務,透過常用於資料分析、機器學習服務及AI訓練的數個熱門工具,預先安裝、設定及測試的Azure虛擬機器映像。

圖4 資料蒐集並訓練模型

 

下圖是課程中使用的無人載具RK Car,車子由CAVEDU教育團隊自造,以Raspberry Pi單板電腦為核心。RK Car上藍色的是Intel Movidius神經運算棒,阿吉老師有向學員們展示Intel的AI模型,透過Movidius的加速,針對道路上各種車輛進行分類,以及街景影像的辨識,例如街道上的人、車牌、摩托車⋯⋯等等。透過Intel Movidius,能使硬體等級沒有非常高的Raspberry Pi單板電腦,以更快速度進行影像辨識。(若欲購買RK Car,請洽機器人王國商城。)

圖5 安裝上Intel Movidius神經運算棒的RK Car

 

下圖是學員們跑車的情況。每位學員的無人載具皆需學會辨識左轉、右轉、停止標示,才能成功完成道路地墊上的試跑。在阿吉老師、豐智及助教的悉心準備、指導下,所有學員皆跑車大成功!

圖6 所有學員順利完成跑車

 

對CAVEDU教育團隊而言,這次課程使我們在AI人工智慧領域又邁進一步。之前我們較著重在「邊緣運算」,也就是將應用程式、資料及服務的運算,由網路中心節點移至網路邏輯上的邊緣節點進行處理。

 

這次,我們實作了機器學習中的影像辨識,並整合剛剛提及的邊緣運算,成功達成一次AI實務的軟硬整合課程。套一句阿吉老師的課後感言:「我想,我們應是最先推出AI實務軟硬整合課程的團隊吧。」歡迎跟著我們一起成長、一起學習AI,微軟將繼續於9月份、10月開課,歡迎點此報名

 

最後,播放一段輪型機器人視角的跑車影片,給各位讀者欣賞。

 

相關文章

[MCS雲端服務] 透過「服務提供者」功能,讓LINE Bot與MediaTek Cloud Sandbox連動(上)

作者/攝影

本文改編自聯發科技Cloud Sandbox(MCS)官方部落格上的文章,特此感謝聯發科技的授權,圖文版權均屬於聯發科技。

文章分類教學技術文
時間
成本
難度
材料表

以物聯網概念將剩餘車位資訊送至MCS服務上

這一次,MCS( MediaTek Cloud Sandbox 的簡稱)的工程師們,要教讀者如何透過外部服務與 MCS 進行互動,以達成客製化應用。

 

情境

您目前正經營一個停車場,某天您剛好去保養付款機台時,聽到一位常客抱怨無法在抵達前知道剩餘的車位,到現場時才能從顯示屏上得知停車位已滿的訊息,而必須繞路至附近另一間停車場或在現場苦等。

 

因此,您希望提供一個更便利的方式,讓常客們可更有效率造訪您的停車場。您想達成兩個目標:第一是讓用戶可透過手機查詢目前停車場的剩餘車位;第二是當剩餘車位低於某個數字時,主動推播提醒該位常客。

 

對於這兩個目標,我們要考量到以下幾點:

  1. 若獨立開發一個停車場的 App 服務,用戶需做較多操作,除增加行車危險性,且用戶額外安裝一個  App 的意願也不高。

  2. 開發一個停車場 App 的開發時間及成本

  3. 目前絕大多數台灣人隨時隨地都在使用 LINE

 

因此,您決定透過開發一個簡單的 LineBot 聊天機器人,使常客可透過將這個聊天機器人加入 LINE 好友,與您的停車場互動並達成上述兩個目標。

 

接下來,就將針對如何透過 LINE Bot 設定、MCS及自動化程式平台,說明如何開發這個簡單的 LINE Bot 聊天機器人。

 

首先,我們要開發一個簡單的物聯網裝置,連結停車場的車位管理設備,並讀取剩餘車位的資訊。當有用戶停車時,這個物聯網裝置會將更新後剩餘車位的數值送至 MCS 的雲端服務上,如下圖:

圖1 該裝置在測試裝置頁面示意,位置資訊在此裝置內為固定 | mcs.mediatek.com

 

這裡要特別介紹一個概念:目前大部分的 MCS 的使用者,都是透過裝置與 MCS 服務做互動。但除了裝置外,MCS 也允許使用者開發的外部服務,透過在 MCS 上所申請的憑證與 MCS 互動 ,這組憑證即為 appId 和 appSecret。下圖為 MCS 官網上針對以外部服務讀取資料點的說明。

圖2 無論是讀取或上傳資料點,外部服務皆可透過憑證與MCS互動 | mcs.mediatek.com

 

由於我們後續必須透過外部服務讀取這個裝置的剩餘車位資訊,這組憑證對接下來的開發將非常關鍵,我們將運用下一篇文章針對此部分進行詳細說明。

 

申請一個 LINE Bot 機器人及 Automate.io 簡介

接著,我們要去 LINE 申請一個 LINE Bot。

 

網路上已經有相當多關於如何申請 LINE Bot 的文章,在此我們就不多著墨。以下為在 LINE developers 後台內,該 LINE Bot 的設定畫面,我們為這個 LINE Bot 取一個很酷的名字 :互動式停車場-中山北路

圖3 Line developers 的後台設定頁面

 

LINE Bot 所提供的 Messaging API 允許開發者建立可接收訊息並回覆給加入LINE Bot 的用戶。此 LINE Bot 的程式處理架構為:LINE 公司的訊息伺服器(Messaging Server)負責接收及回應用戶端的訊息,並且管理 LINE 應用程式的權限。當 LINE 訊息伺服器收到用戶端的訊息時,它會把訊息轉送給我們所開發 Linebot 程式的網站,我們的網站程式會把我們設定要回覆給用戶的訊息傳回給 LINE 伺服器,最後再由 LINE 伺服器將訊息回覆給用戶。

 

在 LINE Bot 的設定頁面,請檢查以下設定:

  1. Issue 一個 Channel access token(後面LINE Bot回覆訊息時,會需要用到此變數)。

  2. Use webhooks 欄位修改為Enabled

  3. 將下方的自動回覆(Auto-reply messages)功能關閉

  4. 輸入 webhook 的 URL

圖4 LineBot 設定頁面,可拉至最底端掃描這個 LINE Bot 的 QR Code,將機器人加入您的LINE好友,以利後續測試。

 

以上1至3點設定完畢後,我們只差第4點尚未完成——輸入 Webhook URL(上圖的黃框)。LINE Server 會透過這個Webhook將訊息送至我們的開發 LINE Bot 程式的網站 ,而LINE官方範例使用Heroku這個服務做為開發 LINE Bot 程式網站的後端平台,並接收 LINE Server 的訊息(若讀者有興趣使用此後端服務開發LINE Bot,可直接上網搜尋「Building a sample bot with Heroku)。但在此,我們直接使用一個非常好用的自動化程式平台Automate.io (https://automate.io/),可以讓我們透過簡單的設定,取代寫程式開發這個 LINE Bot 程式。而我們等一下也將透過Automate.io生成圖4中LINE Bot 設定頁面所需輸入的 Webhook URL 。

圖5 Automate.io 是個自動化程式平台,很類似 Zapier/IFTTT,可讓使用者建立自動化程式(Bot),透過簡單的 REST、Webhook等設定,串連使用者所用的網路服務而不需撰寫程式,進而節省使用者的開發時間。

 

決定以 Automate.io 取代程式開發後,我們的 LINE Bot 聊天機器人服務架構就成為下面這張圖:

圖6 LINE Bot聊天機器人 / 自動化程式平台 / Mediatek Cloud Sandbox開發架構示意圖 | mcs.mediatek.com

 

現在,我們有了整個 LINE Bot 的開發雛型。下次,我們將會向讀者說明,如何透過Automate.io連通MCS及LINE server,並完成LINE Bot 的開發。

 

相關文章

[科技新訊] 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大大交流了。

 

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

 

相關文章

[樂高EV3機器人教學] CAVEDU教你開外掛:如何在EV3軟體中安裝擴充指令?

又到了機器人比賽的旺季,如何增添LEGO機器人的威力呢?本篇教你禁斷的密技,開外掛如何安裝非樂高原廠預設的指令。

作者/攝影

腦波弱老闆

文章分類教學技術文
時間

10分鐘內(如果網路不慢的話)

成本

看你有多少預算

難度

材料表
  • LEGO EV3

  • 第三方感應器

機器人比賽百百種,EV3可以參戰的項目當然也很多,目前除了WRO(國際奧林匹克機器人大賽)的競賽項目,與FLL(FIRST LEGO league)之外,大多不會限制使用非LEGO原廠(以下稱之為第三方)的感測器或零組件。

 

但若買了第三方的感測器,使用者首先要解決的就是,如何在EV3的軟體環境中使用它們。

 

既然你真心誠意的問了,我就大發慈悲的告訴你!!

 

發行第三方感應器的主要品牌有Hitechnic、minisensors、Dexter Industries(對了,機器人王國都有賣)。

 

本篇就以機器人足球賽中最常用到的Hitechnic Compass sensor電子羅盤感應器為例,來跟大家介紹:

 

Step1:首先,先去弄到一個感應器,不然,裝了軟體外掛也沒用。

 

Step2:到原廠網站找重要關鍵字「Download」,下載相關指令。通常在產品介紹或技術支援的頁面可找到,不然,就看是跟誰買的就找誰幫忙提供。

注意:有些第三方感應器會提供好幾種、在不同軟體環境下使用的指令或函式庫,請認明後再下載。

圖1

 

Step3:下載後,通常要解壓縮,請放在你找得到的地方。解壓縮後,應該會看到副檔名為.ev3b的檔案。

 

Step4:接下來,啟動EV3軟體,不論是零售版或教育版皆可,並開啟至程式編輯頁面

圖2

 

Step5:點選「Tools->Block Import」

圖3

 

Step6:按「Browse」先去找你剛剛解壓縮的資料夾。順利的話,你在「Select Block to Import」清單中,就會看到可安裝的指令,以及它們的版本。

圖4

 

Step7:選我們要安裝的指令(在這個範例中,我們選的是HTCompass.ev3b),再按下「Import」。一切順利的話,你就會看到如下圖的畫面,表示安裝成功,重新啟動軟體就能用。

圖5

 

Step8:如果剛剛所有動作都沒出錯,重新啟動軟體後,就可看到相關的指令了。

圖6

 

如果安裝還是不成功,可以帶著你的器材跟電腦,來跟我們預約上課時間,我們會安排老師教你裝到好(如果東西都是正常的)。剩下來,就是你的事了。

 

相關文章

[教學文] 當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!」呢?接下來,就是讀者們發揮創意的時間囉!

 

相關文章

[Micro:bit] 一次學Micro:bit就有概念!?是的,請看這一篇(三)

作者/攝影

陳怡璇

文章分類教學技術文
時間20mins
成本
難度**(1~10)
材料表
  • Micro:bit

  • (如欲購買,請洽機器人王國商城

  • Micro:bit BOSON擴充板

  • BOSON g 聲音感測器(Sound Senser)

  • BOSON 運動感測器(Motion Senser)

  • BOSON 彩色LED燈條(Multicolor LED String Light)

  • (如欲購買,請洽機器人王國商城

本篇中,我們要向讀者們介紹的是音樂盒及彩色LED燈條。

 

第一題:智慧音樂盒

Step1

圖1

 

Step2

圖2

 

第二題:色彩繽紛的LED燈條

任務一:

Step1

圖3

 

 

圖4

 

Step2

圖5

 

Step3

圖6

 

圖7

 

任務二:

Step1

圖8

 

Step2、3:這裡要注意的是,顏色的表示是色像環,所以若範圍輸入0至360,會全部顯示紅色;0至0、360至360也是全紅色。但如果是0至340,就會是有紫紅色的彩虹。

圖9

 

 

完成以後,音樂盒可以試試看自己編曲,LED則可以依照色環進行顏色調整,或是加入前一篇使用過的感測器進行改變。

 

相關文章

[教學文] 老爸,父親節快樂!!自己動手做互動式父親節卡片 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並沒有很大差異,但選擇角色、背景及音效的位置不太一樣。

 

相關文章

[CAVEDU化學小教室] pH值知多少?運用類比式酸鹼感測模組,讓滴定實驗更精準!!

照片改編自pixabay下載的兩張圖片,蒙允免費使用,特此致謝。

炎炎夏日,小編手刀衝進公司附近的7-11,準備好好解一解身體的渴。然而,打開擺放飲料的冰櫃才發現,原來光是礦泉水就有那麼多品牌,而且許多都標榜自己是鹼性水(重點是賣得比較貴)。但是,究竟這些礦泉水是否真為鹼性呢?所以啦,今天CAVEDU化學小教室第一天開張,就是要教讀者們「酸鹼滴定實驗」,這樣就可以測量所喝的飲料,到底是酸還是鹼。

作者/攝影

撰寫:宗諭

攝影:鈺莨、pixabay

文章分類
時間
成本
難度
材料表
  • 蒸餾水

  • 筆記型電腦*1

  • LinkIt 7697或Arduino系列開發板*1

  • 類比式酸鹼感測模組*1

  • 滴定管*1

  • 錐形瓶*1

什麼是酸鹼滴定實驗?

酸鹼滴定實驗的主要原理,主要是利用已知濃度的鹼或酸溶液,透過滴定的方式,測量出未知濃度溶液的酸鹼值。

圖1

 

實驗會使用哪些裝置?

1.滴定管

裝酸性溶液時,多使用玻璃材質;盛裝鹼性溶液時改用鐵氟龍材質,因鹼性溶液會腐蝕玻璃。

 

2.錐形瓶/燒杯

為什麼用錐形瓶會更好呢?因為錐形瓶形狀上窄下寬,當滴入酸或鹼溶液時,液體比較不會噴濺至外面。若是沒有錐形瓶,亦可使用燒杯,但要特別注意液體的噴濺。

 

3.類比式酸鹼感測模組

在一般酸鹼滴定實驗中,會在下方的錐形瓶或燒杯中加入酸鹼指示劑,作用是當酸鹼指示劑變色時,即達到「滴定終點」,表示氫離子(H+)的ml數剛好等於氫氧根離子(OH-)的ml數,完全反用成為水。然而,在此我們使用「類比式酸鹼感測模組」,也是這次實驗的特點。當我們使用「類比式酸鹼感測模組」,便能透過開發板及筆電,更精準測量出每一段實驗時間內pH值的變化。同時,由於我們測量出的是明確的數字,所以,在記錄上會更加精準,並可作為日後實驗的參考。(若欲購買類比式酸鹼感測模組,請洽機器人王國。)

圖2

 

4.LinkIt 7697開發板或Arduino系列開發板

主要是作為感測裝置的類比式酸鹼感測模組,必須連接至開發板,開發板再連接至電腦,才能將感測到的酸鹼值上傳至電腦進行觀測。

 

5.筆記型電腦

作為觀測酸鹼值之用。須在筆電上安裝好Arduino IDE,因為我們會透過這個程式,打開Serial port監測酸鹼值。

 

6.蒸餾水

主要用來清洗實驗器具

 

實驗步驟:

1.以鹼滴定酸:

  • 滴定管中置入鹼液;

  • 錐形瓶/燒杯中置入酸液;

  • 把類比式酸鹼感測模組連接好開發板及電腦;

  • 將類比式酸鹼感測模組置入錐形瓶/燒杯中的溶液;

  • 觀察pH值的變化,以及當達到滴定終點pH 7時,記錄下滴定液體體積為多少。

圖3

 

2.以酸滴定鹼:

  • 滴定管中置入酸液;

  • 錐形瓶/燒杯中置入鹼液;

  • 把類比式酸鹼感測模組連接好開發板及電腦;

  • 將類比式酸鹼感測模組置入錐形瓶/燒杯中的溶液;

  • 觀察pH值的變化,以及當達到滴定終點pH7時,記錄下滴定液體體積為多少。

圖4

 

實驗結果:

1.以鹼滴定酸:

記錄下滴定過程中pH值的變化,可得出類似下面的圖表:

圖5

 

2.以酸滴定鹼:

記錄下滴定過程中pH值的變化,可得出類似下面的圖表:

圖6

 

需要注意的事情:

  1. 類比式酸鹼感測模組是利用置入pH 7的穩定溶液中,進行參數校正。

  2. 水溫要設定。如果水溫沒有設定好,pH值會偏移。所以在進行滴定實驗時,需要準備一個比較準的溫度計。

 

經過這次酸鹼滴定實驗,相信讀者們對於酸鹼混合時的現象,以及當加入的鹼性液體或酸性液體體積漸多時,pH值的變化情形有更深入了解。下一次,若是有富教育意義的化學實驗,我們再跟大家分享。See you!

 

相關文章

[MCS雲端服務] 根據聯發科技,MCS雲服務最新功能:可設定觸發條件和動作並得到系統通知

作者/攝影

本文改編自聯發科技Cloud Sandbox(MCS)網站上的文章,特此感謝聯發科技的授權,圖文版權均屬於聯發科技。

文章分類教學技術文
時間
成本
難度
材料表

當我們在建構某些物聯網應用時,例如智慧門禁系統或空汙偵測裝置,往往,我們透過感測器將偵測到的資料上傳至雲端,會需要當上傳的資料滿足某一些條件,雲端系統會自動透過一些方式通知我們。像是當空氣中的某種物質達到一定程度,我們的行動裝置可收到空汙通知;又或著當智慧門禁系統的紅外線被觸動,我們也可以收到警示。

 

為此,聯發科技的雲端服務Cloud Sandbox(以下簡稱MCS)新推出了一個功能,就是強化trigger action的功能,例如設定的條件及含括更多型態的資料通道。針對action的部份,MCS新增了alert的功能,可強化更多使用的場景特別是Scene。另外,針對webhook的呼叫,MCS提供了更大的彈性。

 

實際上該怎麼使用呢?一起來看看以下的教學:

 

使用者可設定觸發條件和動作,當特定資料通道回傳的值符合使用者所設定的條件,系統將會發出通知提醒。

以下是支援設定觸發條件的資料通道

  1. 開關
  2. 分類
  3. 字串
  4. 十六進位值
  5. 整數
  6. 浮點數

並可套用以下的條件

  1. 大於
  2. 小於
  3. 等於
  4. 介於~之間
  5. 數值異動

當資料通道上傳的數值符合設定條件時時,會觸發通知動作。以下是四種支援的通知動作:

 

  1. 電子郵件

有權限能訪問這個裝置的使用者,皆能收到電子郵件通知,包括裝置的擁有者、管理者及一般檢視。

 

  1. 手機推播

必須先安裝 MediaTek Cloud Sandbox 手機應用程式,並登入 MCS 帳號。

 

  1. Webhook

MCS 會發送一個 HTTP 請求至使用者指定的網址(Callback URL)。

 

  1. 網頁警告

當觸發條件成立時,在 MCS 網頁上會顯示相關提醒,包含觸發的嚴重等級。

 

設定觸發條件與動作

您可在產品原型頁面下設定觸發條件和動作,此觸發規則會套用在此原型下的所有裝置。之後,使用者可在各個裝置底下,修改條件的觸發數值。詳細操作步驟:

 

Step1:當使用者點入產品原型頁面後,點選「觸發條件和動作」分頁 -> 點擊「新增觸發條件和動作」

圖1

 

Step2:在「新增觸發條件和動作」視窗中,填入必要的資訊。

(1)觸發條件名稱之後將會顯示於網頁警告的訊息中。

圖2

 

(2)使用者可設定多個比對條件,當這些條件同時成立時(AND 邏輯)則會觸發通知。請注意,要讓條件同時成立,使用者必須將此條件有用到的資料通道數值同時上傳至 MCS,意思是寫在同個 HTTP 上傳的請求當中。

圖3

 

(3)至少選擇一個觸發動作,當條件成立時,發送通知。稍後將會針對觸發動作有更詳細的介紹。

圖4

 

使用者在產品原型中設定的觸發條件和動作,會被產品原型下所有的測試裝置所繼承。在測試裝置中,使用者只能更改觸發條件的值,或著是選擇打開或關閉此觸發條件和動作。

圖5

 

需要注意的是,只有透過裝置上傳的資料點(上傳資料點時,在 HTTP 表頭帶有deviceKey或是透過MQTT協定發布資料)才會觸發動作。使用者透過 MCS 網頁操作資料通道而產生的資料點,將不會觸發。

 

觸發動作詳細介紹

設定手機推播

若使用者有多個手機裝置,MCS 能讓使用者設定,是否每隻手機裝置都要收到手機推播通知。使用者能於兩個地方設定:

 

  1. 個人檔案」頁面中,設定是否手機要收到全部來自 MCS 的推播通知。

  2. 測試裝置」頁面中,設定是否手機要收到來自特定測試裝置的推播通知。

 

在「個人檔案」頁面中,使用者可看到所有他有安裝 MCS 手機應用程式的手機列表。使用者可在此設定,是否每隻手機要收到或不收到全部來自 MCS 的推播通知。

圖6

 

「測試裝置」頁面中,展開「管理您的觸發動作」,使用者可看到所有他有安裝 MCS 手機應用程式的手機列表。使用者可在此設定,是否特定手機要收到或不收到特定測試裝置的推播通知。

圖7

 

設定 Webhook

要使用webhook觸發動作,使用者只需在設定觸發條件時,選擇webhook作為觸發動作,並且輸入欲收到此觸發通知的網址。當觸發條件成立時,MCS會發送一個HTTP 請求至使用者提供的網址。

圖8

 

當使用者選擇 webhook 觸發動作後,他可使用測試按鈕,測試是否通知有被送出。送出的資訊包含 裝置名稱、device ID及觸發值。

 

設定網頁警告

當使用者在觸發條件與動作中設定網頁警告時,也必須指定此警告的嚴重性等級。

圖9

 

當觸發條件成立,網頁警告訊息會立即出現在網頁上,並顯示嚴重性等級等資訊。網頁警告會出現在以下三個頁面:

 

1.資料通道卡片

當資料通道的數值符合觸發條件,該資料通道上便會出現網頁警告標籤。展開後可看到更詳細的觸發資訊,包括觸發條件名稱警告發生時間。在此範例中,資料點是在「2018-07-19 11:36」,上傳並觸發一個名叫「Water is too hot」的觸發條件。

 

當使用者點擊「解除」之後,這個警告則會被解除不會顯示在網頁上,直到下次使用者的裝置在上傳符合此觸發條件的資料點。

圖10

 

2.測試裝置列表

在測試裝置列表中,嚴重性最高的警告會顯示在測試裝置的卡片上。

 

以上面的範例來說,當測試裝置底下有兩個資料通道皆觸發了網頁警告,一個嚴重等級為「High」,另一個為「Medium」,那麼裝置卡片上的警告等級,會顯示「High」。當High的警告解除後(可能是使用者按下了「解除」按鈕,或重新上傳一個不符合觸發條件的資料點),則會顯示下一等級的警告「Medium」。

圖11

 

3.場景圖

在場景圖中,警告標籤的呈現方式與測試裝置列表ㄧ樣。

圖12

 

在通知內容中使用變數

MCS 預先定義了多個變數,讓使用者可在通知的名稱與內容欄位中使用,這些變數代表的是動作被觸發時,當下的真實數據。目前支援的變數包含有:

  • ${deviceId}:設備的 ID
  • ${deviceName}:設備的名稱
  • ${value}:資料通道的數值
圖14

 

舉例來說,使用者可將Email的內容設定成:

目前 ${deviceName} 的溫度是 ${value}.

當通知寄發給使用者時,其中的變數會被置換成當前的真實數據,例如:

目前 我的客廳 的溫度是 30.

以上就是MCS新功能「觸發條件與動作」的教學,盼望透過這篇教學文,使讀者們未來建構物聯網應用時,可以更加得心應手。

 

相關文章

[Micro:bit] 一次學Micro:bit就有概念!?是的,請看這一篇(二)

本文沿續上一篇「一次學Micro:bit就有概念!?是的,請看這一篇(一)」,主要講述以下三個專題:電子蠟燭、電子風扇及自動門。第一個專題著重在麥克風感測器的使用;後兩個專題則是馬達的應用。

作者/攝影

陳怡璇

文章分類教學技術文
時間10mins
成本
難度*(1~10)
材料表

第一題:電子蠟燭

任務一

Step1:

圖1

 

Step2:

圖2

 

Step3:

圖3

 

 

任務二

Step1:

圖4

 

Step2:

圖5

 

 

第二題:電子風扇

任務一

Step1:

圖6

 

Step2:

圖7

 

Step3:

圖8

 

 

任務二

Step1:

圖9

 

Step2:

圖10

 

 

第三題:自動門

Step1:

圖11

 

Step2:

圖12

 

Step3:

同電子蠟燭第一步(圖1)

 

Step4:

圖13

 

 

完成以後,可以試著加上分配模組(split),讓二個輸出配合在一起,也就是以一個輸入同時控制兩個輸出。例如,可以用LED和馬達組合在一起,並搭配上旋鈕。

 

相關文章

 

[翻譯] 2018.08.02-根據MakeCode Team,新版micro:bit編輯器將有6大新功能! !

原文作者

MakeCode team

紀錄攝影

MakeCode team

翻譯宗諭訪問地點
訪問時間

原文刊登日期:2018年7月23日

前言

MakeCode團隊近來持續不斷努力,爲要完成micro:bit編輯器的更新。讀者們可在這裡https://makecode.microbit.org/beta ,進行事先預覽。

 

micro:bit編輯器的更新,目前仍在Beta版階段,並且只包括增加在現有程式上的改變及調整,目的是不影響或破壞任何使用者的既有程式。所以,當發佈更新時,我們仍會為還沒有準備好使用新版本的使用者,繼續支援先前的版本。

 

我們希望讀者們試試看Beta版,並讓我們知道您的想法!若您發現任何問題,請將問題記入GitHub:https://github.com/Microsoft/pxt-microbit/issues

 

此外,若讀者們有任何評論、建議及回饋,請參與團隊溝通平台Slack上的micro:bit社群: https://tech.microbit.org/get-involved/where-to-find/

 

新功能

現在,就讓我們介紹一些新功能:

1.首頁(Home Page):我們一直想藉由創造一套手把手、步驟接步驟的教學文件,以及在網路上更容易搜尋到的範例,讓開始使用micro:bit編輯器的經驗更加直覺化。所以,我們移除了先前在「project」選單中的所有內容,並把這些內容放在新的首頁中,以網頁照片藝廊的方式呈現。

圖1 micro:bit編輯器新的首頁

 

若您想要略過首頁,您可直接進入編輯器,網址:https://makecode.microbit.org/beta#editor (小提醒:只要在首頁的網址後面,加上#editor即可)。

 

2.更新指令積木的使用者介面:也許您已經注意到,我們的指令積木看起有點不一樣了!沒錯,為了與我們團隊所維運的其它編輯器一致,我們把使用者介面,從Blockly的介面更新成新的Scratch積木使用者介面(實際上,新的Scratch積木使用者介面是Blockly和Scratch的組合)。新的使用者介面有一些很讚的更新,特別是:

 

  • 指令積木變大了!讓觸控式螢幕裝置的使用者,更容易以手指拖拉積木。同時,他們運用積木的空間也更有效率。
圖2 新版
圖3 舊版

 

 

 

 

 

 

 

 

 

 

 

 

  • 不同的資料類型以不同的積木形狀呈現:特別是布林值的資料類型,以六角型呈現,而數字和字串則以圓形呈現。
圖4 不同資料型態以不同形狀的積木呈現

 

  • 對於在哪個位置,指令積木可組合在一起,有更清楚的指示。另外,增加了一個明顯的「卡入到位」動作。
圖5 對於積木的組合,有更清楚指示。

 

3.小齒輪,安息吧!:您可能隨著If Then Else積木使用小齒輪,以增加額外的條件。但小齒輪卻是個尷尬的介面,因為大多數人都不知道該如何使用。所以,當使用者想要增加或移除條件時,我們採用更直覺、在指令積木上的「+」、「-」圖標,取代了原本的小齒輪。

圖6 原本用來增加額外條件的小齒輪

 

圖7 現在以積木上「+」、「-」圖標代替。

 

4.創造變數:根據使用者的回饋,我們試著讓創造變數的過程更加清楚。現在,您將明確地點擊「變數指令區」中的「Make a Variable……」按鈕,以創造一個新的變數,並爲這個變數命名。然後,這個變數會與變數指令區中的其它積木建立關聯。

圖8 創造變數的過程更清楚

 

5.廣播積木(Radio blocks):我們針對一些廣播API做了小小的改變,好讓它們使用起來更簡單。大部分人不會注意到這些改變,但若您是位進階的廣播功能使用者,您也許會注意到,我們已重新安排廣播封包被接收的方式。功能都還在,但透過一次性使用的積木,讓廣播功能更加明確。

 

6.浮點:這大概是本次更新最大的改變。所有的數學老師們,準備揚聲歡呼吧!新版的編輯器支援浮點數運算,這可是使用者們的大力要求呢!因為之前的版本只支援整數,但現在3/2真的等於1.5,而不是產生出整數1。

圖9 新版的micro:bit編輯器支援浮點數運算

 

小提醒:關於搬遷專案

在此,我們提醒每位使用者,您在新的Beta版編輯器創作的程式,在舊版編輯器中將無法使用。然而,當您首次造訪新的Beta版編輯器,您在舊版編輯器中創作的專案,將被自動拷貝至新的Beta版編輯器,讓您可繼續工作。然而,經過這次搬遷後,若您回到舊版編輯器,您之前的專案仍存在。但若您在舊版編輯器中修改這些專案,它們將不會被自動拷貝至新的Beta版編輯器。換句話說,自動搬遷是個一次性的過程,只發生在您首次造訪新的Beta版編輯器。之後,您的舊專案和新專案將各自獨立。

圖10

 

聽起來好像有點饒口,總之,祝大家使用愉快!

 

備註:中文翻譯圖文經MakeCode團隊授權,特此致謝!原文請見:https://makecode.com/blog/microbit/v1-beta

 

相關文章