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+CSQ
	printf("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,1
	snprintf(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;//发送命令失败
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