Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all 678 articles
Browse latest View live

[教學文] 快說!怎樣不用Arduino也能做出電子鐘!!(555 IC篇)

$
0
0

  現在是微處理器盛行的時代,許多東西皆簡化成以一顆MCU取代所有電路,但要編寫MCU需要的不僅僅是程式語言編寫能力,還要有很多基本程式觀念及門檻,以及要有一台電腦才能作業。想像一下70年代的矽谷,電腦一台要價4,700,000美金,這可不是人人負擔得起的,那麼那時的電子鐘要怎麼製作出來呢?

 

本系列專題就要帶大家不用Arduino做出電子鐘。電子鐘分成三個部分:

  1. 頻率為1Hz的時脈
  2. 計算時脈的計數器
  3. 顯示數字的七段顯示器

本篇重點在於介紹1Hz時脈的產生。

作者/攝影

CAVEDU實習生 陳俊霖

文章分類 教學技術文
時間

30mins

成本

約20元

難度 *
材料表
  • 麵包版X1

  • IC555  X1

  • 杜邦線或單心線

  • 剝線鉗x1

  • 電池組x1

  • 51k電阻 x1

  • 47k電阻x1

  • 10u電容x1

(若想購買相關材料,請洽機器人王國商城)

  對於沒有學過電子電路的讀者想必對555這組數字很陌生,有人說555的名字是來自於使用三顆5KΩ的電阻,所以就直接取名為555,也有人說555只是當時老闆喜好的一組數字而已。

 

  當時工程師Hans R. Camenzind花費好幾周的時間想出方法,運用簡單的電晶體與電阻,做出可任意調整周期與空占比的電路,使用時只需外加電阻與電容,便可完成相似於能夠程式化編寫的時脈產生器。雖然現今電腦普及,但我們仍可用不到10元的價格從網路取得555計時晶片,現在就讓我們看看怎麼使用這顆「經典IC」吧!

 

  555的功能主要分成三種:單穩態模式、雙穩態模式及無穩態模式。我們這次使用的是無穩態模式,這種模式用在產生方波,如同它的名稱,無穩態表示不會穩定下來,會一直震盪。至於其他的使用模式在先前文章有提過,不妨參考看看:[ 電路設計軟體Multisim Blue ] 自己來設計一個腳踏車方向燈吧!

圖1 555IC外觀

 

Step1:首先,我們拿出麵包板,並將555 IC、電阻、電容如圖連接。

圖2 麵包板電路

 

圖3 接線圖

 

小提醒:

  麵包板模擬圖上的電阻值與我們要使用的不同,圖2只是給位置參考而已,實際電路元件數值如圖3所示。

 

  在這裡跟大家補充介紹555的腳位及對應功能,以及IC腳位識別:

圖4 IC接腳辨認

 

  第一次看到IC時,請仔細觀察它的表面會有一個小圓點在IC的邊角(有的IC其中一邊有一個缺口)。那個圓點的位置,就是IC的第一隻腳(若是只有一邊有缺口的,就把缺口朝向自己的左手邊,左下的腳就是第一隻腳)。若腳位接錯會使電路無法作動,嚴重一點會使整顆IC燒壞。

圖5 555 接腳圖

第1腳(接地GND):接至電源負極

第2腳(觸發TRI):當此腳位電壓低於1/3Vcc時,會使第三隻腳(OUT)輸出高電位,且讓第7腳(DIS)對地開路。

第3腳(輸出OUT):555IC的輸出腳,受到2、4、6腳控制產生對應的輸出。

第4腳(重製RST):若此腳電壓低於0.4v時,會使第三腳(OUT)輸出為低態。

第5腳(控制 CTRL):控制晶片的閾值電壓,一般使用都接一顆0.1uF電容後接地。

第6腳(臨界 THR):當此腳位電高於2/3Vcc時,會使第三腳(OUT)輸出為低態,且讓第7腳(DIS)對地短路。

第7腳(放電 DIS):與第3腳(OUT)同步動作,第3腳輸出高態則第7腳對地開路;第3腳輸出低態第7腳對地短路。

第8腳(電源Vcc):接至電源正極

 

  以TI生產的 NC555為例,最高可接至18V電源,輸出腳可輸出200mA,使用時也要注意負載有沒有超出額定功率。而這次元件和工作模式都和上面提到的文章:[ 電路設計軟體Multisim Blue ] 自己來設計一個腳踏車方向燈吧!一樣。

 

  頻率公式 f = 

 

  我們將頻率設定成1Hz,並使用常見的電子元件得到元件數值:R1=51kΩ、R2=47kΩ、C=10μF。(由於電阻與電容的製造誤差,出來的時間無法太精準。)連接完成後接上電源,LED燈就會一秒一秒閃爍了!

圖5 成果

 

成果影片:

 

  為什麼我們在今日仍需要555 IC呢?因為,555的發明讓只想產生簡易時脈功能的Maker,不必仰賴MCU去編寫一個相似於Arduino裡的「Blink」程式,更能降低生產成本且電路也很簡單。而555的應用還不只這些,許多有關脈波的應用,例如伺服馬達(Servo motor)控制電路;以及頻率應用,例如音調產生器(Tone Generator)⋯⋯等等,讀者們還可以發揮創造力與想像力來運用555 IC。

 

