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


HTTP版RTU(支持GNSS)项目概述
RTU(Remote Terminal Unit),中文即远程终端控制系统,负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置,通常由信号输入/出模块、微处理器、有线/无线通讯设备、电源及外壳等组成,由微处理器控制,并支持网络系统。它实现企业中央监控与调度系统对生产现场一次仪表的遥测、遥控、遥信和遥调等功能。RTU可以实现远程测控设备,通过控制现场IO控制现场设备运行。
产品定义描述
产品功能定义:
传统设备需接入云平台,在不改变其自身的条件下,通过串口连接一个可连接服务器的设备,以便在不修改传统设备的情况下,为其赋予上云功能。
HTTP RTU+GNSS 版本的 RTU 具备 5*6 贴片卡/外置 SIM 卡/全网通卡功能,支持北斗/GPS 定位,支持卡基站定位,内置看门狗,掉线自动恢复。其配备标准工业 RS232/485 接口,支持 6-20V 宽电压输入,支持 5 路 DO,5 路 DI,1 路 AI。
HTTP RTU+GNSS 版本的 RTU 为用户提供标准固件及对应源码,以及 HTTP 透传、GNSS、DI、DO、AI 等功能的操作例程。用户可借此快速了解如何从 0 开始开发项目,快速完成产品功能定义,加快开发进程。
产品硬件分析框图:
系统框图

功能简介
-
电源:为 SOM 核心板+底板和扩展外设提供电源。
-
SOM 核心板+底板:作为产品的核心部分。
-
上位机:用于配置设备参数。
-
4G 天线:用于信号的接收和发送。
-
DI/DO:开关量输入和输出。
-
AI:模拟输入。
-
SOM 板和底板之间的接口使用板对板连接器。
硬件资料包括,SOM板原理图和PCB,主板原理图和PCB,部分组件资料。

硬件设计原理图、Layout图、BOM信息等资料详情点击下面链接🔗:硬件开发部分
产品核心板资料和产品datesheet点击如下链接🔗:1)AM430EV5 SOM板1(5*6卡)2)Datasheet

也可以购买标准硬件进行软件开发,购买链接:
https://item.taobao.com/item.htm?id=768412868192&spm=a1z10.1-c-s.w4004-25306266394.3.7c4517edPbkQLY

软件开发分析:
开发一个项目时会产生大量代码。通常,项目开发人员会将项目功能拆分成一个个功能点,然后逐一实现,最后合并成最终的产品代码。
产品软件流程分析
我们的目标是研发一款 RTU(远程终端单元)。RTU 是一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的特殊计算机测控单元,用于将末端检测仪表和执行机构与远程调控中心的主计算机连接起来。
该项目实现的功能有:
-
通过 AT 指令配置设备运行参数,包括服务器连接 IP、端口号、心跳包开启/关闭、心跳包内容、注册包模式、注册包内容以及复位和查询相关配置参数指令。
-
可随时选择进入或退出透传模式。
-
具备心跳保持功能,心跳间隔可配置。
-
具备网络重连功能。
-
理论上可发送无限长度数据包。
-
波特率固定为 115200,也可根据客户需求定制。
-
支持网络 AT 指令和 JSON 协议配置功能,可通过服务器下发远程 AT 指令进行配置。
-
支持远程升级。
-
支持 5 路数字输入(DI),DI 可配置为上拉/下拉、初始电平、主动上报、定时上报,还可单独读取某一路或同时读取 5 路。
-
支持 5 路数字输出(DO),包含上拉/下拉、初始电平、重启状态,可单独设置某一路的输出电平,也可同时设置 5 路的输出电平。
-
支持 1 路模拟输入(AI),可采集 4-20mA 的电流,可配置阈值,根据配置触发报警,周期上报。
-
闹钟功能,DO 可定时执行设置动作。
-
支持 IO 联动,DI/AI 作为输入源,DO 跟随动作,包括正向跟随、反向跟随 DI,以及在阈值内、阈值外执行相应动作。
根据 RTU 应具备的功能,代码可分为数据存储模块、AT 指令模块、切卡模块、透传模式切换模块、TCP 模块、心跳模块、掉线重连模块、GNSS 模块、DI 模块、DO 模块、AI 模块、JSON 模块、闹钟模块。

