4G模组PSM+超低功耗,手把手教你!

news/2024/10/15 7:39:29

 合宙4G-Cat.1模组支持三种功耗模式:

  • 常规模式

  • 低功耗模式

  • PSM+模式

用户可以根据不同的应用场景,按需选择不同的合宙4G-Cat.1模组功耗模式,以及三种功耗模式之间的相互转换。

合宙4G-Cat.1模组优异的低功耗表现,既有来自硬件设计的加持,也有软件协议算法的帮助。除实验室数据外,合宙更关注实网环境下的功耗表现,呈现给用户的效果更多以实网在线表现为准。

 

图片

 

图片

很多客户的实际应用场景,是不需要和服务器保持长连接的,一天甚至一周上传一两次数据,就能满足实际的项目需求了。

如果用合宙推荐的第二种低功耗模式,有些大材小用,针对这种情况——可以使用PSM+模式。

今天,带大家过过PSM+模式下——LuatOS开发代码。

 

 

一、主要硬件准备

这里大致说下需要准备的硬件条件:

  • 合宙Air780E全IO开发板一块:
    测试前需要将开发板上端USB下方的C2处ESD吹掉,要不会有大约20微安的漏电流。

  • 支持数据传输的USB线一根;

  • 一个可调电源:
    可调电源最好是能精确的捕捉到μA电流的电源,本次笔者使用的是合宙自研的Air9000P手持可调电源。

 

图片

 

二、PSM+超低功耗示例源码下载

本文示例中用到的代码,可以在这里gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/pm

需要用的代码在“780E_Lowpower”文件夹目录下:

 

图片

如果您手上是其他模组,如Air780EP或者Air780EPS,则可以查看Air780EP/Air780EPS对应仓库下的pm文件夹

 

三、PSM+超低功耗示例源码

接下来,我们开始进行PSM+超低功耗示例源码的大致讲解。

3.1  main.lua

LuatOS中,代码的起始位置是从main.lua第一行开始的,本文使用的是PSM+模式,所以打开第12行的注释,屏蔽第11行的代码。

 

图片

3.2  psm_plus.lua

1)设置服务器

进入psm_plus.lua可以看到:

 

图片

在这里,改成用户自己使用的服务器的IP/域名以及端口号;如果仅作测试,也可以使用合宙提供的测试服务器。

进入后选择打开TCP/UDP,根据用户服务器类型自行选择。

 

图片

打开后,如下图红框所示位置即是IP和端口号:

 

图片

local period = 3*60*60*1000 --3小时唤醒一次

这一句是唤醒时间的设置,时间设置唤醒的时间单位为ms。所以如果你有更长时间的唤醒需求,如一天唤醒一次,可以改动最前面的3为24。

特别提醒:
这个TCP服务器仅能当作测试来用,刷新一下网页或者你电脑网络有波动断网一下,就会断开,重新打开TCP端口就会变。

2)获取唤醒原因

 

图片

上面两句是获取了一下当前唤醒的原因,是正常开机,还是设置的定时器启动,或是串口/AGPIO唤醒。

3)testTask函数

直接拉到psm_plus.lua最后一行;其实上面所有的函数都是基于最后一行的task跑的:

 

图片

本句的意思是启动一个task,在task里运行第14行的testTask函数,并传入了d1Name这个变量,传入了netCB这个回调函数,以及给testTask传入了server_ip和server_port这两个参数。

接下来,我们看看testTask这个函数的前一小段:

 

图片

先判断了一下当前唤醒是什么原因唤醒的,并将对应原因赋值给了一个叫做txData的变量,并且判断了下是上电开机还是休眠唤醒。

如果是休眠唤醒,则主动退出飞行模式(因为模组在休眠的时候会进入飞行模式,减小因为可能的网络波动引起的功耗增大等异常)。

下面这一段就是与TCP服务器链接的全过程,如果链接失败会重连3次:

 

图片

 

图片

接下来这段配置了uart1的波特率为9600,方便外部串口设备从串口唤醒模组(注:9600状态下唤醒模组比较方便,如果是115200或其他波特率,可能需要发送多次数据才能走串口唤醒模组)。

如果不影响产品功能,需要将所有AGPIO在休眠状态下的高电平输出关闭,可以进一步节省耗电,比如本示例中对GPIO32的操作就是这一原因。

关于AGPIO和GPIO对应编号,如下图所示:

 