延伸挑戰:

  1. 既然頻率可由公式計算出來,我們是否可把R1、R2以可變電阻取代呢?會產生甚麼變化呢?

  2. 若把可變電阻改成光敏電阻、熱敏電阻,又有什麼應用呢?

  3. 若把第3腳(OUT)連接至小型揚聲器上,會有甚麼事情發生呢?

 

相關文章


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

$
0
0

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

作者/攝影

陳怡璇

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

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

  • Micro:bit BOSON擴充板

  • BOSON 傾斜感測器(Tilt Module)

  • 燈條(Multicolor String Light)

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

  在之前的文章[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(下)

$
0
0
作者/攝影

文圖轉載自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等相關開發板,歡迎前往機器人王國挑選,謝謝。

 

相關文章

[Movidius神經運算棒] 認識與操作Neural Compute SDK:mvNCCheck

$
0
0
作者/攝影 曾吉弘
文章分類 教學(翻譯)
時間 3小時
成本
難度 ******   (1~10)
材料表
  • Raspberry Pi 3單板電腦
  • Intel Movidius神經計算棒

(Original post from Intel Movidius NCS blog: “Using and Understanding the Neural Compute SDK: mvNCCheck”:https://movidius.github.io/blog/mvNCCheck/

 

Neural Compute SDK Toolkit: mvNCCheck

Intel® Movidius™ 神經運算軟體開發套件(Neural Compute Software Development Kit,NCSDK)包含三套工具,用於幫助使用者順利上手,操作Intel® Movidius™ 神經運算棒(Intel® Movidius™ NCS)。這些工具包含:mvNCCheck,mvNCCompile及mvNCProfile。本文將幫助您更認識mvNCCheck工具程式的運作方式,以及如何將它整合至Neural Compute SDK的整體工作流程中。

圖1

 

使用mvNCCheck的網路會有怎樣的效果呢?

您將學到:

  • 如何使用mvNCCheck tool
  • 如何解釋mvNCCheck的輸出結果

 

您會需要:

  • Intel Movidius Neural Compute Stick 神經運算棒 – 購買請按我
  • 執行Ubuntu 16.04的 x86_64 筆記型電腦

 

如果尚未做過的話,請在您的開發電腦上安裝NCSDK。安裝步驟請參考Intel Movidius NCS Quick Start GuideCAVEDU的Intel Movidius相關文章

 

檢查網路

Step 1:開啟terminal,切換至ncsdk/examples/caffe/GoogLeNet目錄下

Step 2:使用mvNCCheck 來使Intel Movidius NCS上的網路生效。

mvNCCheck deploy.prototxt -w bvlc_googlenet.caffemodel

 

Step 3:完成了!您應該會看到類似下面的畫面訊息:

USB: Myriad Connection Closing.
USB: Myriad Connection Closed.
Result:  (1000,)
1) 885 0.3015
2) 911 0.05157
3) 904 0.04227
4) 700 0.03424
5) 794 0.03265
Expected:  (1000,)
1) 885 0.3015
2) 911 0.0518
3) 904 0.0417
4) 700 0.03415
5) 794 0.0325
------------------------------------------------------------
 Obtained values 
------------------------------------------------------------
 Obtained Min Pixel Accuracy: 0.1923076924867928% (max allowed=2%), Pass
 Obtained Average Pixel Accuracy: 0.004342026295489632% (max allowed=1%), Pass
 Obtained Percentage of wrong values: 0.0% (max allowed=0%), Pass
 Obtained Pixel-wise L2 error: 0.010001560141939479% (max allowed=1%), Pass
 Obtained Global Sum Difference: 0.013091802597045898
------------------------------------------------------------

 

mvNCCheck的功能為何,為何要用到它?

作為NCSDK的一部分,mvNCCheck提供以下三項主要功能:

  • 確保資料從fp32轉為fp16時的正確性
  • 快速確認指定網路是否相容於Intel NCS
  • 對網路各層進行快速除錯

 

確保結果的準確性

為確保結果的正確性,mvNCCheck會比較Intel Movidius NCS 與網路原生框架(Caffe/TensorFlow™)兩者間的推論結果。由於Intel Movidius NCS與NCSDK採用16-bit 浮點數資料,因此必須將收進來的32-bit浮點數資料轉為16-bit。fp32/fp16的轉換過程可能在推論結果中產生minor rounding的問題,這時候mvNCCheck工具程式就很好用了,它可檢查您所使用的網路是否產生正確的結果。

 

首先,mvNCCheck工具程式會讀取網路,並將模型轉換為Intel Movidius NCS可用的格式。接著它會在Intel Movidius NCS上使用網路來推論,也會用網路原生框架(Caffe/TensorFlow)來執行推論。

 

最後,mvNCCheck 會產生一份簡易的報表,比較Intel Movidius NCS與網路原生框架兩者的推論結果。這些結果可用於確認某個神經網路在fp32/fp16轉換後,是否還能產生一定正確性以上的結果。比較結果接下來會詳細討論。

 

判斷網路與Intel Movidius NCS的相容性

mvNCCheck也可用於檢查某個網路是否相容於Intel Movidius NCS。有蠻多原因都會造神經網路與Intel Movidius NCS不相容,其中包括(但不限於)記憶體限制、不支援的層或不支援的神經網路架構。若想了解更多原因,請參考 Intel Movidius NCS documentation website 上關於TensorFlow與Caffe框架的說明。另外,最新的 NCSDK Release Notes也會說明關於SDK的勘誤與最新功能⋯⋯等等。

 

