上海域格ASR平台4g模块低功耗应用指导_hhl_48384104的博客-程序员秘密_asr平台

技术标签: 嵌入式硬件  单片机  

上海域格ASR平台4g模块低功耗应用指导

1.普通休眠唤醒方法

1.1 USB支持 suspend/resume

  当主机支持 suspend/resume 时,可通过以下方式对模块进行休眠唤醒操作。
休眠流程:
  发送命令 AT+CSCLK=1使能模块休眠功能(CAT1模块需禁用RNDIS拨号)。
   断开USB。
唤醒方式:
  连接 USB。

1.2 USB不支持suspend/resume

  当主机不支持suspend/resume 或 主机和模块仅通过UART口连接时,可根据情况选择以下方式中的一种对模块进行休眠唤醒操作。

1.2.1 GPIO休眠唤醒

  该休眠方式默认关闭,开启需发送 AT^GPIOWAKE=1(重启生效,仅需设置一次)。
休眠流程:
  开机初始化发送命令 AT+DISABLEUSB=1断开模块内部 USB连接,每次开机发一次即可,后面进休眠不需要再发(CAT4模块不支持该指令)。
  AT+CSCLK=1 断开模块内部 UART 连接(每次开机发一次即可,后面进休眠不
需要再发)。
  拉高 WAKEUP_IN 引脚,使模块进入休眠(开机后第一次休眠只需发送 AT 指令即可,唤醒模块后再进入休眠需要一直拉高WAKEUP_IN引脚,高电平触发)。
唤醒方式:
  拉低 WAKEUP_IN引脚,使模块唤醒。
注:
CAT4 miniPCIE 模块 WAKEUP_IN 引脚为第 32脚;
CAT1 miniPCIE 模块 WAKEUP_IN 引脚为第 19脚;
CLM920 AC3、CLM920 AC3 等贴片模块 WAKEUP_IN引脚为第 1 脚。

2.数据唤醒方法

  支持型号 CAT4:CLM920 AC3;CAT1:CLM920 RC3、RE3、RV7、KV3、YV9
等,需使用低功耗版本。

2.1应用场景1

   主控无操作系统,如单片机等,周期上传数据,有远程唤醒需求,使用uart口收发数据使用内嵌AT指令,需要使用心跳机制维持tcp长连接,控制模块进入休眠使用WAKEUP_IN(或者DTR)引脚,模块唤醒主控使用RI引脚。
初始化指令:
       AT+YGFEATURECFG=128,0          //只需设置一次即可
       AT+CFUN=1,1                 //重启生效
       AT+YGFEATURECFG?             //确认 sleep8 是否为“1”
         在这里插入图片描述

2.1.1建立socket连接

AT+QIPOPEN=1,1,“TCP”,“192.168.0.100”,12346,0,1    //(0非主动上报模式,主动 上报模式)建立TCP连接
AT+QIPSEND=1,200      //发200个数据
RECVFROM:        //收数据主动上报服务器返回数据

2.1.2进入低功耗模式

  AT+QISWTMD=1,0     //切换到非主动上报模式 唤醒数据到来时先缓存并通知主控,由主控主动读取数据
  主控拉高WAKEUP_IN(或者DTR) 进入休眠 (模块进入休眠时会拉低RI脚)
  主控进入低功耗模式,检测ri中断,设置心跳定时器

2.1.3心跳

  根据运营商的NAT超时规则,tcp连接在NAT超时时间内一直没有数据收发,链路会被清除,心跳间隔需要小于NAT超时时间,一般设置设置3-5分钟,3分钟比较通用,5分钟功耗更低。
由主控发送心跳,主控采集到数据或者心跳定时器到达指定时间
  (1)主控拉低WAKEUP_IN 退出休眠(模块拉高RI脚)
  (2) AT+QISWTMD=1,1      //切换到主动上报模式
  (3) AT+QIPSEND=1,200    //发心跳数据
  (4) AT+QISWTMD=1,0     //切换到非主动上报模式
  (5) 主控拉高WAKEUP_IN 进入休眠 (模块拉低RI脚)
由4g模块发送心跳
  ①主控在休眠前设置好心跳参数,发送AT指令切换为心跳模式
AT+SLEEPCFG=1,180,“31323334”,1    //第一路socket,心跳时间180s,hex 心跳包,使能模块心跳1
  ②主控拉高WAKEUP_IN 进入休眠     //模块拉低RI脚

2.1.4唤醒

网络唤醒
 手机等app发送唤醒信号给服务器,服务器发送唤醒包给指定设备。
 模块拉高RI脚通知上位机
 主控拉低WAKEUP_IN 退出休眠 (模块拉高RI脚)
 主控收到RI信号,发送 AT+QIPREAD=1    //查询收数据长度
 AT+QIPREAD=1,length     //读取数据
  AT+QISWTMD=1,1       //切换回主动上报模式
操作完后设置心跳参数,根据步骤2.1.2走休眠流程

2.2 应用场景2

  主控有操作系统,如户外摄像头等,有远程唤醒需求,使用usb虚拟出来的网卡上网。操作系统一般使用linux或者liteos,支持rndis或者ECM网卡

