2014年6月7日 星期六

【S4A應用】S4A遙控探測車



【前言】
當買來的遙控車套件測試ok後就在思考下一步,這樣的遙控車能做什麼,還有什麼可以讓遙控車變得更有趣的構想,而且學生也會感興趣呢?



最直接的想法是讓它更快,但是可能要整組結構大幅變動(如四輪),而且市面上類似的遙控車產品也都有了,對學生的吸引力可能不足,所以要想辦法做出市面上買不到的遙控車。

另一個想法是聯想到太空科技,印象中好像有遙控車是在別的星球上執行任務,經過google後,有找到planetary rover探測車的相關資料,如月球探測車及火星探測車等。



探測車有自走及從地球遙控的功能,另外的功能也很多,如導航定位、土壤礦物探測分析,放射性同位素供電等功能,因為太過深奧而無法理解及實作,但是有些功能也許是可以做到,如裝上照相鏡頭、測距功能等,如果能用S4A來實作,以後不管是做給學生玩或是指導學生做出來,相信都是很有趣的。於是就有了「遙控探測車」的嘗試。


【設計過程】
在設計之前,得先認知到S4A的瓶頸,因為S4A與Arduino傳訊太過頻繁,且Scratch也不是專為Arduino設計的,使得S4A在藍牙無線傳輸上,延遲得特別明顯。因此不管是做自走車,或是稍複雜點的遙控,都有一定的延遲,使得即時性的反應處理不理想,在設計或實作,都要與這個限制奮鬥,但是S4A是中小學生踏入互動設計的入門磚,只好盡力克服。

在設計這個作品的關鍵問題當然就是影像功能了,如果遙控車裝上個鏡頭一定很酷,但是其實ArduinoUNO只有8位元的cpu,是無法直接處理視訊資料的。那就要靠模組了,在之前買的Arduino開發實戰指南一書中,有使用wiCam模組,wiCam會跳過Arduino,直接以wifi方式將影像傳回PC,這樣可以減輕Arduino的負擔。但是後來發生問題,因wiCam是大陸廠商獨家做的,而且暫時開發新版,所以不賣,那怎麼辦呢?

後來在coopermaa的文章找到了解決方法。用手機來當攝影鏡頭,因為有了免費的app(IP攝像頭,請上google play)讓pc端可以wifi接收影像,所以這個方式如同wiCam,只是手機體積大一些,但是手機有自己的電源,不用傷腦筋想處理電源問題,而且手機很容易取得,不會被特定廠商綁住。為了測試,買了一個空機只有一張小朋友再多一點點的手機(A3S,為了縮小體積選3.5吋畫面),最後測試OK,使用200萬畫素的鏡頭即可,所以大部分人的手機應該都跑得動,只是怕摔到會心疼(我的A3S不會)。


另外在使用時,因wifi傳送影像的App需與PC在同一網段,所以另外準備一台無線AP(也許做些設定,可以省掉這個設備,但是因AP都有現成的,所以就沒研究了)

在本作品中,有兩個無線協定的傳輸通道,一個是wifi的影像,一個是藍牙的S4A,以下是概念圖

以下是測試車子上的手機鏡頭畫面傳至電腦的影片(小孩交談的背景聲請自動忽略)




(註:台中的江昭漢老師有提供影像的另一個解法,是用openwrt+TP-link路由器+IP 攝影機,來解決,不過這個方法技術門檻較高,要設定linux並改路由器韌體,有興趣的人可另找資料並實作,在此謝謝江老師的建議)

影像方面還有一個問題,S4A怎麼放入手機鏡頭畫面呢?當初的想法是一步一步順著來想辦法的。

為了配合手機上面會傳送影像的app,所以用瀏覽器(這裡用chrome)就可以收到鏡頭的畫面,如下圖

希望畫面可以小一點,所以用畫面內的全螢幕。再來是chrome的工具列如果能隱藏就更好了,還好chrome本身有提供功能,請見下圖


這樣就有了手機鏡頭傳來的畫面,可是要怎麼讓它跟S4A畫面放在一起呢?只要把影像釘在最上層即可,由網路上找到了DeskPins軟體可達到此功能,這樣就可以把瀏覽器的影像與S4A操作界面放在一起了,如下圖


在設計的過程中,通常都會產生新的問題,當把手機的鏡頭裝上遙控車,並以PC上收到的影像來操作時,發現了幾個問題:

第一個問題是光源不足,當我把遙控車開進桌子底下時,就發現傳來的畫面是黑的,因為遙控車有了影像之後,就可以開進較窄小的地方,但是進去後,就沒有光線了,當然,加個燈就好了,之前買的Arduino初學者套件,有LED模組直接拿來用,而且很亮呢!這樣在窄小的空間就可以放心到處探險了。




當然,有了LED照明,也會連帶想到感光的光敏電阻,設計時也有加進來,因為每個人對光線的感受不同,所以當光敏電阻測得亮度低時,並不會自動開燈,而是經由訊息來提醒使用者,是否太暗而需要開燈。

第二個問題是視角與操縱問題,因為一般的遙控其實是以第三人稱的視角來控制的,操縱者可從上方直接看到整台車的前後左右環境的距離,這樣的操縱相對起來比較容易。如下圖。

