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

基于Linux系统的物联网智能终端

背景

        产品研发和项目研发有什么区别?一个令人发指的问题,刚开始工作时项目开发居多,认为项目开发和产品开发区别不大,待后来随着自身能力的提升,逐步感到要开发一个好产品还是比较难的,我认为项目开发的目的是满足项目需求,只要满足了需求就达到了目的。产品开发就不太一样,产品开发更像是终身制的项目,要解决随时在不同项目中使用时出现的问题,也要能满足不同应用场景下的使用。

        嵌入式软件基本分为了两个流派,从技术层面来讲,一个是基于MCU来开发的,一个是基于MPU来开发的,当年我有很多同事都不理解你一个搞MCU的开发个产品有什么难的,还一个团队十来个人搞这么长时间,有这种想法的人一般都是搞项目开发的高手,不管是基于MCU还是基于MPU,只要是开发产品,都不是个很简单的事情。

        早些年都是基于MCU来开发产品,资源有限,处理能力有限,经常会有很多需求无法实现,或者实现起来太麻烦,没法站在开源的巨人肩膀上走的更远。正好在搞项目开发时,公司提出来一个看似不太明确的产品需求,却有明确的项目交期,在这种情况下,只能用最保险的方式,最大的扩展方式来实现产品的开发。

需求

  • 宽电压供电,DC9~35V;
  • 支持两路百兆以太网;
  • 支持4G/5G/Wifi通讯;
  • 可外接北斗2/3进行卫星通讯;
  • 支持LoRa本地组网;
  • 支持继电器控制/数字量采集/CAN总线/RS232总线/RS485总线;
  • 支持MQTT标准协议;
  • 支持Onenet,阿里云等物联网平台;
  • 支持外接TF卡;
  • 支持网络摄像头;

技术难点

  • 最大的难点是需求不明确,不清楚使用场景;
  • 宽电压范围这个还好说,国产电源芯片可以满足;
  • 基于新唐的NUC980来实现,内置DDR,减少了硬件工程师的一个风险,官方提供Linux 4.4的内核;
  • 基于Linux系统这些外设的驱动实现也是个问题,好在疫情期间跟原厂的工程师建立了微信群,全部协调解决了;
  • 软件的扩展性,在这里很重要,用它来应对多变的需求。

        设计时没有急于开工,首先通过分析,来将功能进行了划分,拆分架构时参考了冯·诺依曼架构是现代计算机的基础的理论,对设备采集数据,处理数据,存储数据,上传数据等进行类拆分。再加上一些现在开发软件时微服务的概念,将设备内部分成了多个小程序,然后利用TCP协议,在设备内部进行交互。

       大体功能模块的划分如下:

  • Linux系统,为各个小程序的执行提供运行基础;
  • 采集程序,负责前端传感器数据采集,支持周期性采集,触发采集;
  • 数据处理程序,负责将采集到数据转化为标准数据;
  • 协议处理程序,负责将上下行的数据解析处理,并周期性打包数据上传,接收服务的下行指令的解析处理;
  • 中心调度程序,负责将各个子任务的数据进行转发,监控各个子任务的执行情况,并负责维护各个子任务的执行状态;
  • 数据管理程序,负责启用数据库,将历史数据存入数据库,并对其它程序提供数据查询服务;
  • 通讯程序,负责建立对应的通讯链路,并维护链路的链接;
  • 配置程序,负责对外提供web页面,用户可通过web页面对系统的参数,应用程序的参数等进行配置,并对运行过程的数据进行查看;

        内部的小程序之间通讯都是基于TCP进行的,设备可以实现集群部署,可以单台设备实现其中的部分功能,来增加整个系统的性能。

        产品对外接口有各种灵活性,具体配置如下:

产品内置web服务器,配置界面如下所示:

        配置界面如下所示:

        内部应用程序如下图所示:

关于架构层面的设计,以后慢慢逐步展开。

相关文章:

基于Linux系统的物联网智能终端

背景 产品研发和项目研发有什么区别?一个令人发指的问题,刚开始工作时项目开发居多,认为项目开发和产品开发区别不大,待后来随着自身能力的提升,逐步感到要开发一个好产品还是比较难的,我认为项目开发的目的…...

从零开始开发纯血鸿蒙应用之语音朗读

从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…...

物联网小范围高精度GPS使用

在园区内实现小范围高精度GPS(全球定位系统)定位,通常需要结合多种技术来弥补传统GPS在精度和覆盖范围上的不足。以下是实现小范围高精度GPS定位的解决方案,包括技术选择、系统设计和应用场景。 一、技术选择 在园区内实现高精度…...

