当前位置: 首页 > news >正文

002-第一代硬件系统架构确立及产品选型

头图

第一代硬件系统架构确立及产品选型

文章目录

  • 第一代硬件系统架构确立及产品选型
    • 项目介绍
    • 摘要
    • 硬件架构
    • 硬件结构选型及设计
    • 单片机选型
    • 上位机选型
    • 扯点别的

关键字: QtQml信号采集机数据处理上位机

项目介绍

欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。

在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。

在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。

无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!

重要说明☝

☀该专栏更新到第三代软件开发时将转为收费专栏

摘要

作为一个软件开发人员,仅仅满足需求并实现功能是其中一部分工作,但参与整个项目并从不同的角度思考问题可以为你带来更大的乐趣和成就感。

首先,了解产品的角度能够帮助你更好地理解用户需求和目标。通过深入了解产品的用途、用户群体以及市场竞争情况,我们可以提供更有价值的建议和解决方案。能够把握用户体验、界面设计和功能交互等方面,确保软件能够满足用户期望并具备良好的可用性。

其次,从项目整体的角度思考问题能够帮助你更好地协调团队合作和项目进度。作为一个开发者,我们需要了解整个项目的架构、模块之间的依赖关系以及各个模块的功能。这样你就能够更好地评估新需求对现有系统的影响,避免出现不必要的冲突和重复工作。同时,我们也可以在团队中分享你的见解和经验,促进团队协作和知识共享。

另外,关注软件层面和系统层面的不同解法可以提升你的技术能力和创造性思维。在软件开发过程中,有时候会面临多种方案选择和技术选型的问题。通过探索不同的解决方案,你可以深入理解各种技术的优劣势,并提供更加灵活、高效的解决方案。

总之,参与整个项目并从不同角度思考问题可以让你成为一名全面发展的软件开发人员。这样的经历将使你更具价值,能够做出更好的决策,并为项目的成功作出更大的贡献。

硬件架构

image-20230630223606706

整个系统涉及到三个主要组成部分:刺激信号发出器、刺激信号接收器以及上位机解析。让我对这些组件进行进一步的描述:

刺激信号发出器:该组件负责生成并发送刺激信号,可能通过外部传感器或其他输入设备获取数据,并将其转换为相应的刺激信号。这可以包括数字/模拟转换、信号调理和输出控制等功能。

刺激信号接收器:该组件负责接收从刺激信号发出器发出的信号,并采取适当的措施作出响应。这可能涉及到信号放大、滤波、数据采集和处理等功能,以确保准确地捕捉和解释刺激信号。

上位机解析:该组件负责接收从刺激信号接收器传输的数据,并对其进行解析和处理。上位机可以是一个计算机、服务器或其他设备,它可以通过软件算法对数据进行分析、计算和可视化,以便用户理解和做出决策。

硬件结构选型及设计

对于硬件设计方面的工作,我们有专门的结构设计团队来处理,并且工业设计部分也会交给专业的外部团队。这在许多情况下是一个合理的做法,特别是对于初创公司或那些不专注于工业设计的企业来说。

将工业设计外包给专业团队可以有效地利用外部资源和专业知识,减轻内部团队的负担,让他们能够专注于产品的核心设计和开发。这样一来,我们可以确保最终产品在结构强度和人机工学方面达到要求,同时节省时间和精力。

但是,在选择外部团队时,确保他们具备相关领域的专业知识和经验非常重要。他们应该有良好的工业设计背景和成功的项目案例,以便为我们提供高质量的设计方案。此外,与外部团队建立有效的沟通和合作也是至关重要的,以确保他们能够准确理解你们的需求并按时交付设计成果。

当涉及到结构强度和人机工学时,这些是确保产品质量和用户体验的重要因素。结构强度需要考虑材料选择、模拟仿真和结构设计的合理性,以确保产品在正常使用条件下能够承受所需的力和压力。人机工学包括考虑人体工程学原理,设计符合人体工程学要求的界面、控件和外观。

最终目标是确保产品在可靠性、舒适性和用户友好性方面达到最佳水平。通过将这些方面的工作交给专业团队,我们可以获得专业水平的设计成果,并在核心设计上集中精力,从而更好地满足市场需求并提升竞争力。

单片机选型

当我们明确了单片机系统的功能要求、性能和可靠性等要求,并结合业务需求和行业内解决方案来进行选型时,选择一个在信号采集方面具有强大优势且被广泛使用的芯片是一个明智的决策。相比常见的STM32系列,这个选型可能提供更好的适应性和性能。

