Tag Archives: BBC Microbit

[ 翻譯 ] micro:bit 攻略(一):透過電線連接micro:bit

原文作者

Cigdem Sengul 與 Anthony Kirby

圖片

Cigdem Sengul 與 Anthony Kirby

翻譯宗諭審閱吉弘
說明

感謝作者Cigdem Sengul 與 Anthony Kirby授權,原文書的連結:https://microbit.nominetresearch.uk/networking-book/,特此致謝!

材料表
  • Micro:bit*2(若您想要購買micro:bit,歡迎洽詢機器人王國。)

  • 鱷魚夾線*4

  • 電池座*1

  • 3A電池*2

本文將示範如何透過電線(搭配鱷魚夾頭)連接兩個micro:bit,進而建立起您自己的網路。為讓兩個micro:bit可以彼此傳輸訊息,它們需要連結在一起,不論是有線或無線,而我們稱此為通訊媒介。

 

在兩個micro:bit間傳輸的訊息,可以是字串(String),如「Hello」;或是數字,如「9」;或是一個小圖案。micro:bit會把要傳輸的訊息轉變成為訊號,再透過通訊媒介傳送出去。

 

例如,當我們透過家中的有線電話說:「哈囉」,電話的手持聽筒將聲音轉變為電壓訊號。然後,這個訊號透過線路被傳輸至接收端的電話,而接收端的電話再把電壓訊號轉變回聲音。

 

電腦及您手上的micro:bit,在處理訊號時一定會將它們轉換為二進位資料,也就是0和1。此外,經由電腦處理的二進位資料,必須在透過通訊媒介傳送前被轉變成為訊號。而透過不同的通訊媒介所連接的電腦或任何裝置就是網路。在這篇文章中,您將透過鱷魚夾頭電線來建立一個包含兩個micro:bit的小小網路。

 

小知識:網路

一個電腦網路包含了數台電腦或裝置,它們連結在一起可以互相通訊。在一個電腦網路中,至少包含了兩台電腦,而兩個或更多的網路足以形成更大的網路。而我們常提到的網際網路(Internet),是一個包含非常多網路的巨型網路。

 

動動手寫程式:傳遞愛心圖案

在這個段落,讀者們將透過電線連接兩個micro:bit。您將從一個micro:bit傳送一個心型圖案至另一個。接下來,您將藉由四個任務,撰寫出傳送心型圖案的micro:bit程式。

圖1 愛心圖案

 

任務一:觀看心型圖案如何傳送

請看這段影片,說明如何連接兩個micro:bit以及程式運作方式,請看:

 

任務二:將兩個micro:bit連接起來,並測試連線是否成功。

Step1:使用鱷魚夾線,連接兩個micro:bit的3V腳位。然後,用另一條線連接兩個micro:bit的GND腳位。

 

Step2:使用鱷魚夾線,(1)連接第一個micro:bit的2號 腳位,另一頭接到第二個micro:bit的1號腳位;(2)連接第二個micro:bit的2號 腳位,另一頭接到第一個micro:bit的1號腳位。請注意線一定要接對:3V接3V;GND接GND;Pin 1接 Pin 2;Pin 2接 Pin 1。

圖2 要特別注意的是,鱷魚夾線需要正確連接。

 

