STM32之EC800K 4G模块驱动

1.EC800K简介

  EC800K,特别是EC800K-CN,是移远通信专为M2M(机器对机器)和IoT(物联网)领域而设计的超小尺寸LTE Cat 1无线通信模块。EC800K-CN作为一款专为M2M和IoT领域设计的LTE Cat 1无线通信模块,凭借其超小尺寸、高性价比、高速数据传输、广泛兼容性和丰富的网络协议与接口等特点,在物联网市场中占据了重要地位。无论是追踪器、POS机还是其他物联网设备,EC800K-CN都能提供稳定可靠的数据传输支持,推动物联网应用的快速发展。
在这里插入图片描述

  • 特性

  超小尺寸与高性价比:EC800K-CN以其超小的尺寸和出色的性价比,在物联网设备中得到广泛应用。
  高速数据传输:支持最大下行速率10 Mbps和最大上行速率5 Mbps,满足大多数物联网应用的数据传输需求。
  兼容性与封装:在封装上兼容LTE Standard EC800E-CN、EC800G-CN、EC800M-CN、EC800N-CN和EG800K系列模块,便于系统集成和升级。
  外观与工艺:采用镭雕工艺,外观精美,金属质感强,散热性能优异,信息不易被抹除,更能适应自动化生产需求。
  丰富的网络协议与接口:内置丰富的网络协议,集成多个工业标准接口,并支持多种驱动和软件功能(如Windows 8/8.1/10/11、Linux、Android等操作系统下的USB转串口驱动),极大地拓展了其在M2M和IoT领域的应用范围。
  EC800K-CN模块因其卓越的性能和广泛的应用兼容性,被广泛应用于各种物联网设备中,如追踪器、POS机、IPC(网络摄像机)、数据卡、智能安全设备以及工业级PDA等。

2.EC800K硬件设计

  • EC800K-CN 模块基本信息

在这里插入图片描述

  • 功能框图
    在这里插入图片描述

  • 引脚分配图
    在这里插入图片描述

  • 硬件PCB
    在这里插入图片描述

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4c7bb1d7c45f4e3aac8f65cc64dae1c5.png#pic_cente

3.EC800K供电要求

  电源设计对模块性能至关重要。必须选择至少能够提供 2 A 电流能力的电源。若输入电压与模块供电电压之间的电压差较小,则建议选择 LDO。若输入电压与供电电压之间的电压差较大,则建议使用开关电源转换器。5v电源参考电路如下:
在这里插入图片描述

  模块的供电范围为 3.4~4.3 V,需要确保输入电压不低于 3.4 V。
  为了减少电压跌落,需要使用低 ESR(ESR ≤ 0.7 Ω)的 100 μF 滤波电容。同时建议给 VBAT 预留 5个具有良好 ESR 性能的片式多层陶瓷电容(MLCC)(1.8 pF、3.9 pF、10 pF、33 pF 和 100 nF)以及 1个 0 Ω 电阻以便后期调试使用(电阻封装不小于 0603),且电容应靠近 VBAT 引脚放置。外部供电电源连接模块时,VBAT 走线宽度应不小于 2 mm。原则上,VBAT 走线越长,线宽越宽。
  另外,为了保证电源稳定,建议在电源前端加 VRWM = 4.7 V,低钳位电压和高峰值脉冲电流 Ipp 的 TVS管。参考电路如下:
在这里插入图片描述

4.EC800K驱动

4.1 MQTT指令开发

  EC800K模块内置TCP/IP协议栈,同时本身自带HTTP和MQTT应用层协议。若使用MQTT协议,则可直接通过MQTT的AT指令集实现开发。

