移远BC260Y-CN NBIoT与ESP32实现串口通讯

物联网及NBIoT简介

物联网(The Internet of things,IoT)顾名思义,就是物与物相连的互联网。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信。

窄带物联网(Narrow Band Internet of Things,NB-IoT)是物联网领域一个新兴的技术,主要用于低移动性、小数据量、对时延不敏感的连接服务,其支持低功耗设备在网络中的数据传输,因此也是一种低功耗广域网(Low Power Wide Area Network,LPWAN)通信技术。相对于被逐渐淘汰的2G通信,NB-IoT具有三大优势:

大连接:海量链接的能力,在同一基站的情况下, NB-IoT 可以比现有无线技术提供 50~100 倍的接入数。一个扇区能够支持,10 万个连接,设备成本与功耗有效降低,网络架构得到优化。
广覆盖:在同样的频段下, NB-IoT比现有的网络增益提升了 20 dB,相当于提升了 100 倍的覆盖面积。
低功耗:NB-IoT借助 PSM(Power Saving Mode,节电模式)和 eDRX(Extended Discontinuous Reception,超长非连续接收)可实现更长待机。

NBIoT技术优势
在这里插入图片描述

移远BC260Y简介

BC260Y-CN 是一款高性能、低功耗且多频段的 LTE Cat NB2 无线通信模块。其尺寸仅为 17.7 mm × 15.8 mm × 2.0 mm,
能最大限度地满足终端设备对小尺寸模块产品的需求,同时有效帮助客户减小产品尺寸并优化产品成本。BC260Y-CN
在封装设计上兼容移远通信 GSM/GPRS 系列 M26 模块以及 NB-IoT 系列 BC26/BC25/BC28 模块,方便客户快速、灵活
地进行产品设计和升级。BC260Y-CN 提供丰富的外部接口和协议栈,同时可支持中国移动 OneNET 平台、中国移动
Andlink 平台、中国电信 AEP 平台和中国电信 IoT 平台等物联网云平台,为客户的应用提供极大的便利。
BC260Y-CN 采用更易于焊接的 LCC 封装,可通过标准 SMT 设备实现模块的快速生产,为客户提供可靠的连接方式,
并满足复杂环境下的应用需求。
凭借紧凑的尺寸、超低功耗和超宽工作温度范围,BC260Y-CN 成为 IoT 应用领域的理想选择,常被用于烟感、无线抄
表、智慧物流、智能停车、智慧路灯、安防、资产追踪、智能家居、可穿戴设备、工业及农业以及其它诸多行业,以
提供完善的短信和数据传输服务。
在这里插入图片描述

PCB开发设计

主控芯片采用ESP32-WROOM-32E, 通过UART串口控制BC260Y进行联网和收发数据,使用立创EDA进行PCB板卡的设计和开发
板卡的设计流程和ESP32最小开发板一致

PCB设计图

PCB板卡正面
在这里插入图片描述
PCB板卡背面
在这里插入图片描述

实物图

在这里插入图片描述
BC260Y-CN需要跟sim卡座集成使用,通过NB-IoT物联网专用SIM卡进行网络通讯,即插即用,无需实名或手动激活,物联网专用SIM卡均具有机卡绑定功能,不可取消。

这块板卡只是为了测试ESP32-WROOM-32E模组和BC260Y-CN模组的联网通讯功能,所以没有将主控芯片的引脚引出到排针

编写程序测试功能

在Arduino环境下编写一个BC260Y的程序,主要实现通过串口由MCU向BC260Y发送AT指令功能

#include <Arduino.h>
#include <ArduinoJson.h>

HardwareSerial SerialPort(2);

#define RXD2 16
#define TXD2 17

void CommandtoNBIOT (String cmd, char *res)
{
  while (1)
  {
    SerialPort.println(cmd);
    delay(300);
    while (SerialPort.available() > 0)
    {
      if (SerialPort.find(res))
      {
        Serial.println(res);
        return;
      }
      else
      {
        Serial.print(cmd);
        Serial.println("Return ERROR!");
      }
    }
    delay(200);
  }
}

void BC260Y_init(void)//初始化BC260Y
{
  Serial.println("1");
  // prints title with ending line break
  CommandtoNBIOT("AT", "OK");
  SerialPort.println("ATE0&W");//关闭回显
  delay(300);
  CommandtoNBIOT("ATI", "OK");//返回制造商信息
  delay(300);

  CommandtoNBIOT("AT+CPIN?", "+CPIN: READY"); //返+CPIN:READY,表明识别到卡
  Serial.println("2");
  CommandtoNBIOT("AT+CGATT?", "+CGATT: 1"); //返+CGACT: 1,就能正常工作
  Serial.println("3");
  SerialPort.println("AT+QMTCLOSE=0");//关闭上一次socekt连接
  delay(300);

}

void setup() {
  //TXD接IO17,RXD接IO16
  Serial.begin(9600);
  SerialPort.begin(9600, SERIAL_8N1, RXD2, TXD2);
  delay(2000);
  BC260Y_init();
}

void loop() {
  if(Serial.available()){
    SerialPort.write((char)Serial.read());
  }
  if(SerialPort.available()){
    Serial.write((char)SerialPort.read());
  }
}

用USB线插入PC端给板卡上电,PC端会发出声响提示识别到了板卡,这时在设备管理器里就可以看到识别到的设备端口,我这里是COM5口
在这里插入图片描述
Arduino里点击上传按钮,将程序上传到板卡,原理图设计中包含了自动下载这部分电路,所以上传程序时无需按下任何键,上传成功后板卡会运行程序

由于需要发送AT命令,Arduino自带的串口监视器不是很好用,这里用的是SSCOM工具进行测试
在这里插入图片描述
向BC260Y发送AT命令,因为BC260Y默认很快会进入睡眠模式,第一次发送返回+QNBIOTEVENT: “EXIT DEEPSLEEP”,表示已退出睡眠模式
第二次发送AT命令返回OK,表明串口通讯正常

发送指令ATI,返回制造商信息
在这里插入图片描述
下面检测SIM卡是否可以正常使用,发送指令"AT+CPIN?",返回+CPIN:READY,表明已经可正常识别到卡!
在这里插入图片描述
至此已经实现了ESP32-WROOM-32E模组和BC260Y-CN模组的集成,由于ESP32-WROOM-32E会很快进入到休眠模式,可以使用AT+QSCLK=0设置它不自动进入休眠模式,具体AT指令可参考移远官方的文档。

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值