Step3:測試傳輸線是否接通。請用瀏覽起開啟MakeCode程式環境(https://makecode.microbit.org/),用程式指令積木拉出圖3的程式。這個程式的邏輯是,當我們按下其中一個micro:bit上面的按鈕A,檢查另一個micro:bit的LED是否亮起。您將可在「進階/引腳」程式積木指令區中找到本程式所需的指令積木。

圖3

 

任務三:測試傳送心型圖案的Hex檔案

Step1:將傳送心型圖案的程式下載至您的micro:bit。這裡有兩個不同的Hex檔案,需要下載至micro:bit 1和micro:bit 2。載點分別在:Hex1 Hex2 。請注意這兩個Hex檔案要直接裝到您手邊的的micro:bit上執行,無法再MakeCode程式環境來編輯了。

 

Step2:現在,請搖晃一下micro:bit來看看是否有顯示心型圖案。

 

任務四:撰寫傳送心型圖案的程式

在這個任務中,您要寫一個micro:bit的程式來達到類似於在任務二、三中的傳送訊息效果。在撰寫程式前,您必須思考三個問題:

  1. 在您的程式中,micro:bit會對於哪一項輸入產生反應?

  2. 兩塊micro:bit該如何傳送資料給對方?

  3. 你覺得兩塊micro:bit是真的把心型圖案傳送給對方嗎?

 

關於問題1,請讀者們看一下MakeCode程式環境中的「輸入」程式積木指令區下面的選項;關於問題2,請讀者們使用前面任務二步驟三的電報程式。

 

關於問題3,我們假設micro:bit 2知道,它將會從micro:bit 1那裡接收到一個心型圖案,讓我們撰寫micro:bit 1的程式,使它:

(1)先顯示一個心型圖案,直到它向micro:bit 2傾斜;

(2)當它向micro:bit 2傾斜時,它會從正確的腳位向micro:bit 2傳送一個脈衝;

(3)當micro:bit 1在正確的腳位上接收到這個脈衝時,它會顯示出一個心型圖案。

 

接著撰寫micro:bit 2程式,使它:

(1)當它在正確的腳位上接收到一個脈衝,micro:bit 2會顯示一個心型圖案。

(2)當它向micro:bit 1傾斜,它會從正確的腳位傳送一個脈衝給micro:bit 1。

 

這樣大家都明白程式是如何運作的了嗎?趕快動動手玩玩看吧!

 

相關文章

[ STEAM好好玩 ] 樂高小屋大改造!!結合BOSON電子積木、micro:bit,立馬升級成智慧小屋!(有片請入)

市面上有多種樂高小屋套組,不知道讀者們有沒有想過,在小屋內再多加上樂高積木以外的東西呢?這次我們要讓樂高小屋與BOSON電子積木結合,激盪出更多變化。

作者/攝影

陳怡璇

文章分類教學技術文
時間

1小時內

成本

難度

*

材料表
    • LinkIt 7697*

    • Micro:bit*1

    • Boson inventor kit*1

    • (若欲購買,請洽機器人王國商城。)

首先,我們要先有一間樂高小屋。(各種樂高小屋皆可,只要空間足夠放入BOSON電子積木即可。)

圖1 樂高小屋

 

這次製做的樂高小屋分成兩部分,第一部分是單純的BOSON電子積木,第二部分是micro:bit加上BOSON。而單純BOSON的部分,我們會用到以下幾種積木:

  • Mainboard-3IO(3組輸入輸出的控制板)

  • 藍色無段開關*2(紅色無段開關是一樣的)

  • 運算邏輯模組NOT

  • 計時模組

  • 錄音機模組

  • 喇叭

  • 發光二極體(LED)

 

micro:bit加上BOSON的部分,則需要開關、光敏感測器及馬達。

 

第一部分:

Step1:

接下來就是分別接上。這邊又可分成兩個小部分,一是按下按鈕,錄音模組會發出聲音;另外是按下按鈕LED會亮起一段時間。不過在動手前,我們要先介紹主控版。主控版有輸入、輸出的區別,接的時候需要注意。請讀者們依照圖2電源接孔朝下擺正後,左邊接輸入,右邊接輸出(特別注意箭頭的方向,箭頭指出去的地方就是接輸出)。

圖2

 

一旦知道主控版如何使用後,我們就可開始接上其他積木了!讓我們先接上LED的部分。接上順序為 :無段開關→計時模組→運算邏輯模組NOT→主控版→發光二極體(請讀者們參考圖3)。接上計時模組時,跟主控版一樣,需注意箭頭的方向。

圖3

 

接下來,讓我們接上錄音機模組的部分。

 

接上的順序為:無段開關→主控版→錄音機模組→喇叭。錄音機模組沒有箭頭,不過接喇叭那邊的孔,只接兩條線所以比較小。

圖4

 

 

Step2:

最後就是micro:bit的部分了,這裡便不需要主控版和邏輯的積木了。請將馬達接至P0,光敏感測器接至P1,開關接至P3。

圖5

 

接完後,再來便是編寫程式。我們盼望達到的功能是:當有陽光會熱時,按下按鈕電風便開啟;當沒有陽光時,就算按下按鈕也不能開啟電風扇,這樣才能省電。所以,以下便是這次我們所需要的程式指令積木:

  • 【基本】重複無限次

  • 【邏輯】如果-那麼-否則、且0=0

  • 【引腳】數位信號讀取數位信號寫入

 

請讀者們依照圖6接上。在這裡,的程式指令積木,便能代替BOSON電子積木內的運算邏輯模組AND。

備註:運算邏輯模組AND的功能——當輸入的兩個條件皆達成,就能有輸出。

圖6

 

Step3 :

各方面都接好後,就可以裝在樂高小屋上面囉!

圖7

 

 

讀者們在組裝時,可依照自己的喜好進行改變,也可自己設定其它情境,增加更多的BOSON電子積木。

 

相關文章

 

[教學文] 當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則可以依照色環進行顏色調整,或是加入前一篇使用過的感測器進行改變。

 

相關文章

[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

 

相關文章

[ 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一閃一閃會如何呈現?來看看影片:

 

相關文章

[ App Inventor + Microbit ] RGB LED控制

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

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

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

 

 

硬體清單

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

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

 

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

 

 

範例影片

 

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

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

完成如下圖。

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

App Inventor

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

 

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

 

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

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

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

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

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

 

Blocks

 

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

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

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

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

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

STEP2: 更新LED狀態的副程式

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

 

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

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

STEP2: Button to light up red

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

STEP3: other buttons for different colors

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

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

STEP4: 中斷藍牙連線

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

操作

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

 

小挑戰

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

 

 

相關文章:

[App Inventor] Microbit磁力感測器控制小蜜蜂圖示

本文章教各位讀者如何用手機撰寫App Inventor的應用程式,並透過Buletooth Low Energy 來取得 Micro:bit 磁力感測器訊號,讓app上的小圖示飛來飛去。

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

 

本文要介紹如何藉由最近非常熱門的BBC Micro:bit開發板上的磁力感測器來控制App畫面上的小圖示轉動。Micro:bit板子上已經具備了BLE藍牙通訊功能,搭配app Inventor寫好的micro:bit extesion,就能有更多互動的效果。

 

範例 aia檔下載請按我

 

藍牙配對

 

Micro:bit端設定:

  1. 同時按住Microbit 正面A、B按鍵,不要放掉
  2. 按住A、B鍵時,把背面的Reset 鍵按下後再放開。
  3. 這時應該可以看到 “PAIRING MODE!” 以跑馬燈方式出現在Microbit LED 螢幕上,若看到這訊息,便可以放開A、B鍵。
  4. PAIRING MODE! 結束後,會看到一個圖形出現在Microbit LED 螢幕上,不同的Microbit 出現的圖案也不同,這是Microbit 不同裝置獨特的”簽名” (Signature) 。

5.這時候的Microbit 已經準備好跟其他裝置配對,請看以下影片教學

 

 

 

Android手機端設定:

  1. 進入Android手機的設定–>藍牙
  2. 確認Micro:bit 已進入配對模式
  3. 當Micro:bit上的‘PAIRING MODE!’ 顯示完,搜尋(每隻Android手機這個選項的文字不一定相同,但意思差不多),應該會看到類似 micro:bit [XXXXX]的選項,其中XXXXX 會根據每片micro:bit而不同。點選該裝置來配對。

4.micro:bit 會出現向左的箭頭,然後Android裝置上會跳出畫面要求輸入配對PIN碼的視窗。

5.按住Micro:bit 的按鍵A ,這時microbit 會連續出現六個數字,這就是配對碼。

6.回到Android裝置上,輸入這六個數字。如果Microbit 出現[V],代表配對成功。如果是[X]代表沒成功,請再試一次。

 

編寫程式來取得Micro:bit磁力感測器

匯入BLE 與 micro:bit extension

 

請登入MIT App Inventor官方網站,建立新專案,在Designer葉面中點選Palette左下角的Extension,再點選”Import extension“與”URL:

  1. 貼入以下兩個 extension link:
  2. 請加入 Microbit_Magnetometer這個元件,這是一個非可視元件。並把它的 BluetoothDevice 屬性設為 “BluetoothLE1″。這步驟很容易忘記,別漏掉了
  3. 加入四個按鈕放入 horizontalArrangement元件中,分別用於掃描、停止掃描連線與斷線
  4. 加入1個顯示訊息用的label,用於顯示連線狀態
  5. 加入一個 ListVeiw,當掃描到鄰近的BLE裝置時會顯示在這裡 (到此與MIT所提供的基礎連線測試程式相同)
  6. 加入一個Canvas,寬高皆為320像素
  7. 在Canvas中加入一個ImageSprite,使用任何您喜歡的圖案都可以,在此使用MIT App Inventor新的小蜜蜂logo。
  8. 最後加入4個顯示訊息用的label,用於顯示連線狀態、X、Y、Z軸與方位角(bearing)

Blocks頁面

  1. 掃描與連線

在此的做法都差不多,先點選ScanButton來掃描鄰近可用的BLE裝置(以本專案來說目標是micro:bit,但當然也會出現其他裝置例如手機筆電之類的)。找到裝置之後就會出現在畫面中的ListView中,選取micro:bit後點選ConnectButton就可以連線(BluetoothLE.Connect指令)。

  1. 連線成功後開始更新磁力感測器值

在此設定更新速度(reporting period) 為20ms,並要求micro:bit開始回報方位角與各軸磁力資料更新。

  1. 顯示磁力偵測值並控制ImageSprite

Microbit_Magnetometer1.MagnetometerBearingReceivedMagnetometerDataReceived事件中,我們取出各參數並顯示於對應的Label。並用X、Z軸數值來控制ImageSprite的X. Y座標,您可以改為其他的軸向資料或用於控制其他的效果,很多效果都可以嘗試。

斷線

斷線時會呼叫 bluetoothLE元件來中斷藍牙連線,確認斷線之後則顯示相關訊息。

完工了!來試試看吧。請確認您的Micro:bit與Android已經配對好了。按下按鈕應該可以看到畫面上有一些數字不斷跳動,試著拿個小磁鐵在Micro:bit附近晃晃(別拿太強的,弄壞我不負責喔),看看數字與小圖案的變化。試試看用 Micro:bit搭配 App Inventor 做出更多功能吧

 

相關文章:

 

 

完成如下圖:

 

[Micro:bit] 使用MicroPython與Boson套件設計智慧風扇

本篇文章將帶領讀者使用Microbit輕鬆打造一台小型的智慧風扇,有興趣的朋友不妨參考一下本文,一起來動手DIY吧!

作者/攝影  袁佑緣
時間  3小時
成本
難度  * * *
材料表
  • Micro:bit
  • 樂高積木
  • Micro:bit Boson 擴充版

 

介紹

本篇文章的主角是BBC推出的微型電腦micro:bit,有興趣的朋友不妨參考一下micro:bit的官方網站(http://microbit.org/),裡面有許多適合入門又豐富有趣的應用喔!

而為了要打造一台電動風扇,我們需要加裝額外的擴充版跟電子元件,本文所使用的是DFRobot推出的Boson擴充版,Boson是DFRobot 所推出的一系列電子套件,外型就像積木一樣,除了相容於LEGO之外,還可以用金屬羅絲固定,並且附有磁吸式的底座,容易組裝也容易拆卸,且電路的接口都有經過特別的設計,隨插及用,非常適合沒有電路基礎的小朋友們入門電子實做的世界!

 

想了解更多boson kit相關資訊的朋友,不妨去參考一下DFRobot的官方網站說明喔(https://www.dfrobot.com/blog-630.html)!

準備

經過前面的介紹,接下來我們就要來正式進入我們的實做部份了,首先我們在軟體以及硬體上做一些準備。

 

組裝擴充版

準備我們的micro:bit以及Boson擴充板,組裝圖如下,記得micro:bit的logo朝下面,有LED陣列的那面朝上喔,如果說到時候燒錄程式失敗的話,就會用LED陣列顯示出錯誤訊息。

micro:bit控制板

組裝micro:bit boson擴充板

組裝完成!

 

風扇製作

本範例的硬體主要是用LEGO來做,請參考下方的圖片,零件上用LEGO動力機械的基本套件就能完成囉,當然有興趣的朋友也可以自己DIY設計一個獨特風格的電風扇底座,只要記得上面要有四個boson的座,在待會的實做部份我們會慢慢放入感測器以及馬達、風扇。

軟體安裝

Micro:bit 預設的程式撰寫環境有兩種,一種是圖形化的JavaScript Blocks Editor,另外一種則是我們接下來用的MicroPython Editor。

Microbit let’s code 網站:http://microbit.org/code/

MicroPython 線上編輯器

 

 

MicroPython是將原本就容易學習的程式語言Python實做到為微控制板的架構上,好比說是micro:bit,以下是micro:bit MicroPython的詳細說明文件(http://microbit-micropython.readthedocs.io/en/latest/tutorials/introduction.html),裡面有詳細敘述許多的功能,以及API取用的方法,比起圖形化的Block Editor 來說雖然難度上升了一點,但是彈性也增加了,可以讓我們程式撰寫的功能範圍變得更廣!

MicroPython for micro:bit文件

 

除了使用剛剛在官網看到的線上版,也可以下載MicroPython文件中推薦的Mu Editor(https://codewith.mu/#download),這款編輯器主打簡單、易學,初學者只要專心在學習如何撰寫MicroPython上就好。

Mu 編輯器

 

除此之外,這個編輯器還是跨平台的,不只Windows平台上可以執行,macOS或者是Linux也可以,請讀者依照自己的作業系統環境來下載。

下載Mu Editor

 

下載完成後,打開來之後就會有如下圖的編輯器,當我們要上傳程式碼的時後,請先將micro:bit用usb線接到電腦上,再按下flash的按鈕就行囉!

實做

STEP1:控制馬達 

首先我們先加入Boson套件中的馬達,請裝在基座的正中間,組裝如下圖。

裝完馬達跟風扇之後,接下來請把Boson的訊號線接到micro:bit Boson擴充板的8號腳位上,也就是右上角的那個插座,如下圖。

再來請打開我們的Mu Editor,並打上以下的範例程式碼。

from microbit import *

mode = [700, 900, 1023]
while True:
    for speed in mode:
        print(speed)
        pin8.write_analog(speed)
        sleep(1000)

 

程式碼解說

首先從microbit這個Python函式庫中引入所有的函式,也就是把我們所需要的工具都加進這支程式當中。

接下來再宣告一個變數mode,為三個數字的串列(list),其實就是建造一個三段變速的電風扇,而裡面的數字大小代表的則是馬達的輸出馬力,數字越大就會越強,風力也越大,注意到1023是最高的馬力,而最低馬力700則是個建議的數值,太低的話有可能馬達會轉不到風扇,這點要特別注意喔!

最後我們有一個大大的while迴圈,裡面在包著一個for迴圈,所謂的迴圈就是會在某種條件下一直執行動作的意思,好比說while True就是一直迴圈,for speed in mode就是在三段變速中各執行一次的意思。

至於for迴圈裡面的所執行的動作,就是很直接的把我們的馬達設成三段變速中的速度囉!其中要注意的是,我們所使用是函式(function)是write_analog,意思就是用類比(analog)電壓去驅動我們風扇的馬達,因為用數位的模式就只有開跟關的模式,為了要做到變速的模式,才需要用到類比控制喔!

 

 

 

STEP2:開關控制 

有了馬達之後,我們學會了撰寫程式碼來控制電風扇,但是這樣在使用上可能還不夠直接,如果說我們要像生活中的電風扇一樣,可以有個按鈕來開關電風扇呢?這時候就需要加裝感測器(sensor)啦,請依照下方的組裝圖加上一個Boson套件的按鈕,並把它接到擴充版上的腳位12上。

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('ON' if fan_switch else 'OFF')
        pin8.write_digital(int(fan_switch))
        while pin12.read_digital():
            sleep(100)

 

程式碼解說

在這個範例中,我們把重點放在風扇的開關上,所以在控制轉動風扇的馬達時,我們使用的就不是像前面變速式的類比(analog)方式,而是開跟關兩種模式互相切換的數位(digital)方式,所以用的函式是用write_digital。

在程式中,我們有宣告一個變數fan_switch,用來儲存現在使用者控制風扇的按鈕狀態(第12號腳位),每當使用者按下開關又放開之後,就會改變一次fan_switch的狀態,有可能是從開的狀態轉成關(ON->OFF),或者是相反,只要我們把這個fan_switch變數轉成數字後丟到控制馬達的函式上,就能夠達到開關風扇的功能囉!

請參考下面的示範影片,讀者是否能能順利做到開關風扇呢?

https://youtu.be/QeR3TxfTs5g)

 

STEP3:風量調整

 

接下來我們來整合一下前面兩步的範例,除了要能夠開關之外,還要加入一個旋鈕來調整風力大小,讓這個風扇更加的貼近使用者!

請按照下圖,加裝一個Boson 旋鈕套件到風扇的基座上,並把訊號線接到擴充板的0號腳位上,也就是板子的左上角。

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]

def fan_mode_switch(value):
    interval = int(1023/3)
    for i in range(3):
        if value >= i * interval and value < (i+1)*interval:
            break
    return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
        while pin12.read_digital():
            sleep(100)
    if fan_switch:
        mode, power = fan_mode_switch(pin0.read_analog())
        if mode is not previous_mode:
            previous_mode = mode
            print("Fan mode: ", mode)
            pin8.write_analog(power)
    else:
        previous_mode = 'OFF'
        pin8.write_analog(0)
    sleep(300)

程式碼解說

程式好像比起前面兩個程式碼加起來多了不少,就讓我們慢慢來拆解看看是怎麼實作的吧!

首先我們比起STEP1中的三段變速又更明確的定義了馬力(fan_power)跟風速模式(fan_mode)了,並且我們用def定義了一個自己的函式出來,這個fan_mode_switch函式主要會從吃進來的value值,也就是我們旋鈕轉到的數值,來決定我們現在風扇的模式,並輸出對應的馬力值。

而我們是如何判斷風扇馬力的模式呢?其實就是把我們的旋鈕數值(0到1023)分成三等份,然後看看當下使用者轉到的數值是落那一個區間上,就把它對應到三種不同的風力模式(slow, medium, fast)。

最後,這隻範例程式碼還有一個小細節是值得初學者去注意的,當我們在切換模式的時候,我們都必須要注意只有當前一刻風力模式跟此刻轉到的風力模式時才需要去改變我們馬達的轉速,同時顯示的馬力大小才需要去更新,所以我們會用一個previous_mode變數來儲存上一刻的模式喔!

以下是我們的示範影片。

 

STEP4:智慧風扇

最後,我們還想要加入一些常見的風扇沒有的功能,來讓我們的小風扇更加的智慧化,並貼近使用者的使用環境。請依照下面的組裝圖加上一個Boson套件的motion 感測器,並把訊號線接到1號腳位上。

而什麼是motion sensor呢?其實就是所謂的PIR(Passive Infrared Sensor),常見的用途就是用來偵測人體的接近(靠著生物體的紅外線),有時候我們在逃生梯上下樓時,電燈自動會開啟其實就是因為有這種感測器,它會自動偵測有人在走動來自動打光。

而我們想要實做的功能就是除了STEP3中有的功能以外,還要加入一個情境,如果偵測到有人的話,例如說偵測到人的手,就會自動開啟電風扇,而不需要特地去壓按鈕還開電風扇,一起來看是如何實做的吧!

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]

def fan_mode_switch(value):
    interval = int(1023/3)
    for i in range(3):
        if value >= i * interval and value < (i+1)*interval:
            break
    return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
        while pin12.read_digital():
            sleep(100)
    if fan_switch:
        mode, power = fan_mode_switch(pin0.read_analog())
        if mode is not previous_mode:
            previous_mode = mode
            print("Fan mode: ", mode)
            pin8.write_analog(power)
    elif pin1.read_digital():
        fan_switch = True
        print('Fan status: ' + 'ON')
    else:
        previous_mode = 'OFF'
        pin8.write_analog(0)
    sleep(300)

程式碼解說

比起STEP3的程式碼,我們延伸了主結構中的if…else…,將fan_switch的狀態以外,再新增(elif)了一個motion sensor的狀態(pin1.read_digital),注意到motion sensor只能偵測是否有人靠近,所以使用的是數位的訊號(digital),它無法偵測距離多寡,而且如果身體靜止一段時間的話,也不會觸發motion sensor喔!

以下是我們最後完成的智慧風扇影片,可以用按鈕開關風扇,還可以用旋鈕調整轉速,並且還能用motion sensor在有人的時候自動開啟風扇!

 

相關文章: