第0章_项目方案介绍

news2024/12/24 2:07:18

文章目录

  • 第0章 项目方案介绍
    • 0.1 功能介绍
    • 0.2 硬件方案
    • 0.3 软件方案
      • 0.3.1 上位机方案
      • 0.3.2 **中控方案**
      • 0.3.3 **传感器方案**
      • 0.3.4 **技术难点**

第0章 项目方案介绍

0.1 功能介绍

本课程来自一个真实项目:多个气体传感器的管理。由于气体传感器比较昂贵,本课程里使用普通传感器来做实验。真实项目的使用场景如下图所示:

  • 上位机操作界面:可以监测多个传感器
  • 中控:图片暂时无法放出来,它的功能是向下通过 RS485 连接多个传感器,向上通过USB 口连接 PC。中控平时就要时刻采样传感器的数据,当上位机需要数据时通过 USB 口高效率地传输数据。
  • 传感器:有多个机位,每个机位都有传感器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用场景如下:

  • 设置传感器 ID:拿到一个传感器后,要通过上位机设置它的 ID,然后把它放在某个机位
  • 中控监测传感器的状态:在线/离线,上位机周期性地读取状态信息
  • 中控读取传感器数据,上位机周期性地读取这些数据
  • 上位机显示传感器状态、显示传感器数据
  • 上位机可以读取中控、各个传感器的程序版本信息,升级固件

0.2 硬件方案

在工业控制场景中,上位机通过中控,去控制多个设备,硬件框图如下:

各部件的作用如下:

  • 上位机:功能强大,方便操作,比如记录历史数据、图像化显示数据、升级硬件程序
  • 中控:在上位机和传感器之间转发数据,当传感器很多时,不使用中控的话,上位机无法快速获得各个传感器的数据
  • 传感器:采样数据、上报数据

0.3 软件方案

0.3.1 上位机方案

上位机:

  • 界面使用 LVGL 编写,界面和底层数据通过 JSON 进行隔离,方便更换 GUI
  • 数据传输基于 libmodbus,可以使用 Modbus RTU 协议,也可以使用 Modbus TCP 协议
  • 自定义协议,以实现:设备 ID 写入、设备状态检测、数据读写、程序升级等功能

0.3.2 中控方案

中控程序复杂,基于 FreeRTOS 编写。

中控上的程序分为 2 个:Bootloader(用于升级应用程序)、应用程序。中控的

Flash 如下划分:

中控上电后,首先运行 Bootloader,它根据配置信息决定是否启动 APP1 或 APP2,

还是保存运行 Bootloader 本身:

  • Bootloader:接收上位机下发的固件,升级 APP
  • APP1 或 APP2:平时运行的程序,收集传感器数据,等待上位机读取

上位机和中控 Bootloader 的程序框架如下:

上位机和中控 APP 的程序框架如下:

0.3.3 传感器方案

传感器上的程序也分为 2 个:Bootloader(用于升级应用程序)、应用程序。传感器的 Flash 如下划分:

传感器上电后,首先运行Bootloader,它根据配置信息决定是否启动APP1或APP2,还是保存运行Bootloader本身:

  • Bootloader:上位机给中控下发传感器的固件,中控再把它传给传感器的Bootloader,Bootloader升级APP
  • APP1或APP2:平时运行的程序,读取传感器数据,返回给中控

中控APP和传感器Bootloader的程序框架如下:

中控APP和传感器APP的程序框架如下:

0.3.4 技术难点

难点在于如何保证多个传感器数据上报以及上位机下发不丢包,因为它不仅仅是单块板了,还可以集联多个,所以它的拓展性很强。后期还可以非常方便地给传感器进行批量升级;另外在工厂场景下,会涉及到数据监控,产线情况监控等场景。项目涉及上位机开发、FreeRTOS程序开发、裸机程序开发、单片机的控制。也能掌握传感器数据通讯、传感器协议定义、程序升级等知识点。还可以学习良好的程序开发模式:一套代码如何适应不同的主控芯片、不同的操作系统(FreeRTOS和裸机)。最后,怎么写出稳定可靠、容

易扩展的程序,这个将会贯穿整个学习过程——这是产品,不是练手Demo。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1874243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中如何使用echarts和echarts-gl实现三维折线图

