Category Archives: 物聯網

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

LED燈示意圖

關於這套Boson Starter Kit for Micro:bit,先前已有開箱文介紹,當然對某些讀者而言還想要多瞭解可以如何使用,以及可做出什麼成果。為此,小編推出一系列使用心得文,並同時補充使用者手冊裡的圖文內容,方便讀者操作。

作者/攝影

陳怡璇

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

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

  • Micro:bit BOSON擴充板

  • BOSON 發光二極體(Ultra-BrightLED)

  • BOSON 旋鈕(Rotation Sensor)

  • BOSON 藍色無段按鈕(Blue Push Button)

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

在手冊內的前三章,介紹了Micro:bit的硬體配置和使用方式,以下就第三章的題目,補上圖片說明,讓整個步驟更清楚。

第一題:神秘的Micro:bit(專案一)

Step1

圖1 開啟一個新專案

 

Step2

圖2 找到基本積木櫃內的「顯示LEDs」

 

Step3

圖3 在基本積木櫃內找到「當啟動時」

 

Step4Step5

圖4 在一開始時顯示愛心圖

 

練習看看:

把Step3的開始換成重複無限多次,這樣才能夠一直轉換。然後在原本的愛心下面再放入一個顯示的積木,點出自己想要的圖案。這裡要注意的是,顯示的積木下面都要再加入一個暫停(也在基本積木櫃內),這樣才不會在兩個圖片轉換時只能看到殘影。

圖5 愛心與菱形每秒變換

 

 

第二題: 閃爍的LED燈

Step1

圖6 找到進階->引腳

 

Step2Step3

圖7 P1引腳閃爍間隔一秒

 

 

練習看看:

SOS訊號裡,S的訊號是三次短燈號,O是三次長燈號。所以,我們可依照前面閃爍燈的積木,改成SOS訊號燈,不過因它是重複三次後要換另一個訊號燈,所以要先在迴圈積木櫃內找到重複4次(如圖8)。然後改裝成圖9的樣子。這裡要注意的是,S跟O的訊號中間要再加上一個暫停,暫停的時間就是S跟O的時間差,這樣訊號變化時才會很清楚。

圖8 找到迴圈積木櫃內的重複4次

 

圖9 (SOS)

 

第三題:通知燈

Step1:同閃爍的LED燈的Step2。

Step2

圖10 找到「等號」

 

圖11

 

Step3

圖12

 

圖13

 

 

程式積木完成並燒錄至Micro:bit之後,我們可以透過一些素材,例如樂高積木、壓克力板、厚紙板⋯⋯等等,使成品更像檯燈。盡情發揮您的創意吧!

相關文章

[ 教學文 ] 深度剖析:如何在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 界面。

 

相關文章

[教學文] 係金ㄝ !!不需3D列印外觀元件,也能製作的機械生物——OTTO Like

原本,筆者將此作品命名為「果凍步兵」,但命名後,總感覺已跳脫原始設定的框架,於是便改為前輩Bridan Wang大哥所稱的「OTTO Like」吧!也透過此命名,向Otto開源者Camilo Parra Palacio表達無限敬意!

作者/攝影

機甲人形師 林益成

文章分類教學技術文
時間

成本
難度
材料表
  • Arduino nano X 1組

  • Nano多用擴展板 X 1 組

  • 伺服馬達SG90 X 4 顆

  • 開關(有段)X 1 顆

  • 塑膠罐 X 1 個

  • 塑膠(木)板 X 2 片

  • L型機構件X 2 片

製作緣起

2017年偶然在網路上看見Otto機器人,心中十分喜愛,但因當時手邊並無3D列印機,因此無法列印自造⋯⋯(遺憾啊啊啊……)。

 

在入手3D列印機後的某一天,想起了這過往的殘念,因此在Thingiverse網站取得開源資料後,迫不及待地列印、組裝,同時也下載製作了同類型、貌似青蛙的 arduped。當時,為讓Otto和arduped二者看起來更協調,因此筆者硬是改掉了Otto的腳部。以下是它們共舞的影片:

 

之後,因爲花在3D列印上的時間過長,並且希望外觀上能有更高的自由度,筆者開始試以生活周遭方便取得的物品進行製作。以下是首次試作作品的影片:

 

筆者個人一個很大的願望,是讓沒有3D列印機的朋友們,也能享受自造類Otto機器人的樂趣。因此,透過本文將個人研究成果與讀者們分享,也期待有一天能看見大家製作出更多作品。

 

製作過程

一、本體製作

Step1:開鑿相關機構孔位

圖1

 

Step2:組裝伺服馬達及電源開關

圖2

 

二、腿部製作:

Step3:將伺服馬達擺臂固定於L型機構件(需製作二組)

圖3

 

三、腳掌製作:

Step4:將伺服馬達黏著固定於塑膠板上

圖4

 

四、腿部安裝:

請參考圖5

圖5

 

五、腳掌安裝:

請參考圖6

圖6

 

六、完成Arduino程式燒錄及配線

七、素體完成

圖7

 

八、請讀者們發揮豐富的想像力,以泡棉、瓦楞紙等素材,為Otto like自造出獨一無二的外型吧!

 

相關作品

因考量後續作品會參與某些公開展示的活動,考量到強度及保存,故使用3D列印製作外型零件。目前筆者製作了三架以日系妖怪為主題的Otto like:

 

1.化貍-文福茶鍋

圖8

 

2.河童

圖9

 

3.天狗

圖10

 

目前排定參展的活動:

  • 10/19-21 TIRT全能機器人國際邀請賽暨桃園觀光工廠創客嘉年華

  • 11/2-4 Maker Faire Taipei 2018

 

屆時歡迎讀者們蒞臨展攤「機甲人形師的覓星工坊」,也歡迎至我個人的FB粉絲專頁交流:https://www.facebook.com/lyclovetyc/。而因我過去製作機器生物,有使用過ROSA系統,若讀者想更多了解這個系統,請參考:https://4rdp.blogspot.com/2017/09/rosa-38-robot-like-otto.html?m=1,謝謝。

 

備註:根據小編與作者機甲人形師林益成討論後,他表示,因近來比較忙碌,暫時抽不出時間寫給LinkIt 7697的Otto程式,所以先以Arduino測試。但未來不排除寫給LinkIt 7697的Otto程式,請讀者們靜待好消息囉!若想購買相關的開發板,請點這裡

 

相關文章

[介紹文]想認識馬達驅動板Robot Shield?先看這一篇——Wall-E輪型機器人

作者/攝影

Wall-E機器人作者:MiniPlan

文字整理:CAVEDU 宗諭 (感謝作者授權,特此致謝。)

圖片:MiniPlan

文章分類介紹文
時間

成本
難度

Robot Shield是一塊「馬達驅動板」,是由開發MiniPlan與TinyPlan的承田科技所設計開發。當它搭配聯發科技的LinkIt 7697開發板後,使用者不需操心線路如何對接,以及電池⋯⋯等問題,成為一套完備、可直接運用的控制單元,讓使用者輕鬆製作各類應用。

 

Robot Shield的設計延伸自TinyPlan V400的設計,尺寸和螺絲孔位置皆與TinyPlan一樣,所以,硬體部份可直接套用至TinyPlan相關應用的作品上。

圖1 Robot Shield馬達控制板

 

說起應用,其實LinkIt 7697搭配Robot Shield的應用範圍相當廣,例如,動力車、輪型機器人,或是之前曾專文介紹的Codibot蜜蜂機器人,以及機械手臂⋯⋯等等。

圖2 Codibot

 

因此,我們將透過幾篇文章,向讀者介紹LinkIt 7697搭配Robot Shield的一些應用,幫助大家更了解Robot Shield,甚至能開發出屬於自己的應用。那就讓我們開始吧!本文的主角是MiniPlan的Wall-E輪型機器人。

 

首先,請大家先看一下MiniPlan完整的介紹影片:

 

開發理念

Wall-E機器人改裝自TAMIYA Cam-Program Robot,因TAMIYA出品的這款機器人在中間處留有空間,可讓機器人愛好者放置電路板展開二次創作。

圖3 有著一雙大眼睛的Wall-E機器人

 

元件介紹

在此需注意的是:

  1. MiniPlan預備了三顆SG90 Servo,原本SG90 Servo的電線標準長度大約是26cm,但作者先把它們剪短至13cm。
  2. 作為Wall-E機器人雙眼的是HC-SR04P超音波感測器。超音波感測器原本採用杜邦端子頭,但MiniPlan為節省空間,先將電線焊上感測器,並在電線尾端保留杜邦端子。
  3. 控制板部分就是使用LinkIt 7697搭配Robot Shield。
圖4 Wall-E機器人的各式元件

 

元件組裝

Wall-E機器人的身體、兩隻手臂及頭部,都是透過3D列印而成。以下簡單介紹組裝重點:

  1. 底盤:基本上,按照TAMIYA Cam-Program Robot的說明書組裝即可。
  2. 身體:下方會擺放三顆SG90 Servo,分別驅動頭部及兩個肩膀。需注意的是,SG90的方向必須擺放正確,否則電線會被卡住。
  3. 頭部:將頭部組裝好後,可能會發現HC-SR04P超音波感測器會些許晃動。對此,MiniPlan建議可透過上膠將其固定,但這個方式並非必要。
  4. 手臂:手部的螺絲不需鎖太緊,免得支架斷裂。手臂部分的螺絲亦同,讓手臂有伸縮的空間。
  5. 控制板:在控制板組裝上底盤後,可先運用手機上的LinkIt Remote app,測試看看Wall-E機器人是否如我們所預計地活動。
  6. 肩膀:安裝時,記得取45度角的位置。在兩個肩膀安裝完成後,記得透過LinkIt Remote再次進行機電測試,Wall-E機器人各部件運作是否良好。

 

