4.3 系統程式設計
4.3.4 發送警報
在動作偵測到之後的影像,我們藉由 Node.js 監看目錄的情形,
並在檔案產生時,擷取檔名後將警報檔案寄出,如圖 4.11。
圖 4.11 發生事件後,傳出的 email 警報圖
4.3.5 雲台控制、藍芽電器開關控制
雲台控制的部分,本研究使用 Node.js 來進行監聽,當瀏覽器發 出請求時,伺服器會收到並呼叫硬體層,利用 pi-blaster[17],來執行 相對應的指令,以下為相關部分之截圖,如圖 4.12、圖 4.13
圖 4.13 Server 端接收請求、並發送控制訊號給硬體,並回傳完 成結果至 Client 端。
以下為本研究伺服器端可操作的 PWM 範圍,如表 7;而旋轉雲 台操作相關數據範圍,如表 8。
最小週期 0.01ms
最大週期 10ms
表 7 伺服器端控制參數
角度(pin) 水平(24) 俯仰(23)
最小 0.08 0.16
最大 0.20 0.22
表 8 旋轉雲台操作參數
藍芽控制的部分,本研究利用藍芽搜尋並連接配對電器開關後,
選擇連接的藍芽頻道,連接成功之後,利用發送訊息的方式來控制電 器開關如圖 4.14,發送的訊息如表 9,相關結果如圖 4.15、圖 4.16。
圖 4.14 藍芽連接流程
開 SW1=0xFF
關 SW1=0x00
表 9 藍芽開關傳送之訊息
圖 4.15 藍芽開關電器成果圖
第5章 問題討論
本研究整個過程主要工作包括硬體、軟體、影像參數的調整 優化等等,當中遇到一些問題,以下是對發生的問題做個整合的 描述。
本系統伺服器端的程式都是在 Linux 的環境下開發,在實際 要使用某些服務時,有時要使用專門為嵌入式系統所作的版本才 能夠正常使用;效能方面,因為嵌入式系統的資源有限,CPU 的 速度與 SDRAM 的大小皆不如預期,在實作的時候時常有記憶體 不足的情況發生。
在程式開發上,原本因為裝置占用的問題,不知道該如何實 現同時錄影與串流這項功能,在之後就改變流程,錄影不從原始 的裝置去取得影像資訊,而是藉由串流去取得影像資訊並錄影。
在硬體結構上,原本在實作 PWM 架構時,一直沒辦法測出 是什麼原因導致雲台無法操作,最後發現是自己沒有共地已形成 迴路,才導致平台沒辦法運作,所以在電學這方面還須作加強。
第6章 結論與未來目標
本研究所發展的安全監控系統,是由 node.js 為後端來進行開發,
在移植性與可擴充性上具有相當的優勢;而也因為現在網路的發達,
Open Source 的資源相當豐富,在管控程式碼時,不用再像傳統需要 透過設定後,去傳輸或燒錄程式進嵌入式裝置,還進而可以更方便的 管理程式碼,達成一人多機的開發需求。新的網路標準制定,讓我們 在開發 Browser/Server 的應用程式時,可以有更多實現的空間,
Websocket 是一個讓其發展迅速的技術之一,客戶端與伺服端溝通不 再需要特製的媒介,只要瀏覽器有支援的前提下,我們就能夠做出具 有一樣效果的網頁應用程式;在硬體方面,Raspberry Pi 提供了 H.264 的編/解碼器,但現在網頁瀏覽器還不能夠直接播放 H.264 協定的影 片,所以本研究沒有對這方面去加以探討,如果之後的標準有更新,
也是一個好發展的目標。近日 WebRTC 也逐漸盛行,點對點的通訊在 瀏覽器的實作上又更進一步,隨著標準的建立,可以讓應用程式的開 發模式可以有更新的想法及運用。
參考文獻
[1] Ian Hickson, Robin Berjon, Steve Faulkner, Travis Leithead, Erika Doyle Navara, Edward O'Connor and Silvia Pfeiffer. (2014, October 28). HTML5 (Recommendation) [Online]. Available:
http://www.w3.org/TR/html5
[2] Alexis Deveria (2015). Fyrd/caniuse [Online]. Available:
https://github.com/Fyrd/caniuse
[3] Chu Hung Lin (2015, Jan 23). mouse170/find-foxmosa [Online].
Available: https://github.com/mouse170/find-foxmosa
[4] Ian Hickson (2012, September 2012). The Websocket API (Candidate
Recommendation) [Online]. Available:
http://www.w3.org/TR/websockets
[5] Phoboslab (2015, Jun 3). Phoboslab/jsmpeg – GitHub [Online].
Available: https://github.com/phoboslab/jsmpeg
[6] Automattic co. (2015, July 15). Automattic/socket.io [Online].
Available: https://github.com/Automattic/socket.io
[7] S. Tilkov and S. Vinoski, “Node.js: Using JavaScript to Build High-Performance Network Programs,” IEEE Internet Computing, vol. 14, no. 6, pp. 80 –83, Nov–Dec 2010
[8] jbandi (2012, Dec 14). vert.x - asynchronous event-driven web applications on the JVM [Online]. Available:
http://www.slideshare.net/jbandi/vertx-asynchronous-eventdriven-web-applications-on-the-jvm
[9] (2014). 怎样理解阻塞非阻塞与同步异步的区别? - 网络编程 -
知乎 [Online]. Available: http://www.zhihu.com/question/19732473 [10] Caesar Chi (2014, September 4). 技術轉換需知,學習 Node.js 的
前期準備 [Online]. Available:
http://blog.caesarchi.com/2014/09/nodejs_7.html
[11] (2015, Aug 1) FFMpeg [Online]. Available: https://www.ffmpeg.org/
[12] Raspberry Pi 1 Model b [Online]. Available:
https://www.raspberrypi.org/products/model-b/
[13] Downloads | Raspberry Pi [Online]. Available:
http://www.raspberrypi.org/downloads/
[14] jacksonliam (2015, May 1). jacksonliam/mjpg-streamer, Available:
https://github.com/jacksonliam/mjpg-streamer
[15] (2015, Jun 25). fluent-ffmpeg/node-fluent-ffmpeg [Online]. Available:
https://github.com/fluent-ffmpeg/node-fluent-ffmpeg
[16] Mike Maelzer (2014, Mar 12). mmaelzer/motion [Online]. Available:
https://github.com/mmaelzer/motion
[17] Thomas Sarlandie (2015, Jun 25). sarfata/pi-blaster, Available:
https://github.com/sarfata/pi-blaster
參考書目
[1] 吳正中, “影音串流技術的研究與應用實作”, 義守大學, 2007 [2] 蔡德明, 鳥哥的 Linux 私房菜 基礎學習篇, 第三版, 碁峯資訊股
份有限公司, 2011
[3] 錢逢祥、蔡政崇、楊傑文, Node.js 模組參考手冊, 初版, 松崗資產 管理股份有限公司, 2015