图片

 

图片

最后这段代码,启动了深度休眠也就是PSM+模式的定时器:

 

图片

后面的period参数,就是脚本最上面我们设置的定时休眠唤醒时间;后面进入飞行模式,是避免因为基站网络波动导致的异常功耗;然后,才真正进入了PSM+模式。如果进入不成功,15秒后会重启模组。

  • 如果是串口唤醒,那么服务器会收到”uart1 wakeup“的数据;

  • 如果是GPIO唤醒,那么服务器会收到"pad wakeup";

  • 如果是定时器唤醒,那么服务器会收到"timer wakeup";

  • 如果当前是上电开机去链接服务器,那么服务器会收到"normal wakeup"。

在没有数据发送的时候,模组实测待机功耗为下图的3μA:

 

 

图片

今天的内容就分享到这里啦,你学会了吗?

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

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

相关文章

Air780E篇:采集温湿度传感器数据,并网页查看

​ 今天我们学习合宙低功耗4G模组Air780E篇:采集温湿度传感器数据并实现网页查看,以下进入正文。 一、硬件装备 1.1 硬件连接 使用跳线帽将IO_SEL连接3.3V,给引脚供3.3V的电。dht11模块的out引脚连接780E开发板的一个引脚,具体哪个可以自己更改,这个demo中使用的是7号引脚…

干货分享:Air780E怎么连接华为云?

​ 众所周知,市面上有很多云平台,阿里云、腾讯云、中移OneNET、华为云、百度云、涂鸦云、TLink云等等......并且每家云平台都有自己的协议,工程师要移植不同的SDK代码或基于各家的手册文档对接不同的协议,看着都头大!!! 为解决繁琐的云平台开发困扰,合宙IoT_CLOUD应运而…

10.15

A.旋转吧 由于保证数据随机,所以枚举因数求就行,跑得很快。 B.雪 几天前的 A C.月 每遍历一个点都会使它的最短路数组减 1,用线段树优化枚举出点更新最短路的过程,看起来非常不可过,但这就是正解。花 \(\text{2-SAT}\) 计数膜拜,人类智慧暴力+随机化。 没改,但题解说复杂…

TestFlight下载App,加载图片失效。Xcode安装App,图片加载正常。

热烈欢迎,请直接点击!!! 进入博主App Store主页,下载使用各个作品!!! 注:博主将坚持每月上线一个新app!! 图片在Assets.xcassets中,UIImage *image = [UIImage imageNamed:@"图片名称"];[[UIImageView alloc] initWithImage:image];UIImageView *test = …

读数据工程之道:设计和构建健壮的数据系统09示例和类型

示例和类型1. 数据架构不是凭空设计的 1.1. 数据架构是一门抽象学科,所以它有助于通过示例进行推理 2. 数据仓库 2.1. 一个面向主题的、集成的、非易失性和时变的数据集合,以支持管理决策 2.2. 数据仓库是用于报告和分析的中央数据中心2.2.1. 数据仓库中的数据通常针对分析用…

快速搭建hadoop,zk,hbase的基础集群

1. ZK集群,Hadoop集群,Hbase集群安装Linux121 Linux122 Linux123Hadoop ✔ ✔ ✔MySQL✔ZK ✔ ✔ ✔HBASE ✔ ✔ ✔1.1 安装Vmware,安装虚拟机集群 1.1.1 安装 (VMware-workstation-full-15.5.5-16285975) 许可证: UY758-0RXEQ-M81WP-8ZM7Z-Y3HDA 1.1.2 安装 centos7123…

ShowMeAI-人工智能工具笔记-三-

ShowMeAI 人工智能工具笔记(三) Excel中级教程!(持续更新中) - P39:40)使用监视窗口 - ShowMeAI - BV1uL411s7bt在本教程中,我们将看看如何在Excel中设置监视窗口。你将看到它是如何工作的,以及它在你的Excel电子表格中有多么有用。所以这里我有一个简单的电子表格,包含…

ShowMeAI-人工智能工具笔记-六-

ShowMeAI 人工智能工具笔记(六) Python 3全系列基础教程,全程代码演示&讲解!10小时视频42节,保证你能掌握Python!快来一起跟着视频敲代码~<快速入门系列> - P17:17)函数进阶 - ShowMeAI - BV1yg411c7Nw好的,在这个视频中我们将深入探讨函数,特别是参数和不同的…