以下是Wall-E機器人頭頸部、身體、肩膀手臂的設計圖:

圖5 頭頸部設計圖

 

圖6 身體設計圖

 

圖7 肩膀手臂設計圖

 

完成組裝後,最後就是用手機上的LinkIt Remote進行測試,可測試部分包括:前進、後退、左轉、右轉、頭部轉動、肩膀手臂轉動及超音波感測器效能。以下是MiniPlan所設計LinkIt Remote的程式檔:https://github.com/GeorgeChiou/Robot-Shield-V1.0/tree/master/Linkit7697_RobotShieldV1_WallE_V100,讀者可以自行下載。

 

但若讀者希望Wall-E機器人產生出更多動作,可自行撰寫更多動作的程式碼。

圖8

 

結語

本文主旨在於介紹Wall-E機器人,若讀者想進一步了解,如何完整組裝並操控Wall-E機器人,請上網:https://www.thingiverse.com/thing:2605324,或至Miniplan-Robotfun臉書粉絲專頁詢問,謝謝。

 

CAVEDU教育團隊將會繼續介紹更多Robot Shield的應用,請讀者持續關注,謝謝。若欲購相關開發板,請點這裡

 

相關文章

[新品開箱]為何非「掌中雷霆QBoat Sunny」不可呢?六大特點、五大原因一次帶您看

  是否有心想嘗試IoT領域,卻又十分擔心費用龐大?

不必擔心,QNAP近期推出的QBoat Sunny是一款極輕量化IoT微型伺服器,

能幫您省下在網路頻寬及雲端運算上相當可觀的費用!

以下這篇開箱文,將帶您深入了解QBoat Sunny在硬體、軟體上的特點,

以及為何非QBoat Sunny不可的五大理由。

作者/攝影

撰寫:宗諭

攝影:怡婷

文章分類開箱文
時間

成本
難度

  QNAP的QBoat Sunny自上市以來,就廣受各方關注,因為這款單板IoT微型伺服器,板身大小僅12公分;同時,QBoat Sunny提供輕量級虛擬化軟體容器Container Station及QIoT Suite Lite 物聯網開發套件服務,協助使用者輕易管理所有的 IoT 應用、裝置和資料,將QBoat Sunny 的高效能引進各種物聯網應用情境。

 

QBoat Sunny六大特點:

  • QBoat Sunny支援2260及2280規格的2 M key SATA SSD,讓您彈性選擇儲存裝置容量,並讓部署QBoat Sunny更簡單。在一般的開發板上,例如Raspberry Pi或Arduino,很少見到這樣的方式進行存儲,這是屬於NAS等級的存儲管理。

圖 1

 

圖2 支援2260及2280規格的 M.2 M key SATA SSD

 

  • QBoat Sunny具備USB 3.1 Gen 1連接埠及M.2 A key插槽,可使用各種 USB Dongle或2230規格的M.2擴充卡,讓使用者新增多種無線連接能力,串接更多物聯網裝置。

圖3 QBoat Sunny具備USB 3.1 Gen 1連接埠及M.2 A key插槽

 

圖4 QBoat Sunny有著相當強的連線能力,一般開發板無法比擬。

 

  • QBoat Sunny採用效能強勁的 AL-314 四核心處理器 (搭載 2GB 記憶體),具備多樣化軟硬體擴充功能,可以讓使用者自由搭配運用各種物聯網裝置及應用程式,適合用作霧運算或邊際運算伺服器。QNAP出品的部分NAS也是採用這顆CPU,其I/O能力算是相當好,足夠進行規則引擎的運算。

圖5 QBoat Sunny採用效能強勁的 AL-314 四核心處理器(搭載 2GB 記憶體)

 

  • QTS Lite作業系統的App Center提供了多種開發者工具,讓使用者可以快速地打造順暢、高效IoT工作環境。

圖6 App Center提供了多種開發者工具

 

  • Container Station 輕量級虛擬化平台能讓使用者以 Docker 輕鬆建構個人專屬的物聯網應用,只需最少時間,就可讓使用者的物聯網系統上線匯流,並集中管理及運用資訊。

圖7 Container Station 輕量級虛擬化平台

 

  • QIoT Suite Lite 是 QNAP 的物聯網開發套件,以熱門的開源套件 Node-RED 及 Freeboard 為基礎,並提供多樣化的實用模組讓使用者立即採用,加速開發與服務流程,讓使用者迅速建構理想的IoT情境。

圖8 QNAP 的物聯網開發套件——QIoT Suite Lite

 

外觀介紹

  打開QBoat Sunny的外箱,裡面很直接明瞭就是這塊單板的IoT微型伺服器。另外,還附有簡易的螺絲、工具及說明書,只要經過簡單組裝,就可以開始使用QBoat Sunny。

圖9 QBoat Sunny外箱

 

圖10 QBoat Sunny

 

  在板子的四角處,以四顆螺絲釘固定在一個銀色、鐵製的基座上,這個基座兩旁還向柵欄一樣豎立起來,主要目的是要保護QBoat Sunny,幫助散熱,並使它在運作上可以更加穩定。

圖11 QBoat Sunny的散熱基座

 

  首先仔細觀察一下這塊開發板,可以看到它採用的Annapurna Labs AL-314處理器,搭載2GB的記憶體,且有兩條M.2 SATA SSD 2260/2280插槽。

 

  QBoat Sunny具備3個Gigabit網路RJ45連接埠。在RJ45旁邊,有兩個USB 3.1 Gen 1 Type A連接埠,還有1條M.2 2230插槽供無線模組擴充使用。而在板子的另外一邊,則有一個紅色與一個綠色的插口,負責Audio in 與 Audio out的功能。

圖12 QBoat Sunny的音效插口

 

QBoat Sunny硬體規格:

  • 處理器——Annapurna Labs AL-314 quad core

    ARM Cortex-15 processor up to 1.7 GHz

  • 系統記憶體——2GB DDR3L

  • 儲存空間——512MB NAND flash, 2x M.2 2260/2280 SATA slots for SSDs (Key M)

  • 聯網設施——3x Gigabit Ethernet

  • USB – 2x USB 3.1 Gen1 ports

  • 音訊輸入/輸出插口——5mm audio out, 3.5mm audio in

  • 擴充設備

  • 1x M.2 Key A 2230 for Wi-Fi/藍芽

  • 40-pin連接器,針對 I2C, UART, SPI, SDIO, GPIO

  • 電源——12V/3A

  • 尺寸——144 x 126 x 33.5公釐 (加上散熱器底座)

  • 重量—— 490公克

  • 適合運作環境——0 to 35˚C, 5 to 95%, 非冷凝, 濕球溫度: 27˚C

圖13 QBoat Sunny硬體效能強悍

 

為何QBoat Sunny廣受市場期待?

  主要是因為,QBoat Sunny可連結多樣化的IoT開發板、裝置及應用,同時,可以作為小型/私有IoT應用的伺服器,以及大型/公共IoT環境進行霧運算(Fog computing)的節點或閘道。總之,這款高效能的IoT微型伺服器可以幫使用者省下可觀的頻寬及雲端運算的費用,同時能夠在多種情境下使用。

圖14 高效能的QBoat Sunny足以幫使用者省下可觀的預算

 

QBoat Sunny應用程式開箱

  按照使用說明書的步驟,將QBoat Sunny接上電源、路由器,同時在您的電腦上下載Qfinder Pro這個程式(適用windows、Mac、Linux),就可以進行登入,然後遠端使用QBoat Sunny。

 

  讓我們一起來看看QBoat Sunny所提供的服務。開發板上預載了QNAP開發的作業系統QTS Lite,這套作業系統匯聚了QNAP多年來在軟體開發上的精華,特別為IoT打造的作業系統。在QTS Lite桌面上有9 個圖標,接下來幫大家簡單介紹:

圖15 QTS Lite桌面

 

1.控制台:

  點入之後,主要可以看到系統的各種狀態,幫助您了解這台QBoat Sunny運作的情形。同時,可以在「權限」部分,設定不同使用者的登入與使用權限。

圖16 控制台內的各種功能

 

2.File Station檔案總管:

  進入後,可以看到主機內所有檔案存放的情形,還可以遠端掛載雲端硬碟。

圖17 透過檔案總管,管理所有檔案。

 

3.myQNAPcloud雲服務:

  可透過這項服務,一步步將QBoat Sunny設定成為一個私有雲,並可以在此頁面上遠端管理多台裝置。若您沒有將IoT裝置連上一些大型的cloud service,便可透過此程式遠端管理。

圖18 可在此設定私有雲服務

 

4.幫助中心:

  顧名思義,就是在使用QBoat Sunny碰到困難時,可以尋得幫助的地方。除了文字說明外,還可以在此搜尋到許多網路上的資源,更有支援平台,讓QNAP支援團隊透過「幫助中心」,解決使用者的問題。

圖19 需要支援嗎?來幫助中心就對了!

 

5.App Center:

  可在這裡下載一些額外功能的程式,或是幫已安裝程式下載更新檔。App Center內已經有一些開發平台程式,例如Node.js、Perl、Python,可以讓IoT Maker大展長才、玩得淋漓盡致!

圖20 這裡有一些可用程式提供下載

 

6.QTS SSL Certificate、CloudLink雲聯通:

  這兩個應用程式主要都是與前面介紹過的「myQNAPcloud雲服務」一起配合,讓私有雲的建構更加完備、完善。

 

7.Container Station:

  是這款QBoat Sunny主打的功能之一,若您已有運作中IoT環境,可以透過這款虛擬容器軟體,很容易就可以將現有軟體套件轉移到QBoat Sunny。

