工程背景與目標:
當前市面上購買的家庭網絡監控,其內容一般會完整的傳輸至監控制造商(運營商)服務器以供用戶異地觀看與控制,一定程度上降低了用戶對於監控的入門門檻,但顯然存在個人隱私泄露的潛在風險。
當前通過Shodan搜索實現網絡攝像頭入侵、字典破解用戶操作平臺密碼甚至是直接入侵監控制造商(運營商)服務器等等方式爆破網絡攝像頭的事例已比比皆是。基於此,搭建一臺完全屬於自己控制的網絡監控就顯得有其存在的合理性與必要性了。
工程需求分析:
作爲一個網絡監控,首先我們來明確需要具備的功能:
- 監控畫面
可視
- 監控拍攝角度應當是可以
實時遙控
的 - 監控查看與控制方式應當是便捷的,易上手的——即
監控操作界面可視化
以及操作平臺多元化
(PC/移動端) - 所有功能應當是
可以在外網環境下實現
的 - 成本應當是可接受的
工程實現方案、所需工具與涉及知識:
需求 | 方案 | 所需工具 | 主要技能 |
---|---|---|---|
監控畫面可視 | 基於mjpg-stream實現監控畫面的傳輸 | USB攝像頭 | Linux操作系統 |
實時遙控 | 基於Python控制攝像頭上下左右的移動 | 舵機(2)、雲臺、杜邦線 | Python |
操作界面可視化 | 搭建控制網絡監控的Web網頁 | ----- | python異步io框架tornado |
操作平臺多元化 | 響應式Web佈局,以支持PC與移動端控制 | ----- | Html、JS、jQuery、ajax |
外網遠程控制 | Frp內網穿透網絡攝像頭控制頁面 | ----- | Frp內網穿透 |
成本可接受 | 儘可能降低成本 | 樹莓派 | 樹莓派常識 |
值得說明的是,在設計結構的選擇上,爲儘可能兼容大多數設備,減少工程開發週期,工程選擇了B/S(Browser瀏覽器/Server服務端)架構,基於此用戶可以直接通過瀏覽器訪問網絡監控。當然,你也可以嘗試使用C/S(Client客戶端/Server服務端)架構,如基於Android Studio開發一個簡單的允許公網訪問的監控app,用戶通過安裝客戶端產品的方式來訪問網絡監控。
工程(PC端與移動端)預期效果:
工程前期準備:
1. 舵機與樹莓派的拼接
考慮成本這裏使用的兩個舵機是輝盛的SG90。SG90共有三根線,紅線接5V電源,棕線接GND,黃線爲數據控制線,接到GPIO口上。兩個舵機六根線,我這裏選擇了BOARD編碼下的2、7、9
(圖示粉紅圈 連接上下移動舵機)和4、12、14
(圖示藍圈連接左右移動舵機)兩組引腳連接樹莓派和舵機。
需要注意的是,兩個SG90舵機(三根線/個)需要藉助六根公(針頭)對母(塑料)杜邦線與樹莓派連接。
2. 雲臺與樹莓派的拼接
雲臺的舵機移動過程中可能由於受力而傾斜,因此有必要予以固定,在這裏我用28mm銅柱配合6mm螺絲將雲臺固定在了亞克力外殼空隙上。
當然,不要忘了給樹莓派裝上操作系統,具體方法可以參見 我的博文 完成“配置樹莓派”章節步驟。
在完成上述準備工作之後,真正的工程即將開始,我會帶大家一步一步實現需求,直至完成工程全部內容。
後期內容提要:
- 【樹莓派-網絡監控(2)畫面傳輸】基於mjpg-stream實現監控畫面的傳輸
- 【樹莓派-網絡監控(3)角度遙控】基於python3控制兩自由度舵機,實現攝像頭拍攝角度的遙控
- 【樹莓派-網絡監控(4)數據交互】基於python異步io框架Tornado,實現監控遙控命令與Web網頁觸發事件的綁定及前後端的數據交互
- 【樹莓派-網絡監控(5)前端搭建】基於iframe標籤,集成監控實時畫面與遙控功能,製作並優化響應式控制頁面
- 【樹莓派-網絡監控(6)遠程訪問】基於內網穿透實現樹莓派監控的公網遠程訪問與遙控
拓展開發示例——打造一個遠程可視化空調遙控器
基本思路:通過加裝紅外管,或者直接外接紅外編程模塊,“克隆”空調遙控器發射出的紅外信號,在需要時依樣畫葫蘆地把這個信號發射出去,實現空調的遠程啓動。
如果您有任何疑問或者好的建議,期待你的留言與評論!