朱勝男



[摘 要]通過“自動跟蹤風扇”的設計,介紹如何在中小學信息技術課上開展機器人教學。創意機器人教學應根據學生的學情,結合創客教育的理念以及信息技術學科的教學內容,鼓勵學生積極動手實踐、探索與創新。
[關鍵詞]Arduino;創意機器人;傳感器;信息技術;中小學
機器人(Robot)是指能夠自動執行工作的機器裝置。美國機器人協會給機器人下的定義是:一種可編程和多功能的操作機;或是為了執行不同的任務而具有可用電腦改變和可編程動作的專門系統。生活中常見的自動售貨機、自動提款機和紅外自動抽水馬桶等,都具有機器人的特征。在此引用的課例,要求學生設計出可以根據人所處的位置調整方向的風扇。雖然它的功能很簡單,但本質上也是機器人。
學校有關機器人的教學從初中三年級開始涉及,由于所選教材涉及的中鳴機器人設備比較貴,更新換代又較快,綜合考慮經濟因素、可拓展性和創客教育的開源性特點,筆者決定選擇Arduino進行機器人教學,參考教材為網絡電子教材《Arduino創意機器人》。此前,學生們已經學過了Scratch圖形編程軟件,掌握了積木式程序設計。在開始設計Arduino創意機器人“自動跟蹤風扇”之前,學生對Arduino編程的流程以及硬件(如電機、聲音傳感器、舵機等)的連接、PWM(脈沖寬度調制)已有所了解。
一、課堂導入與任務提出
教師首先播放一段掃地機器人的視頻,讓學生思考:掃地機器人是如何判斷前方是否有物體,從而避開障礙物繼續前行的呢?有的學生說“靠雷達”,有的學生說“靠眼睛”。教師引導:Arduino就好比人的大腦,負責思考和控制行動。但是大腦的信息需要人體各個感官來提供。比如眼睛可以提供視覺信息,鼻子可以提供嗅覺信息,皮膚可以提供溫度信息等。如果我們想讓小風扇成為一個機器人,使它能夠根據人的移動,始終朝著人的位置吹風。那么它要如何感受到人的移動呢?如果它也有“眼睛”就好辦了。這時引入新傳感器的概念,它可以根據光線的變化判斷前方是否有物體,從而實現追蹤功能。教師還指出,提到“雷達”的同學也有道理,雷達是發出“聲波”探測物體。那么這節課上要用到的“數字防跌落傳感器”就好比是眼睛,可以通過感知光線判斷前方是否有物體。
向學生提出任務:設計一臺風扇,使它能夠跟著人(人手)位置的變化自動搖頭。具體要求是:當人(人手)位于風扇左側,風扇會向左旋轉;如果人離開左側位置,風扇就會向右旋轉到初始位置。同理,當人(人手)位于風扇的右側,風扇會向右旋轉;如果人(人手)離開右側位置,風扇就會向左旋轉到初始位置。
二、硬件材料及其工作原理
所需硬件包括:Romeo板一塊,舵機SG90(180度)一個,風扇一個,數字防跌落傳感器2個,電機2個。教師需要指導學生了解硬件的連接方法。
風扇驅動。風扇需要電機的驅動才能轉起來。由于風扇轉動需要的電流較大,不能直接使用Arduino的針腳,所以要把電機連接到Arduino板上,并提供專門的電源。本例中Romeo板可提供M1和M2的四個接線柱來連接電機,接線不區分正負極,但是連接位置(或順序)不同會影響風扇的轉動方向。M1和M2分別對應跳線的4、5、6、7接口。4代表電機1的方向控制,5代表電機1的速度控制,6代表電機2 的速度控制,7代表電機2的方向控制。如果程序中選取了M1接線柱來連接風扇,對應的就是4和5兩個接口。M1還可以連接電機,有兩個接線柱4和5。4控制電機轉動方向,即風扇可能是順時針或逆時針旋轉,5控制轉速。首先要將電機連接在M1接線柱上,將“引腳”模塊中的“針腳值”設為5(控制風扇轉速),并設置轉速為200(數值越大,轉得越快)。然后再把塑料風扇葉片固定到電機上面。
舵機。舵機能夠讓機器人轉動,如機器人的頭部扭轉、關節部分的活動、風扇的搖頭功能等。這里選用的是180度舵機,這意味著風扇可以在左右180°范圍內搖頭。舵機上有紅、黑、黃三條控制線,分別對應電源、地線和信號線。這里要把舵機信號線連接在與程序代碼對應的數字接口上,本例為9號接口。電源線連接VCC接口,地線連接GND接口,這里VCC接口代表電源的正極,GND代表電源的負極。風扇搖頭,需要舵機一步一步地轉動。當舵機轉動角度小于180°時,轉動角度逐步累加,當舵機轉到180°位置時,再一步一步遞減到0°。
數字防跌落傳感器。這是一種Arduino紅外傳感器,主要利用紅外測距原理,和聲波測距的原理類似,有效距離為10cm。數字防跌落傳感器最初是為了使機器人走到有臺階的地方能及時停下來,防止因繼續前行而跌落摔壞。在本課中使用防跌落傳感器的目的,是讓風扇“感知”自己和人的距離是否小于10cm,以便及時調整自己的動作,從而實現智能改變方向。它將成為機器人的“眼睛”。將數字防跌落傳感器分別連接數字口11和12,因為傳感器只輸出0(沒有障礙物)和1(有障礙物)兩種狀態,是數字信號,所以必須連接數字接口。Arduino的數字接口為Remeo板上的digital接口0~13,一共有14個,除了前面已經占用的接口5和6,其余數字接口都可以任意選用。其中舵機和風扇的連接要講究一點技巧,要保證能夠讓舵機有效地輔助電機來實現風扇的搖頭功能(見圖1)。
三、課堂任務
整個課堂由兩部分組成。基礎任務部分由教師帶領學生共同完成;完整任務部分由學生在基礎任務的基礎上小組合作完成。
1.基礎任務
使用一個數字防跌落傳感器和舵機,制作自動跟蹤風扇,實現左邊傳感器檢測到物體,風扇向左搖頭;否則向右搖頭。編輯圖形代碼(見圖2)。設定風扇的轉動,為電機設定方向和速度。設定針腳的模擬值為“5”(代表了左搖),PWM值為“200”(代表轉速)。
接下來編寫代碼實現“當前方有物體,舵機向左轉動;當左側數字防跌落傳感器檢測不到物體,舵機向右轉動”。因為數字防跌落傳感器連接在了數字針腳11上面,所以針腳應設置為11。因為需要根據風扇左側是否有人(人手),然后才能判斷風扇向哪個方向搖頭,所以在循環的開始,首先要判斷數字針腳11的值是0還是1,如果是0,表示左側有人,這個時候風扇需要向左搖頭,所以舵機的角度k越來越小,直到度數變為0°,即達到了最左側。相反,如果值為1,那么說明左側沒有人(人手),然后將舵機連接在數字針腳9上,由于舵機需要跟隨人(人手)的位置不斷運動,所以需要設置成變量,變量設置為k。k值會逐步增加,直到180°(見圖3)。
完成以上代碼的編寫以后,需要將程序代碼上載到Arduino板上,并觀察運行情況。接下來學生在小組內討論后自主完成以下任務:一是硬件部分的連接,首先完成的小組可以進行演示,成績計入小組競賽成績中;二是代碼的設計和運行,學生依據教師的講解和示范,親自設計并運行程序,率先完成的小組加分。
2.完整任務
要求學生完成完整程序的編寫并實現以下功能:當人(人手)在風扇的左側,風扇向左搖頭,當人(人手)不在風扇的左側,風扇向右搖頭;當人(人手)在風扇的右側,風扇向右搖頭,當人(人手)不在風扇的右側,風扇向左搖頭。以下為教師的引導過程示例。
教師:剛剛我們已經完成了整個任務的一半,剩下的程序要怎樣編寫,有沒有便捷的方法?
學生:把剛剛的代碼克隆,然后修改代碼的相應參數就可以了。
教師:需要修改哪些代碼呢?
學生:判斷人在風扇的右側,當人在風扇的右側,風扇需要向右搖頭,當人不在風扇的右側,風扇要向左搖頭。
教師:怎樣實現呢?請首先考慮硬件部分。
學生:一個數字防跌落傳感器放在左側,一個數字防跌落傳感器放在右側。
教師:那么如何來判斷哪個數字傳感器是左側的?哪個數字傳感器是右側的呢?
學生:剛剛的數字傳感器接的端口是針腳11,那么現在的數字傳感器的端口可以接在其他的數字針腳上,就可以區別了。
教師:下面大家就可以親自動手了。如果有問題,可以先在組內討論。最先完成的小組加分。
四、課堂小結與拓展
在小結階段,教師利用PPT逐步出示思維導圖,幫助學生回顧過程和整理思路。為進一步拓展創客設計的思路,教師鼓勵學生進行風扇內容的綜合創意和競賽。如溫控風扇、傾倒自動停止風扇、定時風扇等。這些任務可加深學生對傳感器的印象,有利于以后進一步了解溫度傳感器和傾角傳感器的原理及應用。
參考文獻(編者略)
(責任編輯 郭向和)endprint