無線感測網路 理論與實做 - 期末專題

Wireless Sensor Networks and Laboratories - Final Project

前言

  因為目前在學校研究的領域為「無線感測網路」,考上研究所的第一個學期,在博班學長的規定下,就和實驗室的夥伴-佳憲,一起修了台大電機/電信所,黃寶儀老師所開的這堂課,讓我們學習到如何利用程式來控制最底層的晶片。

  修這堂課以後...看到學校肯砸這麼多錢,且老師、助教和每個同學都可以拼成這樣...,才慢慢理解為什麼大家都說這裡是好學校。

 

簡介

  近幾年由於這個新興的領域很熱門,應用的層面很廣泛,很多科系如:電機/資工/電信,甚至土木、環工、社工的都會來插一腳。而電機所黃寶儀老師所開的這堂課,由於有教基礎、理論及實際的應用,學習過程還會提供所有會用到的設備(這些設備由於目前都還沒有大量生產,單價都很高),所以這堂課還蠻熱門的。

這次的主角:Sensor、感測器

學期初

  第一堂課想選課的同學非常多,把電機系博理館一樓的教室給擠爆了。一開始我進去沒有位置,只能跟實驗室的同學站在最後面。由於這堂課是英文授課,外國人還蠻多的,第一次和這麼多的外國人一起上課;有帥帥的歐美人士,也有套粉紅色全身袍的中東女生。

  第二節課沒上多久,有兩個人就先行離席,我和同學看到那邊有空位,不顧人多就坐到那兩個位置上。由於是英文授課,沒有這種經驗的我,實在是聽得很吃力,好險老師有放投影片,不然我都不知道現在在幹麻。而老師和同學的互動很頻繁,看起來是台灣人的也跟老師講英文講的很溜,讓我想說:「天吶,怎麼台灣會有這種地方。」

  下課時,雖然很多人都用英文溝通,但我想這裡好歹是台灣,當然要說中文呀!想說第一堂課,跟我旁邊同學打招呼一下好了。

我問:「你是什麼所的呢?」
坐我左邊的同學,突然驚慌失措的搖手說:「我 不~會 說 中 文」(很生澀的口音)

  被他這麼來一下,其實我也被嚇到。那時跟外國人講英文用手指頭算得出來的我,驚慌的連說了兩次ok後,趕緊轉過頭去跟自己同學講話。過了沒多久,我想說這樣不行,英文學了十幾年,連簡單的問候語也不敢講的話,還蠻虛的。就用很生澀的英文問他叫什麼名字、是哪個所、幾年級,從什麼國家來的。他說他是從Vietnam來的(音似"Viㄟ南",我搞了很久才知道越南是這樣發音的,我還以為是約~~難~~),他28歲,讀電信所博一,叫做Tuan(音發做ㄉㄨㄣˊ)。我跟同學也簡單的跟他做自我介紹。

  這堂課由淺入深,一開始教你怎麼控制感測器上面的led閃爍、如何控制裡面的時脈(振盪器)、如何將外界的類比訊號轉換成數位訊號(如收到的可見光,要怎麼利用程式轉換成0101之類的東西),如何透過USB收送資料、如何利用無線電來接收資料...等等。最後的期末專題,就是把這些所有的東西給整合起來,利用自己開發的演算法,來控制一台車子從起始位置到達目的地。(這四行看不懂不打緊~~!!)

  由於這堂課選課的人數很多,老師要我們自己找同學分組,說優先提供給有接國家計畫的小組做。我跟同學都是因為有接計畫,所以博班學長硬要我們來修,但我們聽到最後要實做的期末專題,心都涼一半,我跟他沒有寫過這種嵌入式的程式,沒有控制過馬達,什麼透過無線電來跟定位系統做溝通的,我跟他也不知道那個是在幹麻。

  礙於分組至少要三個人,我跟同學兩個就想說找那個越南人,這樣萬一這堂課被當,至少還可以練一下英文。當時我就問那個越南人要不要跟我們同一組,我們交換一下自己的專長和自己大概可以負責的部份後,他就爽快的答應。後來選上的名單出爐,總共有十二組,我們這組有被選上,真不知會變成怎麼樣。

