文/李禕禕
這學期修習《人工智慧互動裝置設計》這門課,對我來說是一段既新鮮又充滿挑戰的學習經驗。雖然我在以前對 Arduino 和 Processing 都只有很粗淺的認識,但透過理論講解、實作練習和期末專題,逐步累積了對互動裝置的理解,也體會到把不同技術組合起來,能創造出許多有趣的應用與可能性,這讓我對未來的學習和創作都充滿了期待。
課程一開始,書瑜老師先向我們介紹一些最基礎的理化概念,與一些器材的簡單介紹,讓我們建立這些基礎概念後,才能更順利地進入硬體操作的階段。老師講解的方式很清楚,讓我能對電子元件的功能有初步認識,知道哪些元件在互動裝置中扮演什麼角色。接著,老師便帶我們學習 Arduino,從最基本的接線開始,教我們怎麼使用面包板、如何把 LED 燈接到數位腳位,還有怎麼用程式控制燈的開關和閃爍。第一次看到自己寫的程式可以讓 LED 亮起和熄滅,心裡有一種很直接的成就感,那種「自己動手做出東西」的感覺非常難忘,激發了我對程式設計和互動裝置的興趣。
接著,我們學習如何使用紅外線避障感測器。這種感測器可以偵測前方是否有物體接近,當有人靠近時會輸出訊號,讓裝置能做出反應。實驗中,我把感測器接到 Arduino,再讓它控制兩顆 LED,我們用手去遮住感測器,讓兩顆 LED 能夠根據手的位置來亮燈。雖然看起來簡單,但要讓電路和程式都正確工作,過程中也遇到不少問題。有一次我把感測器的 VCC 和 GND 接反,怎麼試都沒反應,還以為零件壞掉或是自己的程式碼寫錯,後來才發現是自己接錯線。這讓我深刻體會到,硬體接線的細節非常重要,稍有不慎就會造成故障。老師也提醒我們,Arduino 的每個腳位電流有限,接太多元件要小心,不然很容易導致輸出不穩或燈一直閃爍。
圖1、Arduino課上寫程式控制LED亮度(攝影:李禕禕)
在硬體部分比較熟悉以後,課程進入 Processing 的學習。Processing 是一個適合做影像和互動的編程環境,比起純粹用 Arduino 寫程式更有彈性,也能結合視覺效果。剛開始,老師先帶我們瀏覽 Processing 內建的範例模板,像是即時影像偵測、簡單的動畫效果或互動控制,讓我們先對這個軟體的用途和操作方式有初步的了解。透過觀摩和修改這些範例,我漸漸熟悉 Processing 的架構,也了解它怎麼和攝影機、鍵盤以及外部裝置互動。這一階段雖然沒有寫很多複雜程式,但讓我對影像與互動的可能性有了更多想像。
接著,我們才開始練習如何把攝影機畫面抓進程式裡,再進一步使用 OpenCV 函式庫做人臉辨識。只要幾行程式碼,就能在即時畫面中把人臉框起來。當我第一次看到自己的臉被電腦標示出來,覺得很新奇,也對影像辨識產生濃厚的興趣。除此之外,老師也說明了這類技術的應用範圍,讓我知道它不只是課堂上的練習,更是現實中許多創新產品的基礎。
在課程後半段,老師宣布期末作業為我們把所有學到的技術整合,分組設計出一個互動作品。並且跟老師討論作品的概念與會遇到哪些問題該如何修正,那時我們這組想到,既然影像可以「看到人」,Arduino 可以「動作」,如果再加上影片播放,會不會變成一種有趣的互動體驗?於是決定做一台「互動抽籤機」,希望結合多種技術來打造一個有趣又實用的小裝置。
我們的抽籤機設計有三個主要流程: 第一部分是人臉辨識,Processing 會即時偵測使用者是否站在攝影機前。只要看到有人,程式就會判斷有人要抽籤; 第二部分是播放動畫影片,當人臉被偵測到,系統會切換到全螢幕播放一段「今日運勢」的動畫,增加儀式感與趣味性; 第三部分是馬達控制,當動畫播放完畢,Processing 會傳送訊號到 Arduino,驅動馬達轉動,把籤紙從籤筒推出來。
圖2、當人臉被偵測到,系統會切換到全螢幕播放一段「今日運勢」的動畫(攝影:李禕禕)
整個操作是這樣:人走到攝影機前,螢幕框出人臉,接著影片就自動播放。動畫結束後,馬達轉動一次,籤紙掉下來。看似簡單,但每個細節都花了我不少時間去調整。影片播放是最麻煩的問題,因為 Processing 在播放 mp4 影片時,如果同時進行人臉辨識,畫面就會卡住甚至當機,又或者是影片播完後馬達沒有轉動。我最後改成先暫停人臉辨識,再播放影片,影片結束後再停留大約五秒鐘再重新偵測,才終於能夠正常執行。
控制馬達也需要仔細調整。馬達的力道不大,轉太短不會掉籤,轉太久會掉好幾根。我試了很多次,慢慢調整旋轉時間和轉速,才剛好讓籤紙掉下一根。影片播放完後,還要避免馬達重複轉動。剛開始因為條件判斷沒寫好,程式會一直送訊號,馬達就不停轉,籤紙整把掉光。後來我在程式中多加了一個條件,讓電腦只在動畫真正結束時傳送一次訊號,這樣就不會出現重複動作。這些細節的調整讓我學會了程式設計中的邏輯思考與狀態控制。
雖然抽籤機外觀很簡單,我用紙箱去做成一個抽籤機,裡面做了隔層,上面放筆電播動畫,下面的空間則是放馬達。我們在馬達上加入髮卷用強力膠固定在紙箱上,並用長條的牛皮紙上面寫上不同的運勢,捆在髮卷上,同時在紙箱開一個小洞讓籤詩能夠露出來。原本我們是使用 SG90 伺服馬達,但後來發現它只能旋轉180度並且會回彈,這會使籤條往回收,無法順利掉出籤詩,因此在最後一刻老師建議我們改成直流馬達,因為直流馬達可以360度的旋轉,這樣籤詩才不會往回收,並且借我們 TT 直流馬達與 L298N 的電路板,過程中也學到很多調整和改進的方法。另外,我們特別製作了一段簡單的動畫,寫著「今日運勢」,讓抽籤過程看起來更有趣,也提升整體的互動體驗。
圖3、過程中不斷調整的籤詩紙捲(攝影:李禕禕)
這堂課讓我從完全不熟悉 Arduino 到可以自己設計一個互動裝置,過程中雖然常常遇到問題,像接線錯誤、影片播放卡住、通訊失敗,但每次解決一個問題都讓我對這些技術多一分信心。回顧一學期,從用紅外線感測器控制 LED,到後來結合人臉辨識、影片播放和馬達驅動,我一步一步把零碎的知識拼湊成一個完整的作品。這不僅是技術的累積,更是邏輯思維和問題解決能力的提升。
未來如果有機會,我想把抽籤機加上語音提示或更多互動功能,甚至挑戰用藍牙或網路遠端操控,讓使用者可以用手機啟動抽籤流程,讓整個過程更加便利和多元。我也希望能學習更多感測器和通訊技術,擴展互動裝置的功能和應用場景。
這門課不只是學到技術,也讓我體會到創意和實作結合的成就感。當看到自己的作品可以順利運作,所有的努力和挫折都變得值得。我很感謝老師和同學的協助,也期待未來能把這些經驗應用在更多有趣的專案上,持續探索科技與藝術結合的可能性。