Introduction: 用S4A Sensor Board玩Scratch 2.0

為什麼要用S4A Sensor Board玩Scratch 2.0

2016~2020資訊總藍圖規劃,運算思維(computational thinking)成為課程發展的一項重要綱領。雖然,運算思維所要強調發展,並非僅止於程式編輯一項,反而更是一個解決問題的思維發展模式。但是,在資訊教育的課程發展中,利用程式編輯的學習經驗,是足以作為培養學生發展運算思維的媒介工具。

Inside這篇文章曾經提到:曾任 TripAdvisor 軟體工程師、現任 LinkedIn 資深軟體工程師的 Yevgeniy Brikman 在其個人部落格發表「Don't learn to code. Learn to think.」一文,認為這股鼓吹大家學習寫程式的風潮有點誤導大眾,他認為大家在學習寫程式的同時,更重要的是學習電腦科學的思維模式。

MIT Media Lab 團隊的計劃執行長 Mitch Resnick 在TED演講中也說:重點並非是要將所有年輕人培訓成程式設計師,而是透過學習程式語言,開拓更寬廣的學習途徑。「當你學會閱讀,你便能藉著閱讀學習更多知識,程式設計也是一樣的道理;如果你會撰寫程式,你能透過程式語言學習到的事物將更為多樣。」學寫程式就是在學習創意思考、有系統的推論、和團隊合作,而這些技能不僅在各專業領域都受用無窮,更是生活中不可或缺的能力。

如果您對於發展運算思維課程有興趣,想要更深入了解甚麼是運算思維!下列幾篇文章值得推薦給您。

  1. 運算思惟其實一點也不神祕(上集)演算法也有不神祕的一面(下集)
  2. 什麼是運算思維?如何培養運算思維?
  3. 「教師運算思維推動計畫」研習紀錄1/3(Day 1)「教師運算思維推動計畫」研習紀錄2/3(Day 2)「教師運算思維推動計畫」研習紀錄3/3(Day 3)
  4. 不當工程師,為什麼也該學程式? - 親子天下

認識S4A Sensor Board

S4A Sensor Board是由台灣 慧手科技 所出品的Arduino擴展板:S4A Sensor Board,必須結合Arduino UNO或其相容板的主板使用。本課程所使用的S4A Sensor Board擴展板,是第一代的擴展板。第二代S4A/S2A Sensor Board擴展板(S4A/S2A Sensor Board for Arduino V2 (S4A/S2A感測互動擴充板第二版)),功能更新,除了S4A課程,也是S2A課程應用非常好的學習擴展板,板體面積更小,在後續課程,我們會另外設計課程。

S4A Sensor Board for Arduino主要設計給Arduino/Motoduino 或S4A初學者使用的一塊互動板,結合麥克風、按鍵開關、光源感測、滑桿式可變電阻、LED 、蜂鳴器等元件,以及四組RJ11的接頭可供外部連接其他裝置或元件,如溫濕度感測器、土壤濕度感測器等。S4A Sensor Board的設計,避免了感測元件頻繁插拔可能造成的設備耗損或人員受傷,是非常適合教學上使用。