2020-03-09_13:58:05:995]AT[2020-03-09_13:58:05:995]OK
[2020-03-09_13:58:07:481]ATI  //查询固件版本[2020-03-09_13:58:07:483]Quectel
[2020-03-09_13:58:07:483]EC20F
[2020-03-09_13:58:07:483]Revision: EC20CEFAGR06A13M4G[2020-03-09_13:58:07:483]OK
[2020-03-09_13:58:17:034]AT+CPIN?  //查询卡是否ready[2020-03-09_13:58:17:037]+CPIN: READY[2020-03-09_13:58:17:037]OK
[2020-03-09_13:58:21:169]AT+CIMI  //查询卡的IMSI号[2020-03-09_13:58:21:169]460046670702242[2020-03-09_13:58:21:169]OK
[2020-03-09_13:58:23:772]AT+QCCID  //查询卡CCID号[2020-03-09_13:58:23:772]+QCCID: 89860446091891282242[2020-03-09_13:58:23:772]OK
[2020-03-09_13:58:28:353]AT+CSQ   //查询RSSI[2020-03-09_13:58:28:353]+CSQ: 22,99[2020-03-09_13:58:28:353]OK
[2020-03-09_13:58:35:064]AT+CGREG?;+CREG?  //查询注册PS域与CS域[2020-03-09_13:58:35:064]+CGREG: 0,1[2020-03-09_13:58:35:064]+CREG: 0,1[2020-03-09_13:58:35:064]OK
[2020-03-09_13:58:47:879]AT+QICSGP=1,1,"","","",1   //设置PDP上下文(APN 用户名 密码等参数)[2020-03-09_13:58:47:888]OK
[2020-03-09_13:58:51:163]AT+QIACT=1  //建立激活场景[2020-03-09_13:58:51:525]OK
[2020-03-09_13:58:52:906]AT+QIACT?[2020-03-09_13:58:52:910]+QIACT: 1,1,1,"10.140.217.118"
[2020-03-09_14:12:19:189]AT+QMTCFG="aliauth",0,"a1HFMEXTnpR","ec20","nnUnbkpNcsi2qxSPu1T3646uQf9NB0UW"  //对接阿里云,设置阿里云参数[2020-03-09_14:12:19:191]OK
[2020-03-09_14:12:21:229]AT+QMTOPEN=0,"218.11.0.64",1883  [2020-03-09_14:12:21:229]OK
[2020-03-09_14:12:21:366]
[2020-03-09_14:12:21:366]+QMTOPEN: 0,0
[2020-03-09_14:12:22:642]AT+QMTCONN=0,"lei"[2020-03-09_14:12:22:644]OK
[2020-03-09_14:12:22:824]
[2020-03-09_14:12:22:824]+QMTCONN: 0,0,0
[2020-03-09_14:12:27:315]AT+QMTSUB=0,1,"/a1HFMEXTnpR/ec20/user/get",0  //订阅主题[2020-03-09_14:12:27:318]OK
[2020-03-09_14:12:27:438]
[2020-03-09_14:12:27:438]+QMTSUB: 0,1,0,1
[2020-03-09_14:18:20:530]AT+QMTPUBEX=0,0,0,0,"a1HFMEXTnpR/ec20/user/update",3  //上发数据[2020-03-09_14:18:20:530]> 123
[2020-03-09_14:18:22:672]OK
[2020-03-09_14:18:23:025]
[2020-03-09_14:18:23:025]+QMTPUBEX: 0,0,0
[2020-03-09_14:20:19:207]AT+QMTDISC=0  //关闭链接[2020-03-09_14:20:19:210]OK
[2020-03-09_14:20:19:490]
[2020-03-09_14:20:19:490]+QMTDISC: 0,0

4.2 TCP/IP指令开发

  对于EC800K模块内置MQTT协议,默认仅支持阿里云和华为云的物联网平台连接,若需使用其它云平台,则可通过TCP/IP协议进行配置,通过AT指令集完成物联网平台连接。

u8 EC800K_TCP_MQTT(u8 *ipaddr,u16 port)
{char buffer[100]={0};//1.测试指令printf("1.测试指令AT:\r\n");if(EC800K_SendCmd((u8 *)"AT\r\n","OK"))return 1;//2.查询版本printf("2.测试指令ATI:\r\n");if(EC800K_SendCmd((u8 *)"ATI\r\n","OK"))return 2;//3.查询卡是否准备好printf("3.查询卡是否准备好AT+CPIN?:\r\n");if(EC800K_SendCmd((u8 *)"AT+CPIN?\r\n","OK"))return 3;//4.查询RSSI:AT+CSQprintf("4.查询RSSI:AT+CSQ:\r\n");if(EC800K_SendCmd((u8 *)"AT+CSQ\r\n","OK"))return 4;//5.查询注册PS域与CS域:AT+CGREG?;+CREG?printf("5.查询注册PS域与CS域:AT+CGREG?;+CREG?\r\n");if(EC800K_SendCmd((u8 *)"AT+CGREG?;+CREG?\r\n","OK"))return 5;//6.断开socket服务printf("6.断开socket服务:AT+QICLOSE=1\r\n");if(EC800K_SendCmd((u8 *)"AT+QICLOSE=1\r\n","OK"))return 6;	//7.打开socket服务:AT+QIOPEN=1,0,"TCP","a1knXG89uwh.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,0,1snprintf(buffer,sizeof(buffer),"AT+QIOPEN=1,1,\"TCP\",\"%s\",%d,0,1\r\n",ipaddr,port);printf("7.打开socket服务:%s",buffer);if(EC800K_SendCmd((u8 *)buffer,"+QIOPEN: 1,0"))return 7;return 0;//初始化完成
}

  发送指令函数封装

