顯示具有 Makeblock應用 標籤的文章。 顯示所有文章
顯示具有 Makeblock應用 標籤的文章。 顯示所有文章

2018年5月10日 星期四

如何讓零編程經驗學生成功
應用編程教具?

簡介

本人在 2018 年 5 月 10 日應 Makeblock HK 邀請,分享「如何讓零編程經驗學生成功
應用編程教具?」,以下為分享會中的文字內容。

背景

本人任職教師前主修電子工程學及計算機工程學,略懂編程,而現在則主要任教小學三至六年級的數學、常識及電腦科。學校的 STEM 課程由 2015 - 16 年度開始,以常識科主導,每級有最少一個單元加入 STEM 元素,並且沒有編程的內容。而學生方面,在 2017 - 18 年度前,只有小六學生會學習 Scratch;2017 - 18 年度開始,小四及小五學生亦開始學習簡單編程。

選擇編程教具

為了讓零編程經驗學生能夠成功應用陌生的編程教具,必須要選擇合適的編程教具。

少組裝(上螺絲)

對於不常接觸電子、電器的學生來說,要用螺絲批上螺絲或是組裝支架是有難度的,更重要是會令大量螺絲不知掉到哪兒,因此,使用感應器或模組應以方便組裝優先。

少積木/文字編程,著重邏輯思維

學習編程不是為了背誦程式命令,而且為了培養邏輯思維,因此,編程軟體應盡量積木或文字形式的編程,或能夠突顯邏輯思維當中的思路。

容易看到即時成果

經過了一節課堂,學生最開心是看到自己所學習的成果,相比起在電腦螢幕上看見熊貓在走來走去,拿在手裡遊玩的滿足感更大。配合顯示屏的教具讓成果能夠更多元化地展示出來。

方便攜帶

理由和上面一樣,總不能讓學生困難地帶著他的成果向同學、父母展示吧!

自學方便

我們在校推動學生自主學習,當學生遇到問題時,我們都希望學生能自行先行嘗試解決問題,再請教老師。因此編程教具必須提供全面的網上學習資源,讓學生能在互聯網上,找到合適的資源,協助他們解決問題。

教案分享

我們考慮來年在現有的課題上,加入編程部份,令學生的創意能夠更容易實體化。近日,Makeblock 推出 Codey Rocky(程小奔),並可以與 Neuron 作結合,發揮功能性,並符合我們所想。因此,以下教案將分享如何在舊有教案上,加入新的編程元素,令學生學習更有樂趣。

解決日常生活中遇到的難題(小五,常識,電的探究)

這個課題是我們自 2017 年開始的 STEM 教案,往時我們會先以「不會亮的手電筒」作引入,帶出甚麼是「閉合電路」及它的功用。然後透過一系列實驗,讓學生了解不同的電路接駁方法、導電體和絕緣體、不同的開關效果等等。

實驗後,我們希望學生綜合不同電路的接駁方法,選取其中一個電路效果作為研習主題,
設計一個日常生活中遇到的情境或難題,並以該電路作為解決方法
及解釋它的理念。我們只提供了 5 條鱷魚夾電線、4 粒 LEDs、1 粒蜂鳴器和 1 個 3V 電池座。學生的設計情境或難題雖有不同,但電路卻是同出一轍。其中一組學生設計一個「下雨警報器」,以雨水作為導電體,通知人下雨天收衣服:


他們完成後,我很喜歡問他們:「如果你有錢,有資源,你會如何改善你的設計呢?」


現在他們可以利用 Codey Rocky + Neuron 重新製作設計,以 Codey 作編程,配合 Neuron 作功能性發展,不再是空口說白話。

為甚麼選擇 Codey Rocky + Neuron  這個配搭呢?主要原因是因為 Neuron 的功能選擇多元化,比 mBot 系列的選擇更多更有趣。使用安全膠面及 Pogo Pin 磁吸設計,即使組裝支架亦十分簡單。Codey 自帶顯示屏,顯示表情有趣。處理 IoT 簡單直接。亦可用 Neuron 先以 Flow-based Programming 控制學習。

舉一個例子,用濕度感應器預測下雨,以 Rocky 控制移動,加入 IoT 收集資料,並且用Codey 互相通訊,模擬智能家居,簡單直接。

隔音物料測試(小五,常識,聲音的探究)

較早前,我設計了隔音物料測試的裝置,當時 Codey Rocky 還沒到手,沒法使用。


近日參觀友校的課堂,他們用了 mBot 作教具,提供了完整的程式讓學生測試。



但學生學習了如何使用感應器後,不讓他們試用實在有點可惜。建議可讓學生自行設計整個隔音測試器,感應器和聱源的擺放位置,也可抽走較難處理的部份,例如外接的線路。讓學生先以流程圖描繪程式的流向,並在實作時提供部份程式,指示學生加入使用感應器及處理數據的部份,能更有效達到培養邏輯思維的目標。