那如果依影像畫面來操縱的話,視角會如何呢?會變成第一人稱視角,看到的畫面,就是以車子的高度,車子的角度來看,如下圖


 這樣的感受第一次操作時會覺得很新奇,因為你是透過遙控車的鏡頭來看前方,但是經過操作後會遇到一些困難,受限於鏡頭,會有死角問題,車子的左右後方是看不到,除非轉過去。有時會遇到左右轉沒有反應,結果走近一看,原來是車子的死角卡到東西了。

另一個因視角而來的問題是,轉不到適當的角度,當平常以第三人稱視角操縱時,在狹長直線可以通過,可是以透過鏡頭時,因本實作手機鏡頭是偏左方,所以走路很容易歪掉(不易判斷走直線),而且因S4A的無線操控延遲,所以一次轉彎就轉20度而無法轉小角度。

死角的問題可由操作經驗來解決,或是走到車子附近看看問題在哪,小角度得靠馬達的調速功能來解決,所以後來也加入調速功能,因左右速度與前後速度的要求不同,向前不能太慢,左右不能太快,所以分成兩個變數,使用者可從S4A畫面來調整速度。


再來是測距功能,經由第一人稱的影像畫面,不容易判斷前方的距離。所以想加入測距的功能,因S4A無法直接使用超音波模組,所以改用紅外線測距模組,是sharp的GP2Y0A21,該模組的感應組與距離的轉換公式請參考這裡,但是因紅外線容易受到環境光干擾,再加上10公分以內的距離會有誤判的情形,再加上S4A無線的延遲那就更慘了,所以使用起來要有心理準備,會有相當的誤差。



另外之前由蘇恆誠老師分享的雷達作品,因為有了距測,再加上原有套件有個以SG90伺服馬達左右轉的雲台,再加上S4A已提供畫筆功能,所以就把雷達也實作了出來,但是除了上一段提到的誤差問題外,使用雷達時車子必須停止,怕使用者等太久,所以只有掃描前方100度(左右各50度),一次10度,只有掃11個點而已。

以下是雷達使用的影片,因為要拍到車子又要拍到畫面,測出的結果就不講究了(小孩交談的背景聲請自動忽略)



以上是大致的設計過程

【探測車功能】
在此整理一下遙控探測車的功能:

◎影像功能---將前方情形經由手機鏡頭傳回PC上

◎照明功能---S4A可控制LED的照明,另程式發現光敏電阻測得的亮度偏低時,會有訊息在畫面上通知

◎測距及雷達功能---以紅外線測距儀測量前方的距離,並傳回S4A換算成公分。再加上伺服馬達可轉動的頭來做出前方,左右共100度的測距雷達

◎驅動功能---S4A以藍牙方式控制車子的L293D馬達模組,讓車子前進、後退、左右轉,另外可由S4A來改變前後速度及左右速度,以做到小角度的控制

【硬體配置】
Arduino上各個模組的接法已整理成如下方的表格,因為程式使用S4A,所以分配上還是要符合S4A韌體的規範


我做出來的車子照片如下,共分成前面、側面及背面三張照片,並有標上一些模組的位置。










【程式】
為了實作出以上的探測車功能,在S4A的程式上也需要花上不少功夫,限於篇幅就不逐一解說程式,這此提供S4A端的探測車程式下載,有緣人請自行研究,一些設計上的問題都已在上文中提過。

【迷宮設計】
當初只是為了要展示車子的功能,沒想到設計迷宮也挺有趣。迷宮用一般的巧拼來製作,一開始做出來的版本如下:


沒想到,讓學生與自己小孩試玩時,他們都能一起快樂的製作迷宮,並做出不同的迷宮。

以下是在家裡與小孩一起做的迷宮




以下是學生做的迷宮



以下是在maker faire時做的迷宮,因場地有限,只能藏在長桌底下


【操作影片】

在五月的S4A實驗課程中,先是指導8位5、6年級學生做出藍牙遙控車後,再接著把這台進階的遙控探測車搬出來給學生玩,他們的反應還挺不錯的呢!(學生有自己做過就知道其中的甘苦與樂趣),以下是他們操作(遊玩?)的影片


【結語--夢想會長大】
一開始提到太空探測車,好像要做出什麼不得了的東西,其實真正能實做出來的功能有限,受限於技術與軟體,實做出來後也仍有一些問題待克服。

儘管如此,在有限的各種條件下,仍然可以讓學生感受到遙控與科技的樂趣,雖說實做出來的東西只能在一間教室內來操作,但是一些概念的雛形都已具備,讓孩子們體驗甚至自己做出。未來,有誰知道他們長大後,會不會進行幾百公尺的遙控、幾公里的遙控,甚至是真的太空中的遙控呢?在自己沒有接觸到Arduino的三十幾年,我從來也不會去想,也不認為我能夠做出這樣的作品來呢!

好像有個廣告詞是,夢想會長大。希望這樣的作品,能夠讓學生的夢想長大。


1 則留言:

  1. 一般人常常會用結果來評斷作品,但主觀的背後往往會忽略了許多客觀的主動限制。
    能給文宏老師點到名,真是深感榮幸。
    把有限的資源做到最佳的應用,還要考慮小學生可以操作的難易度。這實際上比指導高中生專題還困難。
    謝謝您,這是一個很棒的示範。

    回覆刪除