Advertisement

物联网低功耗广域网NB-IoT开发(上)

阅读量:

目录

初识NB-IOT

1、NB-IOT介绍

2、物联网技术发展

NB-IOT硬件介绍

1、学习模块选型

2、MCU选型

搭建基本工程步骤

1、原理图分析

NB-IOT AT指令

1、AT指令格式

2、串口透传开发

NB-IOT连接网络

1、搭建自己的服务器

2、使用AT指令连接服务器

3、使用自动化串口工具发送AT命令


初识NB-IOT

1、NB-IOT介绍

NB-----Narrow Band

IOT -----Internet of things

NB-IOT---窄带物联网

一种低功耗广域(LPWA)网络技术标准,基于蜂窝技术,用于连接使用无线蜂窝网络的各种智能传感器和设备。用于低功耗广覆盖(LPWA)物联网(IoT)市场。

NB-IoT 技术可以理解为是 LTE 技术的“简化版”,NB-IoT 网络是基于现有 LTE 网络进行改造得来的。LTE 网络为“人”服务,为手机服务,为消费互联网服务;而 NB-IoT 网络为“物”服务,为物联网终端服务,为产业互联网(物联网)服务。

2、物联网技术发展

(1)有线物联网:以太网、RS232、RS485、CAN总线;

(2)无线物联网:

近距离覆盖:WiFi、蓝牙;

远距离覆盖:4GLTE、GPRS、NBIOT、LTE cat.1;

(3)NB-IOT(窄带物联网)的优势:

为什么需要NB-IOT?其优势?

优势亮点: 广/深覆盖、低功耗、低成本、大数量连接(5w+用户容量/200kHz小区)

应用:智能抄表、智能停车、宠物跟踪等;

NB-IOT硬件介绍

1、学习模块选型

Lierda:

主要特征:8 00MHz) B5(850MHz)B8 (900MHz) B5(850MHz)B8 (900MHz) B5(850MHz)

主要特征
频段 B8 (900MHz) B5(850MHz)
封装 LCC
管脚数量 42
供电电压 3.1~4.2V典型值3.6****V
工作温度 -30°C ~ +85°C
尺寸 20×16×2.2mm
AT****指令 3GPP TR 45.820和其它AT****扩展指令
下载方式 UART

模块参数:

2、MCU选型



搭建基本工程步骤

1、原理图分析

分析NB-IoT核心板原理

分析一键还原底板原理

建立IO功能映射表

(1)IO口配置:选择IO标签,根据IO功能映射表配置为相对应的功能。

(2)时钟配置

由于板载的外置时钟,所以需要配置RCC,这个型号单片机最大支持48MHz。

(3)外设树配置

SPI 选择全双工主机模式

USART1 选择异步收发模式

USART2 选择异步收发模式

(4)USART配置

波特率9600

开启全局中断

(5)SPI配置

配置数据为8bit

波特率1.5Mbits/s

时钟极性为低电平驱动

时钟相位为第一个边沿

(6)LCD驱动移植

LCD主要用于人机交互,动态显示设备信息 将下图所示文件添加到工程中,修改SPI初始化代码即可(LCD的 MISO用于数据和指令切换)

注:便于串口调试打印信息需要添加printf函数重定向,如下:

int fputc(int ch,FILE *p){

while((USART1->ISR & 0x40) == 0);

USART1->TDR = ch;

return ch;

}

NB-IOT AT指令

AT 即Attention,AT 指令用来定义终端设备****TE(TerminalEquipment)和移动台****MT(Mobile Terminal)之间交互的规则,即当终端设备 输入一个AT指令后,与之通信的移动台 将会回复一个结果,就这样一对一的进行。如下图所示。

AT是Attention的缩写,协议本身采用文本.每个命令均以AT打头,因此得名

相关名词

AT的优点: 简单易懂 标准串口来收发AT命令。

1、AT指令格式

AT指令都以“AT”开头,并且以“\r\n”结尾;

若AT指令执行成功,“OK”字符串返回;

若AT指令语法错误或AT指令执行失败,“ERROE”字符串返回;

相关指令:

AT

命令解释:检测Module与串口是否连通,能否接收AT命令; 命令格式:AT 命令返回:OK (与串口通信正常)(无返回,与串口通信未连通)

NB-IoT初始化AT指令:

AT+CFUN=0关闭射频功能

AT+CFUN=1开启射频功能

AT+NBAND?查询模组配置频段

AT+NBAND=5配置模组为电信频段

AT+CGSN=1 查询IMEI号

AT+CGSN=1,201612091450303 设置IMEI号

AT+NRB 软重启

AT+CIMI 查询SIM卡信息

AT+CMEE=1 开启错误提示

AT+CGDCONT=1,”IP”,”ctnet”设置APN

AT+CSQ 获取信号质量

NB-IoT连接网络AT指令

AT+CSCON=1 设置基站连接通知

AT+CEREG=2 设置连接核心网通知

AT+NNMI=1 开启下行数据通知

AT+CGATT=1 自动搜网

AT+NUESTATS 查询 UE 状态

AT+CGPADDR 查询核心网分配的 ip 地址

NB-IoT数据收发AT指令

TCP数据收发

AT+NSOCR=STREAM,6,localport 创建 tcp socket

AT+NSOCO=1 连接服务器

AT+NSOSD=1 发送数据

AT+NSOCL=1 关闭连接

文档链接:

Lierda_NB_Module-AT

2、串口透传开发

串口透传:

串口透传,全称为“透明串口传输”,是一种数据传输模式,主要用于串口(Serial Port)设备之间或串口与计算机之间的数据传输。