另外,此擴展板預留一個藍芽孔位給需要無線傳輸的使用者。可利用此無線傳輸跟Android手機或電腦溝通。AIS板子上也預留六根數位腳位給其他需要外部電源的裝置使用,例如連接多個伺服馬達。RJ11端可接至少十米長的電話線連接感測器。(原文引用自motoduino慧手科技:S4A感測互動擴充板商品簡介

參考資料:

  1. 使用手冊下載
  2. 圖書:用S4A(Scratch for Arduino):玩出科技創意大未來
  3. S4A (Scratch for Arduino)互動智能積木

Step 1: 認識 Arduino!

Arduino是一種硬體開放授權的互動環境開發板,互動裝置其實無所不在,例如冷氣的恆溫裝置,便是透過溫度感測器偵測環境溫度,再進行室內溫度的自動調節;還有汽車的倒車雷達,當過於靠近障礙物體時,會發出聲音警告駕駛者。這些裝置為生活增加不少安全及便利,甚至在互動玩具上,帶給使用者驚喜,有時候,也會利用藝術品呈現在生活當中,增添生活上的精采。

Arduino 主要可區分為三個部分,Arduino硬體(例如 UNO、Leonardo...)、Arduino軟體及Arduino擴充元件(Sensor;傳感器)。Arduino 學習門檻較為簡單,不需要電子電機相關科系的背景,也可以很容易學會 Arduino 相關互動裝置的開發。由於 Arduino 以公開共享為基礎,多數人都樂於分享自己的的創品,網路上能找的創作案子非常豐富。以此會基礎,有時只需要參考分享者的作品,依據自身的需求行調整,就可以在短時間內完成自己的創作。 (更多內容請參考 - ITs通訊:認識 Arduino)

本課程使用 Arduino 的開發板選用科易(Keyes) CH340 UNO 開發板,主要是因為課程主要以Scratch為主,課程中透過Transformer作為轉譯程式,可以不需要Arduino IDE程式,所以只需要安裝CH340驅動程式即可,在教學上更便於教學同步與管理。如果您是使用ATMega328(P)相容板,則必須依據下列補充下載Arduino IDE,建置Arduino的操作環境。

Arduino 環境建置

  1. 下載開發環境:至官網(arduino.cc),點選download後,依據您的電腦作業系統下載ArduinoIDE。
  2. 安裝開發環境:有2種下載檔,如下載install檔,直接執行;如為zip檔,直接解壓縮後,進入資料夾找執行檔即可使用。
  3. 安裝arduino驅動程式:電腦連接arduino(若需驅動程式,位置在arduinoIDE安裝資料夾內drivers資料夾)。本課程為了教學相容性,選擇USB CH340G晶片 的 Arduino UNO R3 開發板,在主控板驅動程式部分請點選連結下載(或本Session下的檔案下載)。
  4. 找出板子的COM Port號碼:於裝置管理員找到「連接埠」,內有Arduino Uno連結的COM Port 編號(這是接下來要上傳 S4A Firmwarm的位置)。
  5. 連接 Arduino UNO 和 S4A Sensor Board,並確認與電腦連結完成。

Step 2: 用Kodorobot Transformer玩Scratch 2.0

本課程的進行需要下載Scratch 2.0 離線版( https://scratch.mit.edu/scratch2download/ )做為程式編輯平台,鑑於課程進度,本課程不另外進行Scratch安裝教學,有需要相關教學的朋友,請自行搜尋參考。同時,您於上課之前,還必須下載Transformaer轉譯程式,作為Scratch程式與Arduino控制板的轉譯程式。

注意:下載Scratch離線版安裝檔後,依指示安裝即可,過程中會要求安裝〔Adobe AIR〕,請按【確定】即可安裝完成。


認識Scratch!

Scratch是由MIT(美國麻省理工學院)所研發的兒童程式編輯工具,透過電子積木的形式,增加了學習過程的樂趣,讓學生從樂趣中體驗程式編輯的思維模式,亦是目前最為廣泛應用於教學現場的應用工具。

Scratch的開發目的:在讓程式設計語言初學者不需先學習語言語法便能設計產品。開發者期望通過學習Scratch,啟發和激勵用戶在愉快的環境下經由操作(如設計互動故事)去學習程式設計、數學和計算知識,同時獲得創造性的思考,邏輯編程,和協同工作的體驗。(維基百科)

更多 Scratch或程式編程課程的資源,如下列表:

  1. SCRATCH-TW
  2. 十四個自學 Scratch 最完整的公益開放課程
  3. 宜蘭縣教師課程數位學習平台
  4. 兒童程式設計 KidsCoding


認識 Kodorobot Transformer ~

Kodorobot Transformer是由台灣宇宙機器人公司所開發的Scratch與Arduino轉譯程式。什麼是轉譯程式呢?Transformer作為轉譯程式的主要功能是為了讓Scratch的電子化積木語言,可以透過轉譯程式將程式命令轉化為數位訊號,傳送至Arduino板並執行命令動作。

過去,這個角色一直都是利用S4A(Scratch for Arduino),對於利用S4A學習S4A Sensor Board有興趣的朋友,可以參考我們之前的課程:S4A Sensor Board。本課程主要是以Scratch 2.0作為程式編輯的工具,透過Kodorobot Transformer協助,讓學生藉由學習Scratch的經驗,進而控制Arduino及其相關感測器。


Kodorobot Transformer的安裝與應用:

下載檔案區之Transformer應用程式,直接依照步驟即可安裝完成,安裝完成後,確認硬體環境無誤,即可開始進入課程。關於Kodorobot Transformer的安裝、應用及其進階課程,各位亦可以連結由奕學所設計的課程,作為課後補充學習。

補充教材:

  1. 網路線上版scratch2.0操控arduino(S2A) ( http://blog.ilc.edu.tw/blog/blog/868/post/97121/629471 )
  2. 竹林資訊站( http://blog.ilc.edu.tw/blog/blog/868/page/2 )
  3. WFduino初級班課程( http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433 )
  4. 外部感應器初體驗:軟、硬體選擇建議( http://blog.ilc.edu.tw/blog/blog/868/post/10898/634141 )

【宇宙機器人教育團隊】
該團隊希望讓STEM教育方法做到【平民化機器人普及教育】的宗旨,運用平價方式,理論課程運用STEAM實務學會,把翻轉教育當教學目標讓學生和老師增加更多互動性。

由該奕學的團隊所主持的理念社團: https://goo.gl/DH67x6 、粉絲專頁:https://goo.gl/DH67x6

宇宙機器人 KODOROBOT官方網站:http://www.kodorobot.com/ (最新版免費軟體提供下載唷)

Step 3: 課前準備:課程進行之軟硬體環境確認!

裝置管理員:

操作Transformer前,先確認硬體的連接狀態,例如:MS Windows系統可於裝置管理員中確認(如圖一)。

啟動Transformer:

  1. 啟動Transformer並於「介面」選擇您的連結硬體內容;本案例COM3(USB-Serial CH340)。(如提二、圖三)
  2. 勾選「自動燒錄韌體」。
  3. 於檔案處選擇「自動開啟Scratch」。
  4. 選擇S4A Plus或S2A Plus...等,按「連線」執行。(圖四:案例選擇S4A Plus)
  5. 硬體連線成功後會看到「配對 S4A Firmware 成功!」字樣。(如圖五)
    PS.硬體Firmware只需寫入一次,下次可以不需重複寫入,除非板子又再寫入過其他內容。
  6. 自動開啟Scratch 2後,點選程式/其他積木。會發現硬體連接的燈號亮綠燈,如果是紅燈表示硬體連接失敗或離線,需要再重新連結。(如圖六)

Step 4: 讓 LED 燈亮起來

這一個 Session 開始,將要以 Arduino UNO 搭配 S4A Sensor Board 進行傳感器的控制與應用。

課堂的第一步~ LED 燈的控制,這個 Session 總共有三個範例,提供你練習。

Step 1:(範例:S4A_Sensor_Board_01.sb2)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 亮起來

Step 2:(範例:S4A_Sensor_Board_02.sb2)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 亮起來,3 秒後再熄燈。

Step 3:(範例:S4A_Sensor_Board_03.sb2)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 閃爍兩次。

Step 4:(範例:S4A_Sensor_Board_04.sb2)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 和綠色 LED 燈(D11)輪流閃爍兩次。

Step 5:(範例:S4A_Sensor_Board_05.sb2)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 和綠色 LED 燈(D11)重複輪流閃爍共十次。

Worksheet:

  1. Step 3 還可以用哪一種程式積木的方式呈現呢?
  2. Step 4 還可以用哪一種程式積木的方式呈現呢?

Step 5: 用按鈕控制 LED 燈

除了讓 LED 亮起來,這個Session 的課程內容,要學習如何透過按鈕,控制 LED 燈的開關。

Step 1:(範例:S4A_Sensor_Board_06.sb2)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) ,可以透過按鍵(D2)控制,讓燈亮起來。

Step 2:(範例:S4A_Sensor_Board_07.sb2)
按下綠旗執行程式,控制 S4A Sensor Board 的紅色 LED 燈(D10) ,按下按鍵(D2)控制,讓燈亮起來。否則紅色 LED 燈(D10)就不亮。

Worksheet:

  1. 按下綠旗執行程式,可有透過按鍵(D2),啟動 S4A Sensor Board 的紅色 LED 燈(D10) 不斷閃爍。
  2. 請您設計一個程式,按下按鍵(D2)時,啟動 S4A Sensor Board 的紅色 LED 燈(D10) 和綠色 LED 燈(D11),交互不斷閃爍。

Step 6: 請你利用鍵盤搭配 S4A 控制 Sensor

請您利用 S4A 中的「偵測指令」積木,操作 S4A Sensor Board的按鍵與LED燈。

Step 1:(範例:S4A_Sensor_Board_08.sb2)
執行一次,按下鍵盤的「上移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的紅色 LED 燈(D10) 亮起來,等待3秒後熄燈。

Step 2:(範例:S4A_Sensor_Board_09.sb2)
重複執行,按下鍵盤的「下移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的綠色 LED 燈(D11) 亮起來,等待1秒後熄燈。

WorkSheet:

  1. 請將上面兩個練習範例,放在同一個執行緒中。

Step 7: 練習(Workshop) 01

請將前一個的兩個範例題,整合在同一個執行緒中。

Step 1:(範例:S4A_Sensor_Board_10.sb2)
按下鍵盤的「上移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的紅色 LED 燈(D10) 亮起來,等待3秒後熄燈。 按下鍵盤的「下移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的綠色 LED 燈(D11) 亮起來,等待3秒後熄燈。

Step 2:(範例:S4A_Sensor_Board_11.sb2)
重複執行動作,直到新的條件出現,判斷新條件後執行動作。

提示:

  1. 執行緒中,需要有「條件」判斷式。
  2. 請比較範例中的差異。

Step 8: 讀取電位器(可變電阻)的偵測值

類比埠的輸出值是0~1023。在S4A Sensor Board 上,類比埠除了應用在RJ11的擴充腳位上,在板子上也預設使用3組類比埠,即 A0:電位器(可變電阻)、A1:光源感測器(也可透過D3 PWM)、A2:麥克風。從這個 Session 開始,我們要練習電位器的控制與應用。

Step 1:(範例:S4A_Sensor_Board_12.sb2)
讀出電位器 (A0) 的偵測值,將電位器(可變電阻)的偵測值顯示在舞台區

Step 9: 讀取電位器(可變電阻)的偵測值,判斷數值的大、中、小

這個 Session 主要在練習「運算」與「變數」的條件式應用,透過操作練習,了解「運算」指令積木的功能,能夠運用「運算」指令在程式的數學運算。同時學習利用「變數」的功能來增加效率,讓重複的指令,透過變數的宣告,直接執行,簡化程式的架構。

Step 1:(範例:S4A_Sensor_Board_13.sb2)
利用變數作為宣告電位器(可變電阻)的偵測值讀取值,再透過「運算」指令的功能,判斷變數值得大小。

Step 10: 「運算」與「變數」的應用

這個 Session 主要在練習應用「運算」與「變數」的執行結果,將讀取值作為其他感測器應用的輸入值。以本範例來說,就是利用電位器(可變電阻)的偵測值,作為判斷讓蜂鳴器聲音變大或變小的數據。

Step 1:(範例:S4A_Sensor_Board_14.sb2)
在 S4A Sensor Board 上,蜂鳴器的位置腳位是 D9 的PWM腳,可以透過電位器提供輸出的電壓值,控制蜂鳴器音量,電壓的計算公式為 V=(n/255)*5,所以當 n=0 時,電壓為 0 V;當 n=255 時,電壓為 5 V。

電位器本身透過電阻的大小,改變電壓的輸出值,取得不同的類比訊號。S4A Sensor Board 上的電位器是接在類比埠A0 ,電位器的類比輸入值是 0~1023;但是,PWM 的類比輸出值是 0~255,因為類比輸入數值與PWM的值不符,會出現錯誤提示。所以,通常會再將(類比訊號的值/4)之後取整數(四捨五入),再修正 >255設定為255,<0的值設定為 0,最後再將其值送出給PWM。

Step 11: 使用光源感測器

S4A Sensor Board 的光源控制器是透過 D3 或 A1 腳位引出,在這個 Session 的學習課程,光源感測器與電位器(可變電阻)一樣,都是利用類比埠輸出,輸出值介於0~1023。

Step 1:(範例:S4A_Sensor_Board_15.sb2)
讀出光源感測器 (A1) 的亮度偵測值,將亮度的偵測數值顯示在舞台區。

Step 12: 使用光源感測器控制燈光的開關

承接上一個 Session 的課程內容,這個Session 將利用「運算」與「變數」的執行結果,將讀取值作為判斷值。透過光源的明暗變化,控制 LED 燈的動作與開關。

Step 1:(範例:S4A_Sensor_Board_16.sb2)
利用光源感測器(A1)的偵測值,判斷光線的明暗,當亮度大於620時,說:你好。當亮度不足(小於400)時,閃爍紅色 LED 警示。

Step 2:(範例:S4A_Sensor_Board_17.sb2)
利用光源感測器(A1)的偵測值,判斷光線的明暗,當亮度大於620時,關閉 LED燈。當亮度不足(小於400)時,開啟LED 燈。

Step 13: 偵測聲音的大小數值

在 S4A Sensor Board 的 A2 腳位,設有一個類比埠的麥克風,可以透過麥克風的聲音輸入,偵測聲音值得大小。

Step 1:(範例:S4A_Sensor_Board_18.sb2)
讀出麥克風 (A2) 的偵測值,將麥克風偵測的聲音大小數值顯示在舞台區。

Step 14: 聲控開關

延續上一個單元 (Session 09),利用麥克風偵測的聲音值,判斷值得大小,作為啟動 LED 燈的開關。

Step 1:(範例:S4A_Sensor_Board_19.sb2)
利用麥克風 (A2) 偵測聲音的大小,當聲音大於開燈預設值 (範例:300) 時,讓LED (D10) 燈亮起來。
利用麥克風 (A2) 偵測聲音的大小,當聲音小於關燈預設值 (範例:200) 時,讓LED (D10) 燈熄燈。

Step 15: 控制舵機 (Servo) 角度

這個 Session ,我們將學習控制外接的傳感器:Servo(舵機),透過指令調整舵機的角度變化。(範例舵機型號 SG90 或 SG90)

Step 1:(範例:S4A_Sensor_Board_20.sb2)
透過動作指令的程式積木,設定不同的轉度角度位置 (範例:20、60、90、180),讓 Servo (舵機;D4)依序重複變換轉動的角度位置。

注意:
連接 Servo (舵機)時,要注意接線與 S4A Sensor Board上的腳位位置:S(訊號;黃線)、V (5V電源;橘紅線)、G (地線;棕色線)。

Step 16: 製作停車場閘門

Step 1:(範例:S4A_Sensor_Board_21.sb2)
結合 Servo (舵機;D4)與按鍵 (D2) 的程式指令積木,設計一個類似停車場出入口的閘門,透過按鍵 (D2) 控制閘門的開關。 當閘門關閉時,Servo (舵機;D4)的角度位置是在 20 度。

當按下開關,閘門開啟時,Servo (舵機;D4)的角度位置是在 90 度。開啟閘門後,於 10 秒鐘後自動關閉閘門。

Step 17: 利用「變數」控制 Servo 的角度變化

這個 Session 將利用變數來作為 Servo 角度的變化,控制 Sevo 的轉動。

Step 1:(範例:S4A_Sensor_Board_22.sb2)
預設 Servo 的角度起始位置是 0 度,每隔 0.01 秒增加 1 度(時間的設定值可以控制 Servo轉動的平順度)。由於 Servo 的轉動角度只有 180 度 (SG90 或 MG90),當舵機依序從 0 度轉動到 180 度時,回到 0 度,重複步驟轉動。

Step 18: 利用電位器(可變電阻)控制 Servo 的變化

這個 Session 是這一堂課程的最後一單元,利用先前所學的電位器(可變電阻)控制方法,控制 Servo (舵機)的轉動角度。由於電位器(可變電阻)的讀取值是 0~1023,我們將把電位器(可變電阻)的讀取值分成大、中、小三段,作為控制 Servo (舵機)角度的值。

Step 1:(範例:S4A_Sensor_Board_23.sb2)
利用變數設定 Servo (舵機)的起始位置是 90 度,「角度」 作為 Servo (舵機)轉動角度位置的變數,範例設定當電位器(可變電阻)變數的讀取值大於 612 時,Servo (舵機)的角度隨讀取值增加而增加。 反之,當電位器(可變電阻)變數的讀取值小於 412 時,Servo (舵機)的角度隨讀取值減少而角度變小。

Step 2:(範例:S4A_Sensor_Board_24.sb2)
承Step 1,利用副程式的概念,設計警示燈號,當 Servo (舵機)的角度達最大值時,亮綠色(D11)燈號。當 Servo (舵機)的角度達最小值時,亮紅色(D10)燈號。

設計一副程式語法關閉程式。

Step 19: 練習 (Workshop) 02

請你利用前面所學過的程式經驗,設計一個光感應自動開啟或關閉窗簾的裝置。

Step 1:(範例:S4A_Sensor_Board_25.sb2)
利用光感應器(A1)感測光源的大小,當光線的亮度大於 612 時,關閉燈(D11),並且打開窗簾(motor 4),直到設定條件停止(角度=179)。

當光線的亮度小於 200 時,打開燈(D11),並且關閉窗簾(motor 4),直到設定條件停止(角度=0)。

Step 20: 课程补充资源!