期中訓練

  原本聽不太懂、不太敢講英文的我,因為每次上課以及每個禮拜和Tuan一起討論當週作業時,都要講英文,下課後一起去吃飯、放假時一起到宜蘭佳憲的女朋友家玩時,也都要講英文。後來慢慢其實就習慣了,除了專有名詞外,用的單字跟國中程度其實差不多,雖然他講他的越南腔、我講我的台灣腔,但還是可以溝通無礙,讓我覺得原來鳥鳥我也做得到。

這是黃寶儀老師博士班的學生:SY學長(本堂課助教)

  學長他是馬來西亞僑生,平常喜歡一邊喝啤酒一邊寫程式,Debug這小玩意兒的能力強到不行,據瞭解,他自己都快可以開發出一個WII(利用三軸加速度器與Sensor做結合),目前跟好幾家廠商合作中。圖為我們寫程式遇到瓶頸,一直出問題,他利用左邊白色的示波器,來幫我們測我們輸出的脈衝訊號對不對。

期末專題

目的

博理館六樓平面圖

  題目很簡單,車子從綠色的位置出發,任選一條路線(藍或紅),到達(173,55)的目的地。

  那個X和Y的就是定位系統會根據我們車上搭載的訊號發射器發出來的訊號,傳回車上的感測器,根據自己目前位置來想辦法走到目的地。

很困難的大問題:

  1. 定位系統超不準,你站在一樣的地方,因為電波遇到牆壁會干擾,訊號就會一直跳。
  2. 車子根本不知道車頭在哪個方向,萬一走錯方向也不知道

  而避開障礙物,我們是利用兩個紅外線的感測器,萬一偵測到前面有東西時,會根據我們的演算法來判斷要往左邊或右邊走。但萬一走進死胡同呢?就要想辦法讓偵測障礙物的演算法,有辦法偵測到目前這樣的情況發生,並且想辦法解決。

  有關演算法的詳細介紹與說明,在期末專題報告書中,均有詳細的解說。(我一直很得意報告中,2.3.1我用Word繪圖工具畫的車子。)

 

平日

我跟佳憲一步一步的把東西建構起來(左邊為我的座位)

每個禮拜的進度討論
左邊為Tuan(越南人),右邊為實驗室夥伴-佳憲(Jason),當時正在進行馬達測試

 

Demo前三天

  下個禮拜一要跟老師展示我們的成果了。

  禮拜四,佳憲先回彰化老家辦事情(他家發生緊急事情)。我下午上完課,先和研究室的成員進行每個禮拜例行的小組會議(到晚上八點),之後我再跟Tuan約八點半討論。

  那時我們正在確認寫好的一些功能是否正確。但在測試時,卻發現了問題:要傳輸的資料一直沒有辦法透過另外一顆轉送的節點來傳送。弄了三個多小時,在半夜一點時,才發現只是一行指令寫不完整(設定的參數值不對)。雖然我跟Tuan都覺得...弄了那麼久才發現到。不過其實也很高興,覺得我們的專題又往前邁向一小步了。

  禮拜五,我跟Tuan在我們的實驗室繼續弄東西,這天的進度是要合併我們寫好的程式碼(大工程)。晚上十一點了,Tuan問我說今天要不要回家,我說「不要,你呢?」他也說不要。

  那時我們寫好很多的演算法,來應付實際會遇到的情況。但將車子一拿去場地實測時,寫好的演算法幾乎都失敗,在那邊調整半天都還是不行,怎麼就是弄不好。 回到自己實驗室時,其實我有點灰心。平常跟Tuan講話都嘻嘻哈哈的,那時看到Tuan持續努力不懈的樣子,我就問他:「期末專題又沒佔幾分,為什麼你要這麼拼?」 他聽到,就很認真的跟我說:

"Just for the honor."(只是為了榮譽)

  就這樣,我聽了很感動,那時就決定不管怎樣,都要把期末專題給拼出來。(我輕輕鬆鬆就被別人牽著鼻子走了~~)

PS. 後來證明我想到&寫的演算法實際能用,而且可以同時解決很多問題,超開心的。

  禮拜五晚上一直持續弄到禮拜六早上七點多,我跟Tuan都受不了了,不過還有一些問題沒解決,我們就決定睡到早上九點,待會繼續弄。

這是拿來寫程式的電腦,此時車上有我用筷子和吸管做拿來固定紅外線感測器的架子

此為早上九點多,右邊為我們的床,我和Tuan待在這邊寫演算法已經超過兩天了(我攝)

  這天禮拜六。剛剛七點多才睡著的,一到九點,Tuan就把我給挖起來,這樣硬要爬起來,其實我頭超昏,但想說還有東西沒弄完,去樓下洗個臉後,就繼續弄。

此為黃老師的研究生,正在幫我們設定我們這組操作環境的參數

星期六下午,我們到博理館測試,前面是Tuan,後面兩個是奧地利人(我攝)

  那時候已經是Demo的前兩天,每一組都已經在電機系博理館做最後的測試和調校。這張照片的後面那兩個外國人,我原本以為他們是美國人,不過我在旁邊聽一聽就覺得不對啊,他們怎麼講德文。後來我要回系館拿東西時,進電梯時遇到那個光頭的,我就問他說你是德國人嗎?他說不是,是Austria。我聽成澳大利亞,想說澳洲怎麼講德文,就問他。他就說是Austria,不是Australia。我問:奧地利?莫札特的故鄉嗎?他就很高興的說:對呀!我問他說奧地利講德文喔?(恕我孤陋寡聞) 他就說奧地利以前是德國的一部份(難怪魔笛是用德文唱。)

 

前一天

  星期天下午,大部分的東西都搞定了,但是博理館內實際會出現的訊號誤差,要實地去量測才知道,我們在自己系館寫程式時,實地誤差的大小都只能先憑空假設。程式寫好後,實測的部份就想晚點再說吧。

  Tuan就回宿舍、我也回家做簡單的梳洗後,佳憲也回來了。我們又來到博理館,做機器車要接收室內訊號的最後測試。(我們的車子將會依據定位系統,來判斷自己的位置,並想辦法避開障礙物走到目的地。)

星期天晚上八點多,我們要去博理館,應該會待到禮拜一早上Demo,我們正在打包

  這時不得不提佳憲帶來的蘋果,我第一次覺得蘋果的味道這麼好聞,比什麼香精都還好聞。大家邊討論邊寫程式時,我們偶爾就看著蘋果,然後會心一笑的用力一聞,頓時疲勞減去不少。打包時還在考慮要不要帶蘋果去,覺得蠻白癡的,但我和Tuan還是帶了。結果好險有帶,半夜四點多時,我和Tuan超餓,別組的同學問我們要不要跟他們一起訂麥當勞,其實我和Tuan不是很想吃麥當勞。那時我們就決定把原本放在旁邊一直聞的蘋果拿來吃。那個蘋果實在太香了,我們吃的時候對他依依不捨的,又聞了好久才狠心咬下第一口。

我帶著我心愛的小白電腦,正在跟Tuan測場地的定位資訊(佳憲攝)

  我們一次移動20公分左右,來接收目前收到的訊號位置(因為定位系統很不準,會一直跳。)我們從晚上九點測到凌晨四點多,花了超過6小時,才將博理館6F整個走廊的訊號,給做好比對和紀錄。

  我弄完時超想睡,整個眼睛因為一直盯著螢幕看訊號&紀錄訊號,全部都佈滿血絲。這時幾乎每一組都在博理館裡面進行最後的測試,進到黃寶儀老師的實驗室時,看到不管男生女生,都躺在椅子上亂睡一通,看到連資工所的女生都拼成這樣,讓我不禁想到為什麼台灣的科技業會發達....,其實還蠻感動的。