圖21 方便易用的虛擬容器軟體

 

8.QIoT Suite Lite:

  亦是QBoat Sunny主打的應用之一。使用前必須再輸入帳號/密碼登入,登入之後可以看出是一個整合介面,可以用來管理IoT應用、IoT裝置,以及裝置的種類,還有使用者。初步看起來是十分淺顯易上手,好操作、使用。同時還有「快速設定精靈(Quick Setup Wizard)」可以幫助使用者。

圖22 QIoT Suite Lite的介面完整且容易操作

 

結論:必敗QBoat Sunny的5大原因

  1. 機身輕薄靈巧、效能強大。

  2. 軟硬介面容易操作,好上手。

  3. 應用程式功能完整,且可持續擴充。

  4. 雲端應用程式方便使用,輕鬆建立私有雲。

  5. IoT應用程式整合完整,容易建立物聯網裝置;若有現成物聯網裝置,也可透過虛擬容器,輕鬆匯入。

 

  若讀者們想更深入了解QBoat Sunny及QIoT Suite Lite,歡迎收看以下影片:

 

相關文章

[ 教學文 ]你好,我會走路、唱歌跳舞跟偵測障礙物喔!——一起動手做超級卡哇伊的機器人OTTO97(下)

作者/攝影

文圖轉載自MediaTek Lab官方網站 ,感謝聯發科技創意實驗室授權,特此致謝。而OTTO97(OTTO for LinkIt 7697)為衍生自 OTTO DIYOffical Site / Github / Thingiverse)的專案。

文章分類教學技術文
時間