一次有趣的前后端跨越排查

进行前后端代码联调的时候,使用axios调用后端请求,因为都是本地进行联调,所以没有考虑跨域的问题,写了一个get的请求接口,请求后端时,突然跳出下面的问题: 错误的信息一看很像就是跨域的问题&…...

大语言模型(LLM)如何赋能时间序列分析?

引言 近年来,大语言模型(LLM)在文本生成、推理和跨模态任务中展现了惊人能力。与此同时,时间序列分析作为工业、金融、物联网等领域的核心技术,长期依赖传统统计模型(如ARIMA)或深度学习模型&a…...

Kubernetes (K8S) 核心原理深度剖析:从架构设计到运行机制

Kubernetes(K8S)作为容器编排领域的“操作系统”,其设计和实现原理是开发者进阶的必修课。本文将从架构设计、核心组件协作、关键机制实现三个维度,结合源码逻辑与实战场景,分享 K8S 的底层运行原理。 一、Kubernetes 架构设计 1. 声明式 API 与控制器模式 K8S 的核心设…...

Excel 豆知识 - XLOOKUP 为啥会出 #N/A 错误

XLOOKUP有的时候会出 #VALUE! 这个错误。 因为这个XLOOUP有个参数叫 找不到时的返回值,那么为啥还会返回 #VALUE! 呢? 可能还有别的原因,但是主要原因应该就是 检索范围 和 返回范围 不同。 比如这里检索范围在 B列,是 4-21&…...

【深度学习】Hopfield网络:模拟联想记忆

Hopfield网络是一种经典的循环神经网络,由物理学家John Hopfield在1982年提出。它的核心功能是模拟联想记忆,类似于人类大脑通过部分信息回忆完整记忆的能力。以下是通俗易懂的解释: 1. 核心思想 想象你看到一张模糊的老照片,虽然…...

Python可视化大框架的研究与应用

## 摘要 随着数据科学和人工智能的快速发展,数据可视化成为了数据分析中不可或缺的一部分。Python作为一种功能强大且易于学习的编程语言,提供了多种可视化工具和库。本文旨在探讨Python可视化的主要框架,分析其特点、应用场景以及未来发展趋…...

Java 泛型(Generics)详解与使用

一、什么是 Java 泛型? 泛型(Generics)是 Java 1.5 引入的一项重要特性,主要用于 类型参数化,允许在类、接口和方法定义时使用 类型参数(Type Parameter),从而提高代码的复用性、类…...

七、Three.jsPBR材质与纹理贴图