使用mvNCCheck對網路進行偵錯

若您的網路執行不如預期,可運用mvNCCheck來對網路偵錯,只要執行 mvNCCheck 時加上 -in-on 選項即可。

  • -in 選項可讓您將某個節點指定為輸入節點
  • -on 選項可讓您將某個節點指定為輸出節點

使用mvNCCheck並搭配 -in-on 參數,透過逐層分析或二元搜尋分析,比較Intel NCS 與Caffe/TensorFlow的結果,這樣便有機會找出發生錯誤/差異的層。

 

偵錯範例:

假設您的網路架構如下:

  • Input – Data
  • conv1 – Convolution Layer(卷積層)
  • pooling1 – Pooling Layer(池化層)
  • conv2 – Convolution Layer(卷積層)
  • pooling2 – Pooling Layer(池化層)
  • Softmax – Softmax

假設您執行mvNCCheck所取得的結果為nan(並非數字)。請用以下指令搭配 -on  選項來檢查第一卷積層(Convolution layer) “conv1” 的輸出結果:

mvNCCheck user_network -w user_weights -in input -on conv1 

 

若是較大的網路時,使用二元搜尋法將有助於降低找到發生問題的那一層所需的時間。

 

理解mvNCCheck的輸出結果

圖2

 

來看看上述 mvNCCheck 輸出所代表的意義:

  • 綠色方框為Intel NCS的前五項推論結果
  • 紅色方框為原生框架(可能是Caffe或TensorFlow)的前五項推論結果
  • 藍色方框是兩者推論結果的各項比較結果

若想要深入理解這些結果,我們得先了解Intel Movidius NCS與Caffe/TensorFlow的輸出都是儲存在一個tensor中(tensor 要簡單定義的話,就是一個值的陣列)。五項測試都是兩個tensor間的數學性比較。

 

名詞解釋:

  • ACTUAL – 神經運算棒的tensor輸出
  • EXPECTED– 框架(Caffe或TensorFlow)的 tensor 輸出
  • Abs – 計算絕對值
  • Max – 計算一個(或多個)tensor的最大值
  • Sqrt – 計算某數值的平方根
  • Sum – 計算某數值的加總

 

 

最小像素正確度(Min Pixel Accuracy):

本數值代表兩個輸出tensor值之間的最大誤差。

圖3

 

平均像素正確度(Average Pixel Accuracy):

兩個 tensor 數值的均差。

圖4

 

錯誤值百分比:

本數值代表Intel Movidius NCS的tensor值,與框架tensor間的誤差是否超過 2%。

圖5

 

為什麼是2%?這個閾值設定扣掉了來自fp32/fp16轉換後的精度降低的影響程度。

 

Pixel-wise L2 error:

本數值代表整個輸出tensor的約略相對誤差。

圖6

 

將差異加總起來:

將Intel Movidius NCS tensor與框架tensor之間的所有差異加總起來。

圖7

 

沒有輸入的話,mvNCCheck如何進行推論?

在神經網路中進行向前傳遞時,常見的作法是以一個tensor或一個數值陣列作為輸入。如果未指令輸入的話,mvNCCheck使用範圍在 -1 至 1之間的隨機浮點數作為輸入tensor。只要在圖像路徑後加上 “-i” 參數,也可將讓 mvNCCheck 接受圖像輸入。

 

可能發生的錯誤與解決方法

若執行 mvNCCheck 但網路發生錯誤時,可能原因如下:

 

輸入值縮放

某些神經網路要求輸入值得先被縮放(scale)調整過。若輸入未經縮放的話,可能造成Intel Movidius NCS與網路原生框架的推論結論不一致的狀況。

 

使用 mvNCCheck 時,可用–S選項來指定用於縮放輸入值的除數。圖像通常以每個顏色通道數值範圍介於 0 到 255 間的方式儲存。若有個神經網路需要輸入值介於 0.0 到 1.0 之間,請用–S 255選項將所有輸入數值除以255,就可以把它們縮放到 0.0 到 1.0 之間了。

 

  –M 選項可用於對輸入值減去均值。例如,若某個神經網路需要輸入值介於 -1 到 1 之間的話,請同時用–S 128–M 128選項將做到此事。

 

未支援的層

Intel Movidius NCS 並未支援前所有的神經網路架構與層。若執行 mvNCCheck 後看見“Stage Details Not Supported”的錯誤訊息,就代表您所選用的網路需額外處理步驟,或是Neural Compute SDK尚未支援這些層。想知道目前支援哪些層,請參考 Neural Compute Caffe SupportNeural Compute TensorFlow Support 等說明網頁。

 

其他Bug

其他造成不正確結果的可能原因就是bug啦!請來這邊回報吧:Intel Movidius Neural Compute Developer Forum.

 

更多關於mvNCCheck

關於 mvNCCheck 所以有可用的參數,請參考 mvNCCheck 文件頁面

 

延伸閱讀

 

相關文章

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

$
0
0

  是否有心想嘗試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、Pearl、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,歡迎收看以下影片:

 

相關文章

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

$
0
0
作者/攝影

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的應用,請讀者持續關注,謝謝。若欲購相關開發板,請點這裡

 

相關文章

[STEAM好好玩] BOSON新專題「計時器」 實踐兒童程式設計之父Mitch Resnick的創意學習螺旋