一、vue中使用三维折线图 效果图: 二、使用步骤 1.引入库 安装echarts 在package.json文件中添加 "dependencies": {"echarts": "^5.1.2""echarts-gl": "^1.1.1",// "echarts-gl": "^2.0.8…

axios之CancelToken取消请求

从 v0.22.0 开始,Axios 支持以 fetch API 方式—— AbortController 取消请求 此 API 从 v0.22.0 开始已被弃用,不应在新项目中使用 官网链接 1. 背景 最近项目中遇到一个场景,当连续触发一个请求时,如果是同一个接口&#xf…

通讯录项目的实现(基于顺序表)

前言 建议先看顺序表(上卷)、顺序表(下卷),再来看本篇。 思路 通讯录就是由一条条联系人数据组成的。在一条联系人数据中会有一些相关信息:姓名、性别、年龄、电话、住址等。 在“顺序表(上卷…

Ubuntu安装、更新和删除软件

Ubuntu安装、更新和删除软件 问题命令行直接安装、更新和删除软件命令行直接安装软件命令行直接更新软件命令行直接删除软件 手动下载后命令行安装、更新和删除软件手动下载后命令行安装软件手动下载后命令行更新软件手动下载后命令行删除软件 手动下载后在桌面环境下安装、更新…

RocketMQ快速入门:事务消息原理及实现(十)

目录 0. 引言1. 原理2. 事务消息的实现2.1 java client实现(适用于spring框架)2.2 springboot实现 3. 总结 0. 引言 rocketmq 的一大特性就是支持事务性消息,这在诸多场景中有所应用。在之前的文章中我们已经讲解过事务消息的使用&#xff0…

三星DRAM、NAND,“又双叒叕”带头涨价了

据韩国媒体《每日经济新闻》报道,三星电子计划在第三季度上调服务器DRAM和企业级NAND闪存的价格,涨幅预计在15%-20%,主要受人工智能(AI)需求激增的推动。这一举措有望提振公司下半年业绩。 据《经济日报》报道援引业内消息,由于厂…

Linux libreoffice安装 word转pdf 中文乱码(缺少字体解决)

libreoffice 的安装 yum install -y libreoffice版本验证 libreoffice --version参考文章 word转pdf 命令 转换命令 要将Word文档(.doc或.docx)转换为PDF格式,可以使用以下命令: libreoffice --headless --convert-to pdf your_word_document.docx指…

《GPT模型揭秘:数据驱动AI的核心概念与GPT系列对比分析》

DS:《What Are the Data-Centric AI Concepts behind GPT Models?通过三个数据为中心的人工智能目标(训练数据开发、推理数据开发和数据维护)揭示GPT模型背后的数据为中心的人工智能概念》解读—GPT-1/GPT-2/GPT-3系列对比(语料大小参数量解码层数上下文长度隐藏层…

高性价比蓝牙耳机有哪些?2024超高性价比蓝牙耳机推荐

在2024移动互联网高速发展的时代,蓝牙耳机已成为我们生活中不可或缺的一部分。走在街头,低头看手机,滑动屏幕选歌,耳边传来清晰的旋律,这一幕已经成为现代生活的标配。但面对市场上琳琅满目的蓝牙耳机品牌和型号&#…

专业报考628

目录 掌上高考相关专业两步走 研招网、软科最后 刚才看了,挺有用的育 就是一点, 查找相关专业 掌上高考 如果不知道喜欢什么专业,直接查大学,就查那个大学有什么不是物化强行绑定的 看**招生计划**一栏 如果有明确目标&#xf…

取证工作:怎样解锁 LUKS2 加密磁盘?

对于 LUKS2 密码进行恢复,Elcomsoft Distributed Password Recovery (简称 EDPR) 软件可以构建高性能集群,以更快地破解密码。EDPR 软件提供零开销的可扩展性,并支持 GPU 加速,以加快恢复速度。EDPR 可帮助…

Kubernetes 之GVR与GVK详解

本文尝试从GVR与GVK对比、常见的GVR和GVK操作、GVK设计精髓、CRD工作流程等方面对GVK和GVR进行详细分析。希望对您有用! 一、Kubernetes 之GVR与GVK对比 在 Kubernetes 中,GVR 和 GVK 是两个重要的概念,用于唯一标识和操作不同的资源类型和…

添加用户页面(Flask+前端+MySQL整合)

首先导入Flask库和pymysql库。Flask用于创建Web应用程序,pymysql用于连接和操作MySQL数据库。 from flask import Flask, render_template, request import pymysql创建一个Flask应用实例。__name__参数告诉Flask使用当前模块作为应用的名称。 app Flask(__name_…

Java代码基础算法练习-判断学生成绩等级-2024.06.28

任务描述: 输入一个学生的成绩(成绩大于等于 0 并小于等于 100),根据成绩判断学生成绩的等级。 60 分以下不及格;60-70 分为及格;70-80 分为中等;80-90 分为良好;90 分以上为优秀。 …

洞察用户喜好:使用TikTok API获取用户喜欢视频列表

一、引言 TikTok,作为全球最受欢迎的短视频社交平台之一,不仅让用户能够展示自我、分享生活,也为品牌和企业提供了深入了解用户喜好的机会。了解用户喜欢哪些类型的视频,不仅有助于品牌更好地把握目标用户群体,还能为…

《Redis设计与实现》阅读总结-4

第 17 章 集群 Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移的功能 一、命令 CLUSTER MEET命令:用来连接不同的开启集群支持的 Redis 节点,以进入…

使用鸿蒙HarmonyOs NEXT 开发 快速开发 简单的购物车页面

目录 资源准备:需要准备三张照片:商品图、向下图标、金钱图标 1.显示效果: 2.源码: 资源准备:需要准备三张照片:商品图、向下图标、金钱图标 1.显示效果: 定义了一个购物车页面的布局&#x…

SHELL脚本学习(十二)sed进阶

一、多行命令 概述 sed 编辑器的基础命令都是对一行文本进行操作。如果要处理的数据分布在多行中,sed基础命令是没办法处理的。 幸运的是,sed编辑器的设计人员已经考虑了这个问题的解决方案。sed编辑器提供了3个处理多行文本的特殊命令。 命令描述N加…

提高LabVIEW程序可靠性

​提高LabVIEW程序的可靠性是确保系统稳定运行、减少故障和维护成本的重要措施。以下从多个方面详细分析如何提高LabVIEW程序的可靠性 1. 选择合适的架构 1.1 状态机架构 适用情况: 多状态、多步骤操作。 具体例子:在一个自动测试系统中,…

我在高职教STM32——时钟系统与延时控制(1)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就…