半夜兩點多,正在進行測試的別組同學(我攝)

黃老師的實驗室內,大家正在做最後衝刺

 

  這台車子需要12顆3號的電池(左右馬達各四顆、主控制節點兩顆、定位節點兩顆)。原本都是直接跟助教拿不用錢的,但我們前前後後用掉差不多超過五十顆的電池,再去跟助教拿其實不太好意思(良心發現!!)。

  半夜五點多,我和Tuan本來想去後門的勝立百貨買(在復興南路和和平東路口,賣得比便利商店便宜),但好像要十點才開,時間會來不及。我們就想說去學校的便利商店好了,貴一點也不是那麼重要了。

半夜五點多,我和Tuan去外面買電池

半夜五點的買電池路線:

I、 先去最近的便利商店。想說去總圖(總圖書館)前面活大(活動中心大樓)的便利商店買就好,結果店員說賣完了!!,我和Tuan想說可能是有同學已經先來搶電池了。

II、天氣很冷,這時也開始飄雨了。由於我們兩個都忘記帶傘下來,就撿便利商店前面的廢紙箱來遮頭。而距離比較近的另外一個便利商店,在小福(福利社)二樓。一到小福,便利商店的門是關著的,裡面有一個店員。我問他說可不可以賣我們電池,他說要七點才開門,我就跟他拜託,他說收銀台是連線的,現在連線關閉,他也沒辦法結帳。我跟Tuan說明我們的處境後,我們就繼續拿著紙箱遮雨,決定去有點遠的小小福買。

III、我跟Tuan又冷又累,經過傅鐘那邊的學生事務組的川堂時(★9的地方),Tuan告訴我他不會忘記他來台灣求學的這段期間,關於這堂課及半夜跟我出來買電池的經驗。我說我也不會忘記。到了小小福後,我們買了16顆鹼性電池,我也買了食物飲料充飢。

IV、終於可以回去博理館了。為了節省時間,我在路上邊走邊吃。經過活大前面的便利商店時,我跟Tuan就把遮雨的紙箱放回去原本的地方,在訕笑聲中,回到了博理館。

  回去以後,換上了新電池,車子果然活力百倍。再確定一下所有的事情應該都完成了差不多後,我跟Tuan就先睡一下,準備等下十點我們這組的Demo。

我和Tuan,清晨六點多,兩天沒好好睡的我們,在黃老師的實驗室趴了就睡(佳憲攝)

 

東西弄得差不多了,一切都是為了明天早上十點的Demo.....

 

期末專題Demo

  原本預計九點40分的Demo,延宕到10點多。我九點半被Tuan叫起來時,我看到他面容枯黃,眼睛全部都是血絲,一副快死掉的樣子,我有點被嚇到。但他還是瞪大了雙眼,很興奮的跟我說:"Michael Michael, I add another condition in our radio packet controller, I think it can improve our program. You see...., how do you think about it??"(麥可麥可,我在我們無線電封包控制器中,加入了另外一條判斷式,我想可以改進我們的程式。你看...,你認為怎樣呢?)

  剛被挖起的我,還沒搞清楚狀況,就想說這個越南人是怎樣,是都不用睡覺的喔。而程式碼在我睡前我們就已經確認過,想說怎麼又要再改。後來我才知道他七點多又爬起來,再那邊繼續看有什麼好修正的。我看一看他寫的那行,對程式是有點幫助,誤差值是會變得更小一點,但我是覺得那種東西....,舉例來說就是把千分之10的錯誤率變成千分之7,而原本的程式的誤差差不多在千分之10,這樣是已經表現得很好了,再繼續降低那種東西,我是覺得ok但效果有限啦,不過當然對我們程式有幫助&他高興就好~~。

 

  輪到我們Demo了...,在場地佈置好轉送封包的節點後,懷著不安的心,我們讓Tuan打開車子的開關,車子就開始走了。場地很遠,中間很多奇怪的東西(花圃、門縫、大彎道、ㄇ字型大縫隙...等等)。佳憲負責攝影、我和Tuan只能負責祈禱。每次車子走出比較複雜的地形時,我們三個都暫時鬆了一口氣。

 

  終於過了,我跟Tuan緊緊的抱在一起,和佳憲開心的眼淚快要掉下來。黃老師和助教SY學長知道定位訊號的精準度不高,因此很驚訝我們的成果,一直很好奇我們演算法是怎麼寫的...。

 