$
0
0
作者/攝影

怡婷

文章分類 教學文
時間

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

針對孩子的學習而言,家長們該採取的步驟,究竟是學中做?亦或做中學呢?

 

兒童程式設計之父、美國MIT麻省理工學院教授Mitch Resnick,提出了「創意學習螺旋」理論,讓孩童透過專案實做,從想像(Imagine)創作(Create)戲玩(Play)分享(Share),最後回想(Reflect),成為一個完整的學習過程。而這個過程將激發孩子產生出更多想法和創作,使整個過程又從頭而來,形成一個源源不絕的創意學習螺旋。

 

BOSON電子積木正是十分適合作為孩童踏出專案實做第一步的素材。這週,我們要分享的專題是「計時器」,一起來看看吧:

 

相關文章

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

$
0
0

原本,筆者將此作品命名為「果凍步兵」,但命名後,總感覺已跳脫原始設定的框架,於是便改為前輩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程式,請讀者們靜待好消息囉!若想購買相關的開發板,請點這裡

 

相關文章


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

$
0
0
作者/攝影

文/林祥瑞

文字整理/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 界面。

 

相關文章

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

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

教學 (介紹性)

時間 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的相關消息,我們也會以最快的速度,幫大家進行相關介紹,敬請期待!

相關文章

[教學文] 快說!怎樣不用Arduino也能做出電子鐘!!(計數器篇)

$
0
0

在前一篇文章  [教學文] 快說! [教學文] 快說!怎樣不用Arduino也能做出電子鐘!!(555 IC篇)中,我們介紹了555IC的故事及應用, 本文要帶讀者們進入下一個部分:

 

計算時脈的計數器

 

生活中最常見的計數器應該是去遊樂園玩的時候,總會有人站在門口,手裡拿著一顆黑黑的東西一直按,那便是常見的機械式計數器,每按一下計數器上的數字就會加一。而另一個常見的計數器,就在汽機車的儀表板上。若仔細觀察,儀表板下方會有一排數字,車子每前進一公里,白色部分就會一直累加,直至全部變為9999或按下歸零按鈕為止。電子電路也有相同功能的IC,那就是7490系列。

作者/攝影

CAVEDU實習生 陳俊霖

文章分類 教學技術文
時間

約1hr

成本

約50元

難度 **(1-10)
材料表
  • 指撥開關(4位元) *1

  • IC:74LS90*1、555*1

  • 電阻:1kΩ*1、220Ω*5

  • LED*5

  • 杜邦線或單心線

  • 10uF電容*1

  • 0.1uF電容*1

(若想購買相關材料,請洽機器人王國商城)

7490是一顆10模計數器,與其相似的IC還有7492(12模計數器)、7493(16模計數器)、74390(雙十模計數器)⋯⋯等等,他們的功能就是每接收到一個時脈訊號(CLK)便把輸出加1,直至特定模數(Mod)為止。

 

舉例而言,一開始計數器的輸出是0000(二進制),在一個時脈訊號進來後,計數器會將輸出加一,此時輸出變成0001(二進制),再加入一個時脈訊號後輸出變成0010,以此類推一直至輸出變成1001(十進制的9)時,7490會自動將計數器歸零。

 

所以,整個計數器的輸出就是:0000>0001>0010>0011>0100>0101>0110>0111>1000>1001>0000⋯⋯如此循環。

 

讀者可能納悶:明明是10模為甚麼只數到9?別忘了,還有一開始的0也要算進去呀!

圖1 74LS90外觀

 

仔細瞧圖中IC上的文字,為甚麼是「74”LS”90」,而非標題的7490?他們是一樣的嗎?

 

廣義來說,是的,他們都是7490系列的IC,功能相同,接腳也相同。

 

但若就消耗功率及速度來看,他們是不一樣的,這部分就跟積體電路的製造技術和結構有關,在此不多贅述,有興趣的讀者可以上網找TTL邏輯,以獲得更多相關知識。

 

接下來讓我們看看7490的腳位:

圖2 7490腳位圖

 

74LS90 Datasheet (TI) : Decade, Divide-by-Twelve And Binary Counters (Rev. A)

 

其中:

第14腳(CKA)和第1腳(CKB)是時脈訊號輸入,輸入時脈訊號。第4腳和第13腳(NC)是指「No Connected 」的空腳位,是允許浮接的。Vcc 與GND分別接至電源的正和負。

 

第12腳、第9腳、第8腳及第11腳(QA~QD)是資料輸出,其中QDMSB(Most Significant Bit,最高有    效位元),是權序最大的。R0(1)、R0(2)與R9(1)、R9(2)皆為控制接腳,可以運用邏輯運算控制此接腳,讓計數器運用更廣泛。

圖3 7490構造圖

 

由圖3可看到,R0(1)、R0(2)和R9(1)、R9(2)皆各別接至一個「NAND」的符號,而NAND後又接至正反器(Flip-Flop)下面的小圓點,那個小圓點相當於機械式計數器的歸零鈕,只要這個腳位處於低電位,計數器便會歸零。

 

所以我們的R0(1)、R0(2)和R9(1)、R9(2)若同時為1時,NAND輸出0,計數器就會歸零,並且重新計數。

 

