当前位置: 首页 > 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服务器,配置界面如下所示:

        配置界面如下所示:

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

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

http://www.lryc.cn/news/545831.html

相关文章:

  • 从零开始开发纯血鸿蒙应用之语音朗读
  • 物联网小范围高精度GPS使用
  • 一次有趣的前后端跨越排查
  • 大语言模型(LLM)如何赋能时间序列分析?
  • Kubernetes (K8S) 核心原理深度剖析:从架构设计到运行机制
  • Excel 豆知识 - XLOOKUP 为啥会出 #N/A 错误
  • 【深度学习】Hopfield网络:模拟联想记忆
  • Python可视化大框架的研究与应用
  • Java 泛型(Generics)详解与使用
  • 七、Three.jsPBR材质与纹理贴图
  • 2024 ChatGPT大模型技术场景与商业应用视频精讲合集(45课).zip
  • Pytest之parametrize参数化
  • Python面试(八股)
  • 2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析《更新中》
  • 湖仓一体概述
  • 【行政区划获取】
  • 【深入剖析:机器学习、深度学习与人工智能的关系】
  • Docker 学习(一)
  • flink web ui未授权漏洞处理
  • 【vue-echarts】——03.配置项---tooltip
  • 【弹性计算】弹性裸金属服务器和神龙虚拟化(二):适用场景
  • 提升系统效能:从流量控制到并发处理的全面解析
  • 计算机毕业设计SpringBoot+Vue.js贸易行业CRM系统(源码+文档+PPT+讲解)
  • 从头开始学SpringBoot—02ssmp整合及案例
  • 0301 leetcode - 1502.判断是否能形成等差数列、 682.棒球比赛、657.机器人能否返回原点
  • Vulnhub靶机——AI-WEB-1
  • 无人系统:未来科技的智能化代表
  • 在Docker中部署DataKit最佳实践
  • 进程的状态 ─── linux第11课
  • MySQL数据库基本概念