模块内拆解的功能点分析
模块是将具有相似功能的代码组织到同一个源文件中。每个功能都被视为一个功能点,不同功能点的组合构成了模块的主要功能。
-
数据存储功能点:包括文件创建、初始化、读写和关闭等操作。
-
AT 指令功能点:包括串口初始化、串口数据接收、发送、数据分析以及 AT 指令解析。
-
切卡功能点:包括 GPIO 初始化和复位切卡操作。
-
透传模式切换功能点:包括串口初始化、串口数据接收、发送、数据分析以及切换模式操作。
-
掉线重连功能点:包括连接状态检测和掉线重连操作。
-
TCP 功能点:包括参数配置、创建 Socket、连接服务器、发送和接收数据等操作。
-
心跳功能点:包括参数配置和定时发送操作。
-
GNSS 功能点:包括参数配置、串口初始化、串口数据接收、数据分析、模式切换以及定时上报操作。
-
DI 功能点:包括参数配置、GPIO 初始化、中断检测、模式切换、定时上报和中断上报操作。
-
AI 功能点:包括参数配置、ADC 接口初始化、电流计算、定时上报操作。
-
DO 功能点:包括参数配置、GPIO 初始化、模式切换、定时上报、跟随 DI 或 AI 操作。
-
闹钟功能点:包括参数配置、定时和超时动作操作。
-
JSON 功能点:包括数据接收、解析和发送操作。
上述模块功能点的顺序大致是按照依赖关系排列的,下面讲述的模块实现可能需要基于上述功能点来完成。
开发过程(基于红豆平台搭乐高模式开发)
根据上述分析,开发过程即为实现一个个功能点,再由数个功能点组成一个模块,最终由数个模块完成整个项目的开发。开发过程将从核心功能点验证、完整代码详解和调试三个章节展开,详细介绍如何使用服务层 API 或应用层组件中的代码来实现功能点和模块,从而完成整个项目。在软件开发部分,我们对这个开源项目进行了模块划分,并对每个模块拆解出相应的功能点。在本章节中,我们将对所有功能点进行逐一验证,拼接出我们最终的 RTU 产品代码。
本产品基于以上软件分析共涉及以下 13 个功能模块:数据存储模块、AT 指令模块、切卡模块、透传模式切换模块、TCP 模块、心跳模块、掉线重连模块、GNSS 模块、DI 模块、DO 模块、AI 模块、JSON 模块和闹钟模块。

这13个功能模块在红豆开源平台RTOS系统服务层组件&应用层组件都提供相关的服务,可以直接采用搭乐高开发模式。红豆平台的相关资源介绍链接:红豆平台RTOS技术架构。
第一步:基于RTOS的组件快速完成每一个功能模块的验证,针对本次工程每个功能模块验证详情链接:核心功能点验证
第二步:验证完功能点和功能模块后,从0快速搭建出一个RTU工程,进行系统级联调测试。RTU工程完整代码讲解链接:完整代码详解;RTU工程代码调试详解链接:调试:产品固件Gitee链接: 软件源码树文件介绍及Gitee链接 。
本工程的代码对第一次接触红豆平台也非常友好,提供详细的代码讲解备注,例如以下:文件模块的代码,可以迅速了解上手,也可以根据自己的需求做优化改进。

工程成果下载
开发成果属于项目完成后,总结出来的一些说明性文件,包括Datasheet,AT指令手册,通信协议,以及固件等,可以作为本开源项目的工程量产资料。
如需下载相关资料或者需要技术交流请联系我们:

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

