合宙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:

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

4G模组PSM+超低功耗,手把手教你!的更多相关文章

  1. 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

    摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...

  2. 手把手教你搭饥荒专用服务器(三)—MOD及其他高级设置

    友情链接: 手把手教你搭饥荒专用服务器(一)-服务器准备工作 手把手教你搭饥荒专用服务器(二)-环境配置及基本使用 手把手教你搭饥荒专用服务器(三)-MOD及其他高级设置 手把手教你搭饥荒专用服务器( ...

  3. 手把手教你用vue-cli搭建vue项目

    手把手教你用vue-cli搭建vue项目 本篇主要是利用vue-cli来搭建vue项目,其中前提是node和npm已经安装好,文章结尾将会简单提到一个简单的例子.使用vue-cli搭建项目最开始我也是 ...

  4. 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群

    手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...

  5. [原创]手把手教你写网络爬虫(4):Scrapy入门

    手把手教你写网络爬虫(4) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 上期我们理性的分析了为什么要学习Scrapy,理由只有一个,那就是免费,一分钱都不用花! 咦?怎么有人扔西红柿 ...

  6. [原创]手把手教你写网络爬虫(7):URL去重

    手把手教你写网络爬虫(7) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 本期我们来聊聊URL去重那些事儿.以前我们曾使用Python的字典来保存抓取过的URL,目的是将重复抓取的UR ...

  7. 【转】手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...

  8. 手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...

  9. 手把手教你如何玩转Activiti工作流

    手把手教你如何玩转Activiti工作流 置顶 2018年01月30日 19:51:36 Cs_hnu_scw 阅读数:24023   版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  10. 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo

    上篇小弟分享了几个“即席查询与分析”的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的“手把手教你搭建即席查询与分析Demo”啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货 ...

随机推荐

  1. 什么是淘宝API?

    ​ 淘宝API是淘宝开放平台提供给开发者的一系列应用程序编程接口,它们允许开发者访问和使用淘宝的数据和服务.通过这些API,开发者可以构建应用程序,实现商品信息检索.订单管理.用户行为分析.物流跟踪等 ...

  2. MacPorts 使用

    安装 安装苹果命令行开发工具: xcode-select --install 下载并打开 MacPorts 安装包. 使用 MacPorts 中的软件包称为 port. sudo port selfu ...

  3. 基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型

    基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型 UIE模型简介 UIE优势 应用示例 UIE开箱即用 UIE适用抽取示例 命名实体识别(Named Entity Recognit ...

  4. ERR_INVALID_REDIRECT

    原因为: response.sendRedirect(url) url地址写错了

  5. 万字长文带你窥探Spring中所有的扩展点

    写在前面 Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片.Springboot更是封装了Spring,遵循约定大于配置,加上自动装配 ...

  6. Serilog文档翻译系列(四) - 结构化数据

    Serilog 是一种序列化器.在许多情况下,它具有良好的默认行为,能够满足其目的,但有时也需要指示 Serilog 如何存储附加到日志事件上的属性. Serilog 使用一些不寻常的术语来指代 .N ...

  7. 这些年没来得及学习的一些 HTML5 标签

    认识并学习下还没来得及学习的一些 HTML5 标签 <ruby> 标签 HTML <ruby> 元素被用来展示东亚文字注音或字符注释. 比如: <ruby>兄弟&l ...

  8. SpringMVC —— 入门案例执行流程

    启动服务器初始化过程 1.服务器启动,执行ServletContainersInitConfig类,初始化web容器    2.执行createServletApplicationContext方法, ...

  9. [OI] 平衡树

    1. 二叉查找树 二叉查找树的思想和优先队列比较像,都是把若干个数据按一定规则插到一棵树里,然后就可以维护特定的信息. 在优先队列的大根堆实现里,我们让每棵子树的根节点都大于它的儿子,这样就可以保证根 ...

  10. Autodesk 3d Max2020 初始化闪退

    事件起因:给同事安装完 Autodesk 3d Max2020 版本之后,软件初始化就闪退,后来在网上查了资料后解决. 解决办法如下:services.msc --> Autodesk 开头的服 ...