红豆Cat 1开源|项目二: 从0-1设计一款MQTT版本DTU(支持GNSS)产品的软硬件全过程

news2025/5/19 4:12:27

MQTT版DTU(GNSS)项目概述

DTU 通常指的是数据传输单元,它是一种用于将现场设备的数据通过无线或有线方式传输到远程控制中心的设备。DTU 可以实现设备与控制中心之间的数据通信,以便实时监测和控制设备的运行状态。

产品定义描述

产品功能定义:

传统设备需要接入云平台,在不改变传统设备的情况下,通过串口连接一个可以连接服务器的设备,在不修改传统设备的情况下,赋能其上云功能。

MQTT DTU+GNSS版本DTU具有5*6贴片卡/外置SIM卡/全网通卡功能,支持北斗/GPS定位,支持卡基站定位,内嵌看门狗,掉线自动恢复。标准工业RS232/485接口,可以支持6-20V的宽电压输入。

MQTT DTU+GNSS版本DTU为用户提供标准固件以及对应源码,以及对应的MQTT透传、GNSS功能、AT指令配置等功能的操作例程,用户可以快速了解如何去从0开发一个项目,快速完成自己的产品功能定义,加速开发。

产品硬件分析框图:

系统框图

功能简介

  1. 电源:为 SOM 核心板+底板和扩展外设提供电源。

  2. SOM 核心板+底板:产品的核心部分。

  3. 上位机:用于配置设备参数。

  4. 4G 天线:用于信号的接收和发送。

  5. SOM 板和底板之间的接口:使用板对板连接器。

硬件资料包括,SOM板原理图和PCB,主板原理图和PCB,部分组件资料。

硬件设计原理图、Layout图、BOM信息等资料详情点击下面链接🔗硬件开发部分

产品核心板资料和产品datesheet点击如下链接🔗:AM430EV5 SOM板4(5*6卡/GNSS)  datasheet

也可以购买标准硬件进行软件开发,购买链接:

https://item.taobao.com/item.htm?id=768412868192&spm=a1z10.1-c-s.w4004-25306266394.3.7c4517edPbkQLY

软件开发分析:

开发一个项目,通常会涉及大量的代码。一般来说,我们会将项目的功能拆分成一个个独立的功能点,然后逐个实现,最终组合成完整的产品代码。

产品软件流程分析

我们的目标是开发一款 DTU(数据传输单元),它是一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机数据传输单元。这款 DTU 将末端检测仪表和执行机构与远程调控中心的主机通过数据透传方式连接在一起。

该项目实现的功能包括:

  • 通过 AT 指令配置设备运行参数,例如服务器连接 IP、端口号,心跳包的开启/关闭,心跳包内容,注册包模式,注册包内容,以及复位和查询相关配置参数指令。

  • 可以随时选择进入或退出透传模式。

  • 具备心跳保持功能,心跳间隔可配置。

  • 具备网络重连功能。

  • 理论上可以发送无限长度数据包。

  • 波特率固定为 115200,也可以根据客户需求进行定制。

  • 支持网络 AT 指令和 JSON 协议配置功能,可以通过服务器下发远程 AT 指令来配置设备。

  • 支持远程升级。

根据 DTU 应该具有的功能,代码可以分为以下模块:数据存储模块、AT 指令模块、切卡模块、透传模式切换模块、MQTT 模块、心跳模块、掉线重连模块、GNSS 模块和 JSON 模块。

模块内拆解的功能点分析

模块是将具有相似功能的代码组织到同一个源文件中。每个功能都被视为一个功能点,而不同功能点的组合则构成了模块的主要功能。

  • 数据存储功能点:包括文件创建、初始化、读写和关闭等操作。

  • AT 指令功能点:包括串口初始化、串口数据接收、发送、数据分析以及 AT 指令解析等。

  • 切卡功能点:包括 GPIO 初始化和复位切卡等操作。

  • 透传模式切换功能点:包括串口初始化、串口数据接收、发送、数据分析以及切换模式等。

  • 掉线重连功能点:包括连接状态检测和掉线重连等操作。

  • MQTT 功能点:包括参数配置、创建 MQTT 连接、与服务器连接、数据发送和接收等操作。

  • 心跳功能点:包括参数配置和定时发送等操作。

  • GNSS 功能点:包括参数配置、串口初始化、串口数据接收、数据分析、模式切换以及定时上报等操作。

  上述模块功能点的顺序大致反映了它们之间的依赖关系,下面讲述的模块实现可能会依赖于前面的功能点。