成本
難度
材料表
  • Robot Shield V1*1

  • LinkIt 7697*1

  • MicroUSB x2

  • Tower Pro SG90 伺服馬達(Micro Servo 9gx4(附轉軸支架以及二長一短的螺絲)

  • HC-SR04P超音波感應器,工作電壓範圍3V~5.5Vx1

  • MAX7219 8×8 矩陣式 LED顯示模組 x1(選配)

  • 被動式(有源)蜂鳴器 x1,工作電壓範圍3V~5V(選配)

  • 3D 列印出機器人各部位零件(頭、身體、腿 x2、腳底板 x2

  接續上一篇:[教學文]你好,我會走路、唱歌跳舞跟偵測障礙物喔!——一起動手做超級卡哇伊的機器人OTTO97(上) ,讓我們繼續製作OTTO97機器人,一起來看接下來的步驟。

 

Step8:組裝左腿(連接擴充板 P15

(1)打開 SG90 伺服馬達套件,會看見一顆伺服馬達、三支轉軸支架(旋臂),以及二長一短的螺絲。在此專案中,僅會用到最短的轉軸支架。

圖8-1

 

(2)用兩隻長螺絲將伺服馬達鎖至OTTO身體的左腳位置。

圖8-2

 

(3)將伺服馬達接線至擴充板的P15,並將手機上的LinkIt Remote APP連結至LinkIt 7697。開啟校正測試UI後,點選Stiff按鈕使伺服馬達回到初始位置,亦即OTTO直立的狀態。

圖8-3

 

(4)OTTO兩隻的零件是相同的(但腳底板左右有分),因此可任意選擇進行組裝。

圖8-4

 

(5)將轉軸支架切短以放入左腿的卡榫溝槽(如圖8-5),並確認與伺服馬達的連接面需平整 (如圖8-6)。不平整的馬達接觸面將導致OTTO無法直線行走。

圖8-5

 

圖8-6

 

(6)以面朝正面的方向(如圖8-7),將左腿連接至OTTO的身體。由於齒輪齒紋的關係,腿部不見得能精準對準身體正面,這可於之後的步驟透過校正測試 APP做修正。

圖8-7

 

(7)用短螺絲將腿上的轉軸支架與身體上的伺服馬達鎖緊,若沒有確實鎖緊會導致OTTO無法順利直線行走。

圖8-8

 

Step9:組裝右腿 P16

(1)採用與組裝左腿相同的步驟完成右腿組裝,並將伺服馬達連接至擴充板的P16 接腳

(2)開啟LinkIt Remote的校正介面進行腿部位置調整,使雙腿的初始方向平行於身體的面向 (如圖9-1)。校正完成後,務必按下Save按鈕儲存相關設定值供之後使用。

圖9-1

 

 

圖9-2

 

Step10:組裝左腳底板(P5LF

(1)將伺服馬達的電線穿過左腿及身體的開孔後連接至Robot ShieldP5

圖10-1

 

(2)選擇校正介面中的Stiff ,將伺服馬達轉軸置於初始位置。

圖10-2

 

(3)切割馬達轉軸支架(懸臂),使它能放進左腳底板零件的卡榫溝槽。

圖10-3

 

(4)用短螺絲將伺服馬達鎖緊固定於腳底板上。

圖10-4

 

(5)整理並反折馬達的線,好將馬達放入左腿的機構中。

圖10-5

 

圖10-6

 

(6)用長螺絲鎖緊固定馬達和左腿(注意正反面,下圖為OTTO的背面)。

圖10-7

 

Step11:組裝右腳底板(P11: RF)

(1)依照與組裝左腳底板相同的步驟,完成右腳底板的組裝,並連接伺服馬達至擴充板的P11

(2)使用校正APP調整腳底板的角度,使它們能平穩站在地面上(如圖11)。

(3)矯正完畢後,務必點選Save儲存相關設定值。

圖11

 

Step12:將Robot Shield裝進OTTO身體內

(1)為留下安裝LED模組的空間,將Robot Shield放進OTTO身體時,盡量將腿部相關走線整理至後方(如圖12-1中,綠色箭頭所指方向)。

圖12-1

 

(2)調整Robot Shield位置,使開發板相關接口能對齊OTTO身上預先開好的孔位。

圖12-2

 

(3)使用Robot Shield附贈的螺絲,將板子固定在OTTO身體機構中。

圖12-3

 

Step13:安裝超音波感應器、蜂鳴器及8×8矩陣式LED

(1)接下來的組裝步驟,會依照圖13-1的接線方法,分別將之前測試過的超音波感應器、蜂鳴器及8×8矩陣式LED,連接回Robot Shield。

圖13-1

 

(2)將蜂鳴器面朝下安裝至OTTO身體中預留的蜂鳴器位置,並將接線接回Robot Shield

圖13-2

 

(3)將超音波感應器模組安裝至OTTO的頭部內(可用銼刀修整眼睛開口邊緣,以方便安裝),並將接線接回至Robot Shield(注意Trig/Echo接線的位置)。

圖13-3

 

(4)將8×8矩陣式LED模組接線回Robot Shield,並以膠帶或其它絕緣物包覆LED模組背面,以避免接觸Robot Shield造成短路。

圖13-4

 

(5)放置LED模組於OTTO身體正面位置(如圖13-5箭頭所指)。

圖13-5

 

(6)最後將頭部身體組合起來,就完成了OTTO的組裝。

圖13-6

 

Step14:執行Demo App

(1)在Arduino IDE中開啟OTTO_Demo.ino範例,並上傳至LinkIt 7697執行。

(2)開啟LinkIt Remote APP並連接至OTTO,從LinkIt 7697載入UI後,會看見如圖14-1的控制介面:

圖14-1

 

  接下來就可開始嘗試OTTO各式各樣的動作了!

  閱讀完了全文,讀者們是否很想趕快動手組裝一台OTTO97機器人呢?若讀者們想購買LinkIt7697 + Robot shield等相關開發板,歡迎前往機器人王國挑選,謝謝。

 

相關文章

[ Micro:bit]進擊的BOSON+Micro:bit! 如何用BOSON電子積木,讓Micro:bit與燈條同時閃亮亮??

  之前的文章,我們動手玩創意音樂盒,以及閃亮亮的皇冠。過程中,我們使用了BOSON主控板提供電源。但若我們將主控板換成Micro:bit會怎麼樣呢?會不會使整個作品有更多的變化?就讓我們一起動手玩玩看吧!

作者/攝影

陳怡璇

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

  在之前的文章[Micro:bit] 使用BOSON電子積木控制燈條閃爍,有跟大家分享如何控制燈條閃爍。這一次,我們來增加一些變化,要比較方便地看它測量出來的數值,所以我們要進行以下幾個步驟:

 

Step1:先下載PuTTY這個軟體。請至這裡下載:PuTTY 。下載完之後,打開PuTTY,並按照圖1設定好數值。

圖1

 

  將紅色框框內的數值輸入好後,按下Save,這樣之後要使用時,按下Load便可以了。這邊要注意的是,Serial line的輸入內容,要至電腦控制台內的「裝置管理員」,去查看連接埠是多少。

 

Step2:接下來在Micro:bit的P0引腳接上傾斜感測器。我們在使用一個感測器前,都要先檢測它輸出的數值,藉此判斷它到底是屬於類比或數位訊號。比方說,按鈕的輸出只會有0與1的差別,因此屬於數位訊號;然而,光敏電阻屬於類比訊號,它的輸出則會有0至1023的變化。

 

  接上後,我們將數值讀出。在基本程式櫃裡找到「重複無限次」積木;在序列程式櫃裡找到「寫入文字」積木;在文字程式櫃裡找到「字串組合」積木,在引腳程式櫃裡找到「類比訊號讀取」積木,並將引腳改成P0。讀者們可依自己喜好更改引腳,然後參考圖2把這些程式方塊組合起來。

圖2

 

Step3:接下來,我們要把燈條也接上,請大家參考圖3。

圖3

 

  接好燈條後,我們要設定使傾斜感測器控制燈條的程式。從邏輯程式櫃裡取出「如果-那麼-否則」積木、「0=0」積木;從引腳程式櫃裡取出「數位信號讀取數位信號寫入」積木。更詳細內容可參考前一篇文章[Micro:bit] 使用BOSON電子積木控制燈條閃爍。將積木組合好後會呈現圖4的樣貌。

圖4

 

  至目前為止,都是上一篇文章就有教過的內容。但這次我們要進行一些改變。因為Micro:bit板子上面本身就有LED矩陣,我們是否可在燈條開關時,也同時改變Micro:bit上LED的狀態呢?一起來看看!

 

Step4:從基本積木櫃裡取出「顯示 圖示」積木,詳細的設定方式,可參考圖5。透過這樣子設定,程式就會在燈條開關的同時,於Micro:bit上的LED矩陣顯示圖形。

圖5

 

  最後,我們將寫好的程式下載至Micro:bit,就可以看到程式顯示的成果了,就如圖6的樣子。這裡也可自己多嘗試使用不同的圖形,只要把基本程式櫃裡的「顯示 圖形」積木換成「顯示 LEDs」積木還可不光用程式內建好的圖形,更能自己畫出圖形呢!

圖6

 

  燈條跟Micro:bit一閃一閃會如何呈現?來看看影片:

 

相關文章

[教學文]你好,我會走路、唱歌跳舞跟偵測障礙物喔!——一起動手做超級卡哇伊的機器人OTTO97(上)

  OTTO97OTTO for LinkIt 7697是一個衍生自OTTODIY的機器人專案,利用 LinkIt 7697 及Robot Shield製作出有趣又古錐的雙足機器人。OTTO具備什麼能力呢?它能夠行走、跳舞、唱歌及偵測障礙物的能力,還能顯示嘴部的表情動畫呢!

作者/攝影

文圖轉載自MediaTek Lab官方網站 ,感謝聯發科技創意實驗室授權,特此致謝。而OTTO97(OTTO for LinkIt 7697)為衍生自 OTTO DIYOffical Site / Github / Thingiverse)的專案。

文章分類教學技術文
時間

成本
難度
材料表
  • Robot Shield V1*1

  • LinkIt 7697*1

  • MicroUSB x2

  • Tower Pro SG90 伺服馬達(Micro Servo 9gx4(附轉軸支架以及二長一短的螺絲)

  • HC-SR04P超音波感應器,工作電壓範圍3V~5.5Vx1

  • MAX7219 8×8 矩陣式 LED顯示模組 x1(選配)

  • 被動式(有源)蜂鳴器 x1,工作電壓範圍3V~5V(選配)

  • 3D 列印出機器人各部位零件(頭、身體、腿 x2、腳底板 x2

組裝前需具備的技能

  • 能使用Arduino IDE 進行 LinkIt 7697基本操作。

  • 了解如何使用LinkIt Remote應用程式連結LinkIt 7697。

  • 基本電路接線概念。

  • 基本焊接能力(若想替OTTO97加上嘴部動畫顯示)。

 

材料準備注意事項:

  準備材料表中的各項元件時,請確認使用的是寬工作電壓版本,以免進行後續步驟時,產生無法運作的狀況。

 

小提醒:

  • 超音波感測器的型號需為HC-SR04P(工作電壓範圍3V5.5V),而非只能支援5V電壓的HC-SR04。兩者在外觀上非常相近,需特別注意。
圖1-1

 

圖1-2

 

2. 被動式(有源)蜂鳴器需支援3V5V的工作電壓,請勿選擇僅能使用於5V電壓的版本。

 

需要準備哪些工具?

  • 智慧型手機(iOS/Android 皆可,用來執行伺服馬達校正及主控程式。)
  • 3D 印表機
  • 焊槍(非必要,但若要顯示嘴部動畫,則需要rework矩陣式LED模組以方便安裝。)
  • 快乾膠(非必要,可用來加強組裝強度。)

其他可幫助組裝的工具如下:

圖2

 

相關程式碼:

  可從 https://github.com/bearwbearw/OTTO97 取得 OTTO97 相關程式碼資訊:

目錄名稱說明
librariesOTTO 相關的函式庫
OTTO_Calibration測試與校正 OTTO 的 sketch 程式
OTTO_Demo控制 OTTO 基本動作的 sketch 程式
OTTO_UnitTest_Buzzer測試被動式蜂鳴器的 sketch 程式
OTTO_UnitTest_LEDMatrix測試 LED 顯示矩陣的 sketch 程式
OTTO_UnitTest_Servo測試伺服馬達的 sketch 程式
OTTO_UnitTest_Ultrasonic測試超音波感應器的 sketch 程式
3D_STLOTTO 零件的 3D 列印檔案

 

怎麼組裝OTTO97?

Step1:以3D 列印出 OTTO 本體零件。從 Thingiverse 下載所需3D檔案,此 3D 檔案基於 OTTODIY 專案修改而成,以適於LinkIt 7697 + Robot Shield使用,所有零件包含:頭、身體、腿 x2、左腳底板、右腳底板共六個元件。

圖3

 

Step2:下載並安裝 Arduino 相關函式庫及應用程式。從專案 GitHub 頁面下載相關函式庫和程式,並將其解壓縮至 Sketchbook 所在目錄。

圖4-1

 

圖4-2

 

圖4-3

 

Step3:啟動裝置校正測試程式。首先開啟Arduino IDE,選擇Step2中下載的OTTO_Clibration.ino範例並上傳至LinkIt 7697執行。之後,在手機上安裝並執行LinkIt Remote,開啟後就會看到名為「OTTO CAL」的裝置。最後,點選 「OTTO_CAL」 後,即可透過藍芽連接LinkIt 7697,並開啟裝置校正相關介面。

圖5-1

 

圖5-2

 

圖5-3

 

Step4:連接伺服馬達。(1)將LinkIt 7697接上Robot Shield,並確認安裝方向是否正確(開發板與擴充板的 USB 接頭應在同一側)。(2)透過USB線將LinkIt 7697連接至PC電腦。(3)透過USB線將Robot Shield連接至5V電源(亦可透過PC供電),保持電池充電。(4)如下圖,將四個伺服馬達連接至Robot Shield。(5)開啟Robot Shield的電源(以附圖方向為例,開關撥至左方為開啟)。

圖6-1

 

(6)按下校正程式中的「Walk」按鈕,確認是否四個伺服馬達都會動作。(7)按下「Home或「Stiff」按鈕使伺服馬達轉軸(懸臂)回到初始位置。

圖6-2

 

按鈕說明:

  • Home 按鈕:使伺服馬達轉軸停在初始位置(OTTO處於直立狀態),並鬆開馬達內部與轉軸之間的連結;此時可從外部施力任意轉動馬達轉軸。

  • Stiff 按鈕:使伺服馬達轉軸停在初始位置(OTTO處於直立狀態),且持續輸出PWM訊號保持馬達內部與轉軸間的接合。此時外部若有過大力道轉動轉軸,可能會損壞伺服馬達。

  • 組裝過程中,通常會讓伺服馬達處於「Stiff狀態」。

 

Step5:連接超音波感應器。(1)如下圖,利用尖嘴鉗等工具將感應器模組的排針彎曲 90 度(或將針腳靠在桌上,往旁邊施力即能彎曲整排針腳),避免後續組裝時卡到LED模組。

圖7-1

 

(2)將HC-SR04P連接至Robot ShieldP2P3

圖7-2

 

小提醒:

照上圖連接時,需特別注意超音波模組的正反面方向、以及 Trig / Echo 接腳位置,若連接錯誤可能造成模組發燙,需儘速拔除接線,以免元件損壞。

 

(3)點選 US 開關,將可在 Serial Monitor 看見感應器偵測到的距離。

圖7-3

 

圖7-4

 

小提醒:

  • HC-SR04(5V)和HC-SR04P(3V~5.5V)外觀非常相似,請務必確認購買的元件是HC-SR04P。

  • 由於Robot Shield的VCC電源來自內建的鋰電池,供電電壓範圍為7V至4.5V,因此無法驅動HC-SR04。HC-SR04 在電壓不足的狀況下,從Serial Monitor只會看見 999.00cm的偵測值。

 

Step6:連接被動式蜂鳴器(非必要步驟,但安裝後可讓OTTO具有唱歌的能力)。(1)將被動式蜂鳴器連接至Robot ShieldP4

圖8-1

 

(2)點選 BUZ 開關,將可聽見蜂鳴器發出聲音。

圖8-2

 

Step7:連接 8×8 矩陣式LED顯示模組(MAX7219(非必要步驟,但安裝後可顯示 OTTO 的嘴巴)。

(1)由於OTTO頭部內的空間限制,安裝顯示模組時,需rework將模組的排針移除,改由直接焊接杜邦線以節省空間。若是不熟悉焊接操作,可略過此步驟。(2)開始rework前,可先測試 8×8 矩陣式LED顯示模組是否能正常運作。如下圖所示,將顯示模組連接至擴充板的P7P8P9

圖9-1

 

(3)點選LED開關,應可看見8×8 矩陣式LED模組開始顯示不同的圖案。

圖9-2

 

(4)若上一步驟結果正常,即表示顯示模組功能無誤,接下來可進行rework(需使用焊接工具)。(5)將顯示模組的輸出針腳剪斷(如下圖左側)。(6)移除模組的輸入針腳,並從模組背面焊接五條杜邦線至對應的孔位。

圖9-3

 

(7)再次將8×8矩陣式LED顯示模組連接至 Robot Shield,並透過手機的校正測試APP,確認運作正常。

圖9-4

 

  此步驟完成後,即完成所有電子元件測試,接下來將進行零件組裝。在此前,請先將擴充板上的接線全部解開,之後的組裝步驟會再說明對應機構的接線方式。

  文章至此,讀者們是否更加期待親自完成一台OTTO97呢?考慮到文章的長度,接下來的步驟,我們將於下回分解,敬請期待。若讀者們想購買LinkIt7697 + Robot shield,歡迎前往機器人王國挑選,謝謝。

 

相關文章

[MCS雲端服務] 用Scene(場景)功能快速打造物聯網應用情境(一)

作者/攝影

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

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

  聯發科技雲沙堡(MEDIATEK Cloud Sandbox,以下簡稱MCS)是一個非常方便的雲端平台,使用者能在MCS上開發出各樣物聯網應用。

 

  然而,當使用者將產品透過 MCS 完成了 API 對接,以及測試驗證階段後,他們將面臨兩個選擇:(1)開始尋找其它公有雲方案,並針對產品應用架設自己的雲端平台;(2)尋找外包廠商開發終端業主的物聯網應用監控介面。至此,針對這個開發項目,使用者將短暫離開 MCS 平台,直至有下個產品開發及需求驗證。

 

  但因物聯網的監控頁面需做大量客製化,業主對使用者開發的介面進行不斷修改,因此使用者的開發時間從3個月增加至半年、8個月不等。好不容易終於耗時費力完成了一個業主的專案。接著,使用者回到 MCS 評估下個新產品,然後再次花費大把時間執行下個專案。

 

  所以,MCS的開發人員便開始思考,是否能針對不同垂直領域的物聯網應用場域,透過 MCS提供一站式使用體驗,進一步優化從完成產品驗證,至商業應用這段期間的開發流程,同時縮短開發時間?在與 MCS 的使用者(包含裝置開發商、系統整合商、模塊方案商等不同類型的使用族群)多次討論後,MCS開發人員決定開發「場景」(Scene)的功能。

 

  簡而言之,就是使用者可上傳一張物聯網場域的圖片,做為物聯網場景的監控背景頁面,接著再選擇已驗證完成的測試裝置或裝置,將不同裝置透過簡易拖拉(drag & drop)方式,將這些裝置定錨至場景圖上,以完成一個實際的物聯網遠端監控監控介面。此外,使用者還可將這些開發好的場景頁面,分享給內部管理者或終端業主,達成中、小型專案的商業應用。

圖1 透過三個步驟讓不同裝置呈現在場景圖內 | mcs.mediatek.com

 

建立一個魚塭監控頁面

  讓我們用一個智慧養殖漁業做例子。

Step1:先在場景頁面新增一個場景,並上傳該養殖池的實際照片,如下圖:

圖2 於場景列表新增場景 | mcs.mediatek.com

 

Step2:點擊下一步,會進入這個養殖池的場景編輯頁面。選擇點擊左側測試裝置裝置項目,下拉選單選取一個你在此 MCS 帳號中開發完成的測試裝置或裝置,加進此養殖池,並在這個裝置編輯頁面中:(1)重新命名此裝置在養殖池內的顯示名稱;(2)勾選裝置所有資料通道中欲顯示的關鍵資料通道,並決定關鍵資料通道從上至下的顯示順序;(3)選擇是否要顯示此裝置的圖片在卡片上方(圖片是在原型prototype開發過程中加入的)。

圖3 點擊左側裝置的「裝置」,進入編輯頁面 | mcs.mediatek.com

 

Step3:儲存後,此裝置卡片會出現在這張魚池的場景左上角,讀者可將這個裝置拖拉定錨至養殖池中的實際位置,裝置將即時顯示連線狀態及這些資料通道收到的數值。

圖4 於場景編輯頁面中,亦可隨時點擊裝置卡片右上角海苔條回到裝置編輯頁面 | mcs.mediatek.com

 

Step4:場景編輯完成後,點擊返回,就會進入檢視頁面,網址列會顯示這個場景的Url Link,讀者也可點擊右上角的編輯按鈕回到場景編輯頁面。

圖5 每個場景都有一個獨立的Url | mcs.mediatek.com

 

  下圖表示了一個魚塭的管理者,如何透過遠程監測和控制自己魚池內的裝置:

圖6 若該裝置具備多個資料通道,且不會一次全部顯示在各裝置卡片中,讀者可在場景檢視頁面內直接點擊裝置卡片,由場景層進入裝置層 | mcs.mediatek.com

 

  當然,讀者也可視場域需求放入室內平面圖或立體圖,甚至是一條智慧生產工廠的產線(如下圖)。

圖7 上傳一張智慧工廠的底圖,將透過MCS開發的裝置拖拉到這條產線上做即時監控 | mcs.mediatek.com

 

將建立的場景分享給客戶

  除了場景畫面的編輯外,讀者也可將此場景圖分享給其它 MCS 的使用帳號,並將該使用者設置為管理者角色或一般檢視角色。兩種身分最主要差異在於對場景編輯上的權限:管理者同樣可對該場景進行編輯,而一般檢視角色無法對該場景進行編輯。讀者也可加入多個 MCS 帳號比較差異。

圖8 在場景編輯頁面右上角可選擇編輯該場景的使用者權限 | mcs.mediatek.com

 

  在這裡要注意的是,場景的權限和裝置的權限是各自獨立的,因此若某個使用者具備共同編輯此場景的權限,但並未被分享場景內某些裝置的權限,則該使用者即便可編輯或檢視該場景,也看不到這些裝置。因此分享場景時,也要確定該使用者對這個場景內的裝置使用權限為何。場景權限及裝置使用者權限這樣的設計是為了針對物聯網監控應用中,不同的物聯網場景管理者對於不同裝置,通常會擁有不同的(通常為上、下級關係)監控權限。

 

  以下說明三種不同 MCS 使用者權限檢視的差異:

表一

 

圖9 系統整合業者畫面,可編輯場景。 | mcs.mediatek.com

 

圖10 業主/老闆檢視畫面,不可編輯場景。 | mcs.mediatek.com

 

圖11 業主/監視人員檢視畫面,僅能監看具有權限的裝置。 | mcs.mediatek.com

 

  未來MCS也將針對事件觸發提供優化,例如可在裝置上嵌入警告燈號,並可在場景中做提示,以及可設定透過顯示型資料通道,連動控制資料通道⋯⋯等等,提供使用者更接近物聯網場景的應用。

 

  下一篇,將會介紹如何將多個不同場景,透過嵌入Url的方式,將各個有關聯的場景彼此鏈結在一起。

 

相關文章

[教學文]坦克18步:手把手教您組裝Robot Shield v2坦克車

相信大家對開發板可用來控制車子、手臂、機器人⋯⋯等等,已玩得不亦樂乎。前陣子,在Thingiverse上看見用3D列印出來的坦克,且還能以開發板來控制它,覺得非常有趣,於是下載了3D檔,並準備相關材料進行組裝,大家可由此TANK GO下載列印件,原作者MiniPlan也非常貼心地放上了組裝影片及材料說明連結喔!

作者/攝影

坦克車原作者:MiniPlan

文字整理/圖片:CAVEDU教育團隊郭皇甫

文章分類教學技術文
時間

成本
難度*(1~10)
材料表
  • Robot Shield*1

  • LinkIt 7697*1

  • 坦克3D列印件

  • N20馬達X2

  • M2X8螺絲10顆、M2X4螺絲4顆

  • DFMP3 Player MINI模組X1

  • SG90伺服機X1

  • 紅外線接收器X1、紅外線發射器X1

  • 8歐姆0.25瓦喇叭X1

  先看一下原作者MiniPlan拍攝的組裝影片:

  小編也替讀者們寫了圖文版的組裝步驟,說明如下:

材料準備:

  1. 坦克3D列印件

  2. N20馬達X2

  3. M2X8螺絲10顆、M2X4螺絲4顆

  4. DFMP3 Player MINI模組X1

  5. SG90伺服機X1

  6. 紅外線接收器X1、紅外線發射器X1

  7. LinkIt 7697開發板X1

  8. 8歐姆25瓦喇叭X1

  9. Robot shield v2控制板X1

圖1 材料準備

 

工具準備:

  • 螺絲起子(十字、一字)

  • 熱熔膠槍、熱熔膠條。

 

Step1:首先連接車身與胎框。這裡會有四個大小一樣的胎框,但其連接軸的圓洞有大小之分,請先拿出二個最大圓洞的胎框,並裝至車身卡榫上,如圖2所示。(PLA較無彈性,所以將胎框壓進卡榫時,要邊轉動胎框邊施力壓進。)

圖2 將胎框壓進卡榫

 

圖3 二邊胎框安裝完成

 

Step2:接下來拿出兩個N20馬達,並將其安裝至車身內,馬達的軸對準車身的小圓洞,即可向外推到底,如圖4所示。

圖4 安裝N20馬達

 

Step3:拿出F部件,並將其對準I部件的上、下方凹槽後,壓進凹槽內。(這裡要特別注意,I部件上、下方的邊框有些微不同,F部件的紋路也不一樣,請依照圖5的方向及位置安裝。)

圖5 安裝F部件

 

Step4:拿出C部件,並將其安裝至N20馬達軸上。(在這裡,作者非常貼心將孔洞設計成與N20馬達的輪軸形狀相同,如此一來,安裝時就不會搞錯了。)

圖6 安裝C部件

 

圖7 四胎框安裝完成

 

Step5:將喇叭焊線後,分別接上MP3 Player mini的SPK_1、SPK_2,使用熱熔膠將喇叭固定在I部件中心的圓孔上。(也請在MP3 Player mini的VCC、RX、TX腳位另外接上三條杜邦線。)

圖8 固定喇叭

 

Step6:用四顆M2x4螺絲,將Robot Shield v2對準C部件圓柱上的孔位並鎖上。(如果在這步驟對不到孔位的話,您可稍微扳動C部件的圓柱,對準後鎖上。在此步驟,您就可以將馬達線鎖上Robot Shield的端子台上了。)

圖9 使用M2螺絲固定Robot Shield v2

 

Step7:車身的下半部先告一個段落,接著拿出D部件,左右半部對準後壓緊固定。

圖10 壓緊D部件

 

Step8:拿出四顆M2x8螺絲,對準E部件上的四個孔洞,將螺絲先鎖一些進去。

圖11 將螺絲先鎖一點進E部件

 

Step9:再將E部件對準D部件上的螺絲孔位,用螺絲起子鎖緊後固定。

圖12 鎖緊D、E部件。

 

Step10:接著拿出B部件,並將一字舵片使用熱熔膠固定至凹槽。(注意,舵片中正央圓形凸起的地方朝上。)

圖13 固定舵片在B部件上

 

Step11:將B部件以四顆M2X8螺絲鎖緊固定在D部件上方四個孔洞。

圖14 固定B部件在D部件上

 

Step12:將焊好線的紅外線接收器,穿過H部件的方形孔洞,並使用熱熔膠固定在方形凹槽內,同時將G部件也以熱熔膠固定在H部件的圓形凹槽。(請特別注意,G部件上有四個小方孔,請將小方孔對齊紅外線接收器的位置後再固定。)

圖15 將紅外線接收器穿過H部件孔洞

 

圖16 將G部件固定在H部件上

 

Step13:請將焊好線的紅外線發射器,從線端穿過A部件前方的炮口。

圖17 紅外線發射器穿過炮口並固定

 

Step14:把A部件翻過來後,將SG90以圖18的位置,以M2X8的螺絲固定。(請特別注意,A部件上只有一個螺絲孔,您也可以使用熱熔膠固定SG90沒有鎖螺絲的一邊,或是使用鑽孔工具再多打一個孔。)

圖18 固定SG90

 

Step15:接下來把SG90與紅外線發射器的線,分別穿過A部件下方的兩個方形孔洞,並將多餘的線整理好。

圖19 將線穿過A部件的方形孔

 

圖20 將多餘的線整理好

 

Step16:將H部件固定在A部件上方的方形洞。(請特別注意,請按照圖21的H部件方向固定。)

圖21 將H部件固定在A部件上

 

Step17:接著請將A部件的SG90對準B部件上舵片的圓孔,往下壓緊固定。(請特別注意,在固定前,請先校正SG90的位置,讓您的炮台能夠左右各旋轉約90度為最佳。)

圖22 固定炮台

 

Step18:最後,將SG90接在P5腳位,其餘感測器按照網站文件上註明的腳位接上後,並將D部件壓緊至I部件上即可。

 

  至此,組裝步驟就完成囉!接下來,您便可將網站上給的程式上傳至7697開發板,並且使用手機下載LinkIt Remote後,試試看,坦克車是不是能順利動起來了呢?

 

備註:若讀者想購買相關的開發板,歡迎洽詢機器人王國

 

相關文章

[教學文]想自己動手做藍牙遙控車?就是這一篇了!

作者/攝影

CAVEDU教育團隊 鈺莨

文章分類教學技術文
時間

成本
難度
材料表
完整程式下載

BlocklyCar7697

導讀

 

本文重點

  我們將介紹馬達轉動原理,還有如何用藍牙裝置接收字元,也會把手機作為遙控車的方向盤,控制遙控車的方向。讓我們一起做出一台屬於自己的LinkIt 7697的藍牙遙控車吧!

圖1 藍牙遙控車,衝啊!

 

  LinkIt 7697的電流無法直接使兩顆直流馬達動起來,所以我們要使用馬達驅動板Robot Shield。

 

Step1:我們先用手機的藍牙裝置,試著控制一顆直流馬達,先接上一顆直流馬達。下面圖片是直流馬達接線圖:

圖2 一顆直流馬達連接Robot Shield

 

馬達的腳位

Robot Shield的腳位

113
217

 

藍牙遙控車程式

  程式部分,我們使用BlocklyDuino來寫程式。程式有分成車子的接收部分,以及手機的發送部分。我們先說明車子接收部分的程式,會用到藍牙的積木有下面幾種:

圖3 藍牙BlocklyDuino積木

 

Step2:打開【BLE周邊】(黃色標籤1)抽屜,可看見「建立藍牙週邊裝置」(黃色標籤2)、「新增藍牙屬性」(黃色標籤3)、「藍牙屬性已更新」(黃色標籤4)、「讀取藍牙屬性數值」(黃色標籤5)。這些是我們需要用到的積木,拼出來的積木如下圖:

圖4 BlocklyDuino藍牙裝置程式

 

Step3:我們要把BlocklyDuino藍牙初始化的裝置建立起來。請大家在「建立藍牙週邊裝置」的「顯示名稱」上改名字,在手機的那一端就會顯示出「顯示名稱」上的名字。

 

  此外,「服務UUID」和「新增藍牙屬性UUID」,只要和App Inventor上面的數值是一樣的,我們就可以讓LinkIt 7697和手機的藍牙裝置連線。

 

Step4:我們要寫出LinkIt 7697接收到字元後所要進行的動作,如下圖:

圖5 BlocklyDuino馬達轉動程式

 

Step5:寫完LinkIt 7697開發板接收到數字的程式後,接下來,我們要寫手機發送指令部分的程式。在此,我們繼續用App Inventor寫成手機的App程式。下圖是App Inventor的手機使用版面圖:

圖6 App Inventor的手機使用版面圖

 

  版面設計完成後,接下來進入App Inventor的程式設計介面,我們要來寫如何用手機傳送字元的程式。

 

Step6:下圖是手機和LinkIt 7697的藍牙裝置連線的積木:

圖7 LinkIt 7697開發板藍牙裝置的UUID

 

圖8 手機搜尋藍牙裝置的名字和名字欄位選擇

 

圖9用手機連上LinkIt 7697藍牙裝置的積木

 

Step7:當我們按下手機上的「搜尋」按鈕時,手機就會自動尋找附近有沒有LinkIt 7697的藍牙裝置。

 

Step8:若有的話,按下「名稱」按鈕,藍牙裝置的名稱就會顯示在選擇名單內,再按一次選擇名單內的藍牙裝置名稱就可進行連線。若連線成功,手機螢幕就會顯示出藍牙遙控車的名字。

 

Step9:按下斷線按鈕,手機就會和LinkIt 7697開發板的藍牙裝置斷線。

 

  接下來,我們要教大家寫如何控制一台藍牙遙控車的程式!

 

Step10:我們再將另一顆馬達接上馬達驅動板Robot Shield

圖10 兩顆馬達連接馬達驅動板Robot Shield

 

馬達的腳位

Robot Shield的腳位

113
217
312
410

 

  我們可以用程式的高電位或低電位,控制馬達的正方向轉或反方向轉。我們用兩顆馬達的正方向轉或反方向轉決定車子的行走方向,車子有下面四種走法:

圖11 車子有五種不同的運動方式

 

  程式部分,我們利用LinkIt 7697開發板的高電位或低電位,控制馬達的正方向轉或反方向轉。就如圖12一樣,馬達驅動板Robot Shield的10和12腳位是控制右邊的馬達;13和17腳位是控制左邊的馬達,所以程式會如下圖:

圖12 BlocklyDuino程式

 

  有了前面的做法後,我們現在來寫寫看LinkIt7697開發板的程式吧!

 

Step11:LinkIt 7697的程式部分,只要把前面程式中的【重複執行】的「轉動」和「停止」積木,改寫成「停止」、「前進」、「後退」、「右轉」、「左轉」積木就可以了。程式積木如下圖:

圖13 BlocklyDuino的全部程式

 

Step12:接下來,我們要改寫手機遙控部分的積木程式,也是按照順序分別改成「停止」、「前進」、「後退」、「右轉」、「左轉」這五種動作指令。完整的手機控制版面如下圖:

圖14 藍牙遙控車手機的控制版面

 

再來是App Inventor程式積木的部分:

圖15 藍牙遙控車連線、斷線的事件

 

圖16 手機發送指令事件

 

  這樣藍牙遙控小車的程式就完成了,趕快拿手機來玩玩看!

 

[Micro:bit]小彼特魔幻秀──光影魔術手

作者/攝影

原作、設計者:劉正吉老師(感謝作者的授權)

文字整理:CAVEDU宗諭

文章分類教學文
時間

1小時內

成本
難度* * *(1~10)
材料表

挑戰

  Micro:bit可有多方面的創意應用,魔術也是其中之一!就讓我們一起來看看,劉正吉老師如何運用Micro:bit主板上的光線感測器,設計出「光影魔術手」這個有趣的魔術專案。

 

  先來看看「光影魔術手」的影片:

 

程式設計

  看完影片後,有觸發您的程式思維嗎?接下來,就讓我們一步步建構「光影魔術手」幕後的程式。

 

Step1:為了之後主程式的需要,我們先宣告兩個變數「light」和「magic」。先從基本積木櫃中,拉出「當啟動時」積木,然後從變數積木櫃中,拉出兩個「變數⋯⋯設為」積木,將它們接上「當啟動時」積木。接上後,將第一個變數積木名稱改為「light」,值仍維持0;將第二個變數積木名稱改為「magic」,然後從邏輯積木櫃中拉出「false」積木,將它接上「magic」積木。

圖1

 

  讀者們是否有注意到在前面影片中,劉正吉老師的手第一次在Micro:bit主板前揮動時,小彼特並沒有任何反應,是在他按了Micro:bit主板上的按鈕A(左邊那一顆)後,主板上的LED燈才開始出現圖樣。為達成這樣的效果,我們必須在程式中設定一些條件。

 

Step2:讓我們從輸入積木櫃中拉出「當按鈕A被按下」積木,然後複製「變數magic設為false」積木,把它接上「當按鈕A被按下」積木,並把「false」改為「true」。

圖2

 

Step3:複製Step2的建構的積木,並把按鈕A改成按鈕B,以及true改成false。

圖3

 

Step4:複製Step3建構的積木,並把按鈕B改成按鈕A+B。刪除「變數magic設為false」積木,並從基本積木櫃中點選「更多」,拉出其中的「清空 畫面」積木,接上「當按鈕A+B被按下」。

圖4

 

這樣,變數和條件就設定好了,接下來我們就要進入到主程式了。

 

Step5:我們先從基本積木櫃中拉出「重複無限次」積木,接著從邏輯積木櫃中,拉出「如果true⋯⋯那麼」積木,並接上「重複無限次」積木。然後我們從變數積木櫃中,拉出變數「magic」積木,接上「如果true」那邊。這代表,如果變數magic的值為true的話,就可以觸發一些程式。於是,我們便可從此了解,為什麼前面的步驟要設定「當按鈕A被按下」的條件,是為要讓主程式運作。

圖5

 

Step6:繼續建構主程式。複製「變數light設為0」積木,把它接上「如果magic⋯⋯那麼」積木的「那麼」部分。從輸入積木櫃中拉出「光線感測值」積木,並接在「變數light設為0」積木的0那邊。這樣的意思是,當變數magic的值為true,變數light的值就會從0,變成接收光線感測值。

圖6

 

Step7:為要做進一步的條件設定,我們再從邏輯積木櫃中,拉出「如果true⋯⋯那麼」積木,並接在「變數light設為光線感測值」下方。接著,我們從邏輯積木櫃中,拉出一個「小於」積木,接在true那邊。再從變數積木櫃中,拉出變數「light」積木,把它放入「小於」積木前面那一個0那邊,然後把後面那一個0改成70。

 

補充說明

  在此需注意的是,70這個值是劉正吉老師當時所處環境的光線臨界值。我們以根據所處環境正常時的光線值,以及用手遮住光感測器時的光線值,將此兩個數值平均,作為臨界值。

圖7

 

Step8:接下來,我們要在「那麼」的地方加入一個「方法」。讓我們先把積木介面切換成JavaScript程式碼。

圖8

 

圖9 在if (light<70){的下方加入紅框框內的程式碼

 

Step9:切換回程式積木畫面,可看見如下圖。「光影魔術手」程式至此大功告成!

圖10

 

補充說明

  在此要說明的是,為何我們不直接用基本積木櫃中的showIcon積木就好了?因為如果我們用showIcon積木,就無法使用Math.random()方法。Math.random()方法會根據括號內所寫入的數字,隨機出現等於或小於該數字的正整數(包括0)。例如,這裡我們寫入的數字為39,Math.random()方法便會隨機出現0~39的數字。

 

  至於為什麼數字是39呢?因為showIcon積木內建了40個圖案,編號是從0至39,透過Math.random()方法,以及最外面的「重複無限次」積木,當我們的手揮過小彼特主板時,程式會隨機自這40個圖案中出現一個。若您對於寫程式碼不熟悉,您也可直接使用基本積木櫃中的showIcon積木,然後指定一種圖案即可。

 

按鈕B的用處是什麼?

  原來,魔術師有時總是要找觀眾上來體驗一下,若要讓觀眾上來嘗試,魔術師必須先偷偷按下按鈕B,這樣,觀眾再怎麼試圖案都不會改變;當魔術師要施展魔術時,則要偷偷按下按鈕A, 就可以開始施展光影魔術了。

  趕快來玩玩看「光影魔術手」吧!

 

相關文章

[教學文] 從Zero到Hero,給想實做動力小車的你——軟體篇

作者/攝影

動力大腳車製作者、資料、圖影片提供:游允赫

文字整理:CAVEDU 宗諭

文章分類教學文
時間

成本
難度
材料表

 

  接著上一篇「從Zero到Hero,給想實做動力小車的你——硬體篇」,這次我們將繼續介紹,完成動力大腳車硬體設施後,軟體層面該如何部署。

 

  首先介紹所需要的配備:

  • 開發板:LinkIt 7697 + RobotShield

  • 顏色感測器:TCS3200

  設定方式:

Frequency Scaling 20% (S0-H,S1-L)

Photodiode Type Clean (S2-H,S3-L)

  • 手機遙控app:LinkIt Remote

  • 程式編輯器:Arduino IDE

圖1

 

  先讓我們打開Arduino IDE,然後寫好將顯示在LinkIt Remote上的各項物件,等之後LinkIt Remot與7697透過藍牙連接時,LinkIt Remote將自動抓取這些物件。如下:

//設定爬坡按鈕

  LRemoteButton buttonClimb;

//設定折返按鈕

  LRemoteButton buttonGoAndBack;

//設定計時器

  LRemoteSlider Timer;

//設定顏色極限值

  LRemoteSlider Limit;

//上方標籤

  LRemoteLabel  BigFoot;

//設定狀態欄

  LRemoteLabel  LabelS;

//設定顏色感應器偵測值欄

  LRemoteLabel  LabelLight;

 

  接下來,讓我們為著之後的主程式宣告一些變數,如下:

//馬達分別接於13、17

  int M1A = 17;

  int M1B = 13;

//宣告變數T(時間-0.1秒為單位)

  int T;

//宣告變數F(顏色感應器讀數)

  int F;

//宣告變數S(車輛狀態)

  int S = 0;

//宣告變數L(顏色極限值)

  int L;

//宣告變數button=6(7697內建USR按鈕)

  int button = 6;

圖2

 

  現在來到主程式部分,首先是setup函式,如下:

void setup() {

  Serial.begin(9600);

  Serial.println(“Start configuring remote”);

  pinMode                  (13, OUTPUT);

  pinMode                  (17, OUTPUT);

  pinMode                  ( 2,  INPUT);

  pinMode                  ( 4,  INPUT);

  pinMode                  ( 6,  OUTPUT);

  digitalWrite             (13, 1);

  digitalWrite             (17, 1);

 

//這部分是LinkIt Remote介面上各項物件的進一步設定

//藍牙名稱,介面分割

  LRemote.setName          (“BigFoot”);

  LRemote.setOrientation   (RC_PORTRAIT);

  LRemote.setGrid          (3, 5);

 

//上方標籤

  BigFoot.setText          (“!大腳車!”);

  BigFoot.setPos           (0,0);

  BigFoot.setSize          (3,1);

  BigFoot.setColor         (RC_GREY);

  LRemote.addControl       (BigFoot);

 

//爬坡按鈕

  buttonClimb.setText      (“爬坡!”);

  buttonClimb.setPos       (0, 2);

  buttonClimb.setSize      (1, 1);

  buttonClimb.setColor     (RC_BLUE);

  LRemote.addControl       (buttonClimb);

 

//折返按鈕

  buttonGoAndBack.setText   (“折返!”);

  buttonGoAndBack.setPos    (2, 2);

  buttonGoAndBack.setSize   (1, 1);

  buttonGoAndBack.setColor  (RC_BLUE);

  LRemote.addControl        (buttonGoAndBack);

 

//時間設定滑桿

  Timer.setText             (“Timer=( 10 ~ 150 )”);

  Timer.setPos              (0,1);

  Timer.setSize             (3,1);

  Timer.setColor            (RC_ORANGE);

  Timer.setValueRange       (10,150,10);

  LRemote.addControl        (Timer);

//光感極限值設定滑桿

  Limit.setText             (“LIMIT”);

  Limit.setPos              (0,3);

  Limit.setSize             (3,1);

  Limit.setColor            (RC_GREEN);

  Limit.setValueRange       (100,360,225);

  LRemote.addControl        (Limit);

 

//光感值顯示標籤

  LabelLight.setText        (String(F));

  LabelLight.setPos         (0, 4);

  LabelLight.setSize        (2, 1);

  LabelLight.setColor       (RC_PINK);

  LRemote.addControl        (LabelLight);

 

//狀態顯示標籤

  LabelS.setText            (String(S));

  LabelS.setPos             (2, 4);

  LabelS.setSize            (1, 1);

  LabelS.setColor           (RC_GREY);

  LRemote.addControl        (LabelS);

 

  LRemote.begin();

  Serial.println(“begin() returned”);

}

 

  關於LinkIt Remote如何設定,讀者們可以進一步參考這篇文章:使用LinkIt Remote

圖3 在手機的LinkIt Remote上,介面如此呈現。

 

  再來是loop函式的部分,如下:

void loop() {

  if(!LRemote.connected()) {

    Serial.println(“waiting for connection”);

    delay(1000);

  } else {

    delay(15);

  }

  LRemote.process();

//獲取極限值設定

  L = Limit.getValue();

//獲取時間值設定

  T = Timer.getValue();

//獲取顏色感測器讀取值,感測器訊號接於4號腳位上

  F = pulseIn(4,LOW);

//顯示讀取值於光感值標籤

  LabelLight.updateText(String(F));

 

 

//當爬坡按鈕按下,狀態值設定為5,狀態欄顯示為”已選爬坡”

  switch (buttonClimb.getValue()){

    case 1:

    S = 5;

    LabelS.updateText(“已選爬坡”);

    break;

    case 0:

    break;

   }

 

//當爬坡按鈕按下,狀態值設定為1,狀態欄顯示為”已選折返”

  switch (buttonGoAndBack.getValue()){

    case 1:

    S = 1;

    LabelS.updateText(“已選折返”);

    break;

    case 0:

    break;

   }

 

 

//若狀態值為1(已選折返)且7697 USR按鈕被按下

//狀態列顯示為”下坡”,馬達反轉,持續秒數依滑感設定

//持續時間設定值過後,狀態值切換至2

if (digitalRead(button) == 1 && S ==1 ){

    LabelS.updateText(“下坡”);

    digitalWrite(M1A,0);

    digitalWrite(M1B,1);

    delay(T*100);

    S = 2;

   }

 

//若狀態為2且顏色感應器偵測值小於極限值(判定為尚未過黑線)

//馬達持續反轉,狀態欄顯示為”偵測中”

    else if(S == 2 && F < L){

      digitalWrite(M1A,0);

      digitalWrite(M1B,1);

      LabelS.updateText(“偵測中”);

    }

 

//若狀態為2且顏色感應器偵測值大於極限值(判定為過黑線)

//狀態值切換至3,狀態欄顯示為”已偵測”

    else if(S == 2 && F > L){

      S = 3;

      LabelS.updateText(“已偵測”);

    }

//若狀態為3,則狀態欄顯示為”上坡”,馬達正轉

//持續時間為設定值+2秒(上坡所需時間較長),時間到達後狀態值切換至4

    else if(S==3){

      LabelS.updateText(“上坡”);

      digitalWrite(M1A, 1);

      digitalWrite(M1B, 0);

      delay(T*100+2000);

      S = 4;

    }

//若狀態為4且顏色感應器偵測值小於極限值(判定為尚未過黑線)

//馬達持續正轉,狀態欄顯示為”偵測中”

    else if(S == 4 && F < L){

      digitalWrite(M1A,1);

      digitalWrite(M1B,0);

      LabelS.updateText(“偵測中”);

    }

//若狀態為4且顏色感應器偵測值大於極限值(判定為過黑線)

//狀態欄顯示為”已偵測”,馬達持續正轉一秒

//一秒後狀態值切換至0,狀態欄顯示為”停止”

    else if(S == 4 && F > L){

      LabelS.updateText(“已偵測”);

      digitalWrite(M1A,1);

      digitalWrite(M1B,0);

      delay(1000);

      digitalWrite(M1A,1);

      digitalWrite(M1B,1);

      S = 0;

      LabelS.updateText(“停止”);

    }

 

//若狀態值為5(已選爬坡)且7697 USR按鈕被按下

//狀態值切換至3

    else if(S ==5 && digitalRead(button) == 1){

      S = 3;

    }

}

圖4

 

  程式完成後,最後一步就是把程式燒錄至LinkIt 7697上。

 

  軟體部分簡單介紹至此,若讀者有不了解的地方,歡迎詢問允赫老師,E-mail:yhyu@cavedu.com,謝謝。

 

相關文章

[Micro:bit] BOSON電子積木呼吸燈條

生活中,您是否有注意到有些燈光除了「開關」與「閃爍」外,還有如同「呼吸」一樣的變化呢?「呼吸」的意思是指,像波浪一樣有著高低起伏,應用在燈光上,就會變成漸漸變亮與漸漸變暗的效果。今天要為大家介紹使用Micro:bit控制BOSON燈條,達到「呼吸燈」的效果。

作者/攝影

撰寫:郭皇甫

攝影:郭皇甫

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

  請先將Micro:bit與Micro:bit擴充板準備好,接著將「彩色LED燈條模組」接上P1引腳。硬體設置好後,就可開始編寫程式,程式的概念很簡單,我們要做到的是讓燈條亮度慢慢增加,再慢慢減少,並且一直重複這個模式,請依照下列步驟進行:

 

Step1:初始化引腳與變數。首先找到【變數】→【建立變數】,將新變數命名為「light」後,找到「變數item設為0」方塊,設定item為light,並將方塊放入「當啟動時」內。接著找到【引腳】→「類比信號寫入」與「對應…從低…從高…到低…到高」方塊,將「引腳」改為P1,並將「對應…從低…從高…到低…到高」方塊放入「類比信號寫入」的「數字」內,並設定好「對應…」方塊內的數值(如圖2所示)

圖1 建立變數

 

圖2 類比信號寫入與對應方塊

 

圖3 設定對應方塊內的數值

 

Step2:重複燈條漸亮、漸暗。要讓燈條達到漸亮的效果,您可以從「如何讓數值變大」的方向來思考。首先,引腳的數值決定了燈條的亮度,若數值愈大,燈條的亮度愈高,而在Step1時,我們已經將P1的腳位數值對應到「變數light」中,並且將數值範圍從0~1023改為0~255,這樣的方式也可以讓數字變得較好計算。所以,當「變數light」的數字為0,亮度最小,反之亮度最大。瞭解後,我們要來做一些簡單的加減運算。

 

a.變數light每次加5。從【變數】找到「變數設為」與「light」方塊,並將item改為light;從【數學】找到「+」方塊,並接在「變數設為」方塊的後方,將「+」後方的數字改為5。(如圖4所示)

圖4 變數加5

 

b.變數light每次減5。與上述唯一不同的地方是使用「-」方塊,而不是「+」方塊。(如圖5所示)

圖5 變數減5

 

c.重複次數。不論是加5或是減5,只要各重複51次,即能達到最大255與最小0,因此,請找到【迴圈】裡的「重複…次…執行」,將次數改為51。(如圖6所示)

圖6 重複執行51次

 

d.數位引腳讀取數字。將變數light的數字設定好重複執行累加與累減後,我們還要將變數light每次得到的數字放進P1腳位裡,所以在這邊我們放進「類比信號寫入」的方塊,將「引腳」改為P1、「數字」改為「light」。(如圖7所示)

圖7 類比信號寫入

 

e.加入延遲秒數。最後,我們從【基本】找到「暫停(ms)」方塊,將數字改為30,並接在「類比信號寫入」的下方。(如圖8所示)

圖8 加入延遲秒數

 

  最後,完整的程式碼如下:

圖9 完整程式碼

 

  將程式碼下載到Micro:bit上,看看燈條是否會漸亮、漸暗了呢?您也可以試著使用BOSON的旋鈕直按控制燈條,也能達到漸亮、漸暗的效果喔!今天的介紹就到這邊,下次還會有哪些好玩的應用呢?敬請期待喔!

 

相關文章

[Micro:bit]Micro:bit Blockly PBL教材──主題5-2:電流急急棒

作者/攝影

Ted Lee(本文轉載自Ted Lee的部落格「泰布布」,圖文版權均屬於作者Ted Lee,特此致謝。)

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

前言

  您玩過這樣緊張剌激的遊戲嗎?它叫でんりゅうイライラぼう(電流急急棒),是源自於1995至2000年間,在日本播出的一個綜藝節目《火焰挑戰者》。想玩嗎?讓我們自己動手用Micro:bit做一個來玩吧!

 

材料

  • 香蕉/鱷魚夾×2組(一組2條)

圖1 香蕉/鱷魚夾

 

  • 細鐵絲2段(一段長約30公分作軌道)

圖2

 

  • 短鐵絲10 公分作為急急棒

圖3

 

  • 蜂鳴器1個

圖4

 

Step1:請先依照接線圖施工,把電流急急棒架設好。

圖5 接線圖

 

程式解說

Step2:彎好造型的長軌道接在Micro:bit的GND,急急棒則接在P1接腳,程式會監測這隻接腳是否有被壓住

圖6

 

Step3:當接在P1接腳的急急棒碰到軌道時,P1接腳的按下(pressed狀態就變為true,此時發出一警示音。

圖7

 

程式碼

  • forever(() => {

  •   if (input.pinIsPressed(TouchPin.P1)) {

  • beginMelody(music.builtInMelody(Melodies.PowerDown), MelodyOptions.Once)

  •   }

  • })

 

  參考程式檔在此下載。一起來看看成果吧:

 

(峰)迴路(轉來)導電

關於急急棒這種因導電而形成電流迴路(loop的性質,有許多延伸案例可參考:

  • 案例1:導電鋼琴

    水果中含有電解質,所以可以導電喔!這篇的水果音樂鍵盤被這位劉老師擴充為水果鋼琴真是好玩。另外,這位Tamás大大更厲害以四條鋁箔紙帶設計這台紙綱琴。不想玩鋼的朋友們,也可以嘗試做一把電吉他。或者玩玩Amazing Grace演奏吧!

  • 案例2:同榮急急棒

同榮國小特製的同榮急急棒,歡迎來挑戰(12)。請大家留意一下,同榮這款急急棒是有巧思的,他們用了一種神秘的材料在其中。聰明的您趕緊找找,找出名堂的人就到同榮找阿貴校長領糖糖吧!(留意這中空字款要做好支撐,不然會倫敦鐵塔垮下來、垮下來~~)

 

與108課綱的對照

  • 學習表現:

    • 資 c-III-2 能使用資訊科技與他人合作產出想法與作品。

    • 生k-IV-4 能了解選擇、分析與運用科技產品的基本知識。

  • 學習內容:

    • 資 A-III-2 簡單的問題解決表示方法。

    • 生A-IV-5 電與控制的應用。

 

教學活動設計

  • 活動1:票選出最佳造型軌道若干,再將學員分組,組內全部學員最先挑戰過關者為優勝。學員挑戰過程中若不慎觸軌,需重新排隊挑戰,連續挑戰失敗三次者,可找隊友代打。

  • 活動2:加入藝術元素。請同學先畫出急急棒的設計稿,再依稿件完成作品。

 

延伸挑戰

 

相關文章