elfboard的“自创一派”共创社由19名来自各大高校的共创官组成,在不到一个月的时间里已经建立起浓厚的学习氛围,在这里每位共创官跨越不同的学科背景,交融思想、共享资源,迅速提升自身在嵌入式技术领域的专业素养。
值得一提的是,社群内部已经涌现出许多富有创意的产品设计理念与技术解决方案,今天就跟大家分享一名共创官完成的项目报告“基于elfboard的远程监测系统”。
一、项目介绍1.1 项目目标基于i.mx6ull构建一个功能强大的远程检测系统。系统能够自动采集各种传感器数据,包括温度、湿度、电压等,并实时上传至云端服务器,并且能够根据采集到的传感器数据对设备进行自动化控制,如设置电压阈值,当采集到的电压大于阈值时,开启led1。
在用户端,实现对采集到的传感器数据进行处理、分析和可视化,便于用户远程监控和管理,还可以实现对设备的远程控制。集成高清摄像头,将采集到的视频数据传输至客户端,实现对设备的远程实时监控。
1.2 项目硬件1、elfboard elf 1 开发板
2、wifi网络
3、usb免驱摄像头
4、linux服务器
1.3 软件环境1、阿里云物联网平台
2、nginx
3、python
4、flask
二、项目方案2.1 远程监控采用rtmp协议,设备端使用ffmpeg采集摄像头数据并推流至云端,云端使用nginx提供web服务,并使用nginx-http-flv-module提供rtmp服务,用户端采用web界面,并使用flv.js进行拉流播放。
2.2 数据检测与设备控制传感器数据传输以及设备的远程控制通过阿里云物联网平台,采用mqtt协议。
三、数据检测与设备控制mqtt云平台配置参考 elfboard学习(九):mqtt
传感器数据采集与上传基于linux sdk中的data_model_basic_demo.c进行修改。
温湿度数据采集
电压数据采集
led状态采集与控制
自动化控制当adc采集的电压大于阈值2.5v时自动开启led1,低于时自动关闭led1。
if(adc>2.5){ set_led(1,'1'); }else{ set_led(1,'0'); }
数据上传在main函数的while(1)中
云端指令响应由于云端传输的数据为json格式,因此需要使用cjson进行解析。
添加cjson在components文件夹下添加cjson相关文件
修改makefile
在74行和78行后面要添加-lm,否则在编译的时候会报错。
实现代码
四、视频监控rtmp服务器搭建云端服务器使用nginx,但nginx本身并不支持rtmp,需要使用相关的插件使其支持rtmp。此外由于网页端播放rtmp流需要flash插件的支持,而目前flash插件许多浏览器已不再支持,因此需要使用支持 https-flv的nginx-http-flv-module,并通过flv.js实现rtmp流的播放。这里首先需要下载nginx和nginx-http-flv-module的源码,并采用编译的方式安装nginx,具体步骤如下:
./configure --add-module=/usr/local/nginx/nginx-http-flv-module make&&make install
安装完成后,需要进入nginx安装目录(默认为/usr/local/nginx/),并在conf文件夹下对nginx.conf文件进行修改,增加rtmp功能(注意需要打开服务器的1935端口):
最后启动nginx服务,即可完成rtmp服务器的搭建:
cd /usr/local/nginx/sbin ./nginx
本地推流ffmpeg的编译配置参考:摄像头采用的是usb免驱摄像头,将摄像头插入elfboard的usb口即可正常识别及工作,设备节点为/dev/video2。之后可以使用v4l2-ctl工具查看并配置摄像头信息最后使用命令就能够实现推流:
ffmpeg -f video4linux2 -r 5 -s 320x240 -i /dev/video2 -c:v libx264 -preset ultrafast -tune zerolatency -r 5 -f flv rtmp://xxx.xxxxxx.xxx/live/test
五、用户端设计框架使用python编程,采用web界面,并通过flask提供web服务以及后端数据处理能力。可以部署在云端,也可以在本地运行。界面如下所示:
视频拉流web用户端的视频拉流通过flv.js实现,首先需要在html文件中导入flv.js:
之后设计web页面播放器,具体代码如下:
var player = document.getelementbyid('videoelement'); if (flvjs.issupported()) { var flvplayer = flvjs.createplayer({ type: 'flv', url: 'http://xxx.xxxxx.xx/live?port=1935&app=myapp&stream=test', islive: true, hasaudio: false, hasvideo: true, //withcredentials: false, //cors: true }, { enableworker: true, enablestashbuffer: false, lazyload: false, lazyloadmaxduration: 0, lazyloadrecoverduration: 0, deferloadaftersourceopen: false, fixaudiotimestampgap: true, autocleanupsourcebuffer: true, }); flvplayer.attachmediaelement(videoelement); flvplayer.load(); //加载 flv_start(); } function flv_start() { player.play(); } function flv_pause() { player.pause(); }
远程数据的读取与指令下发这一部分通过后端python编程实现,并提供相应的web接口。前后端的交互通过ajax请求实现。
显卡缺货,矿卡复兴:显卡市场又要变天 NV动心思了
微雪电子VL53L1X测距传感器4米VL53L1X测距模块简介
明年三星Galaxy全系列将预装Samsung Pay
曝苹果今年将推出6款iPhone iPhone SE 2在列
精密恒温培养箱BPH-9042产品特点的介绍
项目分享|基于ElfBoard的远程监测系统
电力仪表:绝缘电阻、摇表、兆欧表显示不归零处理方法(最全)
英伟达与亚马逊联手打造了一台拥有16384个超级芯片的超级计算机
瞬态抑制二极管(TVS)的主要参数?|深圳比创达电子
简述VASS-标准去除钝化的过程
什么是编码器呢?如何测量旋转量和旋转速度?
怎么知道手表中框防水性能是否符合要求
工业物联网的构建需要注意什么问题
赵杰:国内的机器人产业过于关注价格,真正的高端机器人产品很少
拥抱2020年,控制中国互联网70%流量:“四巨头”鏖战产业互联网
外网用户通过外网地址访问内网服务器实验配置
库克智能MKC电子哨兵解决方案 助力疫情防控
高频电子变压器及其发展方向
一种基于DSP的视频图像压缩系统的设计
【格视野】模型圈资讯第四弹:徕卡推自研首款激光雷达无人机、第一个专业无人机试验测试基地投用…