這裡提供一些關於數位邏輯的參考資料給讀者,想更深入研究可以參考教育部的教育大市集 :  基礎數位邏輯。雖然數位邏輯並不是那麼容易學習,但我們CAVEDU教育團隊也提供易於學習的Boson Inventor Kit  ,讓所有有興趣的大小朋友可以了解數位邏輯的有趣之處!

 

言歸正傳,就讓我們動手做出10模計數器吧!

 

Step1:7490如圖接於麵包板上,按鈕開關上拉電阻使用1kΩ,LED 限流電阻使用220Ω。將開關和電阻的連接端連接至7490的CKA(第14腳),QA輸出端接至CKB(第1腳),R1和R9腳全接地。QA~QD串聯220Ω電阻後連接LED,方便判讀數值。

圖4 接線圖

 

圖5 電路圖

 

小提示:麵包板模擬圖上的電阻值與我們要使用的不同,圖4只是給位置參考而已,實際電路元件數值如圖5所示。

 

完成接線後,確認正負極無誤就可以通電測試嘍!

圖6 完成圖

 

每按下一次按鈕開關,LED燈就會顯示二進制的數字,從0到9之後又歸零。

 

那麼我們把上次的555電路與這次的計數IC做結合,接成如下電路:

圖7 555+7490接線圖

 

小提示:麵包板模擬圖上的電阻值與我們要使用的不同,圖7只是給位置參考而已,實際電路元件數值如圖8所示。

圖8 555+7490電路圖

 

把555的第三隻腳(OUT)接至7490的CKA,我們用555取代我們手按開關的動作,就可讓它自動計數了!

 

看著LED燈號一顆顆往前堆疊,是不是挺有趣的呢!若我們再發揮一點想像力便會發現,若迴圈執行一次相當於產生一個時脈訊號,計數器的功能好比於程式語言i=i++,每當迴圈執行一次,就將變數+1,每收到一個時脈,輸出就+1。

 

延伸挑戰:

讀者可發揮創意將555產生的時脈訊號用其他元件取代,例如改成傾斜開關,就變成計步器了 ; 若改用旋轉編碼器,就可計算轉動的次數呢;裝在存錢筒上還可以幫自己算錢呢!

相關文章

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

$
0
0

關於這套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之後,我們可以透過一些素材,例如樂高積木、壓克力板、厚紙板⋯⋯等等,使成品更像檯燈。盡情發揮您的創意吧!

相關文章

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

$
0
0
作者/攝影

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

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

上一篇文章,我們介紹了如何透過上傳物聯網的場景圖,使裝置可在圖片上呈現。

但如果這個場域很大,或整個場域有多層式的關係時,無法透過一張場景圖呈現所有裝置的話,該怎麼做呢?以下,我們繼續以上篇文章的養殖場為範例:

假設這個魚塭養殖場的業主有多個魚池且彼此相連,而業主需要一次管控多個魚池,那麼業主可先上傳一張俯瞰多個魚池的圖片,如下圖:

圖1 一個魚塭養殖區的俯瞰圖 | mcs.mediatek.com

 

上篇文章中有提到,由於每個場域圖的網址本身皆為獨立的Url,所以我們可將某多個場景嵌入至這個俯瞰圖上。點擊左側的網址項目,貼上該場景的Url 連結,以及其顯示在這個俯瞰圖中的名稱,將這個場景的「網址元件」,一樣透過拖拉的方式,拉至這個俯瞰圖上。

圖2 將上一篇建立的場景網址嵌入到此俯瞰圖內 | mcs.mediatek.com

 

圖3

 

圖4 圖3、4說明,使用者可透過多個網頁Tab切換場景,或將不同場景個別顯示於多重螢幕上,做到中央控管。 | mcs.mediatek.com

 

應用至智慧產線上會像這樣:

圖5

 

點擊填充機台的 Url項目,可進一步看見該填充機台的場景。

圖6 可點擊右上角的展開圖示,觀看整個場景圖(若再按F11使瀏覽器變全螢幕,就會只剩下完整的場景圖了)。 | mcs.mediatek.com

 

當然,Url 項目的功能也提供更多客製化的彈性。假設某位業主希望進一步看見「原料容器」這個裝置的歷史資料,整合進公司內部的物流程系統,或以其它第三方的軟體呈現(例如Google Sheet、Tableau等),則使用者可將透過MCS API,以其它方式收集的長期數據圖表的Url連結,嵌入至該裝置的附近(如下圖),以利業主做進一步查看。

圖7

 

然而,使用者也需注意在不同場景鏈結中,各個使用者針對不同場景是否皆具有權限。

透過這兩篇的介紹,讀者們是否更了解場景的功能了呢?快回MCS建立屬於你自己的場景吧!

Thanks to Michael Hsu.

 

相關文章

[教學文] 快說!怎樣不用Arduino也能做出電子鐘!!(顯示器篇)

$
0
0

站在火車站大廳,抬頭仰望就可看見有一個大大的時鐘,醒目地提醒旅客們現在的時刻;在電梯門前,望著旁邊的指示器,看看電梯現在位在哪個樓層。這種分成七節,外觀很像方形的8的東西,就是我們的七段顯示器。

本文就是要帶大家一窺七段顯示器的奧秘!

作者/攝影

CAVEDU實習生 陳俊霖

文章分類 教學技術文
時間

1hr

成本

約60元

