11
投稿類別:工程技術類 篇名: 雲監控與汽車防盜 作者: 歐鎧豪。高雄市立高雄高級工業職業學校。資訊三乙 黃泓諭。高雄市立高雄高級工業職業學校。資訊三乙 蘇佳佑。高雄市立高雄高級工業職業學校。資訊三乙 指導老師: 蔡志宏 老師

投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

Embed Size (px)

Citation preview

Page 1: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

投稿類別:工程技術類

篇名:

雲監控與汽車防盜

作者:

歐鎧豪。高雄市立高雄高級工業職業學校。資訊三乙

黃泓諭。高雄市立高雄高級工業職業學校。資訊三乙

蘇佳佑。高雄市立高雄高級工業職業學校。資訊三乙

指導老師:

蔡志宏 老師

Page 2: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

1

壹●前言

日前於新聞中得知某失竊車輛中留有車主的 iPhone,因此警方透過「Find

My iPhone」,這套手機 App 迅速抓到竊賊,並找回失竊的車輛。

從這個事件使我們想到可以透過雲端系統,去監控車內狀況。讓車主不必購

買昂貴的防盜裝置,也能擁有強大的防失竊功能。有了這套防盜裝置,就可以即

時通知車主,車內有小偷。車主也能迅速找回失竊的愛車,並有機會將小偷逮個

正著。

貳●正文

一、研究過程

二、系統概念圖

決定設計一個「雲端監控汽車防盜系統」後,分析整個系統概念,如圖 1。

圖 1 雲端監控汽車防盜系統概念圖

準備期

• 閱讀大量相關書籍

• 構思研究內容

研究期

• 探索Arduino、App Inventor 2 開發方式

成品期

• 討論問題

• 撰寫報告

有人進入車輛則執行:

(一)拍下車內狀況並上傳 Dropbox

(二)傳送 Email 給車主

(三)傳送經度、緯度到 Google 試算表

(一)傳送照片至手機

(二)傳送經緯度至手機

控制電瓶是否斷開

使車輛無法發動!

Page 3: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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

Page 4: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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 函式庫目錄

Page 5: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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

Page 6: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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();//處理完,停止

}

}

Page 7: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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 控制電瓶是否連接上車輛

Page 8: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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 查看目前車輛位置

Page 9: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

8

(六)Android 手機 App 控制車輛與電瓶的連結,當按下「開」,測試電壓,如

圖 16。當按下「關」,測試電壓,如圖 17。

圖 16 手機 App 控制車輛與電瓶,按下「開」,測試電壓

圖 17 手機 App 控制車輛與電瓶,按下「關」,測試電壓

(七)硬體電路設置

我們將微控器與周邊感測器裝配在電路板上,完成如圖 18。

圖 18 硬體電路設置

二、討論

(一)以 GPS 獲取經緯度

這是本套系統開發過程中,碰到最大的困難,最後發現問題主要出在以下兩

點:

1、室內無訊號

整套專案的開發主要在教室內進行,剛開始,GPS 模組上的定位燈號一直都沒

有閃爍(代表沒有接收到 GPS 訊號)。本來懷疑模組故障,後來我們跟老師借

了筆電,拿到戶外去做測試,結果 GPS 模組上的定位燈號就開始閃爍了(代表

有接收到 GPS 的訊號)。

Page 10: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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,即時找出車輛位置,將犯人繩之以法,並找回失竊的愛

車。

(二)擴展與研發

未來,我們可以將本研究中所有的功能與車上的音響系統做結合,換句話說,

就是以一台「中控電腦」取代汽車音響的地位。

Page 11: 投稿類別:工程技術類 - shs.edu.t · Arduino Yun P I R 6 $ 6ð ¡ Google Docs WebCam ANB. ñ Dropbox 3 5 App2î Ë 5 fâ ¢ 4í "ä "ä eÃep 22:F App Arduino Yun 4í 3 ñfâDÝ

雲監控與汽車防盜

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/