部分素材来源于网络,仅用于交流学习,如有侵权请联系删除!
相关文章:
红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程
HTTP版RTU(支持GNSS)项目概述 RTU(Remote Terminal Unit),中文即远程终端控制系统,负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置,通常由信号输入/出模块、微…...
在 Mac 上配置高级内容缓存设置
在 Mac 上配置高级内容缓存设置 您可以使用高级配置参数针对网络配置微调内容缓存。 您可以在“终端”中使用命令行或通过修改“/资源库/Preferences/com.apple.AssetCache.plist”文件中的键值,来设定内容缓存的高级配置参数。若要使某些更改生效,必须…...
算法与数据结构 顺序栈(C++)
随机产生10个100以内的整数建立一个顺序栈,从栈顶到栈底依次显示栈内元素;从键盘输入出栈元素个数 n (1< n <10),将 n 个元素依次出栈并显示出栈元素,再显示此时栈顶元素。 #include <iostream> #include <cstd…...
【WSL】在WIN11安装并使用Linux子系统(Ubuntu)
前言: 最近买了4060Ti 16G,可以尝试在本地实验大模型。一开始尝试使用Vmware搞Linux,发现没有办法加载GPU(或者另外有办法没找到)。所以只剩下了两条路:要么搞双系统,要么使用WSL(W…...
【vim 学习系列文章 20 -- a:mode 的值有哪些?】
请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 a:mode 的值有哪些?举例Vim 底部状态栏设置 a:mode 的值有哪些? 在 Vim 脚本语言中,a:mode 常常用于函数内部,以获取该函数被调用时 Vim 正处于的模式。它主常用于那些可以从不同模式下被调用的函数…...
sed命令多行处理
1. sed 如何工作的 sed 维护两个空间: 模式空间保留空间 sed是以行为周期来处理文本的。 sed从输入流中读取一行,去掉最后的换行符,把它放入模式空间。随后执行命令,每个命令都有关联的地址和条件,只有匹配时才执行…...
Secure Copy Protocol or SCP - 安全拷贝协议
Secure Copy Protocol or SCP - 安全拷贝协议 1. scp 文件传输1.1. 将远程文件拷贝到本地1.2. 将本地文件拷贝到远程1.3. 将远程目录拷贝到本地 References Secure Copy (remote file copy program) The SCP program is a software tool implementing the SCP protocol as a s…...
Java面试题:什么是Java的值传递和引用传递?列举其应用场景,并说明其特点
在Java中,值传递和引用传递是两种不同的参数传递机制。它们在Java程序中扮演着重要的角色,影响着方法如何接收和处理参数。了解这两种传递机制对于编写高效、可靠的Java代码至关重要。 值传递(Pass by Value) 值传递是指在调用方…...
Java 基于微信小程序的智能停车场管理小程序
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
python基础——类型注解【变量,函数,Union】
📝前言: 上一篇文章Python基础——面相对象的三大特征提到,python中的多态,python中,类型是动态的,这意味着我们不需要在声明变量时指定其类型。然而,这可能导致运行时错误,因为我们…...
人工智能研究生前置知识—科学计算库numpy
人工智能研究生前置知识—科学计算库numpy numpy是python中做科学计算的基础库,对数组进行操作 整个numpy的操作和使用比较简单因此可以通过案例的学习掌握基本的用法在之后的学习中不断的进行熟悉和补充 创建数组(矩阵 ) 创建的ndarray数组…...
element UI 设置type=“textarea“ 禁止输入框缩放
背景 在 Element UI 中,当您使用 el-input 组件并设置 type"textarea" 时,默认情况下,用户可以通过拖动输入框的右下角来调整其大小。如果您想禁止这种缩放行为,需要使用 CSS 来覆盖默认的浏览器行为。 注意上图&#x…...
Rust腐蚀服务器常用参数设定详解
Rust腐蚀服务器常用参数设定详解 大家好我是艾西,一个做服务器租用的网络架构师上期我们分享了rust腐蚀服务器的windows系统搭建方式,其中启动服务器bat参数因为涉及的东西比较多所以想通过这篇文章给大家做一下详细的分享。 (注本文中xxxx…...
无人机巡检技术革命性变革光伏电站运维管理
在中国广袤的大地上,光伏电站如雨后春笋般崛起,晶体硅组件板在阳光下熠熠生辉,为人们带来了源源不断的绿色能源。然而,随着光伏产业的迅猛发展,电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入,…...
【学习】软件信创测试中,如何做好兼容性适配
在软件信创测试的领域中,兼容性适配是至关重要的一环。如何确保软件在不同的操作系统、硬件设备和软件环境中稳定运行,是每个测试人员需要面对的挑战。本文将从几个方面探讨如何做好兼容性适配,以提高软件的稳定性和用户体验。 首先…...
阿里云ACK k8s集群迁移
1、创建k8s集群 阿里云ACK创建 2、创建所需的第三方插件 ACK ingress创建 3、导出原有ACK集群配置 包含deployment、service、ingress、PersistentVolumeClaim 执行命令 kubectl get deployment,service,secret,ingress,PersistentVolumeClaim -n <namespace_name> -o y…...
1.3 字符设备驱动
1、字符设备驱动工作原理 2、file_operations结构体 struct file_operations { struct module *owner; //拥有该结构的模块的指针,一般为THIS_MODULES loff_t (*llseek) (struct file *, lof…...
计算机毕业设计springboot小区物业报修管理系统m8x57
该物业报修管理系统实施的目的在于帮助物业管理企业升级员工管理、住户管理、报修问题管理等内部管理平台,整合物业管理企业物力和人力,全面服务于维修人员管理的内部管理需求,并重视需求驱动、管理创新、与业主交流等外部需求,通过物业管理企业各项资源…...
深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用
1. 卷积神经网络 卷积神经网络(CNN)是一种特别适用于处理具有网格结构的数据,如图像和视频的人工神经网络。可以将其视作一个由多层过滤器构成的系统,这些过滤器能够处理图像并从中提取出有助于进行预测的有意义特征。 设想你手…...
js 数字的常用方法梳理
toFixed:保留几位小数。toFixed(保留小数位)。注意:不做任何的四舍五入。 Math集合: random:获取一个0-1之间的随机数。注意,包含0,不包含1。 round:四舍五入取整数,最后返回一个整数值。 ceil:向上取整。 floor:…...
SimCSE中文实战避坑指南:从数据准备、模型训练到效果评估的完整流程
SimCSE中文实战避坑指南:从数据准备到效果评估的全流程解析 在自然语言处理领域,语义相似度计算一直是核心挑战之一。SimCSE作为一种简单却高效的对比学习方法,近年来在中文场景下展现出惊人的潜力。但当你真正尝试将其应用于自己的中文项目时…...
保姆级教程:手把手教你用MuJoCo和Spinning Up让UR5机械臂学会‘指哪打哪’
从零实现UR5机械臂强化学习控制:MuJoCo与Spinning Up实战指南 看着实验室里崭新的UR5机械臂,你是否想过让它像人类手臂一样灵活地指向任意位置?传统控制方法需要复杂的运动学计算,而强化学习能让机械臂通过"试错"自主掌…...
2026最权威的AI辅助写作方案推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下的学术环境里头,知网的AI内容识别机制已然全面实现落地,针对由…...
PyQt6 GUI开发实战:构建现代化桌面应用的架构设计指南
PyQt6 GUI开发实战:构建现代化桌面应用的架构设计指南 【免费下载链接】PyQt-Chinese-tutorial PyQt6中文教程 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Chinese-tutorial 在当今软件开发领域,桌面应用依然占据着重要地位,特…...
科研绘图升级:用CMplot为你的基因组文章制作高颜值SNP密度图(R实战)
科研绘图升级:用CMplot为你的基因组文章制作高颜值SNP密度图(R实战) 在基因组学研究中,数据可视化不仅是结果展示的手段,更是科学叙事的重要语言。一张精心设计的SNP密度图,能够直观呈现全基因组范围内单核…...
R3nzSkin英雄联盟皮肤修改器完整教程:免费体验全皮肤的终极指南
R3nzSkin英雄联盟皮肤修改器完整教程:免费体验全皮肤的终极指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin是一款专为《英雄联盟》玩家设计的开源皮肤修改工具&a…...
多云配置管理工具MCP:统一编排AWS、GCP等云资源的实战指南
1. 项目概述:一个高效的多云配置管理工具 最近在梳理团队的基础设施配置时,发现了一个挺有意思的开源项目,叫 malminhas/mcp 。乍一看这个名字,你可能会有点懵,这缩写代表什么?其实,MCP 在这里…...
从Hello-World到Nginx:5个真实案例详解如何让Docker容器在后台稳定运行
从Hello-World到Nginx:5个真实案例详解如何让Docker容器在后台稳定运行 当你在终端输入docker run后,容器却像一阵风一样消失无踪——这种"闪退"现象往往是Docker新手遭遇的第一个认知颠覆点。不同于传统虚拟机,容器本质上是隔离的…...
[HFSS] 从零到一:Floquet Port与主从边界在波导阵列建模中的实战解析
1. 初识Floquet Port与主从边界 第一次接触HFSS的周期性结构仿真时,我被Floquet Port和主从边界这两个概念搞得一头雾水。直到实际建模了一个波导阵列天线,才真正理解它们的妙用。简单来说,Floquet Port是专门为周期性结构设计的特殊端口&…...
Task Slack集成:团队协作的任务管理终极指南
Task Slack集成:团队协作的任务管理终极指南 【免费下载链接】task A fast, cross-platform build tool inspired by Make, designed for modern workflows. 项目地址: https://gitcode.com/gh_mirrors/ta/task Task 是一款受 Make 启发的快速跨平台构建工具…...
