0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

项目分享|基于ElfBoard的远程监测系统

ElfBoard 2024-01-17 11:14 次阅读

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进行修改。

温湿度数据采集

wKgZomWnShWABKpCAACL-kULRGo942.png

电压数据采集

wKgaomWnSiaAbpXyAAClhbcqQAY987.png

LED状态采集与控制

wKgZomWnSjWAVg2uAAB1kF8M5RQ365.png

自动化控制

ADC采集的电压大于阈值2.5V时自动开启LED1,低于时自动关闭LED1。

if(adc>2.5){ set_led(1,'1'); }else{ set_led(1,'0'); }

数据上传

在main函数的while(1)中

wKgZomWnSkSACdI9AACFbxTAZ0c784.png

云端指令响应

由于云端传输的数据为JSON格式,因此需要使用cJSON进行解析。

添加cJSON

在components文件夹下添加cJSON相关文件

wKgZomWnJ_KACL_vAAAcPjS1W7Q646.png

修改Makefile

wKgaomWnKBSAJRmyAACrRn9vdwk802.png


在74行和78行后面要添加-lm,否则在编译的时候会报错。

实现代码

wKgaomWnSpSAUXIRAAC50TTB23g200.png

wKgaomWnSqGAFfvUAABjHo6ImKg901.png

四、视频监控

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端口):

wKgaomWnSrCAMb_0AACQclp72Uk235.png

wKgZomWnSseABY7EAABzxHvqjz0990.png

wKgaomWnStmAS7WYAAAUb2nbPKY605.png

最后启动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服务以及后端数据处理能力。可以部署在云端,也可以在本地运行。界面如下所示:

wKgZomWnRCGADJ2tAADb96YVgOY414.png

视频拉流

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请求实现。

wKgaomWnSxmAFkevAACfytCMgf8645.png

wKgZomWnSymAUiO6AACnYqIganU551.pngwKgaomWnSzWAZ0bsAACjoixNgSo992.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    302914
  • 监测系统
    +关注

    关注

    8

    文章

    2674

    浏览量

    81247
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97157
  • Linux应用
    +关注

    关注

    0

    文章

    4

    浏览量

    5197
收藏 人收藏

    评论

    相关推荐

    飞凌嵌入式-ElfBoard-项目分享|基于ELF 1S开发板完成的物联网开源项目

    项目系统框架,如下图所示: 1 – 云(涂鸦云服务器) 开源项目是采用涂鸦云作为云服务器的,之所以采用涂鸦云,主要是涂鸦的IoT生态体系很友好,并且对于初学者来说涂鸦云的学习门槛和接入门槛是比较
    发表于 05-16 09:12

    基于CompactRIO的远程状态监测系统研究

    使用LabVIEW作为开发工具,以CompactRIO、NI9234为运行硬件平台,开发远程状态监测系统,主要功能包括:u对若干个振动测点进行监测:数据采集、存储、回放,参数设置;u基
    发表于 11-21 15:04

    温室环境远程监测系统的设计

    温室环境远程监测系统的设计本项目致力于开发出一套基于单片机的温室环境远程监控系统,本
    发表于 10-31 21:05

    【GoKit申请】+实时远程动态生命状态监测

    本帖最后由 thwin520 于 2015-4-28 13:05 编辑 项目名称或开发想法:实时远程动态生命状态监测!现在很多人选择在家里面做康复,不希望呆在医院里,有了这个系统
    发表于 04-28 12:57

    土壤墒情监测系统实现土壤水分和温度远程监测

    络、远程监测设备和土壤墒情检测设备四部分构成。◆ 监控中心硬件主要由服务器、计算机、交换机、打印机等组成。软件主要有操作系统软件、数据库软件、土壤墒情监测
    发表于 09-06 14:42

    嵌入式远程车载监测系统怎么实现?

    随着后PC时代的到来,嵌入式系统的应用已经越来越普遍,而基于GPRS无线网络的远程监测系统也在诸多工业工程领域有着广泛应用。本文将阐述基于GPRS无线网络的嵌入式
    发表于 03-26 06:38

    抽油机井无线远程监测系统方案

    抽油机井无线远程监测系统方案
    发表于 09-17 13:49

    典型的远程监测系统由哪几部分组成?

    典型的远程监测系统由哪几部分组成?
    发表于 06-01 06:57

    怎样去设计基于ZigBee的远程温度监测系统

    1. 引言 温度监测系统广泛应用于对温度敏感的工业、农业、医学等现场,如通信基站机房、矿井、粮仓、智能家居等环境中。传统的温度监测系统需在所监测
    发表于 07-19 08:02

    如何实现病房输液远程监测和控制系统设计?

    如何实现病房输液远程监测和控制系统设计?
    发表于 10-28 07:52

    基于STM32的远程预付费电能监测系统设计与应用

    摘要:随着电子信息技术的飞速发展,电能的远程监测也得到了迅速的发展,它的发展和应用,对电力系统的安全运行具有重要的意义。本文设计一种基于MQTT服务器的远程电能
    发表于 01-14 08:00

    LabVIEW开发远程结构健康监测系统

    LabVIEW开发远程结构健康监测系统 工程师依赖于振动监测来评估建筑物、桥梁和其他大型结构的完整性。传统的振动监测工具在数据收集上存在限制
    发表于 12-08 17:47

    基于GPRS的温度远程监测系统设计

    针对传统方法在监测野生动物时存在的一些问题,设计了一套野生动物的远程监测系统。该系统主要包括野生动物相关参数前端采集、处理及GPRS
    发表于 03-20 15:09 97次下载
    基于GPRS的温度<b class='flag-5'>远程</b><b class='flag-5'>监测</b><b class='flag-5'>系统</b>设计

    ARM和CDMA的油井工况远程监测系统

    ARM和CDMA的油井工况远程监测系统
    发表于 10-30 11:21 4次下载
    ARM和CDMA的油井工况<b class='flag-5'>远程</b><b class='flag-5'>监测</b><b class='flag-5'>系统</b>

    基于心电远程监测系统设计

    电子发烧友网站提供《基于心电远程监测系统设计.pdf》资料免费下载
    发表于 10-19 10:20 1次下载
    基于心电<b class='flag-5'>远程</b><b class='flag-5'>监测</b><b class='flag-5'>系统</b>设计