難度 **(1-10)
材料表
  • 指撥開關(4位元) *1

  • 三用電表 *1

  • 杜邦線or單心線

  • 555 *1

  • 7490 *1

  • 7447 *1

  • 220Ω *11

  • LED *4

  • 七段顯示器 *1

  • 1kΩ *4

  • 51kΩ *1

  • 47kΩ *1

  • 10u電解電容 *1

  • 0.1u陶瓷電容 *1

(若想購買相關材料,請洽機器人王國商城)

上一篇文章  [教學文] 不用Arduino做出電子鐘?!(計數器篇) 中,我們介紹怎麼使用7490,接下來,就讓我們把計算的數字「視覺化」吧!

 

我們使用最常見的七段顯示器(7-segment display)作為數字顯示器。

圖1 七段顯示器外觀

 

下圖是七段顯示器,以及7447接腳圖和連接範例:

圖2 七段顯示器接腳圖

 

圖3 七段顯示器連接範例

 

原廠datasheet 網址(RS Components ): 7-segment-display 圖中的顯示器是共陽極。

 

Step1:在選擇驅動IC時,要先確認自己使用的七段顯示器是共陰極或共陽極。

先拿出我們的三用電表,若是數位型的三用電表,先將檔位調整至歐姆檔的X1。接下來,將紅棒放在七段顯示器的正中央接腳(COM)上。黑棒則隨意置於其它不是COM的腳位,以測試這個顯示器是否有字節故障。數位電表中,紅棒是正極,黑棒是負極。

圖4 數位電表七段顯示器測試

 

若使用指針型三用電表的讀者們,一樣將檔位調整至歐姆檔的X1,但這次我們將黑色棒放置於七段顯示器的中央接腳(COM)上,紅色隨意置於其他不是COM的腳位,測試這個顯示器是否有字節故障。指針電表中,黑棒是正極,紅棒是負極

圖5 指針電表七段顯示器測試

 

數位型電表與指針型電表接腳相反的原因,是因內部結構不同,剛好兩種電表在歐姆檔時,兩隻探棒內部連接至電池的極性相反。比較好記的方法是,記得數位型電表紅色就是正(比較直觀),指針型則與數位型相反。這部分在許多場合需要判讀零件的正負接腳時非常重要,若因不小心買錯零件而需重新設計整個電路將會得不償失。

 

確認好自己的七段顯示器規格後,就來選擇驅動IC吧!

 

Step2:常見的驅動七段顯示器專用IC有7447與7448。7447是驅動共陽極的七段顯示器;而7448則是驅動共陰極。我們這次使用共陽極的七段顯示器,因此使用7447進行解說。下圖是7447的腳位圖:

圖6 74LS47腳位圖

 

74LS47 datasheet 原廠網址(TI):  74LS47 BCD to seven segment decoder
將IC放置於麵包版上後,如圖7連接電路。

圖7 指撥開關和七段顯示器

 

電路說明:

LT、BI、RBI 三隻腳位是用來控制7447的,功能如同上次的7490的RST接腳,因此全部接至電源正極即可。若想更了解這幾隻腳位的用途,可參考上方的datasheet連結。

 

A、B、C、D 是我們的資料輸入腳位,輸入二進制資料(BCD碼)至7447後,會轉換成對應的顯示器輸出。

 

a~g則是七段顯示器的LED腳位。

 

最左邊的圖示是指撥開關,每一個開關接一個下拉電阻到地,以確保開關未動作時不會浮接。

圖8 麵包板接線參考圖

 

圖9 實體圖

 

若接線皆正確,那麼讀者的七段顯示器應該可以工作了!若有不亮或顯示亂碼的狀況,可以檢查一下指撥開關的地方是否接觸不良,或是LT、BI、RBI 三隻腳是否接至正極,又或是七段顯示器的規格用錯了。

 

Step3:我們將四個指撥開關撥出我們想要的數字,0往下撥,1往上撥。我們若輸入十進制的5,轉換成二進制就是「0101」,那麼七段顯示器就會對應輸出5了!

 

Step4:我們把上一次接好的555與7490計數電路(Q0~Q3)接至7447解碼電路上。7490的數字輸出對應接入7447資料輸入,如下面電路圖所示:

圖10 自動計數電路

 

接好後,接上電源,專屬的0~9計數時鐘就完成了!實體電路圖如圖11,看起來稍微有點複雜,但還是可以完成的。

圖11 自動計數實體電路圖

 

 

看著它自己從0數到9,還有一旁LED相對應的跳動,是不是很有趣呢!只要把兩個7490串在一起,甚至可做出從0數至99的計數器呢!有這個應用,就可組合出專屬的時鐘了。

 

不僅如此,若讀者也可以自己做開發板的相關應用。除可利用它來顯示溫度、電壓、電流之外,還可將開發板連上網路,顯示網頁的瀏覽次數、貼文的按讚次數,甚至是Youtube的訂閱者數目喔!

 

小小的七段顯示器配合Maker的創意,可以產生出眾多應用,從小小的零件變成如此重要的工具呢!

相關文章

[介紹文]以LinkIt7697搭配LinkIt Remote打造智慧門禁系統 6項功能、6大特色一次帶您看!!

$
0
0
作者/攝影

智慧門禁系統作者:曾希哲老師

文字整理:CAVEDU 宗諭

圖片:曾希哲老師、pixabay

文章分類 介紹文
時間

成本
難度
材料表
  • LinkIt 7697*1(若欲購買,請洽機器人王國商城)

  • RC522 RFID讀取器*1

  • 電磁鎖*1

  • LCD*1

  • 蜂鳴器*1

  • Mifare S50 Card*1

  • 智慧型手機*1