2.2.1驱动支持

  修改主控驱动支持TTYUSB,使用TTYUSB1作为AT口

2.2.2休眠

  初始化指令: AT+YGFEATURECFG=128,0          //只需设置一次即可
         AT+CFUN=1,1                 //重启生效
         AT+YGFEATURECFG?             //确认 sleep8 是否为“1”
         
        在这里插入图片描述

 ① 开启需发送AT^GPIOWAKE=1(重启生效,仅需设置一次)
 ② 设置休眠参数,如 AT+ENTERSLEEPHEX=1 设为 HEX,默认为 1,实际发送给服务器会转换成原始数据(0为原始数据,有特殊字符时建议 HEX 模式)
 ③ 设置服务器、心跳包、唤醒包信息,如服务器地址 192.168.0.100,服务器端口号12346,心跳间隔 180,心跳包发“sleep12345” ,唤醒包发“wake123”,
登录包为“login” 、应答包为“ok” 、心跳包回复“data” (任意数据唤醒,唤醒
包可设置为空“” ;无登录包以及应答包可将登录包以及应答包设置为空“” )
  AT+ENTERSLEEPHEX=1时可设置以下:
  AT+ENTERSLEEP=“192.168.0.100”,12346,180,“736c6565703132333435”,“77616B65313233”,“6c6f67696e”,“6f6b”,“64617461”
  AT+ENTERSLEEPHEX=0时可设置以下:
  AT+ENTERSLEEP=“192.168.0.100”,12346,180,“sleep12345”,“wake123”,“login”,“ok”,“data”

  AT+ENTERSLEEP参数说明:
  AT+ENTERSLEEP=<server_ip>,<server_port>,<in_t erval>,<heartbeat_data>,<wakeup_data>,<auth_data>,<auth_resp>,<heartbeat_resp>
  <server_ip>:服务器地址;
  <server_port>:服务器端口号;
  <in_terval>:心跳间隔时间(1-21600)秒;
  <heartbeat_data>:心跳包, (范围:1-512字节)
  <wakeup_data>:唤醒包, (范围:1-512字节)
  <auth_data>:登录包, (范围:1-1024字节)
  <auth_resp>:应答包, (范围:1-32字节)
  <heartbeat_resp>:心跳包回复头, (范围:1-32字节)

 ④设置登录包、应答包、USB断开方式、连接重试次数及发送重试次数(若
AT+ENTERSLEEP设置了登录包、应答包,会被 AT+ENTERSLEEPCFG 设置的所覆盖。如果不需要设置 USB 断开方式及重试次数,该步骤可跳过。USB 断开方式固定为 1,表示由模块主动断开 USB;连接重试次数默认为 3;发送重试次数默认为3)。
AT+ENTERSLEEPCFG=“6c6f67696e”,“6f6b”,1,3,2 //登录包为
“6c6f67696e” 、应答包为“6f6b” 、USB断开方式固定为 1 表示由模块主动断开 USB、连接重试次数 3、发送重试次数为 2。

  AT+ENTERSLEEPcfg=“6c6f67696e”,“6f6b”,1,3,2
 ⑤ 主控进入休眠前发送 AT+ENTERSLEEP指令并拉高WAKEUP_IN
模块建立与服务器的tcp连接,此时服务器会收到指令设置的登录包,服务器需 10s内回复应答包, 如示例中模块发送登录包login, 服务器 10s内需要返回应答包ok,若设置登录包和应答包为空,模块连接服务器时服务器会收到心跳包,服务器10s内也需要返回应答 ok响应,之后模块拉低 RI脚进入休眠。

2.2.3心跳

  模块根据设置的参数,周期发送心跳给服务器,维持tcp的长连接

2.2.4唤醒

网络唤醒包触发唤醒
 手机等app发送唤醒信号给服务器,服务器发送唤醒包给指定设备
 模块收到数据时断开与服务器的连接,恢复usb,RI脚输出高电平唤醒主控
 主控被唤醒后,拉低模块WAKEUP_IN脚,快速恢复网络

主控唤醒
 拉低模块WAKEUP_IN脚
 模块收到数据时断开与服务器的连接,恢复usb,RI脚输出高电平
 快速恢复网络

2.3 Liteos驱动加载方法

  ① AT+USBCFG=4E3CE   //初始化时设置一次即可,设置后,模块自动重启通过ECM联网
  ② 修改liteosusb驱动
  在usb\implementation\usbdevs.h中添加
在这里插入图片描述
  在usb\serial\u3g.c中添加
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_48384104/article/details/119701360

智能推荐

c web service_简单并快乐着的博客-程序员资料

转自 http://blog.163.com/wzbwzb_187/blog/static/6632425720106424158919/ 以下是源代码: /**************filename: Server.cpp**************** 该程序通过标准socket实现简单Http服务器 运行该服务器可以通过浏览器访问服务器目录下的 Html文件和j

CMAKE错误:No CMAKE_CUDA_COMPILER could be found._luckwsm的博客-程序员资料_cmake_cuda_compiler

