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;特此梳…

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

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

随机抽取学号

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

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

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

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;如果镜像不存在会默认拉…

网络层知识点总结4

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

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;支持…

小问题解决方法汇总(2024.10.24水个勋章)

问题1&#xff1a;”因为在系统上禁止运行脚本“ 我们在使用命令行时经常遇到类似文章这样的提示&#xff0c;或者是如下截图中显示的那样&#xff1a; 仅需要在“管理员权限下的Powershell”中输入下面的命令即可解决&#xff1a; set-ExecutionPolicy RemoteSigned 输入命…

【数据分享】全国科技-产品质量国家监督抽查(1995-2021年)

数据介绍 一级标题指标名称单位科技国家监督抽查产品种类种科技国家监督抽查食品种类种科技国家监督抽查日用消费品种类种科技国家监督抽查建筑与装饰装修材料种类种科技国家监督抽查农业生产资料种类种科技国家监督抽查工业生产资料种类种科技国家监督抽查企业家科技国家监督抽…

软工毕设开题建议

文章目录 &#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f; 1.2 开题选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f; &#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 深度学习社…

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

1. 背景介绍 如果你拿到了两台8卡A100的机器&#xff08;做梦&#xff09;&#xff0c;你的导师让你学习部署并且训练不同尺寸的大模型&#xff0c;并且写一个说明文档。你意识到&#xff0c;你最需要学习的就是关于分布式训练的知识&#xff0c;因为你可是第一次接触这么多卡…

【数据仓库】数据仓库面试题

简单整理了一下题目和答案&#xff0c;希望对大家有所帮助。 第一面&#xff1a;基础技术与概念 什么是ETL&#xff1f;请解释ETL过程中的每个步骤。 ETL是Extract, Transform, Load的缩写&#xff0c;用于描述将数据从源系统提取、转换为适合分析的形式、最后加载到目标系统的…

使用vscode拉取release远程分支,发现没有这个分支,但是远程仓库里确确实实有,是因为没有及时更新远程仓库分支导致

今天在开发过程中&#xff0c;需要从release分支上拉取代码重新拉个分支开发&#xff0c;方便后面迭代更新。但是我在vscode里点击分支&#xff0c;发现没有远程分支release/v1.0.0&#xff0c;但是仓库里确确实实有这个分支。然后我就上网查有类似的情况&#xff0c;参考别人是…

74页PPT智能工厂整体规划方案

▲关注智慧方案文库&#xff0c;学习9000多份最新解决方案&#xff0c;其中 PPT、WORD超过7000多份 &#xff0c;覆盖智慧城市多数领域的深度知识社区&#xff0c;稳定更新4年&#xff0c;日积月累&#xff0c;更懂行业需求。 智能工厂的定义 根据《智能工厂通用技术要求》的…