今天给对大家拆解一款DTU模块。无线数据终端DTU模块,全称数据传输单元(Data Transfer Unit),是一种物联网无线数据终端,专门用于将串口数据转换为IP数据或将IP数据转换为串口数据,并通过无线通信网络进行传输。它利用公用运营商网络为用户提供无线长距离数据传输功能。
DTU模块的核心功能概述:
1。数据传输与转换:DTU模块能够接收串口设备发送的数据,并将其转换为IP数据格式,以便通过无线通信网络进行传输。同时,它也能接收来自网络的IP数据,并将其转换为串口设备可以识别的格式。
2.无线通信:DTU模块集成了无线通信功能,可以与运营商的移动网络进行连接,实现数据的无线传输。这使得串口设备无需有线连接即可实现远程通信和数据传输。
3.长连接保持:为了保持与数据中心的稳定连接,DTU模块使用心跳包机制。当长时间没有数据通信时,它会发送心跳包以维持连接状态,防止连接被断开。此外,DTU模块还支持自动重连和断线后自动重拨等功能。
4.参数配置与存储:DTU模块支持参数配置,包括数据中心IP地址、端口号、串口波特率等,这些参数可以根据具体应用进行设定。配置好的参数会被永久存储,使得DTU模块在接通电源后可以自动按照设定的参数运行。
在硬件上,DTU模块采用高性能的工业级通信处理器和工业级无线模块,以嵌入式实时操作系统为软件支撑平台。提供RS232、RS485等串口(可选)通讯接口,可直接连接串口设备,实现数据的透明传输功能。
硬件拆解:
壳子设计比较巧妙,类似铆接。
插接 6针F2EDG 3.81MM插拔式接线端子,两组电源,一个地,一组RS232收发引脚。内部电路PCBA如下:
1.电源模块:
根据外壳上电压DC:9~40V,温度:-35~75度。宽电压供电。根于万用表测量。一级DC-DC降压首先降低到5V,5V再转为3.7V电压。
根于电源芯片封装SOT-23-Thin-6,首先想到的是Ti TPS56320X。这款IC立创报价不到4毛。TPS56320XDDCR型号稳压器是采用6引脚SOT-23封装的简单易用型2A和3A同步降压转换器,此器件被优化为使用尽可能少的外部组件即可运行,并且可以实现低待机电流。这款元器件可以应用于数字电视电源、高清 Blu-ray Disc播放器、网络家庭终端设备、数字机顶盒等领域。
设计电路图:
PCB设计参考:
但是
国产品牌JW5033S可替换,一款电流模式单晶片降压电压转换器JW5033S的输入范围为3.7V-18V,可提供2A的连续输出电流和两个集成的N沟道MOSFET。在轻负载时,稳压器以低频工作,以保持高效率和低输出纹波。JW5033S通过短路保护,热保护,电流失控保护和输入欠压锁定保证了稳定性。JW5033S采用6引脚TSOT23-6和SOT563封装,提供外部元件简单的紧凑解决方案。
但是根据规格书介绍:
Input Voltage Range: 4.5 V to 17 V • Output Voltage Range: 0.76 V to 7V
输入电压范围:4.5 V至17 V•输出电压范围:0.76 V至7 V。不符合9~40宽电压输入。
不满足。
看到JW丝印,于是想到国产杰华特品牌,在电源管理芯片和信号链芯片领域有所建树的公司。其产品主要分为这两大类,其中电源管理芯片产品包括AC-DC芯片、DC-DC芯片、线性电源产品、电池管理芯片等子类别;信号链芯片则包括检测芯片、接口芯片、转换器芯片、时钟芯片和线性芯片等子类别。
通过官网搜索:JW5126,满足宽电压设计需求。但是输出电流太小,只有200mA.
JW5126 是一款基于迟滞模式方案的单片降压开关稳压器。 JW5126 在 4.5V~65V 的输入范围内工作,通过一个集成的 N 沟道 MOSFET 和一个集成的 P 沟道 MOSFET ,但是输出电流太小只有 200mA 的连续输出电流。
5V转3.7V 电源采用AMS1117 ADJ LDO芯片,是一个翰出电流达到1A的三端输出低电压差线性稳压器,有1.2V、1.8V、2.5V3.3V、5.0V及可调输出电等各种版本,1A电流时压降仅为1.2V。以其优良的性能和极度的经济性能,适用于各种电器产品。限流功能,过热保护功能。
有固定输出电压1.2V、1.8V、2.5V、3.3V、5.0V及可调节输出电墨版本。温度范图:-40℃~+125℃.
2.
Air780EX是一款基于移芯EC618平台设计的LTE Cat 1无线通信模组。 支持FDD-LTE/TDD-LTE的4G远距离无线传输技术。另外,模组提供了USB/UART/I2C等通用接口满足IoT行业的各种应用诉求。 属于小尺寸4G-Cat.1系列。该模组支持中国移动、电信、联通三大运营商全网通,并兼容模组行业1618经典封装,适用于多样化的物联网终端。Air780系列模组具备高集成封装、多焊盘管脚、多种接口支持等特点,同时提供极致的低功耗性能,适合长期连接待机场景。其中,Air780EP和Air780EPV是该系列中的两款主要模组。Air780EP仅支持4G通信,而Air780EPV则支持4G通信以及VoLTE通话功能,从而满足了不同应用场景的需求。合宙的Air780系列无线通信模组凭借其出色的性能、广泛的应用场景和强大的技术支持,为物联网领域的发展注入了新的活力。合宙是一家专业提供物联网无线通信解决方案技术产品和服务的高科技企业,成立于2014年5月。其核心技术团队在通信模块的嵌入式开发领域具有丰富经验,并专注于IoT平台及Luat二次开发平台。合宙自主研发了多种无线通信模块,包括Luat 2G/4G系列模块,这些模块被广泛应用于无线支付、车载跟踪、工业DTU、公网对讲、共享支付等场景。
Air780EX模块功能框图 :
模块特性:
Air780核心电路设计:参考电路完整版见附件
作为数据传输单元(Data Transfer Unit),Air780 DTU的主要功能包括数据采集、传输、远程控制和数据存储。它可以连接各种传感器和仪器设备,采集现场数据如温度、湿度、压力、流量等,并通过无线通信方式将这些数据传输到云平台或远程服务器。同时,它也可以接收来自云平台或服务器的控制信号,对现场设备进行远程控制和调节。
在配置参数方面,Air780 DTU提供了灵活的选择。它支持使用本地串口进行配置,也可以使用Web服务器进行配置。用户可以根据实际需要选择其中一种方式,并确保两种方式中只有一个生效。
- 功能测评:
四个指示灯意义:POW灯常亮。使⽤内置卡时,NET灯以2秒内快闪两次指示,使⽤外置卡时,NET灯以2秒闪⼀次的频率指示。LINK灯在通信建⽴后常亮,连接断开后常灭。DATA灯在有数据收发时闪烁。
- TCP/UDP透传
TCP透传和UDP透传功能的测试。测试步骤如下。 使⽤浏览器打开合宙提供的LuatOS ⽹络测试⼯具,链接:
http://netlab.luatos.com/ 右上⻆单机“打开TCP”,获取⼀个TCP SERVER的服务器地址和端⼝。
- TCP/UDP透传
Air780 DTU是一款功能强大、易于配置的无线数据传输设备,能够满足各种行业领域的需求,如工业自动化、智能建筑、产品实现RS232、485串⼝和4G⽆线⽹络之间的双向半双⼯透明传输功能,可以选择TCP/UDP/MQTT等协议类型实现⽹络数据的传输,⽀持灵活的注册、⼼跳、topic发布订阅设置等功能,⼴泛应⽤于电⼒、⽔利、⽯油化⼯、市政、环保、农业等物联⽹应⽤场所,实现⽹络和串⼝设备的通讯、采集、控制等功能
无线数据终端DTU模块在物联网通讯行业中发挥着重要作用,为各种串口设备提供了便捷、高效的无线数据传输解决方案。
软件设计:
Air780 DTU的Lua软件设计架构通常旨在提供一个灵活且易于配置的数据传输解决方案。Lua作为一种轻量级且易于嵌入的脚本语言,非常适合用于DTU这类设备的软件设计。以下是一个基于Lua的Air780 DTU软件设计架构的参考:
4.1、总体架构
Air780 DTU的Lua软件设计架构主要包括以下几个部分:
1)Lua运行环境:提供Lua脚本的解析和执行环境,包括Lua解释器、基础库函数等。
2)Lua API接口:定义一系列API函数,用于Lua脚本与底层硬件和操作系统层的交互。
3)Lua脚本应用:编写具体的Lua脚本应用,实现数据采集、处理、传输等业务逻辑。
4.2、Lua API接口
Lua API接口是Lua脚本与底层硬件和操作系统层进行交互的桥梁。这些接口通常包括以下几类:
1)硬件操作接口:提供GPIO控制、串口通信、ADC/DAC读取等硬件操作功能。
2)网络通信接口:实现TCP/IP、UDP等网络通信协议,提供数据的发送和接收功能。
3)数据处理接口:提供数据解析、转换、存储等处理功能。
4)配置管理接口:允许Lua脚本读取和修改DTU的配置参数。
4.3、Lua脚本应用
Lua脚本应用是实现具体业务逻辑的部分。根据实际需求,可以编写多个Lua脚本文件,每个文件负责特定的功能。例如:
数据采集脚本:通过调用硬件操作接口,采集传感器数据或其他信息。
数据处理脚本:对采集到的数据进行预处理、分析、转换等操作。
数据传输脚本:使用网络通信接口,将数据发送到指定的接收方或上传至云平台。
4.4、配置与管理
为了方便配置和管理,可以设计一个统一的配置文件或远程管理接口。Lua脚本在启动时读取配置文件,获取必要的参数和设置。同时,可以通过远程管理接口实时调整DTU的工作状态和参数。
4.5、扩展性和可维护性
为了提高Lua软件架构的扩展性和可维护性,可以采取以下措施:
模块化设计:将Lua脚本划分为多个模块,每个模块负责特定的功能。通过模块之间的协作,实现整体的业务逻辑。
接口标准化:制定统一的Lua API接口规范,确保接口的稳定性和易用性。
日志与调试:实现日志记录功能,记录关键操作和异常信息,方便问题的排查和调试。
文档化:编写详细的文档,说明Lua API接口的使用方法和注意事项,降低开发门槛和提高开发效率。
通过以上架构设计,可以基于Lua语言为Air780 DTU构建一个灵活、易扩展且易于维护的软件系统。
- PROJECT = "NET-LTE-DTU"
- VERSION = "1.0.3"
- PRODUCT_KEY = "5XoC6f6tSEHw3rwdYzJRw77mJbYIomgI"
- log.info("main", PROJECT, VERSION)
- _G.sys = require("sys")
- _G.sysplus = require("sysplus")
- require("init")
- require("mqttmodule")
- require("uartmodule")
- require("tcpmodule")
- require("testmodule")
- local libfota = require("libfota")
- --require("mqcpmodule")
- log.style(2)
- -- 判断wdt
- if wdt then
- -- 添加硬狗防止程序卡死,在支持的设备上启用这个功能
- wdt.init(9000) -- 初始化watchdog设置为9s
- sys.timerLoopStart(wdt.feed, 3000) -- 3s喂一次狗
- end
- function libfota_cb(result)
- log.info("fota", "result", result)
- -- fota成功
- if result == 0 then
- rtos.reboot() --如果还有其他事情要做,就不要立刻reboot
- end
- end
- --检测升级
- -- 联网后会发一次这个消息
- sys.subscribe("IP_READY", function(ip, adapter)
- log.info("mobile", "IP_READY", ip, (adapter or -1) == socket.LWIP_GP)
- sys.taskInit(function()
- libfota.request(libfota_cb)
- end)
- end)
- --初始化必要流程
- initDevice()
- --gpio控制操作
- sys.taskInit(gpioLoop)
- --初始化数据库
- local workMode, dbStatus = initConfig()
- if dbStatus then
- log.info("main" .. "数据库初始化成功:")
- --初始化串口
- uartInitData = initUart()
- end
- if uartInitData then
- log.info("main" .. "串口初始化成功:" .. uartId)
- end
- --5是5500 1 是 sim卡,sim卡和5500网络状态注册监听
- sys.subscribe("IP_READY", function(ip, adapter)
- log.info("ipready", ip, adapter)
- if adapter == 1 then
- is4GConnect = true
- elseif adapter == 5 then
- isW5500Connect = true
- end
- end)
- sys.subscribe("IP_LOSE", function(adapter)
- log.info("iplose", adapter)
- if adapter == 1 then
- is4GConnect = false
- pm.reboot()
- elseif adapter == 5 then
- isW5500Connect = false
- pm.reboot()
- end
- end)
- --初始化数据库和工作模式
- sys.taskInit(function()
- repeat
- sys.wait(3000)
- local workMode, dbStatus = initConfig()
- if workMode and dbStatus then
- log.info("数据库初始化完成")
- print("配置数据正常", workMode, dbStatus)
- --1:mqtt-dtu 2:tcp-dtu 2:mqcp
- if workMode == 1 then
- log.info("运行MQTT-DTU模式")
- initMqttConfig()
- elseif workMode == 2 then
- log.info("TCP/DTU-DTU")
- initTcpConfig()
- end
- elseif workMode == false and dbStatus then
- log.info("未配置模式")
- initTestMqttConfig()
- else
- print("配置数据不正确", "workMode", workMode, "dbStatus", dbStatus)
- end
- until dbStatus
- end)
- sys.run()
- 返回顶部