小学生
最后登录1970-1-1
在线时间 小时
注册时间2017-1-9
|
本帖最后由 flytianya2010 于 2023-11-22 23:28 编辑
基于LubanCat1的Node-Red云台视频物联网监控系统
一、背景介绍 现在网上买的摄像头,除了本地存储功能外,云端存储就需要缴费了。或者要通过供应商的服务器,个人隐私得不到保障。所以迫切想搭建自己一台私有云摄像头,借助强大的鲁班猫1开发板和Node-Red的各类功能让我实现起来更加方便。 二、系统框图设计如下: 利用鲁班猫1开发板实现远程视频监控,具体实现如下:1,鲁班猫1开发板上安装NodeRed软件,并安装摄像头驱动组件,通过USB连接摄像头,通过组件调取摄像头图像。2,利用鲁班猫1开发板上的PWM功能实现云台功能,通过nodered的交互界面实现控制摄像头转动。4,通过nodered组件连接腾讯云,使用微信腾讯连连小程序控制云台和查看一些监控数据的参数。
系统框图
三、硬件设计 1、鲁班猫1开发板,运行Debian linux操作系统。
主要性能参数
2、海康威视USB摄像头,实现监控。
3、HDMI显示屏,用来查看摄像头图像和操作linux系统桌面,方便快捷。 ]
4、舵机:通过开发板的PWM引脚控制转向,实现视频监控的云台功能。
舵机连接的圆盘小云台
5、WIFI模块。 [
四、软件设计 鲁班猫1开发板,运行Debian linux操作系统。 连接腾讯云平台:
选择物联网开发平台:
创建项目:
创建产品
主要代码如下: - #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <string.h>
-
-
- static char pwm_path[75];
- static int pwm_config(const char *attr, const char *val) //配置PWM
- {
- char file_path[100];
- int len;
- int fd;
- sprintf(file_path, "%s/%s", pwm_path, attr);
- if ((fd = open(file_path, O_WRONLY))< 0) {
- perror("open error");
- return fd;
- }
- len = strlen(val);
- if (len != write(fd, val, len)) {
- perror("write error");
- close(fd);
- return -1;
- }
- close(fd); //关闭文件
- return 0;
- }
-
-
- int main(int argc, char *argv[])
- {
- /* 校验传参 */
- if (4 != argc) {
- fprintf(stderr, "usage: %s <id> <period> <duty>\n",argv[0]);
- exit(-1);
- }
- /* 打印配置信息 */
- printf("PWM config: id<%s>, period<%s>, duty<%s>\n",argv[1], argv[2],argv[3]);
- /* 导出 pwm */
- sprintf(pwm_path, "/sys/class/pwm/pwmchip%s/pwm0", argv[1]);
- //如果 pwm0 目录不存在, 则导出
- if (access(pwm_path, F_OK)) {
- char temp[100];
- int fd;
- sprintf(temp, "/sys/class/pwm/pwmchip%s/export", argv[1]);
- if (0 > (fd = open(temp, O_WRONLY))) {
- perror("open error");
- exit(-1);
- }
- //导出 pwm
- if (1 != write(fd, "0", 1)) {
- perror("write error");
- close(fd);
- exit(-1);
- }
- close(fd); //关闭文件
- }
-
- /* 配置 PWM 周期 */
- if (pwm_config("period", argv[2]))
- exit(-1);
- /* 配置占空比 */
- if (pwm_config("duty_cycle", argv[3]))
- exit(-1);
- /* 使能 pwm */
- pwm_config("enable", "1");
- getchar();
- /* 退出程序 */
- exit(0);
- }
复制代码
- gcc pwm_test.c -o pwm_test
- #设置pwm周期 , pwm占空比
- #./pwm_test pwmchip2 周期 占空比
- sudo ./pwm_test 2 1000000 500000
复制代码
发送根据以上的PWM指令复制到以下节点中,第一个节点是滑轨输出的实时数据是用来更新PWM指令中的最后一个占空比的参数。
鲁班猫1屏幕显示Node-Re UI界面,可以实时显示监控视频,视频有录制、下载等功能,可以和linux命令终端进行数据交互。
手机端腾讯小程序通过腾讯云实现云端下发数据到鲁班猫开发板控制输出PWM调整舵机转动角度。以下小程序操作界面是通过腾讯云的面板功能编辑的。编辑好之后,腾讯连连小程序就会自动同步该界面。编辑方便快捷。
腾讯连连小程序主界面
腾讯连连小程序控制界面
五、视频演示
六、总结 很幸运能够参加这个比赛,让我对linux开板的应用有了更深的了解。也越发觉得Node-Red在linux上的运行实在是太方便了,物联网需要的功能,基本都能在这上面找到。开发板的强大功能让我开发起来得心应手,摄像头图像无任何卡顿,云台控制响应快。 将以下node-red节点信息导入就可以看到上面的内容,会提示需要安装相关节点。 |
|