M5311模组烤机测试装置(Arduino)
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)相关推荐
- M5311模组对接OneNet平台—AT指令基本操作流程(LwM2M协议)
目录 概述 一.开机驻网流程 二.注册onenet平台 概述 下面将介绍M5311模组对接OneNet平台-AT指令基本操作流程(LwM2M协议),已在项目中使用. 一.开机驻网流程 1.AT+SM= ...
- jetson orin nx 模组刷机及环境配置(一)
jetson orin nx 模组刷机 前言 1.刷机教程 1.1想重新安装系统 1.2不想重新安装系统或安装好后二次刷机 2.检查环境 前言 刚接到板子时板子上已经装好了jetson-linux系统 ...
- NB-IoT模组选型及项目初始必看!
一.NB-IoT模组选型考虑因素 NB-IoT模组的选型评估工作对于项目能否顺利实施至关重要.前期评估验证阶段若未做充分的工作,很可能项目进行到一半发现NB-IoT模组并不适合当前应用场景,造成项目时 ...
- SIMCom常见模组外围电路设计
最近一直在搞SIMCom的模组外围电路设计,现在整理一下外围电路设计思路. 1.电源方案 这类通信模组一般瞬间电流可以达到2A左右,所以在供电方案上需要十分注意,否则很容易造成模块死机或者重启.供电方 ...
- 如何使用二维码扫描模组改造通道闸机,实现手机开闸
随着物联网的发展,自动识别技术的应用使得很多产品适应于移动互联网时代,其中二维码扫描模组在通道检票闸机中的发展尤为迅速,在通过检票闸机口时,使用手机生成的二维码即可验证开闸,因此二维码扫描模组也逐渐被 ...
- 5G WiFi 安信可 BW16 模组 RTL8720DN 入门笔记 1 :搭建Arduino IDE 开发环境,点亮一盏LED灯。
文章目录 前言 一.认识RTL8720DN 二.认识 BW16 三.环境搭建 Step 1: 安装 Arduino IDE Step 2: 下载编译依赖环境 Step 3: 复制编译依赖环境工具到Ar ...
- 音诺恒人脸识别门禁闸机模组参数详解
音诺恒的人脸识别门禁闸机模组是一款生物识别安防主板,主要适用于智慧门禁,还可适用于人脸检验机.人脸测温.人脸考勤等多种智慧零售设备,实现刷脸通行,广泛应用于CBD办公楼.小区.景区.交通枢纽中心和其他 ...
- ESP32-WROOM-32D模组上传Arduino IDE示例编译的固件后总是重启,该如何解决
手头的ESP32-WROOM-32D模组搭载的是单核CPU,因此Arduino IDE需要配置成单核编译模式.用ESP32的示例编译并上传固件后不断重启: 例如GetChipID,源代码: uint3 ...
- 智能洗碗机自动感应,人体存在感应雷达技术,雷达感应模组应用
洗碗机应用雷达人体存在感应技术,也成为了当前智能生活建设的重点.洗碗机人体存在感应技术应用,实现洗碗机的人体感应检测,推动行业智能化发展. 洗碗机是新时期科技发展的产物,在现代城市家庭的普及率逐渐提升 ...
最新文章
- SQL Server 2014新特性——基数评估(白皮书阅读笔记)
- NR 5G 网络功能之SMF
- mac 配置maven相关
- 《计算机网络》谢希仁第五版考试重点整理
- 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]
- 封装一个Array 数据 绑定 html select 方法
- minecraft1.16java_MINECRAFT JAVA 1.16.1发布
- Nodejs Set和Map的使用
- 【转】解决win7下重装winXP 系统启动选择菜单消失 问题
- 要马儿跑,又要马儿不吃草?聊聊联邦学习与分布式机器学习
- 重装系统时的硬盘格式化
- AdaBoost算法讲解、举例
- 台湾大学郭彦甫matlab百度云,台湾国立大学郭彦甫Matlab教程笔记(23) linear systems...
- 租赁行业如何将电子合同活用起来?
- 怎么把pdf转换成excel文件?
- 浮云绘图编辑器之文字、图片基础图元操作及源码,用于文本描述及拓扑图、平面布局图开发
- 【堡垒机】2022年云堡垒机品牌排名大比拼
- (只需五步)ChatGPT接入微信的攻略
- Python time库、random库概览+Python里面有趣的东西
- 重点| 系统集成项目管理工程师考前50个知识点(5)