Introduction: S4A Sensor Board
在進行Arduino教學前,S4A是 Scratch 與 Arduino 無縫銜接的學習工具。在教學現場,S4A Sensor Board 內建了許多基本的學習元件與Sensor,是教師進行Scratch for Arduino教學時,非常方便,整合性又高,擴充性好的一塊擴充板。
進行本課程前,您需要準備準備的硬體是一片由台灣 慧手科技 所出品的Arduino擴展板:S4A Sensor Board,和一片Arduino UNO或其相容板。
S4A Sensor Board for Arduino主要設計給Arduino/Motoduino 或S4A初學者使用的一塊互動板,結合麥克風、按鍵開關、光源感測、滑桿式可變電阻、LED 、蜂鳴器等元件,以及四組RJ11的接頭可供外部連接其他裝置或元件,如溫濕度感測器、土壤濕度感測器等。另外預留一個藍芽孔位給需要無線傳輸的使用者。可利用此無線傳輸跟Android手機或電腦溝通。AIS板子上也預留六根數位腳位給其他需要外部電源的裝置使用,例如連接多個伺服馬達。RJ11端可接至少十米長的電話線連接感測器。(原文引用自motoduino慧手科技:S4A感測互動擴充板商品簡介)
參考資料:
Step 1: 認識 Arduino!
Arduino是一種硬體開放授權的互動環境開發板,互動裝置其實無所不在,例如冷氣的恆溫裝置,便是透過溫度感測器偵測環境溫度,再進行室內溫度的自動調節;還有汽車的倒車雷達,當過於靠近障礙物體時,會發出聲音警告駕駛者。這些裝置為生活增加不少安全及便利,甚至在互動玩具上,帶給使用者驚喜,有時候,也會利用藝術品呈現在生活當中,增添生活上的精采。
Arduino 主要可區分為三個部分,Arduino硬體(例如 UNO、Leonardo...)、Arduino軟體及Arduino擴充元件(Sensor;傳感器)。Arduino 學習門檻較為簡單,不需要電子電機相關科系的背景,也可以很容易學會 Arduino 相關互動裝置的開發。由於 Arduino 以公開共享為基礎,多數人都樂於分享自己的的創品,網路上能找的創作案子非常豐富。以此會基礎,有時只需要參考分享者的作品,依據自身的需求行調整,就可以在短時間內完成自己的創作。 (更多內容請參考 - ITs通訊:認識 Arduino)
Step 2: 甚麼是 S4A?
S4A(Scratch for Arduino)是由歐盟的Citilab 開發團隊,從 Scratch 的原生程式所開發出來的 Arduino 圖形化程式,讓學習者可以藉由 Scratch 的基礎,進而學習 Arduino 及其模組的開發應用。
下列是收集的一些資源,供大家參考:
Step 3: 安裝軟體:安裝Arduino、 S4A 應用程式與主控板 Firmware
主要步驟:
開始使用S4A之前,基礎環境的建置是相對的重要。接下來,要為大家先介紹如何建置 S4A 的軟體環境, 如果您對這一段環境建置已經熟悉,可以直接往下一個Session學習。
安裝過程主要是 Arduino 應用程式的安裝與 S4A 環境建置這兩個部分:Arduino 環境建置與S4A 環境建置。
Arduino 環境建置
- 下載開發環境:至官網(arduino.cc),點選download後,依據您的電腦作業系統下載ArduinoIDE (建議下載1.0.6下載版)。
- 安裝開發環境:有2種下載檔,如下載install檔,直接執行;如為zip檔,直接解壓縮後,進入資料夾找執行檔即可使用。
- 安裝arduino驅動程式:電腦連接arduino(若需驅動程式,位置在arduinoIDE安裝資料夾內drivers資料夾)。本課程為了教學相容性,選擇USB CH340G晶片 的 Arduino UNO R3 開發板,在主控板驅動程式部分請點選連結下載(或本Session下的檔案下載)。
- 找出板子的COM Port號碼:於裝置管理員找到「連接埠」,內有Arduino Uno連結的COM Port 編號(這是接下來要上傳 S4A Firmwarm的位置)。
連接 Arduino UNO 和 S4A Sensor Board,並確認與電腦連結完成。
S4A 環境建置(S4A應用程式 & Firmware)
- 至S4A官網下載(網址s4a.cat),下載S4A主程式(電腦用;WindowsPC、MacPC)及另一個是S4A韌體(arduino用。
- 下載S4A軟體並安裝。下載S4A韌體,並利用Arduino軟體上傳至Arduino UNO上。
您也可以參考用S4A(Scratch for Arduino):玩出科技創意大未來這本書,裡面也有非常詳盡的介紹與設定說明。
參考閱讀:
- 小學生的 Fablab 教室:《安裝軟體:安裝 S4A 應用程式與主控板 Firmware》
Step 4: Session 01 - 讓 LED 燈亮起來
這一個 Session 開始,將要以 Arduino UNO 搭配 S4A Sensor Board 進行傳感器的控制與應用。
課堂的第一步~ LED 燈的控制,這個 Session 總共有三個範例,提供你練習。
Step 1:(範例:S4A_Sensor_Board_01.sb)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 亮起來
Step 2:(範例:S4A_Sensor_Board_02.sb)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 亮起來,3 秒後再熄燈。
Step 3:(範例:S4A_Sensor_Board_03.sb)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 閃爍兩次。
Step 4:(範例:S4A_Sensor_Board_04.sb)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 和綠色 LED 燈(D11)輪流閃爍兩次。
Step 5:(範例:S4A_Sensor_Board_04_1.sb)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) 和綠色 LED 燈(D11)重複輪流閃爍共十次。
Step 5: Session 02 - 用按鈕控制 LED 燈
除了讓 LED 亮起來,這個Session 的課程內容,要學習如何透過按鈕,控制 LED 燈的開關。
Step 1:(範例:S4A_Sensor_Board_05.sb)
按下綠旗執行程式,讓S4A Sensor Board 的紅色 LED 燈(D10) ,可以透過按鍵(D2)控制,讓燈亮起來。
Step 2:(範例:S4A_Sensor_Board_06.sb)
按下綠旗執行程式,控制 S4A Sensor Board 的紅色 LED 燈(D10) ,按下按鍵(D2)控制,讓燈亮起來。否則紅色 LED 燈(D10)就不亮。
功課:
- 按下綠旗執行程式,可有透過按鍵(D2),啟動 S4A Sensor Board 的紅色 LED 燈(D10) 不斷閃爍。
- 請您設計一個程式,按下按鍵(D2)時,啟動 S4A Sensor Board 的紅色 LED 燈(D10) 和綠色 LED 燈(D11),交互不斷閃爍。
Step 6: Session 03 - 請你利用鍵盤搭配 S4A 控制 Sensor
請您利用 S4A 中的「偵測指令」積木,操作 S4A Sensor Board的按鍵與LED燈。
Step 1:(範例:S4A_Sensor_Board_07.sb)
執行一次,按下鍵盤的「上移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的紅色 LED 燈(D10) 亮起來,等待3秒後熄燈。
Step 2:(範例:S4A_Sensor_Board_08.sb)
重複執行,按下鍵盤的「下移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的綠色 LED 燈(D11) 亮起來,等待3秒後熄燈。
練習:
- 請將上面兩個練習範例,放在同一個執行緒中。
Step 7: 練習一:
請將學習一的兩個範例題,整合在同一個執行緒中。
Step 1:(範例:S4A_Sensor_Board_09.sb)
按下鍵盤的「上移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的紅色 LED 燈(D10) 亮起來,等待3秒後熄燈。
按下鍵盤的「下移鍵」,啟動執行動作:按下按鍵(D2),啟動 S4A Sensor Board 的綠色 LED 燈(D11) 亮起來,等待3秒後熄燈。
Step 2:(範例:S4A_Sensor_Board_10.sb)
重複執行動作,直到新的條件出現,判斷新條件後執行動作。
提示:
- 執行緒中,需要有「條件」判斷式。
Step 8: Session 04 - 讀取電位器(可變電阻)的偵測值
類比埠的輸出值是0~1023。在S4A Sensor Board 上,類比埠除了應用在RJ11的擴充腳位上,在板子上也預設使用3組類比埠,即 A0:電位器(可變電阻)、A1:光源感測器(也可透過D3 PWM)、A2:麥克風。從這個 Session 開始,我們要練習電位器的控制與應用。
Step 1:(範例:S4A_Sensor_Board_11.sb)
讀出電位器 (A0) 的偵測值,將電位器(可變電阻)的偵測值顯示在舞台區。
Attachments
Step 9: Session 5 - 讀取電位器(可變電阻)的偵測值,判斷數值的大、中、小
這個 Session 主要在練習「運算」與「變數」的條件式應用,透過操作練習,了解「運算」指令積木的功能,能夠運用「運算」指令在程式的數學運算。同時學習利用「變數」的功能來增加效率,讓重複的指令,透過變數的宣告,直接執行,簡化程式的架構。
Step 1:(範例:S4A_Sensor_Board_12.sb)
利用變數作為宣告電位器(可變電阻)的偵測值讀取值,再透過「運算」指令的功能,判斷變數值得大小。
Attachments
Step 10: Session 6 - 「運算」與「變數」的應用
這個 Session 主要在練習應用「運算」與「變數」的執行結果,將讀取值作為其他感測器應用的輸入值。以本範例來說,就是利用電位器(可變電阻)的偵測值,作為判斷讓蜂鳴器聲音變大或變小的數據。
Step 1:(範例:S4A_Sensor_Board_蜂鳴器.sb)
在 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。
Attachments
Step 11: Session 7 - 使用光源感測器
S4A Sensor Board 的光源控制器是透過 D3 或 A1 腳位引出,在這個 Session 的學習課程,光源感測器與電位器(可變電阻)一樣,都是利用類比埠輸出,輸出值介於0~1023。
Step 1:(範例:S4A_Sensor_Board_13.sb)
讀出光源感測器 (A1) 的亮度偵測值,將亮度的偵測數值顯示在舞台區。
Attachments
Step 12: Session 8 - 使用光源感測器控制燈光的開關
承接上一個 Session 的課程內容,這個Session 將利用「運算」與「變數」的執行結果,將讀取值作為判斷值。透過光源的明暗變化,控制 LED 燈的動作與開關。
Step 1:(範例:S4A_Sensor_Board_14.sb)
利用光源感測器(A1)的偵測值,判斷光線的明暗,當亮度大於620時,說:你好。當亮度不足(小於400)時,閃爍紅色 LED 警示。
Step 2:(範例:S4A_Sensor_Board_15.sb)
利用光源感測器(A1)的偵測值,判斷光線的明暗,當亮度大於620時,關閉 LED燈。當亮度不足(小於400)時,開啟LED 燈。
Step 13: Session 9 - 偵測聲音的大小數值
在 S4A Sensor Board 的 A2 腳位,設有一個類比埠的麥克風,可以透過麥克風的聲音輸入,偵測聲音值得大小。
Step 1:(範例:S4A_Sensor_Board_16.sb)
讀出麥克風 (A2) 的偵測值,將麥克風偵測的聲音大小數值顯示在舞台區。
Attachments
Step 14: Session 10 - 聲控開關
延續上一個單元 (Session 9),利用麥克風偵測的聲音值,判斷值得大小,作為啟動 LED 燈的開關。
Step 1:(範例:S4A_Sensor_Board_17.sb)
利用麥克風 (A2) 偵測聲音的大小,當聲音大於開燈預設值 (範例:300) 時,讓LED (D10) 燈亮起來。
利用麥克風 (A2) 偵測聲音的大小,當聲音小於關燈預設值 (範例:200) 時,讓LED (D10) 燈熄燈。
Attachments
Step 15: Session 11 - 控制舵機 (Servo) 角度
這個 Session ,我們將學習控制外接的傳感器:Servo(舵機),透過指令調整舵機的角度變化。(範例舵機型號 SG90 或 SG90)
Step 1:(範例:S4A_Sensor_Board_18.sb)
透過動作指令的程式積木,設定不同的轉度角度位置 (範例:20、60、90、180),讓 Servo (舵機;D4)依序重複變換轉動的角度位置。
注意:
連接 Servo (舵機)時,要注意接線與 S4A Sensor Board上的腳位位置:S(訊號;黃線)、V (5V電源;橘紅線)、G (地線;棕色線)。
Attachments
Step 16: Session 12 - 製作停車場閘門
Step 1:(範例:S4A_Sensor_Board_19.sb)
結合 Servo (舵機;D4)與按鍵 (D2) 的程式指令積木,設計一個類似停車場出入口的閘門,透過按鍵 (D2) 控制閘門的開關。
當閘門關閉時,Servo (舵機;D4)的角度位置是在 20 度。
當按下開關,閘門開啟時,Servo (舵機;D4)的角度位置是在 90 度。開啟閘門後,於 10 秒鐘後自動關閉閘門。
Attachments
Step 17: Session 13 - 利用「變數」控制 Servo 的角度變化
這個 Session 將利用變數來作為 Servo 角度的變化,控制 Sevo 的轉動。
Step 1:(範例:S4A_Sensor_Board_20.sb)
預設 Servo 的角度起始位置是 0 度,每隔 0.01 秒增加 1 度(時間的設定值可以控制 Servo轉動的平順度)。由於 Servo 的轉動角度只有 180 度 (SG90 或 MG90),當舵機依序從 0 度轉動到 180 度時,回到 0 度,重複步驟轉動。
Attachments
Step 18: Session 14 - 利用電位器(可變電阻)控制 Servo 的變化
這個 Session 是這一堂課程的最後一單元,利用先前所學的電位器(可變電阻)控制方法,控制 Servo (舵機)的轉動角度。由於電位器(可變電阻)的讀取值是 0~1023,我們將把電位器(可變電阻)的讀取值分成大、中、小三段,作為控制 Servo (舵機)角度的值。
Step 1:(範例:S4A_Sensor_Board_21.sb)
利用變數設定 Servo (舵機)的起始位置是 90 度,angle 作為 Servo (舵機)轉動角度位置的變數,範例設定當電位器(可變電阻)變數的讀取值大於 612 時,Servo (舵機)的角度隨讀取值增加而增加。
反之,當電位器(可變電阻)變數的讀取值小於 412 時,Servo (舵機)的角度隨讀取值減少而角度變小。