从信号采集的角度来看,不同的芯片可能具有不同的性能特点和特殊功能,因此找到一款在信号采集方面有优势的芯片非常重要。这样的芯片可以提供更高的精度、更快的采样率、更低的噪声水平或其他专门设计用于信号采集的功能。

同时,考虑到在行业内该芯片被广泛使用的事实,这也增加了该选型的可靠性和可行性。如果在行业中已经存在广泛采用该芯片的成功案例,那么我们选择该芯片就可以借鉴和受益于相关经验和最佳实践。这意味着开发过程中可能会有更多的资源和支持可用,并且我们可以更容易地找到相关文档、教程和社区支持。

综上所述,选择一个在信号采集方面具有优势且被行业广泛采用的芯片是明智的。这样可以确保我们的单片机系统在信号采集性能上达到要求,并利用行业内的经验和资源来提高开发效率和可靠性。最终,这将有助于满足业务需求并增强产品在市场竞争中的优势。

上位机选型

鉴于项目中存在许多不确定因素,以及成本和原型开发的目的,我们选择了使用Intel的NUC作为上位机,并基于Windows 10进行软件开发。虽然工业计算机可能更适合工业应用,但其成本较高,而且在第一代原型开发阶段,主要目标是验证基本原理,因此采用基于x86架构的Windows平台是一个合理的选择。

使用Intel的NUC作为上位机可以提供相对低廉的成本,并且具有强大的处理能力和广泛的软件支持。Windows 10作为操作系统也具有广泛的应用和开发生态系统,使得软件开发过程更加便捷和灵活。通过这样的选型,我们可以快速搭建起硬件框架,并专注于实现项目的核心功能和验证想法的可行性。

另外,为了完成整个项目的硬件框架搭建,你还需要寻找一个USB转485的辅助设备。这是为了满足项目中与485通信相关的需求。USB转485适配器可以将USB接口转换为485总线通信接口,从而方便连接与485通信相关的设备或传感器。这是一个常见的解决方案,可以帮助你们在硬件层面搭建起完整的系统。

总结而言,选用Intel的NUC作为上位机并基于Windows 10进行软件开发是一个经济高效且合理的选择,特别是在第一代原型开发阶段。使用USB转485辅助设备可以满足与485通信相关的硬件框架需求。这样的选型和配备将有助于实现项目目标,验证核心功能,并为后续开发和迭代奠定基础。

其实在上位机选型的时候,也是考虑了好多因素,供大家参考

  1. 确定系统需求:考虑到目前是原理验证阶段,所以性能上留了大量的冗余,我们选着了11代 的i3 处理器,内存 8GB,硬盘256G固态,现在没有特殊说明,应该都是固态了吧。固态的优势就不用展开讲了。
  2. 分析应用场景:同理,第一代产品,我们在只跑原理的情况下,设备运行环境是理想的室内环境,对于耐高温、防尘、防水啥的暂时都没有需求,这里NUC也满足我们的需求
  3. 硬件平台:根据系统需求,NUC 满足我们原理验证阶段的需求,在后期,我们会根据考虑平台的性能、可扩展新和兼容性等再次评估及重新选型
  4. 处理器和内存:这里选用11 代i3 其实已经留了很大冗余了,后期肯定会降,硬盘盒内存短时间不会有太多的需求,所以基本就是入门配置,8 + 256.没准后期我们会降到 4 + 128
  5. 存储:目前我们没有存储需求,最低即可满足
  6. 外围接口:同理,还是根据基本的硬件架构,确定我们上位机需要的外围接口,我们最终需要的USB接口,485接口。HDMI接口其他可以忽略
  7. 电源需求:我们的设备是有源设备,所以对于功耗目前没有明确限制,满足功能即可
  8. 安全性和可靠性:其实同样的i3 咋淘宝上可以找到一大堆厂家做,最终选用intel 还是考虑了安全性和可靠性,毕竟有的个别商家提供的电源连最基本的3C认证都没有
  9. 散热系统:电子产品就没有不发热的,所以散热系统是一个很重要的考虑因素,但是目前阶段,我们都是直接扔在外面的,所以NUC 自带的风冷系统能够满足当前的需求
  10. 性能测试和验证:这个其实是最难搞的,因为在这个阶段,我们的软件没有开始进行,所以进行性能测试基本就是凭借工程师经验了,这里也就是我们选择i3 的原因,先流出冗余,实现后再根据软件运行资源暂用情况进行更换