因長期致力於科技教育,CAVEDU團隊認識許多老師,但慢慢地我們才發現,教師當中真是人才濟濟,高手藏身於教育界。對科技、程式教育,有熱忱又富能力的老師其實相當多,例如熱衷於四軸飛行器教學的洪雅慧老師,還有對於Micro:bit深有研究的劉正吉老師⋯⋯等等,而花蓮的曾希哲老師也是其中之一。

圖1 各路高手在教師界

 

若仔細瞧瞧曾希哲老師的臉書頁面,上面幾乎都是他各種學習程式、物聯網、開發板的心得、照片及影片,例如,他最近就在玩LinkIt 7697的擴充板,不斷發出新的貼文,真感受到他的樂此不疲!為將所學得的技術充分教導給學生,曾老師也架設一個網站「曾希哲的學習天地」,上面有他學習物聯網、LinkIt 7697、Arduino⋯⋯等等心得,讀者們記得抽空去逛逛喔!

圖2 曾希哲老師的個人網站

 

本文的主角是曾希哲老師一手打造的「智慧門禁系統」。當初,曾老師有做過RFID的門禁系統,並於2017年以此系統參加過「花蓮創客賽物聯網組」,卻一直找不著適合的按鍵輸入方式。

 

因此,曾希哲老師便逐漸萌生以手機當作藍牙鍵盤的想法,並想透過LinkIt Remote實現。後來,他在手機上實做出藍牙鍵盤,並加入原有的門禁系統中,再把幾項一直想做出的功能實現,最後「智慧門禁系統」就大功告成。(噹啷~~)

圖3 智慧門禁系統

 

讓我們先看看曾希哲老師親自錄製的介紹影片:

 

這個「智慧門禁系統」包含哪些單元呢?請見下圖:

圖4

 

智慧門禁系統的功能與特色

系統是以LinkIt 7697為核心建立,有以下幾項功能:

  1. 可用RFID刷卡輸入

  2. 可以藍牙鍵盤輸入

  3. LCD顯示輸出

  4. 蜂鳴器輸出

  5. 若使用者兩次輸入錯誤,系統就會透過Line即時訊息通知屋主。

  6. 假設使用者受威脅必須開門,可輸入威脅密碼,門一樣會打開,但會在威脅者無法察覺情況下,以Line即時訊息通知屋主,使屋主能盡快報警。

 

這個系統又有哪些特色呢?

  1. 以手機作為藍牙鍵盤,使用起來相對方便。

  2. 使用者受威脅需開門時,可使用威脅密碼。

  3. 同時使用藍牙與WiFi功能,LinkIt 7697是以IFTTT網路服務,透過Wi-Fi傳送Line即時訊息。

  4. 不需使用App Inventor撰寫手機程式,只要撰寫7697程式即可。

  5. 使用LinkIt 7697 BlocklyDuino,程式撰寫比較容易。

圖5

 

圖6 圖5、6為曾希哲老師運用LinkIt 7697 BlocklyDuino,所撰寫的程式碼。

 

6.可透過這個系統,學習RFID的概念。

 

進一步交流

關於如何自造智慧門禁系統,應是因製作步驟較複雜,曾希哲老師只簡單提及,就是拆解系統各部分功能,然後進行各單元製作、測試,逐步組成為一個完整系統。若讀者閱畢本文,有興趣進一步了解此系統,歡迎直接至曾希哲老師的臉書頁面與他交流。

 

前文提及,曾老師設計、製作此系統很重要的原因,是為了實踐把手機當成藍牙鍵盤。而他是用BlocklyDuino撰寫藍牙鍵盤的程式,若讀者想更多了解,可點此下載原始程式碼。

 

結語

總之,曾希哲老師目前正積極測試LinkIt 7697擴充板的各式功能,若後續有任何消息、成果,CAVEDU教育團隊也會成為報馬仔,透過技術部落格或臉書粉絲專頁,跟讀者們分享,敬請期待!

 

附錄:

曾希哲老師以BlocklyDuino撰寫藍牙鍵盤的程式碼

/*
 * Generated using BlocklyDuino:
 *
 * https://github.com/MediaTek-Labs/BlocklyDuino-for-LinkIt
 *
 * Date: Wed, 27 Jun 2018 18:58:00 GMT
 */

#include <LRemote.h>

int SetPasswd;

int PhonePasswd;

int c;

String S1;

String S2;

String S3;

String S4;

String InputPsaawd;

String OpeningDoor;

String PasswdError;