在透传模式下,设备不对传输的数据做任何解析或修改,而是将数据“透明”地从一端传输到另一端。也就是说,发送端发送什么数据,接收端就原封不动地收到什么数据,中间的传输设备不会对数据进行任何处理。这种模式常用于无线模块、串口服务器、串口转USB设备等。

串口透传的优点是使用简单,无需复杂的协议解析和数据处理,可以快速实现数据的传输。但是,缺点是无法实现数据的错误检测和纠正,如果传输过程中出现错误,接收端收到的数据就会出错。

透传源码开发步骤:

1、定义串口12接收数据变量;

2、调用串口12使能串口中断函数;

3、开启串口12中断接收函数;

4、完善串口12的中断处理函数;源码如下:

复制代码
 void USART1_IRQHandler(void)

    
 {
    
   /* USER CODE BEGIN USART1_IRQn 0 */
    
   if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE)==SET){
    
 		while(USART2->ISR & 0x40 == 0);
    
 		
    
 		USART2->TDR = USART1->RDR;
    
 		
    
 	}
    
   /* USER CODE END USART1_IRQn 0 */
    
   HAL_UART_IRQHandler(&huart1);
    
   /* USER CODE BEGIN USART1_IRQn 1 */
    
  
    
  
    
   /* USER CODE END USART1_IRQn 1 */
    
 }
    
  
    
 void USART2_IRQHandler(void)
    
 {
    
   /* USER CODE BEGIN USART2_IRQn 0 */
    
   if(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE)==SET){
    
 		while(USART1->ISR & 0x40 == 0);
    
 		
    
 		USART1->TDR = USART2->RDR;
    
 		
    
 	} 
    
   /* USER CODE END USART2_IRQn 0 */
    
   HAL_UART_IRQHandler(&huart2);
    
   /* USER CODE BEGIN USART2_IRQn 1 */
    
  
    
 	
    
   /* USER CODE END USART2_IRQn 1 */
    
 }
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/s8ZTBqnM1md9fJWX45LGa2KcQYPu.png)

5、利用串口调试助手发送AT指令;

NB-IOT连接网络

首先了解物联网连接设备过程:

硬件模块、基站、PC端、路由器、互联网网络

先是NB-IOT模块并不会直接连到路由器,而是连接到某个运营商的基站,在其内部会有设备连接到互联网网络,连接后基站会为模块开发一个互联网(通道),其中服务器是搭建在个人的PC端。同时这里的模块并不能访问到PC端,原因是两者都是内网设备(内网设备不能互相通讯的)。需要用到内网穿透的工具--Ngrok,其原理相当于在公网上建立服务器。官网:https://www.ngrok.cc/login.html

使用说明: https://www.ngrok.cc/_book/

内外网结构:

1、搭建自己的服务器

由于模块于PC端都是内网设备并不能通信,要搭建一个公网的服务器,如下:

(1)首先在自己PC端新建服务器,如:使用Socket Tools工具新建:

(2)在公网建立服务器,便于NB-IOT模块通信:

使用到内网穿透工具Ngrok,进入官网建立隧道;

需要下载客户端根据自己的系统

这样我们的PC端于公网之间的隧道建立完成。之后要考虑NB模块如何远程连接PC端的服务器(即Socket Tools中新建的Server)?

2、使用AT指令连接服务器

在上面LeridaNB-IOT手册中介绍新建Socket等AT指令,以下挑选出来的相关AT指令:

(1)NB-IOT设备联网

TCP数据收发

AT+NSOCR=STREAM,6,localport 创建 tcp socket

AT+NSOCO=1 连接服务器

AT+NSOSD=1 发送数据

AT+NSOCL=1 关闭连接

使用AT指令通过串口助手向NB模块发送上面的指令,实现创建TCP socket、连接公网隧道的服务器包含ngrok隧道的域名地址以及端口、实现发送数据等

3、使用自动化串口工具发送AT命令

以上可以实现使用串口助手可以访问NB模块的状态、网络情况、是否联网及IP地址、连接服务器以及发送数据等操作,以上操作还需要用户手动进行发送AT指令比较不方便。所以有这部分。

我们抛开串口助手,可以使用格西烽火调试工具

优点:

兼容性更强 :格西烽火调试助手支持多种通信协议,不仅仅是串口通信,还可以支持以太网、蓝牙等多种通信方式,大大扩展了其适用场景。

功能更全面 :除了基本的数据收发功能之外,格西烽火调试助手还提供了高级特性,比如数据解析、脚本编程、自动化测试等,可以帮助开发者更高效地进行产品调试和性能测试。

数据解析能力强 :格西烽火调试助手内置了强大的数据解析引擎,可以自动识别并解析常见的数据格式,如ASCII、Hex、Binary等,使数据的可视化更加直观。

界面友好 :格西烽火调试助手采用了人性化的UI设计,操作简便,即使是初学者也能快速上手。同时,软件还提供了丰富的在线帮助和教程,方便用户深入了解各项功能。

稳定性好 :经过严格的测试和优化,格西烽火调试助手在长时间连续的情况下,仍然能保持稳定的性能,降低了因软件故障导致的调试中断风险。

自定义设置灵活 :用户可以根据自己的需求,自定义波特率、数据位、停止位、校验位等参数,满足不同场景下的调试需求。

安全性高 :格西烽火调试助手在数据传输过程中,采用加密技术,保护数据的安全,防止数据被窃取或篡改。

全部评论 (0)

还没有任何评论哟~