/*
发送命令函数
形参:cmd --要发送的命令stat --返回结果
返回值:0--表示成功其它--表示错误
*/
u8 EC800K_SendCmd(u8 *cmd,const char *stat)
{u16 i,j;for(i=0;i<5;i++){memset(usart2_rx_buff,0,sizeof(usart2_rx_buff));usart2_flag=0;usart2_cnt=0;//发送命令Usart2_SendStr(cmd);//等待返回的命令结果for(j=0;j<100;j++){if(usart2_flag){usart2_rx_buff[usart2_cnt]='\0';if(strstr((char*)usart2_rx_buff,stat)){usart2_flag=0;usart2_cnt=0;return 0;}else{usart2_flag=0;usart2_cnt=0;}}Delay_Ms(5);}}return 1;//发送命令失败
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

w~视觉~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12320868 #xx1 基于mxnet的训练代码迁移到pytorch上和 在yolov5的代码基础上验证了一些目标检测的想法一起发了 在迁移mxnet训练代码的时候&#xff0c;很长一段时间结果都无法对齐&#xff0c;于是我不得不又重新认真的读…

Flutter Column组件实战案例

In this section, we’ll explore the Column widget, a fundamental tool for arranging widgets vertically in Flutter. We’ll dive into its functionality and guide you through using it effectively to create well-organized and visually appealing layouts. 在本节…

UE5 第一人称示例代码阅读0 UEnhancedInputComponent

UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统&#xff0c;看了一下第一人称例子里&#xff0c;算是看明白了&#xff0c;但是感觉这东西使用起来有点绕&#xff0c;特此梳…

Ubuntu开启路由转发功能

IP转发允许系统在不同的网络接口之间路由数据包&#xff0c;这对于设置路由器等任务至关重要。下面是在Ubuntu上临时和永久启用IP转发的步骤。 1. 查看“当前IP转发状态” sysctl net.ipv4.ip_forward其中&#xff1a; ① net.ipv4.ip_forward 0 表示IP转发功能关闭 …

ctfshow(41)--RCE/命令执行漏洞--或绕过

Web41 源代码&#xff1a; if(isset($_POST[c])){$c $_POST[c]; if(!preg_match(/[0-9]|[a-z]|\^|\|\~|\$|\[|\]|\{|\}|\&|\-/i, $c)){eval("echo($c);");} }else{highlight_file(__FILE__); }代码审计&#xff1a; 过滤了数字和字母&#xff0c;但没有过滤或…

语言模型微调:提升语言Agent性能的新方向

人工智能咨询培训老师叶梓 转载标明出处 大多数语言Agent依赖于少量样本提示技术&#xff08;few-shot prompting&#xff09;和现成的语言模型。这些模型在作为Agent使用时&#xff0c;如生成动作或自我评估&#xff0c;通常表现不佳&#xff0c;且鲁棒性差。 论文《FIREACT…

随机抽取学号

idea 配置 抽学号 浏览器 提交一个100 以内的整数。&#xff0c;后端接受后&#xff0c;根据提供的整数&#xff0c;产生 100 以内的 随机数&#xff0c;返回给浏览器&#xff1f; 前端&#xff1a;提供 随机数范围 &#xff0c;病发送请求后端&#xff1a;处理随机数的产生&…

学习记录:js算法(七十四):跳跃游戏II

文章目录 跳跃游戏II思路一&#xff1a;贪心算法思路二&#xff1a;动态规划思路三&#xff1a;广度优先搜索 (BFS)思路四&#xff1a;深度优先搜索 (DFS) 跳跃游戏II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的…

python表格处理prettytable vs pandas

prettytable和pandas简介 Python中prettyTable和pandas都是用于处理和展示数据的工具&#xff0c;但它们在设计目标、功能和使用场景上有显著的不同。 PrettyTable是一个轻量级的库&#xff0c;主要用于创建美观的ASCII表格&#xff0c;让表格数据在命令行或文本界面中看起来更…

【电机应用】变频器控制——变频水泵、变频空调

【电机应用】变频器控制——变频水泵、变频空调 文章目录 [TOC](文章目录) 前言一、变频器1、变频器的组成2、变频器的工作原理3、变频器常用算法 二、变频器的应用场景1、变频水泵2、变频空调 三、参考文献总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文…

QHeaderView添加复选框以及样式

实现这个效果&#xff0c;需要重写paintSection来实现效果&#xff0c;同时重写mousePressEvent来执行是否勾选复选框。 paintSection实现一些复选框样式 void CheckBoxHeaderView::paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const {if (m_…

Android 原生开发与Harmony原生开发浅析

Android系统 基于Linux ,架构如下 底层 (Linux )> Native ( C层) > FrameWork层 (SystemService) > 系统应用 (闹钟/日历等) 从Android发版1.0开始到现在15,经历了大大小小的变革 从Android6.0以下是个分水岭,6.0之前权限都是直接卸载Manifest中配置 6.0开始 则分普…

Matlab|基于氢储能的热电联供型微电网优化调度方法

目录 1 主要内容 模型求解流程 2 部分程序 3 程序结果 日前调度 日内调度 4 下载链接 1 主要内容 该程序复现《基于氢储能的热电联供型微电网优化调度方法》&#xff0c;针对质子交换膜燃料电池和电解槽的热电联供特性&#xff0c;为避免氢能系统的热能浪费并进一步提高…

k8s 综合项目笔记

综述 这篇笔记主要是为了记录下自己写 k8s 综合项目的过程。 由于自己之前已经写过简单的开发和运维项目&#xff0c;所以这里就结合一下&#xff0c;在搭建 k8s 集群后安装运维常用服务&#xff0c;比如 ansible 和 prometheus&#xff0c;用 NFS 实现数据存储同步&#xff0c…

Windwos下Docker下载安装centos7.6

操作步骤&#xff1a; 1.打开docker软件进入到DockerHub页面搜索contos镜像 2.在终端通过命令获取镜像并创建容器运行 docker run -itd --name test_centos7.6 centos:7.6.1810 test_centos7.6表示容器的名称 centos:7.6.1810表示镜像的名称&#xff0c;如果镜像不存在会默认拉…

k8s 部署 emqx

安装cert-manager 使用Helm安装 helm repo add jetstack https://charts.jetstack.io helm repo update helm upgrade --install cert-manager jetstack/cert-manager \--namespace cert-manager \--create-namespace \--set installCRDstrue如果通过helm命令安装失败&#x…

网络层知识点总结4

目录 前言 一、什么是NAT&#xff1f;什么是NAPT&#xff1f;NAT的优点和缺点有哪些&#xff1f;NAPT有哪些特点&#xff1f; 二、建议IPv6协议没有首部检验和。这样做的优缺点是什么&#xff1f; 三、当使用IPv6时&#xff0c;协议ARP是否需要改变&#xff1f;如果需要改变…

线性可分支持向量机代码 举例说明 具体的变量数值变化

### 实现线性可分支持向量机 ### 硬间隔最大化策略 class Hard_Margin_SVM:### 线性可分支持向量机拟合方法def fit(self, X, y):# 训练样本数和特征数m, n X.shape# 初始化二次规划相关变量&#xff1a;P/q/G/hself.P matrix(np.identity(n 1, dtypenp.float))self.q matr…

ArcGIS计算多个面要素范围内栅格数据各数值的面积

本文介绍在ArcMap软件中&#xff0c;基于面积制表工具&#xff08;也就是Tabulate Area工具&#xff09;&#xff0c;基于1个面要素数据集与1个栅格数据&#xff0c;计算每一个面要素中各栅格数据分布面积的方法。 首先&#xff0c;来看一下本文的需求。现有一个矢量面的要素集…

Springboot整合原生ES依赖

前言 Springboot整合依赖大概有三种方式&#xff1a; es原生依赖&#xff1a;elasticsearch-rest-high-level-clientSpring Data ElasticsearchEasy-es 三者的区别 1. Elasticsearch Rest High Level Client 简介: 这是官方提供的 Elasticsearch 客户端&#xff0c;支持…