一、前言:
在FastBond第一阶段,在Scheme-it软件中绘制了EC800M-CN的供电部分原理图,在FastBond第二阶段继续完善设计,进行打板做出实物,并进行连接腾讯云的效果演示。
项目介绍:本此项目主要完成了移远EC800M-CN 4G模块的设计,使用了STM32H563微控制器作为核心处理器,通过它与腾讯云进行数据交互。通过本项目的实施,成功地完成了移远EC800M-CN 4G模块的设计和测试工作。
市场应用介绍:本次设计的是通用的4G模块,在众多物联网设备上都可以直接使用。通过物联网卡进行联云,实现万物互联。这种4G模块具有广泛的应用前景,可以应用于智能家居、智能交通、智能医疗等各个领域。它能够为这些领域提供高速、稳定的网络连接,使得各种设备能够实时地与云端进行数据交互,从而实现智能化控制和管理。
二、原理图与PCB设计:
在FastBond第一阶段中完成了供电部分的设计,这次对移远EC800M-CN进行了完整的PCB原理图绘制
1:添加网络状态指示灯和运行状态指示灯的设计,可以通过观察网络状态指示灯和运行状态指示灯的工作状态判断4G模块是否正常运行
2:添加天线设计,避免干扰,增强信号稳定性,这样可以确保设备在通信过程中能够获得更好的信号质量和传输效果。
总的来说,通过对移远EC800M-CN的PCB原理图进行设计和优化,我们不仅实现了供电部分的功能,还增加了网络状态指示灯和运行状态指示灯的设计,以及天线设计,从而提升了设备的性能和可靠性,完成了4G模块的整体设计。
总体原理图设计如图:
在本次设计中主要使用了Microhip公司的MIC29302WU作为EC800M-CN的供电部分,主控选择的是来自意法半导体(ST)的STM32H563ZIT6,在第一阶段中已经详细介绍了MIC29302WU,所以本次主要介绍STM32H563ZIT6。
规定厂商的元器件介绍:STM32H563
STM32H563基于Arm® Cortex®-M33内核,该内核采用面向Armv8-M的TrustZone®技术,拥有数字信号处理 (DSP) 和浮点单元 (FPU),工作频率高达250 MHz,可选扩展环境温度范围,最高可达125°C。
- 性能:在250 MHz工作频率下,从Flash存储器执行时,STM32H563/573 MCU能达到375 DMIPS和1023 CoreMark的性能,并且利用意法半导体的ART加速器实现了零等待状态。
- 外设:I3C接口、FDCAN、USB 2.0全速主机和设备、USB Type-C®/USB供电、以太网MAC、相机接口。
- 安全性:
- STM32系列中率先支持安全可信执行环境 (TEE) 软件的MCU
- 兼容TF-M PSA API
- 提供交钥匙安全服务,如加密、安全密钥和数据存储以及认证等
- 用于运行系统代码隔离的TrustZone®机制
- 符合TRNG FIPS SP800-90B标准,通过CMVP熵源验证认证
- 使用硬件唯一密钥 (HUK) 的安全密钥存储
- 支持安全固件安装 (SFI),在初始编程过程中执行安全验证并保护软件IP
- 通过ECDSA-P256安全验证来控制调试访问
- ST-iRoT:预先配置了不可变的可信根,提供安全启动、固件更新、串行加载器和安全调试机制
- 高能效:
- 内置开关模式电源 (SMPS),用于降低电源电压。
- 选配SMPS时,在运行模式(关闭外设)下,VDD = 3.3 V(漏极电源电压),温度为25°C时,典型功耗为61 µA/MHz
- 在保留RAM全部内容的低功耗停止模式下,典型功耗电流为51 µA
- 低功耗待机模式下典型功耗电流为3.5 µA
- 在带RTC的低功耗VBAT模式(电池供电模式)下典型功耗电流为776 nA
总的来说STM32H563是一款高性能、安全性和经济性的理想组合,工作频率高达250 MHz,内嵌128 KB至2 MB的Flash存储器和640 KB的RAM。可以用作替代F4系列作为产品新一代MCU。
PCB绘制打板过程中遇到的问题和解决办法:
- 在天线设计中,由于离EC800M-CN的ANT_MAIN脚(即主天线接口)距离较远,并且过于靠近电源线,导致联云信号质量不佳,时断时续。这导致连接腾讯云时频繁掉线。为了解决这个问题,最后解决办法是重新进行布线,并且天线走线尽量控制50 Ω 阻抗,远离干扰源,天线附近的GND引脚和GND充分接触,全部铺铜处理,天线走线附近尽量多打GND孔。
- 与EC800M-CN的MAIN_RXD脚的上拉电阻太小,在与STM32H563进行串口通信过程中,发送较短的AT指令,EC800M-CN可以正常返回指令,但是一旦STM32H563发送较长的AT指令,EC800M-CN接收就出现缺失清空,导致连接腾讯云连接不上,上报属性等出现问题,最后的解决方法是替换了个较高阻值的上拉电阻。
三、关键代码及说明:
腾讯云新建项目:
打开腾讯云官网,选择控制台,搜索栏输入“物联网开发平台”,选择“公共实例”,并新建个名为“智能灯”的项目,产品信息填写如下
点击设备调试,点击新建设备,创建一个设备名称为 my_led 的设备
打开STM32CubeMX对STM32H563进行串口配置并使用keil编写程序验证移远EC800M-CN 4G模块是否正常工作。
根据ST官方的UM3115文件可知串口2的RX和TX分别为PD6和PD5
参考移远官方的MQTT应用指导可知需要发送的信息,打开控制台获取MQTT三元组
#include "main.h"
#include "usart.h"
#include "gpio.h"
#include <stdio.h>
int fputc(int ch,FILE *f)
{
uint8_t temp=ch;
HAL_UART_Transmit(&huart2,&temp,1,2);
return temp;
}
void SystemClock_Config(void);
uint8_t num = 10;
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART2_UART_Init();
HAL_Delay(3000);
printf("AT+QMTOPEN=0,\"NEEX7BM34G.iotcloud.tencentdevices.com\",1883\r\n");
HAL_Delay(800);
printf("AT+QMTCONN=0,\"NEEX7BM34Gmy_led\",\"NEEX7BM34Gmy_led;12010126;ba012;1706976000\",\"3b0db969bf7faecaaae253d78c880515127fd5b32394f9763ee8bc31d7f98254;hmacsha256\"\r\n");
HAL_Delay(500);
while (1)
{
num++;
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_4);
printf("AT+QMTPUBEX=0,0,0,0,\"$thing/up/property/NEEX7BM34G/my_led\",67\r\n");
HAL_Delay(500);
printf("{\"method\":\"report\",\"clientToken\":\"123\",\"params\":{\"brightness\":%d}}\"\r\n", num);
HAL_Delay(500);
if(num > 98)
{
printf("AT+QMTDISC=0\r\n");
}
}
}
功能展示:
可以看到网络状态灯和模块状态灯中一个常亮一个闪烁,表示4G模块工作正常并且已经连接上腾讯云,在腾讯云的在线调试中可以看到,设备连接和设备上报属性的信息。
四、总结:
感谢硬禾学堂联合 DigiKey 推出的这次活动,完成了这次4G模块的设计为了之后的项目做了充分的铺垫,虽然在这过程中遇到了很多困难,但最终都解决了,并且收获很多,祝愿大赛越办越好。