分享本文至 E-mail 信箱
學術引用格式
MLA
APA
EndNote(.enw)

仿生機器人──小怪獸(升級篇)

去探索吧小怪獸!

文/鮑惟聖

加裝LED與紅外線感測器

現在「小怪獸」已經可以靈活的動作了,來一段有趣的舞蹈也是不難事。前面有提到我們想替「小怪獸」裝二個LED與紅外線感測器(圖A),讓它看起來更酷更聰明,現在就繼續努力吧!

圖A

首先介紹元件工作原理,大家可以對照之前SC8接線安裝圖。LED有二隻腳,長腳為正極,短腳為負極。長腳串接一個220歐姆的 電阻到5V,電阻的色碼為紅紅棕。LED的短腳再分別接到數位輸入輸出腳P0與P6。P0與P6的選擇是為了方便LED安裝在左右兩邊,沒有其他考量。再 來就是安裝紅外線發射器。這裡所使用到的就是一個紅外線LED,顧名思義,它也是一個LED。只不過發射出來的是不可見的紅外線,所以對LED的描述也適 用。這裡我們把它接到P2。紅外線接收器是一個三隻腳的元件,我這裡使用的編號為FM-9038LM-5AN。分別為正、負電源以及輸出腳。正、負電源就 分別接到5V以及GND,輸出腳則接到P4腳。紅外線LED與紅外線接收器同樣面向前方,但是紅外線會從LED側面散出,而被紅外線接收器收到,造成誤認 前方有障礙物。為避免紅外線散出,這裏使用了膠套將紅外線LED包起來,僅允許從前方發射紅外線出去。各位手邊沒有適用的膠套,則可以使用黑色電工膠帶將 LED纏繞,僅留前方開口即可。目前使用到的P0、P2、P6都是做輸出使用,只有p4是做輸入使用。(圖A)為了方便辨識,特別將須接到5V的線路選用 紅色線材,須接到GND的線路選用黑色線材,須接到各I/O接腳的線路選用黃色線材。實際接線時要注意避免金屬部分碰觸造成短路,所以電工膠帶或是塑膠套 管都是需要的。

雖然線路是相同的,但每一個人實際的接線看起來都會不太一樣,美醜就看每個人的藝術細胞有多少啦。我給每隻腳套上紅色的熱縮套管,再加熱使其收縮而不會掉落,穿上四隻小紅鞋看起來還很有造型,而且還有防滑的功效呢,希望對我的藝術細胞有加分作用,完成品請看(圖B)。

圖B

「小怪獸探索」的程式

現在開始要把感測器的輸入與動作結合,前面的程式只是練習題,現在才是正式開始撰寫「小怪獸探索」程式。這裡先介紹一下「小怪獸」的行為模式。開啟電源後「小怪獸」會先點亮LED雙眼,維持標準站姿五秒。接著做兩個「伏地挺身」暖身一下準備出發。

「小 怪獸」會隨時測量前方是否有障礙物,LED雙眼也保持每秒明滅一次的速度眨眼。一旦發現障礙物則停止前進,然後原地左轉,再次測量前方是否有障礙物,這段 期間LED雙眼以兩倍的速度明滅,讓它看起來很焦慮的樣子。如果前方依舊測量到有障礙物,則持續作左轉測量的動作,直到障礙物消失,然後繼續前進,LED 雙眼也恢復每秒明滅一次的眨眼速度。這裡的障礙物偵測距離大概是30公分,調整偵測距離的方法以後有機會再來介紹。

以下就是程式原始碼,後面有註解說明。此程式只使用到幾個副程序,提高程式閱讀性,方便入門者了解程式控制之原理。等到熟悉相關程式技巧後,可以嘗試更結構化的程式架構,以減少程式行數、提高執行效率,增加程式維護、修改的彈性。

‘—————————————————

‘ 小怪獸探索程式

‘—————————————————

Peripheral mySer As ServoRunner8A @ 0 ‘ 預設內建模組ID為0

Sub OpenEyes()

Low 0 ‘ 點亮左眼LED

Low 6 ‘ 點亮右眼LED

End Sub

Sub CloseEyes()

High 0 ‘ 熄滅左眼LED

High 6 ‘ 熄滅右眼LED

End Sub

Sub RunFrame(ID As Byte)

Myser.LoadFrame(ID) ‘ 載入編號ID的動作

Myser.Runallservo() ‘ 執行載入的動作

Pause 150 ‘ 等待伺服機完成動作(每秒4步)