使用了 Codey Rocky + Neuron 讓聲源和檢測更容易受控制,不需處理外接電源的煩惱。在收集數據和分析時可讓學生反覆檢查流程圖,再認真檢查程式
是否出現微小錯誤。多讓學生自己思考方法,或以問題刺激他們思考。

最小公倍數及最大公因數(小四,數學,倍數和因數)

數學科一直是我認為最難有意義融入 STEM 的科目。Codey 因為本身有顯示屏,用來顯示數字比 mBot + 數字管(7 Segment)方便得多。我準備了顯示及輸入的程式部份,讓學生先畫流程圖,以「短除法」的概念設計程式。


在過程中,學生不斷反覆想要「短除法」的過程。到成功後,看到的成果,相比起反覆做的練習更有趣,更有滿足感。

提供的程式部份:



而學生需要完成的部份可以是這樣的:


總結

  • 多讓學生自己思考問題,或以問題刺激他們思考
  • 借助流程圖幫助思考,而且流程圖有助於編程時減少混亂
  • 提供非教學目標的程式,加入提示逐步指引
  • 只教需要用的程式,教太多會令學生感覺複雜
  • 盡量減少組裝(上螺絲),選用簡單易用的編程教具
  • 除錯時可先依流程圖檢查,再認真檢查程式
是否出現微小錯誤

2018年3月15日 星期四

mBot x STEM:隔音物料測試

簡介

小學五年級常識科中有一個課題,叫作「光、聲、電」,內容處處與 STEM 掛勾,其中有一部份介紹隔音物料。一般做法都讓學生帶不同物料回校測試,其實可以多做一步,讓學生自行設計隔音物料的測試,發揮創意,加強邏輯思維的訓練,進一步掌握設計循環的理念。

設計循環

STEM 教育是為了促進學生運用課堂及書本上學到的知識與技能,配合創新思維,解決日常生活上遇到的困難。當中,學生設計產品時,可參考設計循環的流程,令整個產品的設計及開發更加流暢:


現在需要解決的問題十分清晰,接下來就需要讓學生開始進行設計。

外觀設計

除了 mCore 外,必須的就是 Me 聲音感應器,顯示方面有很多選擇:數字顯示板、表情面板、LCD 顯示屏……另外還需要一個容器,放置蜂鳴器及隔音物料。


容器的材質並不會影響測試,因為只要一直使用相同容器,測試就能一直保持公平。顯示方面最後選用了 Me TFT 2.2 寸 LCD 顯示屏,更好的選擇是 Me TFT 2.4 寸 LCD 顯示屏,但因為尚未入手,所以先屈就用螢幕小一點的。

畫上草稿,在真正建構時可以減少出錯的機會,加快產品製成的速度。



程式設計

程式中,有兩項主要的工作:一、不斷經蜂鳴器播放音調;二、不斷檢查現在的音量。


如果使用上面的程式,效果則會是先播放音調,再偵測音量,並不能同時進行。因此,我們需要稍為修改一下程式,讓兩件事同步進行。


使用兩個「mBot 主程式」即可解決問題,雖然會有少許停頓,因為我們不是要求蜂鳴器一直播放的。

(更正:根據邱老師提供的意見,兩個「mBot 主程式」不能做到同步,如此可不用蜂鳴器轉用鬧鐘,或是有什麼用 mBlock 做到同步的方法歡迎留言)

測試


程式在一開始會先等候 LCD 顯示屏準備好及蜂鳴器已經在播放音調,再偵測沒有隔音物料時的音量數值,再以黃色線表示。然後可以加入不同的隔音物料,並繼續測試音量數值,並以綠色點在螢幕顯示出來。


2017年11月11日 星期六

Makeblock應用:水溫指標屏

前言

近日和朋友談起學生將 mBot 應用在創客(Maker)方面時的問題,很多人都無法破除「mBot 是一輛車」的看法,很設計都是讓 mBot 保持在一輛車的狀態。對我而言,「mBot 是一部有車身的電腦」,因此,只要把 mBot 的車身拆走,它就是一部電腦了。

適逢近日我在準備小學五年級的 STEM 課堂,他們在學完電的課題後,要設計一個能解決日常生活的裝置。縱然大部份的設計都未能成功,但不少的設計都令我十分驚嘆,畢竟他們不是從小就被訓練創意思維。

其中一組的設計令我印象深刻,他們的設計原文是:

「有時開了煤氣爐後,洗手盆的水喉會發熱,所以我們想做一個發光器。當水喉擰得太過時(太熱),就會開紅燈;當太凍時就會亮綠燈。」


