工程背景与目标:
当前市面上购买的家庭网络监控,其内容一般会完整的传输至监控制造商(运营商)服务器以供用户异地观看与控制,一定程度上降低了用户对于监控的入门门槛,但显然存在个人隐私泄露的潜在风险。
当前通过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)远程访问】基于内网穿透实现树莓派监控的公网远程访问与遥控
拓展开发示例——打造一个远程可视化空调遥控器
基本思路:通过加装红外管,或者直接外接红外编程模块,“克隆”空调遥控器发射出的红外信号,在需要时依样画葫芦地把这个信号发射出去,实现空调的远程启动。
如果您有任何疑问或者好的建议,期待你的留言与评论!