End Sub

Sub Main()

Dim IR As Byte ‘ 宣告變數

‘—————————————————

‘ 點亮左右眼LED以及初始立正姿勢

‘—————————————————

OpenEyes() ‘ 點亮雙眼LED

RunFrame(0) ‘ 呼叫程序執行編號0動作

Pause 5000 ‘ 等待5秒才開始動作

‘—————————————————

‘ 伏地挺身二次

‘—————————————————

RunFrame(1) ‘ 呼叫程序執行編號1動作

RunFrame(0) ‘ 呼叫程序執行編號0動作

RunFrame(1) ‘ 呼叫程序執行編號1動作

RunFrame(0) ‘ 呼叫程序執行編號0動作

Pause 2000 ‘ 等待2秒才開始出發

‘—————————————————

‘ 程式主循環

‘—————————————————

Do

Sound(2, 5, 38400) ‘ 從第2腳發射5微秒的38.4kHz紅外線載波

IR = In(4) ‘ 從第4腳讀取紅外線載波資料

If IR = 0 Then ‘ 發現障礙物向左轉,左前足起步左轉: [4,6,2,7]

RunFrame(4) ‘ 呼叫程序執行編號4動作

CloseEyes()

RunFrame(6) ‘ 呼叫程序執行編號6動作

OpenEyes()

RunFrame(2) ‘ 呼叫程序執行編號2動作

CloseEyes()

RunFrame(7) ‘ 呼叫程序執行編號7動作

OpenEyes()

Else ‘ 未發現障礙物,右前足起步前行 [2,5,4,3]

RunFrame(2) ‘ 呼叫程序執行編號2動作

RunFrame(5) ‘ 呼叫程序執行編號5動作

CloseEyes()

RunFrame(4) ‘ 呼叫程序執行編號4動作

RunFrame(3) ‘ 呼叫程序執行編號3動作

OpenEyes()

End If

Loop

End Sub

程式輸入完畢之後,請在「建立」選單中選取「建立」功能進行程式編譯,並通過USB線下載編譯後的程式碼至SC8控制板。此時「小怪獸」不再只是會做「伏地 挺身」而已。這樣的程式流程已經讓「小怪獸」具有從迷宮脫困的基本能力。大家完成程式之後,可以嘗試定義一下更複雜的流程。原則上更複雜的流程可以讓「小 怪獸」以更聰明的方法從迷宮中脫困。或者加上更多的感測器,讓「小怪獸」可以更快速地感測周邊環境,做出更有效率的決策。這時候大家就來辦個「走迷宮競 賽」,誰的「小怪獸」厲害,高下立判。

文章接近尾聲了,當我把功能驗證完畢之後,心情剎時輕鬆了起來。拿幾個紙盒當成路障,把書房的燈給轉 暗,再啟動我的「小怪獸」。閃爍的LED光影、「嘎嘎」的伺服機轉動聲、踽踽獨行的身影,我彷彿看到「小怪獸」在火星上獨自探索。We are programmed to explore! 這就是機器人DIY的樂趣。當我神遊在自己的異想世界裡,「小怪獸」已經從紙盒做的「八卦陣」裡走了出來,我彷彿聽到「小怪獸」在說:What’s next?

*鮑惟聖
擁有中原大學電機工程學士學位,利基應用科技(www.innovati.com.tw)的創辦人。多年來一直從事微處理器應用與系統工具的開發,並致力於推廣智慧型機器人科普教育。

更多:
仿生機器人──小怪獸(製作篇)
仿生機器人──小怪獸(運用篇)

本文原發表於《Make》國際中文版vol.03

2017 年泛知識節 早腦人必搶的早鳥優惠開跑啦!

「3 大領域 x 150 場分享、體驗、工作坊 x 200 個意見領袖 x 1000 個參與者」2017 年兩岸三地最大知識饗宴 – “泛・知識節" 早鳥票開賣啦!

由泛科知識旗下 PanSci 科學新聞網、 娛樂重擊 Punchline、PanX 泛科技新聞網聯合超強協力夥伴,邀你在兩天內火拼知識,替自己的大腦做個版本升級。11月 11&12 日到泛.知識節直搗知識核心,挑戰與創造未知 ∞ 種可能!手腳迅速,眼光精準的早腦人如你,還不速速搶下早鳥優惠及獨家周邊商品!(購票還贈 TAAZE 讀冊生活折價卷)

>>早鳥優惠只到 10/27<<

關於作者

馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/