开发过程(基于红豆平台搭乐高模式开发)

根据上述分析,开发过程就是一个实现功能点的过程,即由几个功能点组成一个模块,由几个模块组成一个项目。开发过程将从核心功能点验证、完整代码详解和调试三个章节来讲解如何使用服务层 API 或应用层组件中的代码实现功能点和模块,从而完成整个项目。在软件开发部分,我们对这个开源项目进行了模块划分,并对每个模块拆解出相应的功能点。在这个章节,我们将对所有功能点进行逐一验证,拼接出我们最终的 DTU 产品代码。

本产品基于以上软件分析,涉及以下 9 个功能模块:数据存储模块、AT 指令模块、切卡模块、透传模式切换模块、TMQTT 模块、心跳模块、掉线重连模块、GNSS 模块和 JSON 模块。

这9个功能模块在红豆开源平台RTOS系统服务层组件&应用层组件都提供相关的服务,可以直接采用搭乐高开发模式。红豆平台的相关资源介绍链接:红豆平台RTOS技术架构

第一步:基于RTOS的组件快速完成每一个功能模块的验证,针对本次工程每个功能模块验证详情链接:核心功能点验证。

第二步:验证完功能点和功能模块后,从0快速搭建出一个DTU工程,进行系统级联调测试。DTU工程完整代码讲解链接:完整代码详解 ;DTU工程代码调试详解链接:调试:产品固件Gitee链接:软件源码树文件介绍及Gitee链接。

本工程的代码对第一次接触红豆平台也非常友好,提供详细的代码讲解备注,例如以下:文件模块的代码,可以迅速了解上手,也可以根据自己的需求做优化改进。

工程成果下载

开发成果属于项目完成后,总结出来的一些说明性文件,包括Datasheet,AT指令手册,通信协议,以及固件等,可以作为本开源项目的工程量产资料。

datasheet

SCH的讲解和Geber文件资料

产品BOM

AT指令手册

JSON通信协议

固件

如需下载相关资料或者需要技术交流请联系我们:

物联网技术发展日新月异,也欢迎反馈您的技术需求,我们会及时更新迭代红豆平台的技术应用能力。

部分素材来源于网络,仅用于交流学习,如有侵权请联系删除!

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

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

相关文章

SpringBoot内容协商快速入门Demo

1.什么内容协商 简单说就是服务提供方根据客户端所支持的格式来返回对应的报文,在 Spring 中,REST API 基本上都是以 json 格式进行返回,而如果需要一个接口即支持 json,又支持其他格式,开发和维护多套代码显然是不合理…

面对DDOS攻击,有哪些解决办法

随着互联网带宽的持续增长以及DDOS黑客技术的发展,DDOS拒绝服务攻击的实施变得愈发容易。商业竞争、打击报复、网络敲诈等多种因素,各行各业的用户都曾受到DDOS攻击的威胁。 一旦遭受到DDOS攻击,随之而来的就是业务宕机,用户无法…

C++ GDAL提取多时相遥感影像中像素随时间变化的数值数组

本文介绍基于C语言GDAL库,批量读取大量栅格遥感影像文件,并生成各像元数值的时间序列数组的方法。 首先,我们来明确一下本文所需实现的需求。现在有一个文件夹,其中包含了很多不同格式的文件,如下图所示。 其中&#x…

机器学习-08-关联规则和协同过滤

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中关联规则和协同过滤。 参考 机器学习(三):Apriori算法(算法精讲) Apriori 算法 理论 重点 MovieLens:一个常用的电影推荐系统领域的数据集 2…

2024阿里云2核4G服务器优惠价格表_2核4G性能测评

阿里云2核4G服务器多少钱一年?2核4G服务器1个月费用多少?2核4G服务器30元3个月、85元一年,轻量应用服务器2核4G4M带宽165元一年,企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

6种xinput1_3.dll丢失的解决办法,并探讨xinput1_3.dll丢失的原因及其属性。

xinput1_3.dll扮演着Visual C运行时库中不可或缺的角色,众多电脑软件都需依赖它以确保正常运行。 当您启动软件时,若遇到xinput1_3.dll无法执行代码的提示,可能会导致软件无法如常启动或运行。本文将向您介绍6种解决方案,并探讨xi…

潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞复现

0x01 产品简介 水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。由山东潍微科技股份有限公司研发,近年来,公司全力拓展提升水务、水利信息化业务…

二叉数应用——最优二叉树(Huffman树)、贪心算法—— Huffman编码