以上这些差不多就是我在选型中考虑的一些因素吧,希望可以对你的硬件选型有一定的帮助。

扯点别的

其实现在网上大部分的分享,基本要么是纯软件,要么就是一个简单的单片机项目啥的,但是现实中,一个项目中很能说仅有其中一个设备,尤其是现代工控医疗行业,他们既需要精准的控制,也需要高性能的运行。单片机 和高性能上位机基本在项目中都是一同出现的,他们各自发挥着自己的特长,共同是整个项目为用户提供优质的服务,他们的优缺点简单如下:

单片机的优点:

  1. 低功耗:单片机通常采用低功耗设计,适合在电池供电或需要长时间运行的嵌入式系统中使用。
  2. 高度集成:单片机集成了中央处理器、存储器和外设接口等功能模块,减少了系统的尺寸和复杂性。
  3. 成本效益:由于高度集成,单片机在成本上相对较低,适合大规模生产和成本敏感的应用。
  4. 实时性能:许多单片机具有实时性能,能够在特定时间限制内响应输入并产生输出,适用于需要快速响应和实时控制的应用。

单片机的缺点:

  1. 计算能力受限:由于单片机通常采用较低的处理能力和存储容量,对于复杂的计算任务和大规模数据处理可能表现不佳。
  2. 缺乏操作系统支持:单片机通常没有像传统操作系统那样的丰富支持和开发工具链,软件开发相对复杂。
  3. 缺乏通用性:单片机针对特定应用设计,定制化程度高,不如x86架构上位机灵活和通用。

x86架构上位机的优点:

  1. 强大的计算能力:x86架构基于主流的个人计算机体系结构,具有更高的处理能力和存储容量,适合复杂的计算任务和大规模数据处理。
  2. 丰富的操作系统支持:x86架构广泛支持各种成熟的操作系统,如Windows、Linux和macOS等,提供了丰富的开发工具和软件生态系统。
  3. 灵活性和通用性:x86架构上位机可以运行各种应用程序,从通用办公软件到复杂的图形处理和多媒体应用都可以胜任。

x86架构上位机的缺点:

  1. 高功耗:相比单片机,x86架构上位机通常需要更多的功率来运行,不太适合低功耗和移动设备。
  2. 复杂性和尺寸:x86架构上位机由多个组件构成,包括中央处理器、内存、硬盘、显示器等,通常较大且复杂,不如单片机紧凑。
  3. 成本较高:由于需要更多的硬件资源和操作系统支持,x86架构上位机的成本相对较高。

博客签名2021

相关文章:

002-第一代硬件系统架构确立及产品选型

第一代硬件系统架构确立及产品选型 文章目录 第一代硬件系统架构确立及产品选型项目介绍摘要硬件架构硬件结构选型及设计单片机选型上位机选型扯点别的 关键字: Qt、 Qml、 信号采集机、 数据处理、 上位机 项目介绍 欢迎来到我们的 QML & C 项目&#xff…...

Go基础语法:指针和make和new

8 指针、make、new 8.1 指针(pointer) Go 语言中没有指针操作,只需要记住两个符号即可: & 取内存地址* 根据地址取值 package mainimport "fmt"func main() {a : 18// 获取 a 的地址值并复制给 pp : &a// …...

039_小驰私房菜_Camera perfermance debug

全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 一、抓取trace 1. adb shell "echo vendor.debug.trace.perf=1 >> /system/build.prop" 2. …...

Caché for Windows安装及配置

本文介绍在Windows上安装Cach的操作步骤。本文假设用户熟悉Windows目录结构、实用程序和命令。本文包含如下主要部分:​​​​​​ 1)Cach安装...

代码随想录算法训练营20期|第四十六天|动态规划part08|● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

139.单词拆分 感觉这个板块要重新刷&#xff0c;完全没有印象 class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> set new HashSet<>(wordDict);boolean[] dp new boolean[s.length() 1];dp[0] true;for (int i…...

系统安装(一)CentOS 7 本地安装

CentOS与Ubuntu并称为Linux最著名的两个发行版&#xff0c;但由于笔者主要从事深度学习图像算法工作&#xff0c;Ubuntu作为谷歌和多数依赖库的亲儿子占据着最高生态位。但最近接手的一个项目里&#xff0c;甲方指定需要在CentOS7上运行项目代码&#xff0c;笔者被迫小小cos了一…...