在使用cmake编译VTK程序过程中,执行cmake命令时,出现如下错误:-- The CUDA compiler identification is unknownCMake Error at CMakeLists.txt:4 (enable_language): No CMAKE_CUDA_COMPILER could be found. Tell CMake where to find the compiler by setting either the environment v...

Webrtc 源码分析起步_大飞飞鱼的博客-程序员资料_webrtc源码

本文是从Webrtc实际应用的方面介绍如何快速理解Webrtc的源码。Webrtc是用于web的实时通信框架,也可以直接使用Google开源的Webrtc实现来开发非Web的APP。要理解如何使用webrtc的源码,最好是先懂得Webrtc通信的流程,请查看用Webrtc实现免费的1对1高清实时视音频会议系统就可以了解Webrtc的接口使用流程,了解这个流程后就可以快速理解Google开源的那部分Webrtc源码了,并为自己使用。需要掌握Webrtc的js部分的PeerConnection,js部...

windows下qt程序意外崩溃,生成dump文件的方法_修行进行时的博客-程序员资料

程序运行一段时间之后,意外退出,没有提示任何出错信息,这种情况可能是内存泄漏,但是没有提示错误信息,很难定位到具体代码。我们可以生成dump文件,定位出错位置。在工程中添加代码:mdump.h#ifndef MDUMP1_H#define MDUMP1_H#include &lt;Windows.h&gt;#include &lt;DbgHelp.h&gt;// base...

Java开源模板引擎_wx5701619的博客-程序员资料_java 模板引擎原理

Velocity Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序

Unix/Linux下几个最致命的命令_虎皮猫大人王的博客-程序员资料

本文主要参考了以下原文:http://www.linuxpromagazine.com/Online/News/Seven-Deadliest-Linux-Commandshttp://ubuntuforums.org/announcement.php?f=326大多数时候程序员性情温和,神情淡定。但是会有例外,当他们因为加班加点过度劳累,在意识脆弱、头脑短路、麻痹大意时执行了

随便推点

CentOS7 安装 MYSQL5.6_LiexingVerne的博客-程序员资料

最近在学习虚拟机的下安装mysql,弄了很久最后终于搞好了(感觉自己太笨),记录下自己遇到的问题。环境:1.CentOS 7X642.mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz安装步骤1.检查是否安装mariadbrpm -qa | grep mariadb如果存在就卸载rpm -e--nodeps mariadb...

@PostConstruct 与 ApplicationContextAware实现类冲突问题解决_Java充电桩的博客-程序员资料[email protected] applicationcontext

一般@PostConstruct 是可以在bean注册时执行的方法.而我们经常会需要用到spring上下文的一些参数,就可以用一个工具类如SpringContextUtilpublic class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplica

python爬取论坛付费内容_Python爬虫抓取论坛关键字过程解析_weixin_39914049的博客-程序员资料

前言:之前学习了用python爬虫的基本知识,现在计划用爬虫去做一些实际的数据统计功能。由于前段时间演员的诞生带火了几个年轻的实力派演员,想用爬虫程序搜索某论坛中对于某些演员的讨论热度,并按照日期统计每天的讨论量。这个项目总共分为两步:1.获取所有帖子的链接:将最近一个月内的帖子链接保存到数组中2.从回帖中搜索演员名字:从数组中打开链接,翻出该链接的所有回帖,在回帖中查找演员的名字获取所有帖子的链...

flutter 插件已经安装但是还报错_前端技术:一文带你掌握Flutter插件开发新姿势..._黄哒哒的博客-程序员资料

导语 |随着Flutter生态的快速发展,越来越多的Flutter插件涌现出来,那么如何开发一个Flutter插件呢?本文以具体的native_image_view插件为例,带你快速掌握Flutter插件的开发。文章作者:赵哲,腾讯游戏运营研发工程师一、概述随着开发技术的发展,几乎所有主流的开发语言都有自己的包管理工具。Node开发有npm、Android开发有Gradle,Flutter也有自己...

无法连接远程redis问题_LeBron永鑫的博客-程序员资料_redis最新版本无法远程连接

总结:1.允许redis外网访问开启这个配置时:redis 只接收来自于该 IP 地址列表的请求,如果不进行设置,那么将处理所有请求注释掉bind 127.0.0.1,允许redis外网访问2.关闭保护模式protected-mode改为no,默认为yes3.开放云服务器端口6379遇到的坑:千万不要使用宝塔面板开放端口!!!我使用宝塔面板开放了端口6379不起作用,打开阿里云控制台后才发现根本没有放行6379端口以后再开放端口一定要使用阿里云控制台!!!...

axios 重定向问题解决_Axios 源码解析(我总觉得我解析得最全了)_weixin_39731845的博客-程序员资料

准备工作主要根据他在 npm 上的核心功能点,进行提问吧。可以先抛出几个问题1、axios 的大致原理 or axios 的本质是什么2、axios 是怎么实现请求拦截的3、axios 是如何防止 xsrf 的4、实际使用中遇到过的点好,接下来围绕这些点对这个库简单分析一下,首先我们可以先写一个服务器,可以接收并打印前端请求的就可以const http = require('http');cons...

推荐文章

热门文章

相关标签