投稿類別 : 工程技術類 篇名 : 作者 : 林辰憲 台北市立內湖高工 電機科三年孝班 吳宥宇 台北市立內湖高工 電機科三年孝班 施仲庭 台北市立內湖高工 電機科三年孝班 指導老師 : 吳承倫老師鄭錦鈞老師
壹 前言 一 研究動機 最近這些年, 由於對於方便性與安全性的追求, 越來越多營業 辦公的場所, 都採用了感應的方式作為進出的管理方式, 這種感應的方式, 不僅可以更好紀錄人員進出的數據, 也比較不容易被偽造 而我們就在想, 家庭中是否可以運用這種類似的方式, 來提高各種功能, 不僅是能使人員進出方便些, 在安全方面, 如果外人惡意破壞, 也可以第一時間獲得訊息, 以便提升門戶安全的品質, 讓家庭安全更穩固 二 研究目的 ( 一 ) 利用感測器與 arduino 晶片進行簡單的結合, 再搭配電磁閥, 模擬出簡易智能電子鎖系統 ( 二 ) 電子鎖系統能透過網路模組與網路的連接, 使用戶可以第一時間得到門戶訊息 ( 三 ) 加上其他功能整合成一整套系統, 例如 : 進門開燈出門關燈, 既增添方便性還可以順便省電 三 研究架構 擬定好主題後, 透過蒐集相關教學內容及歸納整理, 構思本作品所需的功能 在製作過程中, 透過諮詢老師 小組間的合作及網路上的資源探究來解決問題, 最終完成作品, 其架構如 ( 圖一 ) 所示 圖一 : 研究架構圖 ( 資料來源 : 研究者繪製 ) 1
貳 正文 一 系統架構 本研究希望透過網路, 告知屋主家內進出的情況 研究者使用 Arduino 配合 RFID 感應票卡來確認身分 ; 另一方面為避免屋主忘記攜帶鑰匙卡時, 無法進入家門 所以研究者在本作品的硬體配置上, 增設密碼鎖, 當門開啟時, 利用 7697 開發版連接手機網路, 透過 IFTTT 平台設定 line 推播訊息至預設的帳戶上 如正確輸入密碼, 門開啟並通知屋主誰回家, 若門被強制打開, 會通知屋主被入侵, 如 ( 圖二 ) 所示 圖二 : 程式流程圖 ( 資料來源 : 研究者繪製 ) 二 使用器具 我們的研究是以 Linkit_7697 這塊開發版為核心, 結合其他的模組和網路平台來達成我們所要的效果, 所使用材料如下 ( 表一 ) 表一 : 材料使用表 項目 品名 規格 數量 1 開發版 Linkit_7697 1 2 電磁鎖 24V 1 3 LCD 1602A 1 4 RFID RC522 1 5 薄膜式鍵盤 4*4 1 6 繼電器 5V 控制 1 ( 資料來源 : 研究者整理 ) 2
( 一 )Arduino & Linkit_7697 Arduino 使用的語法和開發環境與 JAVA 及 C 語言相似, 且具有開放原始碼的優點, 對於沒有接觸過程式訓練的我們來說, 相對容易上手 依照需求的不同, 可使用的機型很多, 例如 :Arduino UNO Arduino Nano Arduino mega 等等 本次研究者使用的是由聯發科技所開發的 Linkit_7697 如 ( 圖三 ), 它本身同時搭配了藍芽和 WIFI 的無線功能, 不會像 Arduino UNO 一樣, 需額外借助連接所需模組, 功能比較如 ( 表二 ) 表二 ; 規格比較 Linkit 7697 Arduino UNO R3 Arduino MEGA 2560 R3 Arduino Nano RAM 352KB 2KB 8KB 2KB Flash 4MB 32KB 256KB 32KB Wi-Fi 802.11b/g/n(2.4G) 需另外安裝模組 需另外安裝模組 需另外安裝模組 Bluetooth 4.2LE 需另外安裝模組 需另外安裝模組 需另外安裝模組 尺寸 48*26mm 70*54mm 101*54mm 需另外安裝模組 作業電壓 3V3 5V 5V 5V 輸入電壓 5V(microUSB) 7V~12V 9V 7V~12V USB2UART CP2102N ATMega16U2 ATmega2560 ATmega328 ( 表二資料來源 ; 研究者整理 ) 圖三 :Linkit 7697 ( 圖三資料來源 :MEDIATEK labs 2019 年 12 月 29 日, 取自 ;https://reurl.cc/kkx6xn) ( 二 )RFID 與 NFC 本研究利用 RFID 模組取代傳統的鑰匙來感應開門, 運作原理是利用電磁場來感應物品上的標籤進行識別 NFC 是由 RFID 演變而來, 又稱作近場通訊, 兩者間的不同在於他們完成識別方式的過程 RFID 以晶片上的讀寫器, 加上標籤上的答應來運行, 而 NFC 是交互訊息來完成過程,NFC 因為近距離的關係, 常用於手機的行動 3
支付, 相對於 RFID 比較安全 RFID 有很多頻率, 每個頻帶的的特色都不同, 個個都有不同方面的運用, 而 NFC 是在 13.56MHz 的頻帶, 但距離從 RFID 的 1 米變成 20 公分, 雖然距離變短, 但是有能夠避免不必要的雜訊 未來研究方向, 我們希望把 RFID 更換成 NFC 模組, 這樣能更符合現在手機的使用方式 表三 :RFID 及 NFC 規格比較 RFID 頻段 分級 範圍 ( 米 ) 速度 應用 120-150KHz 低頻 (LF) 0.1 低速 動物識別工廠數據 13.56MHz 高頻 (HF) 1 低到中速 小卡片 868-870MHz 特高頻 (UHF) 1-2 中到高速 歐洲商品編碼 ( 被動式標籤 ) 2450-5800MHz 微波 802.11WLAN( 無線網路域 ), 藍 1-2 高速 (microwave) 牙標準 NFC 頻段 範圍 ( 米 ) 速度 工作模式 13.56MHz 0.2 106Kbit/s 212Kbit/s 或卡類比模式 讀卡模式及對等 424Kbit/s 模式 (P2P) ( 表三資料來源 ; 研究者整理 ) ( 三 )Arduino IDE & BlocklyDuino Editor 開發環境上,Arduino IDE 是用來撰寫 Arduino 最常見的使用方式 ;BlocklyDuino Editor 是聯發科技用 Google 提供的 Blockly( 視覺化語言編輯程式庫 ) 為基礎製作的軟體, 不過能做的事相較 Arduino IDE 就是相形見絀, 所以研究者只有用 BlocklyDuino Editor 來建構大致的雛型, 剩下沒有提供的功能和修改 BUG 都利用 Arduino IDE 進行程式碼的編譯 開發軟體畫面如 ( 圖四 ) 及 ( 圖五 ) 圖四 :BlocklyDuino Editor ( 圖四 圖五由研究者拍攝 ) 圖五 :Arduino IDE 4
( 四 )IFTTT IFTTT 是一個網路的平台, 他提供連結各種網路服務, 它的運作方式跟她得口 號一樣 if this then that, 我們是以 Arduino 觸發 Webhook 然後連結 LINE 來發送訊息 ( 五 )ESP32-CAM 圖六 :IFTTT 研究所寫的兩個方案 ( 資料來源 ; 研究者拍攝 ) ESP32-CAM 對於監控來說是非常好的選擇, 價格不貴 自帶網路的功能, 跟 ov2640 這顆鏡頭配合時, 可以簡單地達到家庭監控攝影, 甚至是人臉辨識的功能 而使用 ESP32 還需要用到 USB TTL 工具 圖七 :ESP32-CAM 及 OV2640 ( 資料來源 :TaiwanIOT studio 2020 年 3 月 20 日 取自 :https://reurl.cc/j7qeml) 四 硬體接線圖 為了避免線路脫落的意外, 我們畫了接線圖以利修復 電鎖方面以電磁閥的圖示表 現, 而電路部分用焊接的方式固定在電路板上, 電路圖如 ( 圖八 ) 5
圖八 : 接線圖 ( 資料來源 : 研究者繪製 ) 五 軟體功能測試 ( 一 ) 鑰匙卡感應 以事前紀錄好的鑰匙卡和沒有紀錄的鑰匙卡測試 驗證的結果在液晶螢幕顯示 ( 圖十 ), 若成功就會發送訊息 ( 圖九 ) id = mfrc522_readid(); / / 讀取 RFID 所讀到的值 if (id!= "") { Serial.println(id); if (id == "4a09d116") { / / "4a09d116" 設為事先儲存好的鑰匙卡 ID name = "mom"; / / 把 "4a09d116" 設為媽媽的鑰匙卡 } else if (id == "bbd80c1c") { / / "bbd80c1c" 設為事先儲存好的鑰匙卡 ID name = "dad"; / /"bbd80c1c" 設為爸爸鑰匙卡的 ID } else { name = "unknow"; / / 不明的 ID 設為 unknow}} if(id=="bbd80c1c" id=="4a09d116"){ / / 如果 ID 為爸爸和媽媽 digitalwrite(2 LOW) / / 電磁閥鬆開 lcd.nocursor(); lcd.clear(); lcd.print("welcome home!"+name);/ / 螢幕顯示歡迎回家媽媽或爸爸 invokeifttt("dsyv6dcvpsnw66beanseqk", / / IFTTT 金鑰 front_door_opened", String(name), String(0), String(0)); / /IFTTT 要執行的方案, 設定的數值, 最多三個 delay(3000); resetlocker(); / / 重製螢幕 } 6
圖九 :Arduino 連接 IFTTT 圖十 : 讀取名為 mom 的鑰匙卡 ( 資料來源 : 研究者拍攝 ) ( 二 ) 密碼鎖 用薄膜式鍵盤輸入設定的密碼 ( 圖十一 ), 判斷成功後 ( 圖十三 十四 ), 用網 路系統傳訊通知主人 ( 圖十二 ) String passcode = "1234567"; // 預設密碼 String inputcode = ""; // 暫存用戶的按鍵字串 bool acceptkey = true; // 代表是否接受用戶按鍵輸入的變數, 設為 接受 void checkpincode() { acceptkey = false; // 暫時不接受用戶按鍵輸入 clearrow(0); // 從第 0 個字元開始清除 LCD 畫面 lcd.nocursor(); lcd.setcursor(0, 1); // 切換到第 2 行 if (inputcode == passcode) { // 比對密碼正確 lcd.clear(); lcd.print("welcome home!"); digitalwrite( relay, HIGH); cardid=high; // 用來判定是否為入侵的變數,LOW 是沒經過驗證 name ="someone use codelock"; invokeifttt("dsyv6dcvpsnw66beanseqk", "front_door_opened", String(name), String(0), String(0)); //IFTTT 告知有人用密碼鎖回家 } else { lcd.print("***wrong!!***");} // 比對錯誤 7
圖十一 : 輸入七位數密碼 圖十二 : 用密碼鎖回家 圖十三 : 輸入正確 ( 資料來源 : 研究者拍攝 ) 圖十四 : 輸入錯誤 ( 三 ) 未經驗證門就打開 用 LS 開關偵測門的啟閉, 再由程式觀察是否有經過驗證, 若沒有則 透過網路系統發送訊息 int cardid = LOW; // 拿來處存是否通過驗證 void dooropen(){ void dooropen(){ // 開門的副程式 if(cardid==low){ // 若沒經過驗證 invokeifttt("dsyv6dcvpsnw66beanseqk","detect_unknow_inside_house", String(name), String(0), String(0)); // 連接 IFTTT 偵測陌生人的專案 }else{ // 若有經過判定 cardid=low; // 把變數重製 } void setup(){ attachinterrupt(0, dooropen, FALLING); // 如果偵測開門時, 進行副程式 dooropen 8
參 結論 圖十五 :IFTTT 偵測到入侵的專案 ( 資料來源 : 研究者拍攝 ) Arduino 晶片模組有很多的擴充模組, 可以發展成很大的系統, 甚至把整個家都包含進來 雖然我們目前做的部分並不太大, 但因為是第一次嘗試做, 所以花了很多時間製作, 過程中遭遇了許多困難, 但都有所克服, 從中也學習到了許多新事物, 最終製作出成品, 希望我們製作的成品可以讓生活更方便 更安全 一 研究成果 : ( 一 ) 將門鎖系統與舊的電所結合 : 因為考慮到很多用戶都使用傳統電鎖, 我們把電磁閥換成舊的電鎖如 ( 圖十六及十七 ), 我們試著安裝我們的系統到舊鎖上面, 這樣新舊結合的形式實際安裝到門上時, 便不需要動到門的其他部分, 能省些力, 也能減少我們的開銷 圖十六 : 整合起來的小盒子圖十七 : 電鎖組裝 ( 資料來源 : 研究者拍攝 ) ( 二 ) 成功透過網路連接 IFTTT 由 LINE 傳送入侵訊息至手機 ( 三 ) 用網路連接 ESP32 完成監控功能 9
二 未來展望 : 在監控方面 ESP-32 一顆晶片只能配置一顆鏡頭, 所以我們沒辦法同時達到人臉辨識和家庭監控的效果 研究者選擇使用監控的功能, 是因為這顆晶片較低階, 進行人臉辨識較難以負荷 在這部分我們遇到的困難是網路的部分, 因為家中通常是浮動 IP, 所以每次分享出來的 IP 位置不同, 配合 IFTTT 平台較難傳送 IP 位置, 但是經過我們的測試, 如果使用手機的熱點所建立的 IP 位置都一樣, 而如何克服此項問題, 則可以繼續研究 將 NFC 取代 RFID: 因為現在手機的盛行, 而新的手機都有內建 NFC 的功能, 所以 我們將 NFC 取代 RFID 用於門鎖開鎖感應系統, 這樣更符合這手機盛行的時代 肆 引註資料 施士文 (2014) Arduino 微電腦應用實習 新北市 : 台科大圖書股份有限公司 曾吉弘 (2017) [LinkIt 7697 開發板上市啦!] 燒燙燙開箱規格報你知 2019 年 12 月 9 日, 取自 https://reurl.cc/9zlqqd 夜市小霸王 (2019) ESP32-CAM(arduino) 影像伺服器及臉部辨識教學原始檔 Video Stream Server 2020 年 1 月 18, 取自 https://reurl.cc/3drkxm cubie(2018) Arduino 4 4 薄膜鍵盤模組實驗 2019 年 12 月 29 日, 取自 https://swf.com.tw/?p=924 Felix Lin(2018) Tutorial LinkIt 7697 與 IFTTT 譜出雲端協奏曲 2019 年 12 月 29 日, 取自 https://makerpro.cc/2018/11/use-linkit7697-for-ifttt-application/ MEDIATEK labs(2018) LinkIt 7697 BlocklyDuino 使用指南 2019 年 12 月 29 日, 取自 https://docs.labs.mediatek.com/linkit-7697-blocklyduino/blocklyduino-12880262.html 維基百科 (2020) 無線射頻識別 2020 年 3 月 20 日, 取自 https://zh.wikipedia.org/wiki/%e5%b0%84%e9%a2%91%e8%af%86%e5%88%ab 維基百科 (2020) 近距離無線通訊 2020 年 3 月 20 日, 取自 https://zh.wikipedia.org/wiki/%e8%bf%91%e5%a0%b4%e9%80%9a%e8%a8%8a 10