Upload
tranthuan
View
217
Download
0
Embed Size (px)
Citation preview
投稿類別:工程技術類
篇名:
雲監控與汽車防盜
作者:
歐鎧豪。高雄市立高雄高級工業職業學校。資訊三乙
黃泓諭。高雄市立高雄高級工業職業學校。資訊三乙
蘇佳佑。高雄市立高雄高級工業職業學校。資訊三乙
指導老師:
蔡志宏 老師
雲監控與汽車防盜
1
壹●前言
日前於新聞中得知某失竊車輛中留有車主的 iPhone,因此警方透過「Find
My iPhone」,這套手機 App 迅速抓到竊賊,並找回失竊的車輛。
從這個事件使我們想到可以透過雲端系統,去監控車內狀況。讓車主不必購
買昂貴的防盜裝置,也能擁有強大的防失竊功能。有了這套防盜裝置,就可以即
時通知車主,車內有小偷。車主也能迅速找回失竊的愛車,並有機會將小偷逮個
正著。
貳●正文
一、研究過程
二、系統概念圖
決定設計一個「雲端監控汽車防盜系統」後,分析整個系統概念,如圖 1。
圖 1 雲端監控汽車防盜系統概念圖
準備期
• 閱讀大量相關書籍
• 構思研究內容
研究期
• 探索Arduino、App Inventor 2 開發方式
成品期
• 討論問題
• 撰寫報告
有人進入車輛則執行:
(一)拍下車內狀況並上傳 Dropbox
(二)傳送 Email 給車主
(三)傳送經度、緯度到 Google 試算表
(一)傳送照片至手機
(二)傳送經緯度至手機
控制電瓶是否斷開
使車輛無法發動!
雲監控與汽車防盜
2
三、研究開始前的準備工作
首先本專題需要用到三種網路服務(Google、Dropbox、Temboo)的帳號,
及這些網路服務所提供的一些金鑰資訊。
(一)、申請 Google、Dropbox、Temboo 帳號
(二)、建立第一個 Temboo 應用程式,記錄紅色框內的資料,本專題往後將用
到,如圖 2。
圖 2 建立第一個 Temboo 應用程式
(三)、連線到 https://www.dropbox.com/developers/apps 在 Dropbox 建立應
用程式,如圖 3。
圖 3 Dropbox 建立應用程式
(四)、記錄你的 Dropbox 應用程式資訊,本專題往後將用到,如圖 4。
圖 4 記錄 Dropbox 應用程式資訊
(五)、1.連線到
https://temboo.com/library/Library/Dropbox/OAuth/InitializeOAuth/
填入剛剛記下來的DropboxAppKey和DropboxAppSecret,按下Run。
2.紀錄 CallbackID 和 OAuthTokenSecret,並進入 AuthorizationURL 之
網頁,按下 Allow。
(六)、1.連線到
https://temboo.com/library/Library/Dropbox/OAuth/FinalizeOAuth/
填入 DropboxAppKey、DropboxAppSecret、
CallbackID、OAuthTokenSecret
2.記錄下 AccessToken、AccessTokenSecret、UserID
雲監控與汽車防盜
3
四、Linux 配置與腳本檔
(一)、以指令設定 Linux
1.開啟終端機(由於 Windows 沒有內建,所以我們使用 PieTTY 來代替)
2.輸入 Arduino Yun 之 IP 來進行連線
3.輸入指令 (1) root 選擇要登入 Linux 之身分
(2) 輸入 Arduino 密碼 輸入 root 身分之密碼
(3) opkg update 更新 opkg 套件管理器
(4) opkg install kmod-video-uvc 安裝 UVC 驅動程式
(5) opkg install python-openssl 安裝 python-openssl 套件
(6) opkg install fswebcam 安裝 fswebcam 軟體來拍照
(7) cd /mnt/sda1 進入 SD 卡目錄
(8) fswebcam test.png 拍張照,命名為 test.png
(9) ls 列出 SD 卡中的資料,應該會有一個 test.png 的圖片檔
(二)、接著我們要以 Python 語言寫一個腳本檔,放到 SD 卡的根目錄,如圖 5,
讓 Arduino 來呼叫,而 Linux 可以利用 Python 腳本來存取 Dropbox API,達到
上傳照片之目標。
圖 5 Python 語言寫一個腳本檔
(三)、最後,我們必須到 https://www.temboo.com/download/下載 Temboo
Python SDK 函式庫,並將它解壓縮到 SD 卡的根目錄,如圖 6 所示。
圖 6 解壓縮 Temboo Python SDK 函式庫目錄
雲監控與汽車防盜
4
五、硬體接線圖
將整個開發環境預設為有 Wi-Fi 的情況下。硬體接線如圖 7 所示:
圖 7 硬體接線圖
六、系統設計流程圖
對於整個系統設計流程,如圖 8。
GPS連線
切斷電瓶E-mail通知車主
開啟Arduino Yun
P I R
是否有人
經緯度上傳Google Docs
WebCam
照片上傳Dropbox
接收App指令
斷電?
是 否
否
關閉Arduino Yun手機 App
是
接上電瓶
顯示地圖
圖 8 系統設計流程圖
七、Arduino Yun 程式設計之重點部分
(一)腳位設定、腳位宣告、開啟功能,的重要部分,如表 1。
表 1,腳位設定、腳位宣告、開啟功能
YunServer server; // 建立YunServer物件,它會持續進行,並等待後續指令
SoftwareSerial gpsSerial(2, 3); //指定GPS輸出入輸入訊號之腳位
//(GPS之RX接到3,GPS之TX接到2)
TinyGPS gps; //啟用GPS
雲監控與汽車防盜
5
(二)、設定程式初始化,如表 2。
表 2,程式初始化之重要部分
void setup() {
gpsSerial.begin(9600); //設定Arduino與GPS模組之通訊速率
Bridge.begin();//使ArduinoYun上的Linux機器與Atmel微控制器之間進行橋接
server.listenOnLocalhost();//設定讓伺服器聆聽本地端IP位址的連線
server.begin();//啟動伺服器
}
(三)、程式主迴圈部分,不斷重複執行,直到關機,如表 3。
表 3,程式主迴圈部分
void loop(void) {
//如果PIR有偵測到人影,則執行以下動作(拍照、傳Email、定位)
if (digitalRead(pir_pin) == true) {
//命令Linux機器,上傳照片至Dropbox
picture.runShellCommand("python " + path + "upload_picture.py " +
path + filename);
//呼叫寄送警告Email之副程式
sendTempAlert(EMAIL_MESSAGE);
//用GPS模組獲取車輛之經緯度
while(gpsSerial.available()){ //等待GPS接收到資料進來
if(gps.encode(gpsSerial.read())){ //把讀進來的GPS訊號解碼
//獲取經緯度
gps.f_get_position(&flat,&flon);
Str_lat = String(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 :
flat, 6);
Str_lon = String(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 :
flon, 6);
}
}
runAppendRow(); //呼叫傳送經緯度之副程式
}
YunClient client = server.accept();//有客戶端連線進來了
if (client) {
process(client);//開始處理,分析API
client.stop();//處理完,停止
}
}
雲監控與汽車防盜
6
八、Android 手機 App 程式設計之重點部分
(一)、由使用者選擇要查詢的 GPS 位置,並開啟地圖我們藉由
ActivityStarter 物件讓 APP 呼叫地圖。先將「android.intent.action.VIEW」這個
活動放到 ActivityStarter 的 Action 屬性中,使得呼叫此 ActivityStarter 物件時會
開啟網頁,如圖 9。
再來我們要指定網頁網址給 ActivityStarter 的 DataUri 這個屬性,讓
ActivityStarter 知 道 動 作 發 生 時 要 前 往 哪 一 個 網 頁 。 當 手 機 開 啟
「https://www.google.com.tw/maps/place/緯度,經度」時,會自動出現您要指定
這個動作開啟的應用程式,您可以選擇手機內建的 Google 地圖來開啟。
圖 9 查詢的 GPS 位置,並開啟地圖
(二)、控制電瓶是否連接上車輛
在電腦中,只要開啟瀏覽器,並輸入「Arduino Yun之 IP / arduino / digital
/ 腳位編號 / 腳位狀態」即可設定該腳位的狀態(HIGH / LOW)。因此我們一
樣透過 ActivityStarter 這個物件讓 APP 呼叫瀏覽器。如圖 10。
當「關」這個 Button 被按下時,瀏覽器就會開啟「Arduino Yun 之 IP /
arduino / digital / 7 / 0」,使得控制繼電器的腳位 7,之狀態設為 0(LOW)。
當「開」這個 Button 被按下時,瀏覽器就會開啟「Arduino Yun 之 IP /
arduino / digital / 7 / 1」,使得控制繼電器的腳位 7,之狀態設為 1(HIGH)。
圖 10 控制電瓶是否連接上車輛
雲監控與汽車防盜
7
參●結論
一、研究結果
(一)PIR 偵測到動作後,Arduino Yun 確實將照片上傳 Dropbox,如圖 11。
圖 11 PIR 偵測到動作後,照片上傳 Dropbox
(二)PIR 偵測到動作後,Arduino Yun 確實以 Gmail 傳送警告訊息,如圖 12。
圖 12 PIR 偵測到動作後,Gmail 傳送警告訊息
(三)PIR 偵測到動作後,Arduino Yun 確實將正確的經緯度上傳 Google Docs,
如圖 13。
圖 13 PIR 偵測到動作後,經緯度上傳 Google Docs
(四)Android 手機 App 查看網路攝影機拍下的即時照片,如圖 14。
圖 14 App 查看網路攝影機拍下的即時照片
(五)Android 手機 App 查看目前車輛位置,如圖 15。
圖 15 手機 App 查看目前車輛位置
雲監控與汽車防盜
8
(六)Android 手機 App 控制車輛與電瓶的連結,當按下「開」,測試電壓,如
圖 16。當按下「關」,測試電壓,如圖 17。
圖 16 手機 App 控制車輛與電瓶,按下「開」,測試電壓
圖 17 手機 App 控制車輛與電瓶,按下「關」,測試電壓
(七)硬體電路設置
我們將微控器與周邊感測器裝配在電路板上,完成如圖 18。
圖 18 硬體電路設置
二、討論
(一)以 GPS 獲取經緯度
這是本套系統開發過程中,碰到最大的困難,最後發現問題主要出在以下兩
點:
1、室內無訊號
整套專案的開發主要在教室內進行,剛開始,GPS 模組上的定位燈號一直都沒
有閃爍(代表沒有接收到 GPS 訊號)。本來懷疑模組故障,後來我們跟老師借
了筆電,拿到戶外去做測試,結果 GPS 模組上的定位燈號就開始閃爍了(代表
有接收到 GPS 的訊號)。
雲監控與汽車防盜
9
2、鮑率(Baud rate)
定位燈號開始閃爍以後,我們可以知道 GPS 模組已經收到衛星的訊號。接著我
們便參考網路上的範例程式,欲在 Serial Monitor 中獲取時間與經緯度。試過好
幾個程式碼後,結果只有一支用來獲取 GPS 時間的程式能成功獲取相關資訊。
於是我們便開始比對這些程式碼的差異與共通性,發現最大的差異在於 GPS 序
列傳輸速率,如圖 19。
圖 19 GPS 序列傳輸速率
只有在這個速率下,VK16U6 才能夠正確地接收我們要的資訊。接著我們近一步
求證這個 GPS 的 Datasheet,發現此模組默認的序列傳輸速率就是 9600bps,
因此可以得知,每個 GPS 有不同的 Baud rate,需要特別去做設定。
二、繼電器模組
為了節省經費,我們本來想以單純的繼電器去取代 Arduino 專用模組。但是
我們發現一接上繼電器後,Arduino PIN7 之 Relay 輸出腳位之電位瞬間由 5V 降
低至 3V。
據我們目前學過的基本電學與電子學知識來分析,可能的原因有兩種:
1、以電腦之 USB 供電給 Arduino Yun 模組的電流太小,不足以推動 Relay
2、Relay 中的線圈在接上 5V 的瞬間,產生了反電動勢
最後我們仍然決定去購買加有二極體等保護電路之 Arduino 專用模組來解決這
個問題。
三、結論
(一)研究特色
1、嘗試將原本用於視訊的 Web Cam,轉為本雲端監控防盜裝置之鏡頭。使
物聯網得以應用在車輛防盜上面,讓使用者隨時遠端監控車內狀況,可說是本研
究最大的創新。
2、系統提供除了能透過 E-mail 即時讓使用者知道車內發生狀況外,還提供自
動記錄犯人長相,及提供遠端斷開電瓶之功能,使車輛無發發動。
3、傳送 E-mail 之功能,能依使用者之設定,重複傳送以及自行定義 E-mail
內容。
4、本系統可由 GPS,即時找出車輛位置,將犯人繩之以法,並找回失竊的愛
車。
(二)擴展與研發
未來,我們可以將本研究中所有的功能與車上的音響系統做結合,換句話說,
就是以一台「中控電腦」取代汽車音響的地位。
雲監控與汽車防盜
10
但是這需要車商與科技廠商有密切的合作才有可能完美地實現,因為如果車
商不願意公佈車體結構,科技廠商也不願意提供產品內部線路設計圖,要將這兩
種不同專業領域的功能緊密地結合在一起,卻時是有它的困難性存在的。
(三)功能改進
1、針孔攝影機
本專題使用 Web Cam 作為監控的鏡頭,但是讀者可能會問說:那麼大一個
鏡頭,怎麼可能沒有被竊賊發現?
礙於經費不足,我們只能用現有的網路攝影機,取代監控鏡頭來表達一個重
要的功能,當然日後產品製造商可依消費者需求,將網路攝影機以針孔攝影機取
代,那麼這個專題將會更完美。
2、行車紀錄器
本專題使用一個鏡頭就只為了拍下偷車賊的面貌,說起來真的有點浪費。因
此,未來我們可以將這個鏡頭與行車紀錄器結合。開車時就當成一般的行車紀錄
器,停車後把鏡頭轉個方向,即可當成雲端監控的鏡頭。
這樣的優點是可以讓行車畫面即時上傳雲端,如此一來就不用擔心事故發生
後記憶卡損毀而造成重要資料無法讀取。
肆●引註資料
張繼聖(民 103)。詹文男:智慧家庭,其實還不夠智慧。PChome,227,171。
張繼聖(民 103)。簡立峰:未來五年,物聯網大數據帶來的改變。PChome,
227,173。
趙英傑(民 103)。超圖解 Arduino 互動設計入門(第二版)。臺北市:旗標。
柯博文(民 103)。Arduino 互動設計專題與實戰。臺北市:碁峰。
曾吉弘(民 103)。實戰物聯網開發:使用 Arduino Yún。臺北市:碁峰。(原著
出版年:2014 年)
文淵閣工作室(民 102)。手機應用程式設計超簡單:APP Inventor 初學特訓班。
臺北市:碁峰。
文淵閣工作室(民 102)。手機應用程式設計超簡單:App Inventor 專題特訓班。
臺北市:碁峰。
旗立理工研究室、宋由禮與陳柏宏(民 100)。職校電子學 I。臺北市:旗立。
Arduino 官方網站。民 104 年 2 月 6 日,取自:http://www.arduino.cc/
維基百科。民 104 年 2 月 6 日,取自:http://zh.wikipedia.org/
App Inventor 2 。民 104 年 2 月 6 日,取自:http://ai2.appinventor.mit.edu/
Tandy 購物網。民 104 年 2 月 6 日,取自:http://www.tandyonline.co.uk/
華碩官網。民 104 年 2 月 6 日,取自:http://www.asus.com/