LRemoteLabel label1;
LRemoteButton button7;
LRemoteButton button8;
LRemoteButton button9;
LRemoteButton button4;
LRemoteButton button5;
LRemoteButton button6;
LRemoteButton button1;
LRemoteButton button2;
LRemoteButton button3;
LRemoteButton button0;
LRemoteButton button10;

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  LRemote.setName("LinkIt 7697");
  LRemote.setOrientation(RC_PORTRAIT);
  LRemote.setGrid(3, 5);
    label1.setPos(0, 0);
    label1.setText("Input Password");
    label1.setSize(3, 1);
    label1.setColor(RC_ORANGE);
    LRemote.addControl(label1);

    button7.setPos(0, 1);
    button7.setText("7");
    button7.setSize(1, 1);
    button7.setColor(RC_BLUE);
    LRemote.addControl(button7);

    button8.setPos(1, 1);
    button8.setText("8");
    button8.setSize(1, 1);
    button8.setColor(RC_GREEN);
    LRemote.addControl(button8);

    button9.setPos(2, 1);
    button9.setText("9");
    button9.setSize(1, 1);
    button9.setColor(RC_BLUE);
    LRemote.addControl(button9);

    button4.setPos(0, 2);
    button4.setText("4");
    button4.setSize(1, 1);
    button4.setColor(RC_GREEN);
    LRemote.addControl(button4);

    button5.setPos(1, 2);
    button5.setText("5");
    button5.setSize(1, 1);
    button5.setColor(RC_BLUE);
    LRemote.addControl(button5);

    button6.setPos(2, 2);
    button6.setText("6");
    button6.setSize(1, 1);
    button6.setColor(RC_GREEN);
    LRemote.addControl(button6);

    button1.setPos(0, 3);
    button1.setText("1");
    button1.setSize(1, 1);
    button1.setColor(RC_BLUE);
    LRemote.addControl(button1);

    button2.setPos(1, 3);
    button2.setText("2");
    button2.setSize(1, 1);
    button2.setColor(RC_GREEN);
    LRemote.addControl(button2);

    button3.setPos(2, 3);
    button3.setText("3");
    button3.setSize(1, 1);
    button3.setColor(RC_BLUE);
    LRemote.addControl(button3);

    button0.setPos(0, 4);
    button0.setText("0");
    button0.setSize(1, 1);
    button0.setColor(RC_GREEN);
    LRemote.addControl(button0);

    button10.setPos(1, 4);
    button10.setText("Clear");
    button10.setSize(2, 1);
    button10.setColor(RC_ORANGE);
    LRemote.addControl(button10);
  LRemote.begin();
  SetPasswd = 10;
  PhonePasswd = 0;
  c = 0;
  digitalWrite(LED_BUILTIN, LOW);
  S1 = "*";
  S2 = "**";
  S3 = "***";
  S4 = "****";
  InputPsaawd = "Input Password";
  OpeningDoor = "Opening Door";
  PasswdError = "Password Error";
}


void loop()
{
  LRemote.process();
  if (button0.isValueChanged()) {
    if (button0.getValue() == 1) {
      c = c + 1;
      if (c == 1) {
        PhonePasswd = PhonePasswd + 1;

      }

    }

  } else if (button1.isValueChanged()) {
    if (button1.getValue() == 1) {
      c = c + 1;
      if (c == 2) {
        PhonePasswd = PhonePasswd + 2;

      }

    }
  } else if (button2.isValueChanged()) {
    if (button2.getValue() == 1) {
      c = c + 1;
      if (c == 3) {
        PhonePasswd = PhonePasswd + 3;

      }

    }
  } else if (button3.isValueChanged()) {
    if (button3.getValue() == 1) {
      c = c + 1;
      if (c == 4) {
        PhonePasswd = PhonePasswd + 4;

      }

    }
  } else if (button4.isValueChanged()) {
    if (button4.getValue() == 1) {
      c = c + 1;

    }
  } else if (button5.isValueChanged()) {
    if (button5.getValue() == 1) {
      c = c + 1;

    }
  } else if (button6.isValueChanged()) {
    if (button6.getValue() == 1) {
      c = c + 1;

    }
  } else if (button7.isValueChanged()) {
    if (button7.getValue() == 1) {
      c = c + 1;

    }
  } else if (button8.isValueChanged()) {
    if (button8.getValue() == 1) {
      c = c + 1;

    }
  } else if (button9.isValueChanged()) {
    if (button9.getValue() == 1) {
      c = c + 1;

    }
  } else if (button10.isValueChanged()) {
    if (button10.getValue() == 1) {
      label1.updateText(String(InputPsaawd));
      c = 0;
      PhonePasswd = 0;

    }
  }
  if (c == 1) {
    label1.updateText(String(S1));

  } else if (c == 2) {
    label1.updateText(String(S2));
  } else if (c == 3) {
    label1.updateText(String(S3));
  } else if (c == 4) {
    label1.updateText(String(S4));
    delay(500);
    if (SetPasswd == PhonePasswd) {
      label1.updateText(String(OpeningDoor));
      digitalWrite(LED_BUILTIN, HIGH);
      delay(5000);
      digitalWrite(LED_BUILTIN, LOW);

    } else {
      label1.updateText(String(PasswdError));
      delay(5000);

    }
    label1.updateText(String(InputPsaawd));
    c = 0;
    PhonePasswd = 0;
  }
  delay(100);
}

 

相關文章


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

$
0
0
作者/攝影

資料提供: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 v2 BlocklyDuino v3
發佈時間 2017/06 2018/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愉快。

 

相關文章

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

$
0
0
原文作者

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

 

相關文章

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

$
0
0

本文沿續上一篇「一次學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和馬達組合在一起,並搭配上旋鈕。

 

相關文章

 

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

$
0
0
作者/攝影

本文改編自聯發科技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新功能「觸發條件與動作」的教學,盼望透過這篇教學文,使讀者們未來建構物聯網應用時,可以更加得心應手。

 

相關文章

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

$
0
0

炎炎夏日,小編手刀衝進公司附近的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!

 

相關文章

Viewing all 678 articles
Browse latest View live