當時我看到覺得非常有趣,但由於硬件的配套不足,而未能成功,實在可惜。但我認為 Makeblock 正好可以作為一個平台,讓學生完成他們的設計。因此,我仿效了這個設計,將設計放在 mBot 上實體化。

設計


設計以簡單為主,模組只用上了數字板和防水溫度感應器。程式設計亦十分簡單,只是將水溫顯示在數字板上,然後根據水溫顯示轉換 LED 燈的顏色,溫度越高越紅,越低越藍。

測試

測試一開始,我先將水瓶注入熱水,水溫迅速由室溫的攝氏25度跳升到攝氏60度,LED 燈亦由藍色轉為紫色。相信大家都知道水的沸點是攝氏100度,而溶點是攝氏0度,因此我們不會看到絕對的藍色或是紅色。



在後期,我逐漸加入冰塊令水溫快速下降,到最後水溫降至攝氏13度,LED 燈亦變回藍色。


總結及延伸

在發展創意思維方面,Makeblock 真的提供了一個很好的平台,讓學生將自己的設計實體化。簡單的組裝,簡單的程式設計,就已經將複雜的硬件配置問題解決了,絕對能在 STEM 發展上幫上忙。

將這個設計延伸下去,其實可以做到很多事情,我舉其中兩個例子:

  1. 按照當時天氣的溫度,調較出適合的洗手溫度;夏天出冷水,冬天出熱水。
  2. 加入可控制的功能,讓用家可以調較出想要的水溫,確保嬰孩在洗澡時的溫度保持在合適溫度。
謹記,mBot 不僅是一輛車,適當地運用,它絕對能做到你想做的事。

2017年10月5日 星期四

mBot x STEM:mBot 水平儀

簡介

我們很多時候看到有一些運用了手提電話內的陀螺儀應用的水平儀,這次我們也會使用 Me 陀螺儀(Me 3-Axis Accelerometer and Gyro Sensor)配合 mCore 造出一個水平儀。

Me 陀螺儀(Me 3-Axis Accelerometer and Gyro Sensor)

首先,我們了解一下 Me 陀螺儀的功能,它是一款理想的機器人運動檢測、姿態檢測模組。包含 3 軸加速度計、3 軸角速度感測器與運動處理器,並提供 I2C 介面通信。

Me 陀螺儀能夠在 X、Y、Z 軸測量加速度的變化,通過感知特定方向的慣性力總量,加速計可以測量出加速度和重力;三軸加速計意味著它能夠檢測到三維空間中的運動或重力引力。加速計可以測量重力(引力)g,如果模組靜止而沒有任何動作,地球引力對其施加的力大約為 1g;如果模組豎直放置,會檢測到 Y 軸上施加的力約為 1g。如果模組以一定角度放置,會檢測到 1g 的力會分佈在不同的軸上。

當模組在三維空間中運動或振動時,Me 陀螺儀會在一個或多個軸上檢測到大於 1g 的力並測量出加速度,對加速度積分可以獲得速度和位移。當物體繞軸旋轉時會產生角速度,Me 陀螺儀能夠檢測 X、Y、Z 軸的角速度變化量;運動處理引擎通過 I2C 埠直接輸出資料,可以減輕週邊微處理器的工作負擔並且避免了繁瑣的濾波和資料融合。

因此,我們在應用時,只需要通常簡易的計算,就可以使用了。

Me 2.2吋 TFT 液晶屏(Me TFT LCD Screen – 2.2 Inch)

除了 Me 陀螺儀外,我也用了 Me 2.2吋 TFT 液晶屏來模擬水平儀上的水珠的走動。Me 2.2吋 TFT 液晶屏的螢幕解析度為 320 寬 x 240 高,和 mBlock 的背景舞台不同,Me 2.2吋 TFT 液晶屏的起始點(0, 0)在螢幕的左上方,而非在螢幕的正中央,因此我們待會需要做一些換算,才能正常顯示。

組裝


水平儀是一個可攜帶的裝置,因此我使用了鋰充電池取代 AA 電池,同時,我也使用了鋰充電池盒安裝在 mCore 的底部,也方便作為量度時的定點。另外,安裝 Me 陀螺儀時亦要注意水平地安裝,以減少量度時出現的誤差。另外,組裝時需注意 Me 陀螺儀的方向,箭咀指向的方向是代表該座標數值的減少,留意清楚才能配合在 Me 2.2吋 TFT 液晶屏的顯示。


連接埠方面,我使用了連接埠 1 連接 Me 2.2吋 TFT 液晶屏,而 Me 陀螺儀並無指定的連接埠,因此我選擇了連接埠 4。而為了方便使用,不宜使用太長的 RJ25 連接線。

編程

Me 陀螺儀會回傳 X、Y、Z 軸的角度,根據我的組裝,X、Y、Z 軸的改變會像這個情況:


X、Y 軸的回傳數值由 -90 至 90,而 Z 軸的回傳數值則由 -180 至 180,但由於我們只量度水平狀況,所以 Z 軸的數值我們並未有使用。

然後,我們需要按 X、Y 軸的數值換成螢幕上的寬和高:


很多學生雖然懂得乘法、除法、分數甚至比例,但都未能將 X、Y 軸的數值按比例地換成螢幕上的寬和高。X 軸的角度不斷增加時,寬的座標就會不斷減少;而 Y 軸的角度不斷增加時,高的座標就會不斷增加。

這時我們發現 Y 軸的變化是一個正比,會比較容易處理,我們可以將高的一半 120 分成 90 份,然後再乘以 Y 軸的角度,最後加上高的一半,即是 120,就能成功按照高的比例增加 y Y 座標的數值。由於 Y 軸的角度可以是負數,加上 120 後就會少於 120,符合正常的情況。mBlock 的積木就如下圖所示,其中的「Height-M」就是高的一半,而「Y-Angle」就是 Y 軸的角度:


而 X 軸的變化則是一個反比,和 Y 軸相同,我們先把寬的一半 160 分成 90 份,然後再乘以 X 軸的角度,但在最後,我們把它減去寬的一半。這個做法會首先將 X 軸的角度按寬的比例變化,然後減去寬的一半,就能讓它們將最少值減到 -320,最後只要取得座標的絕對值,讓負數變回正數,正數不變,就能取得正確的 X 座標。mBlock 的積木就如下圖所示,其中的「Width-M」就是寬的一半,而「X-Angle」就是 X 軸的角度:


完整的 mBlock 程式如下:


一開始我慣常把一些恆常數值放在變數,之後取得 Me 陀螺儀的 X、Y、Z 軸的角度,值得注意的地方是,使用 Me 陀螺儀的 mBlock 積木是不需要選擇連接埠的。之後我會清除 Me 2.2吋 TFT 液晶屏上的內容,我選擇在迴圈當中清除,是因為 Me 2.2吋 TFT 液晶屏的積木可以讓它不斷在 Me 2.2吋 TFT 液晶屏上增加內容,如果不在迴圈中清除,將會看見模擬水泡的殘影。

之後,繪畫了兩條紅線來定義正中央的位置,當模擬水泡在兩條紅線的交叉點時,代表水平儀在水平狀態,最後在計算出來的座標上畫上一個綠色圓點代表模擬水泡。我刻意在每次迴圈結束前,讓它等待 0.1 秒,讓它減慢畫面閃爍的頻率,亦不減慢畫面更新的速度。

測試結果


2017年5月29日 星期一

Makeblock應用:解決 3D 迷宮

簡介

近日在 Youtube 看到一段關於 mBot 解決 3D 迷宮的片段,內容十分有趣,有別於一般想法(1 至 3 個超聲波感應器),它只用了 1 個巡線感應器和 1 個超聲波感應器。但由於是西班牙文,因此在這裡做了翻譯。

組裝方面:

超聲波感應器會安裝在 mBot 的右方(上圖),而巡線感應器則會垂直安裝在前方(下圖)。



邏輯方面:

程式中一共使用了 3 個變數,分別是「右輪速度」(行駛時的右輪速度)、「左輪速度」(行駛時的左輪速度)及「距離」(mBot 和右牆之間的距離)。如上一段所說,我們一共會用兩款感應器—巡線感應器(連接埠2)和超聲波感應器(連接埠3)。

一開始,mBot 會等候板載按鈕按下並鬆開才開始運作。運作開始後,程式會不停重覆以下事情:

不停重覆:
  右輪速度 = 90; 左輪速度 = 90; 設置M1及M2速度;
  直到(巡線感應器 > 0)前不斷重覆:
    距離 = 超聲波感應器讀數;
    如果(距離 < 5):
      /* 距離少於5cm,太接近右面牆 */
      右輪速度 = 150; 左輪速度 = 80;
    如果((5 < 距離)&&(距離 < 6)):
      /* 距離等於5-6cm,再貼近右面牆,別讓mBot離開太遠 */
      右輪速度 = 80; 左輪速度 = 150;
    如果((6 < 距離)&&(距離 < 8)):
      /* 距離等於6-8cm,離右面牆太遠了,別讓mBot離開太遠 */
      右輪速度 = 80; 左輪速度 = 175;
    如果(距離 > 8):
      /* 距離大於8cm,右面有出口,優先右轉 */
      右輪速度 = 50; 左輪速度 = 200;
    設置M1及M2速度;
  後退0.1秒,速度100;
  左轉0.8秒,速度110;


根據以上方法,mBlock 程式大致會像下圖一樣。當然,左、右輪的速度和左轉時間需因應實際情況有所調整。


再來看看,運行的情況(剪裁自原片):