tag 标签: 嵌入式硬件

相关帖子
相关博文
  • 2025-2-9 14:23
    38 次阅读|
    0 个评论
    本文说的所谓的心跳包就是(探测性的)数据包,之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 最大的作用就一句话,就是告诉服务器: 我还活着,别给我踢下线了。 1.为什么需要心跳? 4G物联网设备受限于自身工作环境的影响,极有可能发生网络不稳定的情况。 例如: 人多的环境中,为了保证人联网的及时性,物联网设备的通讯优先级会被运营商调低,极有可能出现多个物联网设备互相竞争4G通讯通道,或者与手机等人联网设备竞争网络通道的情况。 再比如: 野外环境下,本身就人烟罕至的地方,运营商基站覆盖弱。 又或者 : 半夜运营商降低基站发射功率来省电,或者半夜进行基站的维护。 还有可能: 服务器遇到特殊情况进行维护升级,没有及时通知物联网设备,导致设备一直进行重连/数据重传等操作,耗尽了物联网卡的流量。 以上等等诸如此类的意外情况,都会使本来正常环境下能联网的4G物联网设备,突然断网,导致服务器长期收不到模组发过来的数据或者模组收不到服务器发过来的数据,进而导致数据延迟、丢失,最终导致用户资产受损。 所以在客户端/服务器设计之初,都会设计一个心跳机制,用来处理服务器/网络异常的情况。 ▼ 4G模组心跳设置 ▼ 如果使用AT固件: 可以参考如下指令设置心跳: 1)AT+CIPTKA 2)AT^HEARTCONFIG 具体的参数参考的AT指令集,可以设置心跳内容、心跳周期等。 如果使用LuatOS固件: 可以使用socket.config接口: 接口参数设置详见: https://wiki.luatos.com/api/socket.html 也可以使用sys.timerLoopStart函数: 创建一个定时器,进行心跳包的传输。 2.推荐的心跳间隔 一般来说,人联网的设备,对实时性要求较高,所以一般人联网的设备,根据实际业务的实时性不同,一般心跳间隔时间也从5秒~40秒不等。 物联网设备的实时性要求大多数都不是很高, 所以一般来说1分钟/2分钟/3分钟/5分钟也就够用了, 可以根据真实的使用场景,以及服务器能够承载的冗余链路数量决定具体的心跳间隔。 如果你使用的是阿里云/腾讯云等可靠的物联网平台,也可以适当拉长自己的心跳周期。例如:阿里云物联网平台推荐的心跳为300秒以上,最长为1200秒。 值得一提的是,心跳间隔时间越短,同等时间内,模组耗电越多。为了节约流量和省电,对大多数物联网设备来说,并不是真的会在用户设定的心跳间隔时间时给服务器发送心跳—— 真正发送心跳包的间隔时间,往往是用户设置的1.5倍时长, 这是心跳机制决定的。 3.如果不用心跳,服务器怎么设计 一般来说,用户使用的是TCP协议或者基于TCP的MQTT这种长连接协议。 如果客户对功耗比较看重,既希望能保持长连接,又不希望在没有数传的时候发送心跳数据导致功耗上升,可以与服务器进行协商, 将定时的数据报文,当作应用层心跳报文。 如果上下两包数据接收时间小于设置的应用层心跳时间, 则在下一包数据收到以后,检测心跳周期的定时器事件重置。 注意:此种方式仅限于数传间隔较小(15分钟内)的情况。 当然,如果对数据传输的完整性不做严格要求,也可以将自己通讯协议改为UDP。 4.不用心跳方式的弊端 TCP协议层是有默认两小时的心跳机制,但是这会造成服务器有时需要处理大量的TCP冗余链接, 所以一般服务器都会和客户端协商,启用应用层心跳。 如果没有服务器心跳,4G模组和4G基站之间也是需要一个心跳机制的——因为4G模组不是直接跟服务器连接的,而是通过NAT(即网络地址转换)与服务器连接,NAT就是网络地址转换。 NAT会维护一个映射表,这个映射表会定时检查 。如果10分钟内这路socket跟服务器没任何数据往来,就会回收这路的地址,10分钟后应用上再发数据就找不到路由地址了,也就是常说的和服务器断开了链接;如果10分钟内有数据更新,计时器会重新置为10分钟。 如果不需要和模组保持长连接,且不怎么需要和服务器进行交互,半小时甚至更久: 那么可以考虑使用HTTP等链接方式,或者参考4G模组【PSM+超低功耗】教程。
  • 2025-2-9 14:20
    41 次阅读|
    0 个评论
    今天是以Air724UG模组为例,轻松攻克低功耗4G模组软件的FTP示例。 一、简介 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。 FTP 协议包括两个组成部分,其一为 FTP 服务器,其二为 FTP 客户端。其中 FTP 服务器用来存储文件,用户可以使用 FTP 客户端通过 FTP 协议访问位于 FTP 服务器上的资源。在开发网站的时候,通常利用 FTP 协议把网页或程序传到 Web 服务器上。此外,由于 FTP 传输效率非常高,在网络上传输大的文件时,一般也采用该协议。 默认情况下 FTP 协议使用 TCP 端口中的 20 和 21 这两个端口,其中 20 用于传输数据,21 用于传输控制信息。但是,是否使用 20 作为传输数据的端口与 FTP 使用的传输模式有关,如果采用主动模式,那么数据传输端口就是 20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。 二、演示功能概述 本教程教你如何使用开发板登录 FTP 服务器访问服务器资源。 功能定义: 1、登录 FTP 服务器 2、读取服务器上的文件资源 3、在 FTP 服务器上创建目录 三、准备硬件环境 3.1 开发板准备 使用 EVB_Air724 开发板,如下图所示: 此开发板的详细使用说明参考: https://docs.openluat.com/air724ug/product/ Air724UG 产品手册中的《EVB_Air724UG_AXX 开发板使用说明》,写这篇文章时最新版本的使用说明为:《EVB_Air724UG_A14 开发板使用说明》;开发板使用过程中遇到任何问题,可以直接参考这份使用说明文档。 api文档: https://doc.openluat.com/wiki/21?wiki_page_id=2068 3.2 数据通信线 USB 数据线一根(micro USB) 3.3 PC 电脑 WIN7 以及以上版本的 WINDOWS 系统。 3.4 SIM 卡 中国大陆环境下,可以上网的 SIM 卡。一般来说,使用移动,电信,联通的物联网卡或者手机卡都行。 3.5 组装硬件环境 USB 数据线插入 USB 口,另一端与电脑相连,拨码开关全部拨到 ON,串口切换开关选择 UART1,USB 供电的 4V 对应开关拨至 ON 档,SIM 卡放到 SIM 卡槽中锁紧,如下图所示。 四、准备软件环境 4.1 下载调试工具 使用说明参考: Luatools下载和详细使用: https://docs.openluat.com/Luatools/ 4.2 源码及固件 1)底层 core 下载 下载底层固件,并解压 链接: https://docs.openluat.com/air724ug/luatos/firmware/ 如下图所示,红框的是我们要使用到的 本教程使用的 demo 见附件: https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/ftp 4.3 下载固件和脚本到开发板中 打开 Luatools,开发板上电开机,如开机成功 Luatools 会打印如下信息。 点击项目管理测试选项。 进入管理界面,如下图所示。 点击选择文件,选择底层固件,我的文件放在 D:luatOSAir724 路径中 点击增加脚本或资源文件,选择之前下载的程序源码,如下图所示。 点击下载底层和脚本,下载完成如下图所示。 4.4 FTP 服务器 本文测试用的服务器的地址,端口号,用户名,密码为: "121.43.224.154",21,"ftp_user","3QujbiMG"。 如果使用其他服务器请自行修改。 五、代码示例介绍 5.1 API 说明 ftp 的 API 在 LuatOS lib 有做封装,建议直接用 lib 的 API 接口。 5.2 ftp_test.lua 代码 系统启动后演示 5 秒,登录 FTP 服务器,等待登录成功后,查看服务器信息、显示目录下文件、显示文件详细信息、显示工作目录、创建目录等操作。 下载 ftp 服务器的文件至 sd 卡目录,/1040K.jpg", "/sdcard0/1040K.jpg" 从 sd 卡目录上传文件至服务器,/sdcard0/ftp_lib_test_up.txt" 在 ftp_test.lua 这个文件中将登录中的地址,端口号,用户名,密码等必要信息修改为自己服务器的。 5.3 main.lua 代码 本代码为主程序脚本,系统启动后首先会对 4G 网络进行配置,然后加载 FTP 测试模块。 六、开机调试 6.1 开发板开机 连接好硬件并下载固件后,启动 Luatools 软件,系统运行信息将显示在界面中。红框中为开发板连接到 PC 机后正常打印的信息,如下图所示。 6.2 FTP 调试 FTP 登录服务器,并且获取信息。 显示目录下的文件 创建目录/ftp_test 下载 ftp 服务器的文件 下载成功返回 200。 下载前 FTP 服务器的数据如下: 下载文件的打印日志信息: 上传文件至服务器 上传成功返回 200。 上传成功后 FTP 服务器的数据如下: 上传文件打印日志信息: 七、常见问题 7.1 关于不支持主动模式 : 模块 ftp 默认是被动模式,不支持主动模式,无法设置主动模式,公网下要想模块正常连接服务器,服务器肯定不能设置为主动模式,否则哪家模块都不能用。 7.2 发送带 0x0d 0x0a 这些数据会丢失 需要通过 ftp.checktype(“I”,0)设置为二进制方式传输文件,否则传输过程中会丢弃换行符。
  • 2025-2-9 14:14
    32 次阅读|
    0 个评论
    Air700E开发板+毫米波雷达,手搓一个开箱即用的睡眠监测仪不是梦! 今天特别分享**@zomco**大佬的“基于毫米波雷达的睡眠监测仪”作品。 一、项目原理及硬件制作 毫米波是指频率范围从30-300GHz的电磁波,它的波长很短,雷达发射的毫米波会随人体反射回来,同时人体微小的移动会改变毫米波。有了这些变化,雷达可以计算出人体移动的距离速度以及方向。 - 项目原理 毫米波雷达测人体胸腔起伏,根据起伏计算心率和呼吸频率,然后通过算法推算睡眠状态,使用手机小程序读取和展示数据。 ​ 相比市面上的手环,毫米波雷达无需佩戴即可实现无感体验的隐形 监测 。 主要物料 本文睡眠监测仪主要硬件物料包含:毫米波雷达R60ABD1、合宙Air700E开发板、传感器(AHT20、BH1750等等)、底板和外壳。 除了底板需要打板和外壳需要3D打印, 其他零件都可以在网上购买组装。 01. 毫米波雷达R60ABD1: 常见的毫米波雷达有24/60/77GHz三种,原理上频率越高,雷达感知的微动幅度越小。这款60GHz自带睡眠监测功能的毫米波雷达,它很接近我的想法。 ​ 02. Air700E开发板: 按照以往经验,睡眠监测仪最简单直接的做法是,找一块开发板连上雷达串口,将雷达数据通过蓝牙转发出去,客户端通过蓝牙读取雷达数据,然后展示出来。 但为了让家里的老人也能用,我打算加上远程看护的功能, 所以这里要改用可以Wi-Fi或者4G通信的开发板,还要部署一套存放和查询数据的后端服务。 ​ 虽然我对开发板选型没有任何偏好,但觉得有必要把吃灰的羊毛利用起来——以前入手的合宙Air700E开发板不仅性价比高,而且可以用Lua写嵌入式,特别适合。 03. 自制底板(可选): 自制的底板用于整合Air700E开发板、毫米波雷达R60ABD1和其他传感器(AHT20、BH1750等等)。 ​ ​ 所以其实 即使没有底板,用杜邦线连接它们,然后刷入固件,也可以在小程序验证毫米波雷达的睡眠监测能力。 不过为了避免验证过程中发生各种问题,我还是建议用底板验证。 04. 自制外壳(可选): 设计外壳时,要注意 到雷达的距离最好是半波长的整数倍; 加上USB口和按键,硬件图形就出来了。为了方便调试,外壳保留了开发板上的开机键和关机键。 ​ - 硬件组装 - 拿到板子开始组装,先焊接元器件和Air700E开发板,再装雷达。可以看到堆叠后雷达和Air700E开发板还有一点点距离,雷达性能应该不会有太大影响。 ​ ​ 安装外壳也是很简单,几乎不可能犯错。上好螺丝之后,测试一下按键有没有问题,到这里硬件算是完成了。 - 开源链接 - 目前基于毫米波雷达的睡眠监测仪项目硬件,已在立创平台开源。可通过原工程链接获取项目相关详细操作步骤、注意事项,以及原理图、PCB等最新文件: 原工程链接: https://oshwhub.com/zomco/MR60LT0 开源协议: CERN Open Hardware License 二、功能实现及效果测试 ​ LuaTools工具下载: https://wiki.luatos.com/pages/tools.html 项目最新固件下载: https://oshwhub.com/zomco/MR60LT0 - 功能实现 - 项目代码嵌入式部分, 我直接用合宙官方的模板工程。删掉不需要的代码,加上雷达串口通讯相关代码。雷达协议并不复杂,心率、呼吸频率、体动是实时上报的,所以比较好调试。而睡眠数据每10分钟才上报一次,调试会比较困难。 后端部分主要分三块: 从雷达拿数据存到数据库 提供历史数据查询接口 提供实时数据查询接口 对接雷达的部分会麻烦一些,其他都是很简单的增删查改。 前端部分 我直接参考小米运动的设计,除了要有查看历史数据和实时数据的页面,还需要有调整雷达和绑定雷达的入口。到这里软件也好了,可以测试一下效果。 - 效果测试 - 01. 绑定设备: 插卡开机,等待指示灯常绿。长按绑定键,雷达进入绑定状态;然后打开 小程序****OWR Care, 扫描开发板表面的二维码,等待绑定完成。调整雷达位置,确保雷达距离合适。 ​ ​ 02. 心率测试: 我们先看看实时数据,心率测试结果和手环的有一些偏差,但也不是太离谱: ​ 03. 睡眠测试: 睡眠数据要等睡醒才会有,而且 雷达只能做单人睡眠监测。 但我没有这样的测试条件,这里只好先给出双人监测测试结果,最后我测了三组数据: ​ 有几个地方需要注意: 首先因为睡眠数据的上报,频率是10分钟一次,所以 雷达计算睡眠时长最小单位是10分钟。 其次,手环可以测出快速眼动期时长,雷达则不能;雷达会计算清醒时长而手环就没有。最后我无法确认手环和雷达对睡眠状态定义是否一致,也无法得知他们的结果是否能反映实际情况。 但至少从三组数据可以看出, 手环和雷达测得的睡眠时长,总体上接近实际时长。 第三组数据偏差较大,估计在双人监测场景,雷达无法区分哪个人先睡或者先醒,直接将睡眠时长叠加计算了。 考虑到项目定位不是医疗器械,我觉得这种偏差是可以接受的,使用几天整体感受也是很好。 - 待改进完善 - ​ 指示灯太亮: 挂在床头就有点光污染,不过可以将外壳做厚避免透光,但我估计会影响雷达性能。当然,最好的办法是换其他材质的外壳。 雷达自身算法也可以再优化一下: 实测发现,有吹风干扰的时候,雷达会误判有人在睡觉,或者雷达安装角度不够,有时候会没有数据,不知道厂商那边有没有升级计划。 总体上看,个人认为雷达使用体验比手环好多了,它更符合用户长期使用的习惯,要回查睡眠数据也是很方便。 如果你也对毫米波雷达睡眠监测仪感兴趣,不妨自己试试DIY~
  • 2025-2-9 14:05
    36 次阅读|
    0 个评论
    今天,我们来学习低功耗4G模组 Air780E 的RS485通信,同学们,你学习了吗? 一、RS485简介 物联网(IoT)在工业场景中的应用越来越广泛,而RS485是一种常见的通信协议,广泛应用于工业自动化和物联网系统中。 RS485是一种串行通信标准,主要用于长距离、多节点通信。适用于工业环境中的传感器、执行器、控制器等设备之间的数据传输,且支持多点通信,可以连接多个设备,实现分布式控制。因为具有较好的抗干扰能力,也很适用于噪声环境下的通信。 比如:在RS485通信中,通常使用一个引脚(如A或RX)作为发送引脚,另一个引脚(如B或TX)作为接收引脚。当发送数据时,发送引脚输出高电平或低电平,接收引脚不工作;当接收数据时,接收引脚输出高电平或低电平,发送引脚不工作。有的也有单独一根线专门用于控制收发逻辑,输出高低电平,负责管理RS485的通讯,包括发送、接收、处理错误等数据。 RS485支持长距离传输,通常可达1200米,适用于工业现场中的远程监控和控制。 RS485是一种半双工通信协议。半双工通信协议允许数据在两个方向上传输,但同一时间只能在一个方向上传输数据。在RS485通信中,当发送数据时,只能发送数据而不能接收数据;当接收数据时,只能接收数据而不能发送数据。 优点 : 抗干扰能力强:RS485采用差分信号传输,抗干扰能力强,适用于工业环境中的噪声干扰。 传输距离远:RS485支持长距离传输,适用于工业现场中的远程监控和控制。 多节点通信:RS485支持多点通信,可以连接多个设备,实现分布式控制。 兼容性好:RS485是一种标准化的通信协议,具有较好的兼容性,可以与其他设备进行通信。 成本较低:RS485模块和电缆的成本相对较低,适用于工业现场中的成本控制。 缺点 : 信号衰减:随着距离的增加,信号衰减会加剧,影响通信质量。 速率限制:RS485的传输速率相对较低,通常在9600bps到115200bps之间,适用于低速数据传输。 电气特性要求:RS485对电气特性有较高的要求,需要使用特定的电缆和连接器。 布线复杂:RS485需要使用双绞线进行布线,布线复杂度较高。 二、初始化uart 2.1 适配485串口 ​ 三、注册接收数据的回调函数 ​ 四、发送数据 发送普通字符串: ​ 发送十六进制的数据串: ​ 通过zbuff的方式发送数据: ​ 发送json格式的数据: ​ 五、完整例程 ​ 以上是低功耗4G模组Air780E的RS485通信介绍!
  • 2025-2-9 14:01
    41 次阅读|
    0 个评论
    今天我们来讲解低功耗4G模组 Air780E 的串口通信的基本用法,小伙伴们,学起来吧! 一、硬件准备 780E开发板一套,包括天线、USB数据线。 ​ USB转TTL工具或线(例如ch340、ft232) PC电脑,串口调试工具(例如:llcom、sscom 二、基本用法 2.1 介绍UART(串口) ​ UART(通用异步接收器/发送器)是一种串行通信协议,因其多功能性和简单性而被广泛使用。与 I2C 和 SPI 不同,UART 只需要两条线即可运行:TX(发送)和 RX(接收)。该协议允许异步通信,也就是说发送器和接收器之间无需共享时钟。数据被组织成数据包,每个数据包包含一个起始位、5 到 9 个数据位、一个可选的奇偶校验位和一个或两个停止位。 优点: 简单:UART通信协议相对简单,易于实现和调试。 适用性广泛:UART被广泛应用于各种设备之间的通信,具有较好的兼容性。 距离:UART通信距离较远,适用于需要长距离传输的场景。 缺点: 速度较低:UART通信速度相对较低,不适用于对速度要求较高的应用。 双工:UART通信是双工的,可以进行低速双工传输数据,进行数据的发送和接收。 不可靠:由于UART是异步通信,可能会受到噪声和干扰的影响,导致数据传输不可靠。 2.2 接线 780E模块上有2个通用串口,和1个输出DBG日志串口,本文内容包含对main_uart和aux_uart,这2个通用串口的使用方式。 模块引脚 模块 连接mcu或串口线 18 main_uart_tx uart_rx 17 main_uart_rx uart_tx 29 aux_uart_tx uart_rx 28 aux_uart_rx uart_tx 三、操作步骤 3.1初始化uart ① 使用MAIN_UART(uart1)串口 ​ ②使用AUX_UART(uart2)串口 ​ 3.2 注册接收数据的回调函数 ​ 3.3 发送数据 发送普通字符串 ​ ![]("点击并拖拽以移动" 发送十六进制的数据串 ​ 通过zbuff的方式发送数据 ​ 发送json格式的数据 ​ 3.4 完整例程 ​ 代码运行结果 : ​ 好了,以上是低功耗4G模组Air780E的串口通信的基本用法介绍
相关资源