1、PBR材质金属度和粗糙度 1、金属度metalness 金属度属性.metalness表示材质像金属的程度, 非金属材料,如木材或石材,使用0.0,金属使用1.0。 threejs的PBR材质,.metalness默认是0.5,0.0到1.0之间的值可用于生锈的金属外观 new THREE.MeshStandardMaterial({met…...

2024 ChatGPT大模型技术场景与商业应用视频精讲合集(45课).zip

2024ChatGPT大模型技术场景与商业应用视频精讲合集,共十三章,45课。 01. 第一章 ChatGPT:通用人工智能的典范 1.1 ChatGPT概述 .mp4 1.2 通用能力 .mp4 1.3 通用人工智能风口 .mp4 02. 第二章 大模型:ChatGPT的核心支撑 2.1 底层…...

Pytest之parametrize参数化

文章目录 1.前言2.单参数3.多参数4.字典形式5.parametrize 结合 ids 参数 1.前言 在 pytest 中,parametrize 是一个非常实用的装饰器,它允许你对测试函数进行参数化,即使用不同的参数组合多次运行同一个测试函数,从而更高效地进行…...

Python面试(八股)

1. 可变对象和不可变对象 (1). 不可变对象( Immutable Objects ) 不可变对象指的是那些一旦创建后其内容就不能被修改的对象。如果尝试修改不可变对象的内容,将会创建一个新的对象而不是修改原来的对象。常见的不可变类型包括: …...

2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析《更新中》

文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题D:回文数组试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需…...

湖仓一体概述

湖仓一体之前,数据分析经历了数据库、数据仓库和数据湖分析三个时代。 首先是数据库,它是一个最基础的概念,主要负责联机事务处理,也提供基本的数据分析能力。 随着数据量的增长,出现了数据仓库,它存储的是…...

【行政区划获取】

行政区划获取 获取2023年的行政区划,并以 编码: 省市区 格式保存为字典方便后续调用 注:网址可能会更新,根据最新的来 # 获取并保存行政区划代码 import requests from lxml import etree import jsondef fetch_html(url):""&quo…...

【深入剖析:机器学习、深度学习与人工智能的关系】

深入剖析:机器学习、深度学习与人工智能的关系 在当今数字化时代,人工智能(AI)、机器学习(ML)和深度学习(DL)这些术语频繁出现在各种科技报道和讨论中,它们相互关联又各…...

Docker 学习(一)

一、Docker 核心概念 Docker 是一个开源的容器化平台,允许开发者将应用及其所有依赖(代码、运行时、系统工具、库等)打包成一个轻量级、可移植的“容器”,实现 “一次构建,随处运行”。 1、容器(Container…...

flink web ui未授权漏洞处理

本文通过nginx代理的方式来处理未授权漏洞问题。 1.安装nginx 通过yum install nginx 2.添加账号和密码 安装htpasswd工具,yum install httpd-tools sudo htpasswd -c /etc/nginx/conf.d/.passwd flink # 需安装httpd-tools‌:ml-citation{ref"1,4" dat…...

CANN/asc-devkit MakeNDLayout函数

MakeNDLayout 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.c…...

Spring AI Alibaba 1.x 系列【55】Interrupts 中断机制:静态中断源码分析

文章目录 1. interruptBefore 模式1.1 中断判断逻辑1.2 构建中断元数据1.3 返回中断响应1.4 初始化【中断执行】上下文1.5 合并状态(BUG)1.6 执行结束 2. interruptsAfter 模式2.1 设置 INTERRUPT_AFTER 标记2.2 动态计算下一个节点 3. 中断时机对比 1. …...

Agent Runtime 重构:Session 作为事件日志的工程实践

1. 这不是新赛道,而是 runtime 层的“操作系统时刻”正在重演你有没有试过让一个 AI 代理连续工作四十分钟?不是闲聊,而是真干活:查数据库、调 API、读文档、写代码、改配置、再验证——一环扣一环。去年我带团队跑一个客户的数据…...

从用户一句话到任务完成:Hermes Agent 一次请求完整链路详解

一、先说结论:Hermes 不是“问一句答一句”的普通聊天框很多人理解 AI 应用时,会把它想成一个 Chatbot:用户发一句话,模型回一句话。但 Hermes Agent 的请求链路更像一个“任务操作系统”。用户的一句话进入系统后,Her…...

2026年,专业打造湖南美缝施工极致体验的宝藏公司你知道吗?

在湖南,装修市场日益繁荣,美缝作为装修中至关重要的一环,其品质直接影响着家居的整体美观与舒适度。今天,就带大家了解一家专业打造湖南美缝施工极致体验的宝藏公司——长沙匠心徐师傅美缝团队。一、高端服务体系贴合业主核心诉求…...

Unity重型战士Mecanim动画包:开箱即用的战斗动画解决方案

1. 这套动画包到底解决了什么实际问题?在Unity项目开发中,我见过太多团队卡在“角色动不起来”这一步——不是程序写不出状态机,而是美术资源交付后,Animator Controller里一堆红色警告:Missing Avatar、Clip not mapp…...

Heavy Fighter动画包:Unity战斗系统根运动与状态机深度解析

1. 这套动画包不是“拿来就能用”的资源,而是需要你亲手校准的战斗系统骨架我在2021年接手一个横版ARPG项目时,美术总监甩给我三套Mecanim动画包,其中一套就是Heavy Fighter Mecanim Animation Pack。当时我第一反应是“终于不用手调IK了”&a…...

AI Agent与RPA的融合:智能自动化新范式

AI Agent与RPA的融合:智能自动化新范式 关键词:AI Agent、RPA、智能自动化、融合技术、自主决策、业务流程优化、人机协作 摘要:本文深入探讨了AI Agent与RPA(机器人流程自动化)的融合,揭示了这一技术组合如何开创智能自动化的新范式。我们将通过生动的类比和详细的技术解…...

基于项目代码实测:XCP/CCP 模块“标定差异”全流程深度操作指南

在实际项目的 XCP/CCP 标定业务中,核对与同步底层内存参数是一项极其高频的操作。本指南将完全基于最新版“标定差异(Calibration Difference)”界面的真实功能逻辑,为你提供一份严谨、详细、且立即可用的三倍容量操作手册。无论你…...

制造业的AI智能体,为什么“部署方式”比“功能有多强”更关键?

和几位制造业IT负责人的交流中,有一个现象值得关注:他们最担心的不是AI智能体“能不能用”,而是“怎么部署”。 这和前两年的讨论方向明显不同。2024年前后,行业还在争论AI智能体到底有没有用、能在哪些场景落地。到了2026年&…...