1、外部带权外部路径长度、Huffman树 从图中可以看出,深度越浅的叶子结点权重越大,深度越深的叶子结点权重越小的话,得出的带权外部路径长度越小。 Huffman树就是使得外部带权路径最小的二叉树 2、如何构造Huffman树 (1&#xf…

Prime (2021): 2

前言 这个靶机有亿点难,收获很多。打靶的时候,前面很顺,到创建ssh公钥之后就一点不会了。 1 01 arp扫描,发现有一个130,再查看端口 有22,80,129,445,10123 dirb扫描目录 这…

【机器学习】决策树(Decision Tree,DT)算法介绍:原理与案例实现

前言 决策树算法是机器学习领域中的一种重要分类方法,它通过树状结构来进行决策分析。决策树凭借其直观易懂、易于解释的特点,在分类问题中得到了广泛的应用。本文将介绍决策树的基本原理,包括熵和信息熵的相关概念,以及几种经典的…

国内电缆附件市场规模保持增长态势 高压电缆附件占据较多市场份额

国内电缆附件市场规模保持增长态势 高压电缆附件占据较多市场份额 电缆附件是连接电缆与输配电线路及相关配电装置的产品,主要用于保护电缆、连接电缆或改变电缆方向,是电缆系统的重要组成部分。电缆附件种类多样,根据材料及制作工艺不同可分…

遥感影像为什么需要分块处理

原理 遥感影像通常具有极高的分辨率和大量的数据量,这就使得全景处理遥感影像成为一项极具挑战的任务。首要的问题是,大规模的遥感影像可能会超过硬件设备,特别是GPU的内存容量。其次,处理大规模遥感影像的计算复杂度非常高&…

linux常见使用命令

查看CPU内存 cat /proc/cpuinfo 动态查看 top 部分版本中没有,需要自行安装的命令 dstat 查看内核版本号 uname -r 系统版本的全部信息 uname -a 查看所有关于网络的相关信息 netstat -anp 查看8080端口是否被占用 netstat -anp | grep 8080 指定进程名字都有那些连…

【Linux-运维】查看操作系统的指定端口占用情况确定端口是哪个服务占用

不同的查看端口占用的方法,应用场景有所不同 一、查询某个端口是否被占用?lsof -i:端口号lsof -i:协议 查看某个协议的占用情况netstat -tlnp|grep 端口号ss -tlnp|grep 端口号fuser 端口号/协议ls -l /proc/$(lsof -t -i:端口号)|grep exe 二、确认指定…

【RAG实践】Rerank,让大模型 RAG 更近一步

RAGRerank原理 上一篇【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人 我们介绍了什么是RAG,以及如何基于LLaMaIndex和Qwen1.5搭建基于本地知识库的问答机器人,原理图和步骤如下: 这里面主要包括包括三个基本步骤&#…

【Spring进阶系列丨第八篇】Spring整合junit 面向切面编程(AOP)详解

文章目录 一、Spring整合junit1.1、导入spring整合junit的jar1.2、在测试类上添加注解1.3、说明 二、面向切面编程(AOP)2.1、问题引出2.2、AOP2.2.1、概念2.2.2、作用2.2.3、优势2.2.4、实现方式2.2.5、专业术语2.2.5.1、连接点2.2.5.2、切入点2.2.5.3、通知/增强2.2.5.4、织入…

归并排序核心代码

核心&#xff1a; void merge(int a[],int l,int r){ if(l>r) return; int mid lr>>1; merge(a,l,mid);//先递归再归并 merge(a,mid1,r); int t0; //左右半段的起点 int il,jmid1; while(i < mid && j < r){ …

(源码)基于Spring Boot和Vue植物养殖技巧学习系统的设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31f…

动态规划9,最长定差子序列,最长斐波那契子序列长度,最长等差数列

如果还没有做过前面的题&#xff0c;建议先去尝试动态规划8 1218. 最长定差子序列 如果对之前的题比较熟悉的话&#xff0c;比较容易直接这样写&#xff0c;但是这样会超出时间限制&#xff1a; 所以我们要变成一次遍历&#xff0c;就得倒着推&#xff0c;就像这样&#xff1a…

windows server 2019 -DNS服务器搭建

前面是有关DNS的相关理论知识&#xff0c;懂了的可以直接跳到第五点。 说明一下&#xff1a;作为服务器ip最好固定下来&#xff0c;以DNS服务器为例子&#xff0c;如果客户机的填写DNS信息的之后&#xff0c;服务器的ip如果变动了的话&#xff0c;客户机都得跟着改&#xff0c…