期末專題報告

  其實用中文寫就可以,我跟佳憲為了讓已經先回越南過農曆年的Tuan,也可以跟我們分享成功的喜悅,就想說用英文寫好了。(不過這是我第一次用英文寫報告,難免生疏,有錯誤還請指教就是。)

  當時已經期末,每一科要交的期末報告都很多,而且都有截止時間。為了趕完這篇報告,我在實驗室從晚上十一點寫到隔天早上九點,終於把文章和流程圖都給寫好、打好(我覺得我報告裡面寫的文章架構和流程圖都做得不錯耶!!(老王賣瓜))。隔天再佳憲幫我做最後的修正和補完。最後,報告成績佔12%,我們拿了11%。

PS. 這篇報告裡面,我寫失敗的演算法也一併附上。當時我自己覺得寫的這個向量演算法很不錯,可以很精確的將車子往目的地的方向前進。但失敗的原因,就在於把環境的條件想得太好,造成演算法太精確,而定位誤差卻太大,實際把車子放到場地時,車子就一直轉圈圈,害我當場傻眼。後來想出新的方法,改寫後才成功的。

期末成績

  後來我們才知道,原來總共的12組,只有兩組到達目的地。(另外一組是誰就不知道了)

有著色部分為我們的成績(來源

  上面寫的25096為佳憲,25071是我,42029是Tuan。期末專題佔總成績的20%,我們拿了19%。這學期佳憲、我、Tuan,拿了97/96/97的分數(我出席率被扣一分...),囊括了該課的第二、三名。(滿分110%,第一名98分,雖然他期末專案只拿17分)

  講實在話,其實大家都知道黃老師不會當人,Demo的分數也佔不高,不做的話其實報告寫好一點就好了。但在這邊,看到每組,都可以不惜一切代價拼成這樣,嗯....國家納稅人的錢沒白繳呀!!!

 

影片by佳憲

  這是佳憲把一些照片和影片剪輯而成的影片,辛苦一路陪我走來研究生生涯的好夥伴-佳憲啦!。

1. Wsn member introduce & demo

 

PS. 裡面的Nina是佳憲的女朋友,人很好唷,在華碩當PM(Product Manager)。

2. Wsn Filmslide

 

結論

  我和佳憲有私下算過,開一次這種課的成本多少。一組的材料費就至少五萬塊,12組就60萬,且這還不包括消耗品及老師、助教的鐘點費。學完之後,我和佳憲真的是覺得收穫很多,讓剛開始什麼都不會的我們,在期末時可以做出一些東西來,雖然很累,但是覺得很值得。另外這堂課上課幾乎都用英文,我們自己也和外國人一組,溝通時就變得要強迫講英文,長時間這樣訓練下來,我覺得對我的幫助還蠻大的,至少在這大家都會英文但都不敢開口的台灣來說,是個很實用的訓練。也希望以後有機會可以去Tuan的故鄉-越南河內玩,就這樣。

 

補充

 

2008/02/01 01:20~05:04 新增本頁。半夜一點多打到現在五點多了,先去睡
2008/02/02 21:10~02:12 補完本頁。

 

                  ↑回到上面