基于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.pswp.cn/bicheng/72071.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72071.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72071.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java excel xlsx 增加數據驗證

隱藏表下拉框 // 創建隱藏工作表存儲下拉框數據String hiddenSheetName "HiddenSheet"System.currentTimeMillis();Sheet hiddenSheet workbook.createSheet(hiddenSheetName);//設置隱藏sheetworkbook.setSheetHidden(workbook.getSheetIndex(hiddenSheetName), …

linux中安裝部署Jenkins,成功構建springboot項目詳細教程

參考別人配置Jenkins的git地址為https,無法連上github拉取項目,所以本章節介紹通過配置SSH地址來連github拉取項目 目錄: 1、springboot項目 1.1 創建名為springcloudproject的springboot項目工程 1.2 已將工程上傳到github中,g…

提升數據洞察力:五款報表軟件助力企業智能決策

概述 隨著數據量的激增和企業對決策支持需求的提升,報表軟件已經成為現代企業管理中不可或缺的工具。這些軟件能夠幫助企業高效處理數據、生成報告,并將數據可視化,從而推動更智能的決策過程。 1. 山海鯨報表 概述: 山海鯨報表…

MySQL中replace函數用法

語法:replace(field,search,replace) 說明:field - 數據庫表的列名 search - 需要替換的字符串 replace - 替換成的字符串 語義:將列名:field 中出現的search字符串,全部替換成replace字符串。 例子: …

Wireshark Lua 插件教程

本?主要介紹 Lua 腳本在 Wireshark 中的應?, Lua 腳本可以在 Wireshark 中完成如下功能: 從?絡包中提取數據, 或者統計?些數據包(Dumper) 需要解析?種 Wireshark 不提供原??持的協議(Dissector) ?例 協議解析 VREP 協議是 NOGD 框架對于 TRIP 協議的?種延伸和擴展…

吐血整理:在 Docker 中運行 Milvus

直接用docker 錯誤命令(這個我試了三遍,浪費了很多時間): docker run -d --name milvus -p 19530:19530 -p 9091:9091 -v /var/lib/milvus:/var/lib/milvus milvusdb/milvus:latest 先看報錯: 2025-02-24 16:02:39 …

【uniapp】在UniApp中實現持久化存儲:安卓--生成寫入數據為jsontxt

在移動應用開發中,數據存儲是一個至關重要的環節。對于使用UniApp開發的Android應用來說,緩存(Cache)是一種常見的數據存儲方式,它能夠提高應用的性能和用戶體驗。然而,緩存數據在用戶清除緩存或清除應用數…

【Excel】 Power Query抓取多頁數據導入到Excel

抓取多頁數據想必大多數人都會,只要會點編程技項的人都不會是難事兒。那么,如果只是單純的利用Excel軟件,我還真的沒弄過。昨天,我就因為這個在網上找了好久發好久。 1、在數據-》新建查詢-》從其他源-》自網站 ,如圖 …

星環科技推出DeepSeek全場景解決方案:即開即用、企業級部署、端側智能三位一體

星環科技(688031.SH)正式發布DeepSeek全場景解決方案,全面覆蓋個人用戶、企業客戶及行業場景需求,為用戶提供從個人到企業、從云端到本地的全方位AI應用支持,為不同需求的用戶提供了靈活、高效且安全的AI解決方案。 省…

let、const【ES6】

?“我唯一知道的就是我一無所知。” - 蘇格拉底 目錄 塊級作用域:var、let、const的對比:Object.freeze(): 塊級作用域: 塊級作用域指由 {} 包圍的代碼塊(如 if、for、while、單獨代碼塊等)形成的獨立作用…

C++ 常見面試知識點

主要介紹C常見面試題 1、說一下你理解的C中的四種智能指針 常用接口 T* get(); T& operator*(); T* operator->(); T& operator(const T& val); T* release(); 將 封裝在內部的指針置為nullptr, 但并不會破壞指針所指向的內容, 函 數返回的是內部指針置空之前…

AWS API Gateway灰度驗證實現

在微服務架構中,灰度發布(金絲雀發布)是驗證新版本穩定性的核心手段。通過將小部分流量(如 10%)導向新版本服務,可以在不影響整體系統的情況下快速發現問題。AWS API Gateway 原生支持流量按比例分配功能,無需復雜編碼即可實現灰度驗證。本文將詳細解析其實現方法、最佳…

基于coze+微信小程序實現圖片上傳并利用大模型解析

項目截圖&#xff1a; 實現代碼&#xff08;直接搬去可用&#xff09; 前提&#xff1a;需要填寫你的oss配置coze的api授權配置&#xff01;&#xff01;&#xff01; <template><view class"container"><!-- 高斯模糊背景 --><view class&qu…

Spring-boot3.4最新版整合swagger和Mybatis-plus

好家伙,今天終于開始用spring-boot3開始寫項目了&#xff0c;以后要徹底告別1.x和2.x了&#xff0c;同樣的jdk也來到了最低17的要求了,廢話不多說直接開始 這是官方文檔的要求jdk最低是17 maven最低是3.6 一. 構建工程,這一步就不需要給大家解釋了吧 二. 整合Knife4j 1.大于…

jQuery UI API 文檔

jQuery UI API 文檔 引言 jQuery UI 是一個基于 jQuery 的用戶界面庫,它提供了豐富的交互式組件和效果,使得網頁開發變得更加簡單和高效。本文檔旨在為開發者提供全面的 jQuery UI API 信息,幫助您更好地理解和應用 jQuery UI。 jQuery UI 簡介 什么是 jQuery UI? jQu…

java GUI編程實現一個計算器

概述 閑來無事&#xff0c;利用java awt庫寫個簡單的計算器玩玩。 實現 pom.xml <dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.26</version></dependency&…

C#裝箱拆箱機制詳解

在C#中&#xff0c;裝箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09; 是值類型與引用類型之間轉換的核心機制。它們的實現直接影響程序的性能和類型安全。 一、裝箱&#xff08;Boxing&#xff09; 定義&#xff1a; 將值類型轉換為引用類型&#…

MySQL 8.4 SQL 全攻略:所有知識點與實戰場景

一、引言 MySQL 作為一款廣泛使用的開源關系型數據庫管理系統&#xff0c;在數據存儲和管理領域占據著重要地位。MySQL 8.4 版本在性能、功能和安全性等方面都有了顯著的提升。本文將全面介紹 MySQL 8.4 中 SQL 的各種知識點&#xff0c;并結合實戰場景進行詳細講解&#xff0…

Qt監控系統遠程回放/錄像文件遠程下載/錄像文件打上水印/批量多線程極速下載

一、前言說明 在做這個功能的時候&#xff0c;著實費了點心思&#xff0c;好在之前做ffmpeg加密解密的時候&#xff0c;已經打通了極速加密保存文件&#xff0c;主要就是之前的類中新增了進度提示信號&#xff0c;比如當前已經處理到哪個position位置&#xff0c;發個信號出來…

超高速工業相機的應用

超高速工業相機一般安裝在機器流水線上代替人眼來做測量和判斷&#xff0c;通過數字圖像攝取目標轉換成圖像信號&#xff0c;傳送給專用的圖像處理系統。圖像處理系統對這些信號進行各種運算來抽取目標的特征&#xff0c;進而根據判別的結果來控制現場的設備動作。一般來說&…