obsidian使用指南

插入代码块快捷键设置 插入代码块 用英文搜索快捷键名字 英文搜索的【Insert code block】对应的是 (6个点) 中文搜索的【代码块】对应的是 &#xff08;2个点&#xff09; 查看word、excel等非md文件设置 电脑端obsidian->设置->文件与链接->检测所有类型文件->…...

【ardunio】青少年机器人四级实操代码(2023年9月)

目录 一、题目 二、示意图 三、流程图 四、硬件连接 1、舵机 2、超声波 3、LED灯 五、程序 一、题目 实操考题(共1题&#xff0c;共100分) 1. 主题&#xff1a; 迎宾机器人 器件&#xff1a;Atmega328P主控板1块&#xff0c;舵机1个&#xff0c;超声波传感器1个&…...

MYSQL的存储过程

存储过程 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是有好处的。存储过程思想上很简单&#xff0c;就是…...

[kubernetes/docker] failed to resolve reference ...:latest: not found

问题描述: pod一直pending, kubectl describe pod ... 显示: Warning Failed 9s (x3 over 63s) kubelet Failed to pull image "mathemagics/my-kube-scheduler": rpc error: code NotFound desc failed to pull and unpack image "docker…...

彻底解决win11系统0x80070032

经过各种尝试&#xff0c;终于找到原因。第一个是电脑加密软件&#xff0c;第二个是需要的部分功能没有开启&#xff0c;第三个BIOS设置。个人觉得第三个不重要。 解决方法 笔记本型号 笔记本型号是Thinkpad T14 gen2。进入BIOS的按键是按住Enter键。 1、关闭山丽防水墙服务…...

解决因为修改SELINUX配置文件出错导致Faild to load SELinux poilcy无法进入CentOS7系统的问题

一、问题 最近学习Kubernetes&#xff0c;需要设置永久关闭SELINUX,结果修改错了一个SELINUX配置参数&#xff0c;关机重新启动后导致无法进入CentOS7系统&#xff0c;卡在启动进度条界面。 二、解决 多次重启后&#xff0c;在启动日志中发现 Faild to load SELinux poilcy…...

flask中的跨域处理-方法二不使用第三方库

方法1(第三方库) pip install flask-cors from flask import Flask from flask_cors import CORSapp = Flask(__name__) CORS(app, resources={r"/api/*": {"origins": ["http://localhost:63342", "http://localhost:63345"]}})方…...

矿山定位系统-矿井人员定位系统在矿山自动化安全监控过程中的应用

一&#xff0c;矿井人员定位系统现阶段使用的必要性 1&#xff0c;煤矿开采是一项非常特殊的工作&#xff0c;现场属于非常复杂多变的环境&#xff0c;井下信号极差&#xff0c;数据传输非常不稳定&#xff0c;人员安全难以保证&#xff0c;煤矿企业一直在研究如何使用更合适的…...

JS-ECharts-前端图表 多层级联合饼图、柱状堆叠图、柱/线组合图、趋势图、自定义中线、平均线、气泡备注点

本篇博客背景为JavaScript。在ECharts在线编码快速上手&#xff0c;绘制相关前端可视化图表。 ECharts官网&#xff1a;https://echarts.apache.org/zh/index.html 其他的一些推荐&#xff1a; AntV&#xff1a;https://antv.vision/zh chartcube&#xff1a;https://chartcub…...

【eslint】屏蔽语言提醒

在 JavaScript 中&#xff0c;ESLint 是一种常用的静态代码分析工具&#xff0c;它用于检测和提醒代码中的潜在问题和风格问题。有时候&#xff0c;在某些特定情况下&#xff0c;你可能希望临时屏蔽或禁用某些 ESLint 的提醒信息&#xff0c;以便消除不必要的警告或避免不符合项…...

【python】入门第一课:了解基本语法(数据类型)

目录 一、介绍 1、什么是python&#xff1f; 2、python的几个特点 二、实例 1、注释 2、数据类型 2.1、字符串 str 2.2、整数 int 2.3、浮点数 float 2.4、布尔 bool 2.5、列表 list 2.6、元组 tuple 2.7、集合 set 2.8、字典 dict 一、介绍 1、什么是python&…...

csa从初阶到大牛(练习题2-查询)

新建2个文件d1.txt d2.txt ,使用vim打开d1.txt 输入“Hello World”字符串,将b1.txt 硬链接到b2.txt &#xff0c;查看2个文件的硬连接数 # 新建文件d1.txt和d2.txt touch d1.txt d2.txt# 使用vim编辑d1.txt并输入文本"Hello World" vim d1.txt# 创建硬链接b2.…...

【视觉SLAM入门】8. 回环检测,词袋模型,字典,感知,召回,机器学习

"见人细过 掩匿盖覆” 1. 意义2. 做法2.1 词袋模型和字典2.1.2 感知偏差和感知变异2.1.2 词袋2.1.3 字典 2.2 匹配(相似度)计算 3. 提升 前言&#xff1a; 前端提取数据&#xff0c;后端优化数据&#xff0c;但误差会累计&#xff0c;需要回环检测构建全局一致的地图&…...

SpringBean的生命周期

SpringBean的生命周期 SperingBean的生命周期是从Bean实例化之后&#xff0c;即通过反射创建出对象之后&#xff0c;到Bean成为一个完整对象&#xff0c;最终存储到单例池中&#xff0c;这个过程被称为Spring Bean的生命周期。Spring Bean的生命周期大体上分为三个阶段 Bean的…...

uni-app 之 picker选择器

uni-app 之 picker选择器 同步滚动&#xff1a;开 uni-app 之 picker选择器 一、普通选择器 二、多列选择器 三、时间选择器 四、日期选择器 一、普通选择器 <template><view><picker change"bindPickerChange" :value"index" :range&q…...

整合车辆出险报告Api接口,轻松管理车险理赔!

随着车辆保有量的不断增加&#xff0c;车辆出险的情况也越来越普遍。对于车主来说&#xff0c;如何高效地管理车险理赔&#xff0c;处理保险事故是非常重要的。这时候我们就可以借助整合车辆出险报告API接口&#xff0c;实现快速定位理赔信息&#xff0c;轻松管理车险理赔。 一…...

eNSP基础网络学习-v02

一、eNSP 1.什么是eNSP eNSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化操作的网络仿真工具平台&#xff0c;主要对企业网络路由器、交换机进行软件仿真&#xff0c;完美呈现真实设备实景&#xff0c;支持大型网络模拟&#xff0c;让…...

mac环境安装多个node版本(可切换)

出现问题 mac m1pro版&#xff08;前段时间刚换的&#xff09;,环境安装的都是最新的。node 18.17.1 前端跑的是react 18 的项目&#xff08;antD&#xff09;, 又跑了一个相对环境配置比较低的项目&#xff0c;然后启动不起来了&#xff1b; 分析控制台报错&#xff0c;推断是…...

Linux 操作技巧

目录 一、shell-命令解释器 二、Linux中的特殊符号 三、命令历史--history 一、shell-命令解释器 shell——壳&#xff0c;命令解释器&#xff0c;负责解析用户输入的命令 ——内置命令&#xff08;shell内置&#xff09; ——外置命令&#xff0c;在文件系统的某个目录下&…...

一个电子信息工程学生的历程和内心感想

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、我对大学三年专业课程的理解二、我为什么本科选择研究嵌入式这个方向&#xff1f;1.可以把理论变为实际应用——兴趣是最好的老师。2.嵌入式方向可以打的比赛非…...

【zookeeper】zk集群安装与启动踩坑点

zk安装我也踩了一些坑。特别是第一点&#xff0c;zk官网好像都没什么说明&#xff0c;导致直接下错了&#xff0c;搞了好几个小时。 踩坑点如下&#xff1a; 1&#xff0c;在zk官网下载包时&#xff0c;注意3.5以后的版本&#xff0c;要下载带-bin的&#xff0c;3.5之后&…...

【计算机网络】 拥塞控制

文章目录 背景TCP的四种拥塞控制算法慢开始与拥塞避免&#xff1a;快重传&#xff1a;快恢复&#xff1a; 流量控制和拥塞控制本质上的 区别 背景 网络中的链路容量和交换节点中的缓存和处理机都有着工作的极限&#xff0c;当网络的需求超过他们的工作极限时&#xff0c;就出现…...

【react】慎用useLayoutEffect转而使用useEffect

由于useLayoutEffect钩子是在dom获得后、渲染组件前。因此&#xff0c;如果在useLayoutEffect中设置一些长耗时的&#xff0c;或者死循环之类的任务&#xff0c;会导致内存堆栈溢出。这时候需要转用useEffect。 // 适配全局宽度拉动变化时&#xff0c;legend显示数量React.use…...

基于微信小程序的美食推荐系统设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…...