title: M5311模组烤机测试装置
tags: NBIOT
date: 2019-10-11 10:53:00




项目要求:
由于只是测试程序 所以我采用了arduino promini 来完成。

  • 测试NB模组长时间工作的稳定性。
  • 测试NB模组收发数据的延迟。
  • 测试AT指令的稳定性。

由于公司部门工作需要,我们采购了移动的NB模组M5311,并绘制了PCB(PCB板是同事画的),最后我进行了AT指令的测试,效果还是很好的数据很稳定,然后准备做一个硬件对这款NB模组进行长时间烤机进行稳定性测试


模组采用移动M5311 http://iot.10086.cn/chipmodule/read/id/501

单片机采用 Arduino pro mini 进行测试。


测试代码如下:

/* 基于NBIOT的MQTT协议PCB测试代码主要用于测试NB模组的耐久度与稳定性便于PCB批量测试开发者:阿正  wenzheng.club备注:由于NB模组普遍存在AT指令无返回或者偶然出错的情况,所以本程序多次采用while(1),来保证AT指令接收,进而进行下一条指令的发送。***其中命令发送与返回校验 模仿Stm32串口中断来实现的逻辑处理
*/
#include <SoftwareSerial.h>  //虚拟串口库
SoftwareSerial mySerial(10, 11); // RX, TX  虚拟串口方便调试 11->NBTX
String AT = "AT";
String open_led = "AT+CMSYSCTRL=0,2";
String Set_Mqtt = "AT+MQTTCFG=\"服务器ip\",1883,\"ZXNBiot_mini\",60,\"root\",\"citc2018\",1";
String Clint_Mqtt = "AT+MQTTOPEN=1,1,1,1,1,\"mywill\",\"001bye\"";
String Publish_msg = "AT+MQTTPUB=\"/device/NB/pengwenzheng\",1,1,0,0,\"2019$\"";
String inputString = "";
bool stringComplete = false;
void setup() {Serial.begin(9600);mySerial.begin(9600);pinMode(12, OUTPUT); //硬复位NB模组pinMode(13, OUTPUT); //状态指示灯inputString.reserve(400);delay(2000);MQTT_int();   //MQTT初始化
}
void loop() {if (Send_MQTT(Publish_msg, 50)) //发送成功则快闪一次{digitalWrite(13, 1);delay(200);}digitalWrite(13, 0);delay(5000);//每5秒发送一次
}
void MQTT_int() {digitalWrite(12, 0);delay(2000);digitalWrite(12, 1);delay(500);digitalWrite(12, 0);Serial.println("Begin.....");while (!Send_MQTT(open_led, 50)); //循环发送LED配置命令 直到返回OK代表成功delay(500);while (1) {   //一直等待连接IP地址serialEvent();if ( inputString.indexOf("+IP") != -1){digitalWrite(13, 1);delay(1000);digitalWrite(13, 0);break;} elseSerial.println("Wait...");}while (1) {if (Send_MQTT(Set_Mqtt, 60) == 1) {while (!Send_MQTT(Clint_Mqtt, 60));Serial.println("Clint_Mqtt!!!");break;}delay(1000);}
}
/** 函数名称:Send_MQTT(String msg, int wait)* 入口参数:*         msg 发送的AT指令码*         wait 数据延时* 出口参数:*         1 数据返回成功即代表此次发送指令有效*         0 数据返回失败即代表此次数据发送失败* 备注:模仿Stm32串口中断来实现的数据返回处理*/
int Send_MQTT(String msg, int wait) {delay(1000);mySerial.println(msg);delay(wait);serialEvent();if (stringComplete) {delay(100);if ( inputString.indexOf("OK") != -1) {Serial.println(inputString);inputString = "";  //清除标志位stringComplete = false; //清除标志位while (Serial.read() >= 0) {}; //清空串口缓存return 1;}else if ( inputString.indexOf("ERROR") != -1) {Serial.println(inputString);inputString = "";stringComplete = false;while (Serial.read() >= 0) {};return 0;}}
}
/** 函数名称:Send_MQTT(String msg, int wait)* 入口参数:*         msg 发送的AT指令码*         wait 数据延时* 出口参数:*         1 数据返回成功即代表此次发送指令有效*         0 数据返回失败即代表此次数据发送失败* 备注:模仿Stm32串口中断来实现的数据返回处理*/
void serialEvent() {   while (mySerial.available()) {char inChar = (char)mySerial.read();inputString += inChar;if (inChar == '\n') {stringComplete = true;}}
}

具体的实现方法为:
利用arduino promini 的虚拟串口来调试AT指令,然后利用其朱串口进行数据打印调试。
备注:
其中最重要的是现有的需要AT指令的模组都需要进行返回值的判断以及顺序进行AT指令的发送,例如服务器的连接,需要提前进行服务器配置,之后再进行服务器的连接,上一步如果出错 则无法进行下一步的指令发送。
代码里多次使用while循环来实现了命令返回值判断。
例如:

  while (!Send_MQTT(open_led, 50)); //循环发送LED配置命令 直到返回OK代表成功

其中Send_MQTT(String msg, int wait)函数就是采用的模拟Stm32串口中断来实现的快速数据返回校验。

M5311模组烤机测试装置(Arduino)相关推荐

  1. M5311模组对接OneNet平台—AT指令基本操作流程(LwM2M协议)

    目录 概述 一.开机驻网流程 二.注册onenet平台 概述 下面将介绍M5311模组对接OneNet平台-AT指令基本操作流程(LwM2M协议),已在项目中使用. 一.开机驻网流程 1.AT+SM= ...

  2. jetson orin nx 模组刷机及环境配置(一)

    jetson orin nx 模组刷机 前言 1.刷机教程 1.1想重新安装系统 1.2不想重新安装系统或安装好后二次刷机 2.检查环境 前言 刚接到板子时板子上已经装好了jetson-linux系统 ...

  3. NB-IoT模组选型及项目初始必看!

    一.NB-IoT模组选型考虑因素 NB-IoT模组的选型评估工作对于项目能否顺利实施至关重要.前期评估验证阶段若未做充分的工作,很可能项目进行到一半发现NB-IoT模组并不适合当前应用场景,造成项目时 ...

  4. SIMCom常见模组外围电路设计

    最近一直在搞SIMCom的模组外围电路设计,现在整理一下外围电路设计思路. 1.电源方案 这类通信模组一般瞬间电流可以达到2A左右,所以在供电方案上需要十分注意,否则很容易造成模块死机或者重启.供电方 ...

  5. 如何使用二维码扫描模组改造通道闸机,实现手机开闸

    随着物联网的发展,自动识别技术的应用使得很多产品适应于移动互联网时代,其中二维码扫描模组在通道检票闸机中的发展尤为迅速,在通过检票闸机口时,使用手机生成的二维码即可验证开闸,因此二维码扫描模组也逐渐被 ...

  6. 5G WiFi 安信可 BW16 模组 RTL8720DN 入门笔记 1 :搭建Arduino IDE 开发环境,点亮一盏LED灯。

    文章目录 前言 一.认识RTL8720DN 二.认识 BW16 三.环境搭建 Step 1: 安装 Arduino IDE Step 2: 下载编译依赖环境 Step 3: 复制编译依赖环境工具到Ar ...

  7. 音诺恒人脸识别门禁闸机模组参数详解

    音诺恒的人脸识别门禁闸机模组是一款生物识别安防主板,主要适用于智慧门禁,还可适用于人脸检验机.人脸测温.人脸考勤等多种智慧零售设备,实现刷脸通行,广泛应用于CBD办公楼.小区.景区.交通枢纽中心和其他 ...

  8. ESP32-WROOM-32D模组上传Arduino IDE示例编译的固件后总是重启,该如何解决

    手头的ESP32-WROOM-32D模组搭载的是单核CPU,因此Arduino IDE需要配置成单核编译模式.用ESP32的示例编译并上传固件后不断重启: 例如GetChipID,源代码: uint3 ...

  9. 智能洗碗机自动感应,人体存在感应雷达技术,雷达感应模组应用

    洗碗机应用雷达人体存在感应技术,也成为了当前智能生活建设的重点.洗碗机人体存在感应技术应用,实现洗碗机的人体感应检测,推动行业智能化发展. 洗碗机是新时期科技发展的产物,在现代城市家庭的普及率逐渐提升 ...

最新文章

  1. SQL Server 2014新特性——基数评估(白皮书阅读笔记)
  2. NR 5G 网络功能之SMF
  3. mac 配置maven相关
  4. 《计算机网络》谢希仁第五版考试重点整理
  5. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]
  6. 封装一个Array 数据 绑定 html select 方法
  7. minecraft1.16java_MINECRAFT JAVA 1.16.1发布
  8. Nodejs Set和Map的使用
  9. 【转】解决win7下重装winXP 系统启动选择菜单消失 问题
  10. 要马儿跑,又要马儿不吃草?聊聊联邦学习与分布式机器学习
  11. 重装系统时的硬盘格式化
  12. AdaBoost算法讲解、举例
  13. 台湾大学郭彦甫matlab百度云,台湾国立大学郭彦甫Matlab教程笔记(23) linear systems...
  14. 租赁行业如何将电子合同活用起来?
  15. 怎么把pdf转换成excel文件?
  16. 浮云绘图编辑器之文字、图片基础图元操作及源码,用于文本描述及拓扑图、平面布局图开发
  17. 【堡垒机】2022年云堡垒机品牌排名大比拼
  18. (只需五步)ChatGPT接入微信的攻略
  19. Python time库、random库概览+Python里面有趣的东西
  20. 重点| 系统集成项目管理工程师考前50个知识点(5)

热门文章

  1. 为什么要创业,有人盆满钵满、有人别无选择,区别在创业思维
  2. Android中实时视频监控方案设计思路
  3. 一个HashMap跟面试官扯了半个小时
  4. unity开发xbox手柄 驱动坑
  5. Android系统之制作开机LOGO
  6. Oracle 中的Userenv() 达梦中如何处理?
  7. WebSphere7 XA 数据源配置问题
  8. CentOS 7下安装Tomcat8.0.53并设置自动启动:
  9. SDN交换机配置说明—微云
  10. 音乐计算机编程,计算机音乐编程的基本类型研究