投稿類別 : 資訊類 篇名 : 作者 : 林容均 國立新竹高級工業職業學校 綜合高中科三年丙班林彥安 國立新竹高級工業職業學校 綜合高中科三年丙班黃鉉允 國立新竹高級工業職業學校 綜合高中科三年丙班 指導老師 : 詹立安老師
壹 前言 一 研究動機 還在為停車找不到停車位而失望, 還在為了等待停車而感到困擾嗎? 隨著時代科技越加進步, 現代人對於服務的精準度和快捷性要求越來越高, 生活也越來越忙碌, 絕不會想把時間花費在排隊或是找車位這種耗時的事 像是中國 德國和美國也推出各式停車場自動化系統, 我們希望創造一種能藉由樂高 EV3 模擬出一套結合 App 的大眾停車自動化系統, 不只安全 省時 省空間, 還能夠讓車主監控自己的車子, 以此達到安全又快速停車的目的 二 研究目的 ( 一 ) 進入停車場使用者 App 介面 ( 二 ) APP 操作停車手續 ( 三 ) 使用者名單數位化 ( 四 ) 資料庫快速搜尋的找出空車位 ( 五 ) 網頁管理停車場內部進出資訊, 計算停車時間及收費等 ( 六 ) 機器人多支路行動 取物和置物 貳 正文 一 系統架構 利用 App inventor 2 設計成一個提供車主連線的使用者介面, 登入帳號以及使用者控制 停車, 再用設計好的 App, 透過資料庫尋找空位, 透過機器人完成指令來達成自動化停車 二 研究流程圖 1
專題研究 IOT 物聯網研究 機器人架構模型設計 EV3 樂高機器人程式研究 WIFI 無線網路傳輸研究 雲端資料庫研究 App Inventor2 手機程式設計 App 與 EV3 連結研究 整合完成自動化停車系統 三 硬體與軟體 圖一 : 研究架構 ( 研究者繪製 ) ( 一 ) 材料表 表一 : 使用材料 編號零件圖名稱數量 #6009996 EV3 主機 1 台 #6009430 大型 EV3 馬達 2 個 #6008577 中型 EV3 馬達 1 個 #6008924 超音波感應器 1 個 #6008919 顏色感應器 4 個 樂高零件 130 個 2
( 二 ) 使用軟體 1. App Inventor 圖二 :App Inventor2( 資料來源 :MIT App Inventor) 它可以用來創造基於 Android 作業系統的應用軟體 它使用圖形化界面, 非 常類似 Scratch 語言和 StarLogo TNG 用戶介面 用戶可以拖放圖形對象來創造一 個運於行在安卓系統上的應用, 它就可以在許多手機設備上運行 圖三 :App Inventor 連接 ev3 選單 ( 擷取自研究專題 ) 2. Mindstorms EV3 圖四 : 樂高 logo( 資料來源 :SmashingAdvantage.com) 這是樂高集團所製造第三代的可程式即可組合機器人玩具 ( 第一代為 RCX, 第二代為 NXT) 整組的套件包含了感測器及連接線(LEGO) 於 2013 年下旬推出樂高公司和美國麻省理工學院 (MIT) 共同開發的機器人組件新款 教育用 LEGO Mindstorms EV3 Mindstorms 是將配備微處理器的 LEGO 公司的積木組裝起來, 通過其內建的程式來控制的機器人 3. Google 雲端平台 圖五 : 雲端平台 logo( 資料來源 :Seeklogo.com) Google 雲端平台 ( 英語 :Google Cloud Platform) 是一項使用了 Google 核心基礎架構 資料分析和機器學習技術的雲計算服務 提供用於 Google 搜尋和 YouTube 等終端用戶產品的相同支援基礎設施託管和開發人員產品, 用於構建從簡單網站到複雜應用程式的一系列程式, 並提供一系列模塊化的基於雲的服務和大量開發工具, 例如託管和計算 資料存儲 翻譯 API 預測 AP 3
四 程式碼 為了呼叫 EV3 機器人完成之後的任務, 手機須先與 EV3 建立連線 圖六 :EV3 手機藍芽連線 ( 擷取自研究專題 ) 連線之後,App Inventor2 只需完成呼叫 EV3 上的指定程式, 透過已經寫好的 EV3 軟體, 指揮機器人執行停車及還車等動作 圖七 : 選擇鈕配置圖 ( 擷取自研究專題 ) 圖八 : 呼叫 EV3 檔名之一 ( 擷取自研究專題 ) 在 app 中, 我們透過傳遞字串呼叫指定名稱的程式, 如圖七中 putbb 即為 EV3 程式檔名稱, 會取名作 putbb 則是因為 putb 可能是原本內建程式中的某一項指令, 若取名為 putb 程式不會工作 字串中表示 /basic/park/putbb/final 但因為 EV3 主機內部的程式資料以十六進位數的形式儲存, 需將十六進位數的程式資料, 轉成十進位數儲存在清單中, 才能讓手機能操控 EV3 主機執行程式, 因此將存放在 EV3 主機中的程式的路徑位置, 轉換成 ASCII code, 作為清單內容 如圖八以及轉換數值參見表一 4
圖九 : 呼叫 EV3 檔名之二 ( 擷取自研究專題 ) 圖十 : 呼叫檔名之三 ( 擷取自研究專題 ) 表二 :16 進位轉 10 進位 ASCII code 之一 ( 研究者繪製 ) Hexadecimal 08 82 01 00 84 2E 2E 2F 70 72 6A 73 2F Decimal 8 130 1 0 132 46 46 47 112 114 106 115 47 表三 : 16 進位轉 10 進位 ASCII code 之二 ( 研究者繪製 ) ASCII code 112 97 114 107 47 112 117 116 98 98 46 114 98 102 字元 p a r k / p u t b b. r b f 五 登入系統 圖十一 : 登入程式碼 ( 擷取自研究專題 ) 圖十二 : 註冊程式碼 ( 擷取自研究專題 ) 為了區別不同使用者, 用註冊不同的帳戶 ( 密碼 ), 儲存在遠端電腦中的伺服器網址, 透過存取資料, 做驗證帳戶的動作 如圖十中, 宣告一個變數並製成清單, 清單中包含 5
使用者帳號及密碼, 將此清單儲存至微型資料庫, 因此在遠端電腦上便會存在一個新的 使用者帳戶資料, 以便於之後整理帳戶等操作 六 EV3 機器人程式 圖十三 :EV3 程式設計 ( 擷取自研究專題 ) 機器人在這裡需要的動作是在停車場中來回走動, 以及透過感應器偵測地上的路線將車子 ( 載物 ) 提起 歸位, 為了讓手機能簡單的呼叫 EV3 中的程式, 把 EV3 的運走及取物動作濃縮在一個檔案名中, 如圖十二中, 機器人是透過顏色感應器來偵測路線, 感應出紅 綠 藍和黑四種顏色, 在指定的顏色路線上保持直行狀態或是自動矯正, 當兩個感應器都偵測到黑色區時, 讓車停下並將車子放下歸位 選擇用顏色感應器的優點是, 路線的規劃不用因場地規劃不同而更換程式碼, 而且若是以指定步數來規劃機器人的行走路線時, 機器人常會因器材與地面間磨擦力的不同而產生些微的誤差, 這將不利於機器人精準地運作, 因此在感應器測出不同的顏色時, 即時修正偏差角度, 使工作穩定, 也是對車子 ( 載物 ) 的安全上更添一防護措施 七 微型資料庫 圖十四 : 微型資料庫網頁 ( 擷取自研究專題 ) 6
這個微型資料庫是提供給 App Inventor 作開發使用, 開啟的物件是 Google AppEngine Launcher, 也是 Google Cloud Platform 中的其中一項工具, 如圖十三, 在網址欄中即為此專體在 Gcloud 中的 ID 名稱, 當使用此資料庫時, 開啟資料庫的電腦需在運行狀態, 在此說明一下此網頁與 App 之間的溝通方式, 當 App 已經將資料填好在輸入欄位中, 按下傳送的同時, 程式便會呼叫一個標籤作為傳值的橋梁, 圖中 users 就是帳號密碼的標籤, 所以倘若此時 App 將要驗證此帳戶的正確性時, 就將標籤 users 中的傳值與登入欄位裡的帳號資料作相互核對 此微型資料庫的容量雖有限, 但仍可實現用作使用更大容量和附加功能 八 軟體流程圖 圖十五 :APP 客戶端運行流程 ( 研究者繪製 ) 當使用者進入 App, 會看到本專題主介面, 對應自己所需的項目選擇選鈕至下一個指定介面繼續操作, 每個不同介面皆有說明文字, 讓使用者只需按照上面標明的步驟執行即可完成手續, 為了使 App 的內容更加完整, 設置 聯絡我們, 提供使用者建議及尋求改善的平台, 如圖十四 九 硬體流程圖 圖十六 :EV3 程式流程 ( 研究者繪製 ) 7
在 EV3 的 park 資料夾中一共有 10 種程式,5 種停車程式,5 種還車程式,5 種分別 是假設的 5 格停車格, 機器人在接收指令前需在待命區等候, 由於機器人需提取載物及 卸載, 於是將程式區格為停車及還車兩部分, 在介面上亦有此 10 種呼叫程式之選鈕 十 App 使用者端說明 圖十七 :App 程式介面 ( 擷取自研究專題 ) 十一 成品 圖十八 : 研究成品圖 ( 研究者拍攝 ) 8
参 結論 一 研究發現 App inventor2 本身就有內建的 EV3 程式, 而 EV3 也有其專門的程式 但因為組員們各自都只精通其中一項程式, 在相互接合時遇到了很大的困難 然而重新了解程式需要時間, 我們認為最快 最理想的方式是讓手機程式直接連結到 EV3 的程式, 在尋求專門研究樂高機器人的老師協助下, 我們找到了解答 在 EV3 工程師設計的程式中, 我們發現機器人有固定的藍芽連線密碼, 有利我們在往後的機器人動作程式設計, 剛好解決了我們的問題 二 問題發現 面對未曾接觸過的雲端資料庫伺服器架設, 我們嘗試過不同的軟體, 如 :XAMPP Cute FTP, 放置檔案資料的平台, 但在欲完成檔案上傳與匯出的過程中, 常遇到問題, 使我們在登入系統設計中感到艱難 而在我們設計的 APP 系統中, 我們也察覺到一些可擴增的選擇鈕, 例如 :App 的藍芽連線, 或者是能夠和 EV3 串聯的一些選擇鈕, 不過那些選擇鈕似乎和 app inventor 與 EV3 之間有出入, 所以我們最終還是選擇取本地 EV3 檔案的方式 如果我們能再多理解一些關於資料庫設計的知識,App 的功能將得以多元化 一開始我們使用的是以履帶當作車子的輪子, 但是一來是材料不夠, 二來是行走時會造成極大的偏差, 不符合我們所要求的精準度 爪子讓機器人跑動不靈敏, 因此在物體的選擇上, 我們試過各式各樣不同的載具, 以及手臂抓取的靈敏度, 為了使放置物體更加方便, 我們將爪子改成較易抓的型態 三 未來發展 我們希望以後能夠把這個設計用在能用的地方, 譬如說原本的停車系統, 或是家裡 的收納, 能夠用機器人來幫助家庭主婦整理家裡, 一個按鍵就把東西送到想放的位置, 又或者是帶進校園來幫忙保管手機, 這些都是我們以後的目標 四 總結 本次的專題研究過程中, 我們看見許多在日常的網路活動中不常看見的程式邏輯, 以及在 OSI 網路七層中我們所需要的 固定 IP 個人網域 DNS, 而在第一次遇到的相關文章 軟體 教學更是不計其數, 這表示我們所研究的領域是多麼的遼闊, 內容是如此的無遠弗屆, 人們常說科技的進步帶來社會無限福祉, 我們期許自己能有更便利的發明, 也勉勵自己努力進步, 更上層樓 9
肆 參考文獻 鄧文淵 (2016) 手機應用程式設計超簡單 App inventor2 專題特訓班 碁峰資訊出版 App Invetor2 TW 中文學習網 (2012) 2018 年 3 月 4 日, 取自 http://www.appinventor.tw/ Google 雲端平台維基百科 (2016) 2018 年 3 月 4 日, 取自 https://cloud.google.com/getting-started/?hl=zh-tw 樂高 Mindstorms EV3 維基百科 (2016) 2018 年 3 月 4 日, 取自 https://zh.wikipedia.org/wiki/%e6%a8%82%e9%ab%98mindstorms_ev3 在 app inventor2 使用網路伺服器微型資料庫 (2014) 2018 年 3 月 4 日, 取自 http://blog.e-happy.com.tw/?p=5247 10