NB-IOT开发实战

一,初识NB-IOT

1,NB-IOT介绍

  • NB ----Narrow Band
  • IOT —Internet of things
  • NB-IOT —窄带物联网

2,物联网发展
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
广/深覆盖:比GPRS覆盖增强20dB+
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
低功耗:基于AA电池,使用寿命可超过10年
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
低成本:终端芯片低至$1
在这里插入图片描述
在这里插入图片描述
大连接:50K+用户容量*/200kHz小区
在这里插入图片描述
应用场景
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3,NB-IOT硬件平台介绍(NB-IOT,MCU,传感器,硬件平台)
NB-IOT模块选型:
在这里插入图片描述
在这里插入图片描述
NB-IOT模块参数:
在这里插入图片描述
MCU选型:STM32F051

  • ARM Cortex-M0
  • 32位低功耗微处理器
  • 48MHz工作频率
  • 64Kbytes Flash
  • 8Kbytes SRAM
  • 32pin

MCU性能参数:
在这里插入图片描述
LoRa硬件平台介绍–传感器
在这里插入图片描述
NB-IOT硬件平台介绍–开发板
在这里插入图片描述
开发流程:
在这里插入图片描述
4,STM32CubeMX安装及使用
STM32CubeMX简介
微控制器图像化配置
- 自动处理引脚冲突
- 动态设置确定的时钟树
- 可以动态确定参数设置的外围和中间件模式和初始化
- 功耗预测
C代码工程生成器覆盖了STM32微控制器初始化编译软件,如IAR,KEIL,GCC可以独立使用,作为Eclipse插件使用。

HAL库与STD库
STD库–标准外设库
- 寄存器操作,将一些基本的寄存器操作分装成函数
HAL库–硬件抽象库
- 将这些抽象成一个抽象层,从使用的角度来看,是与硬件无关的
HAL库的优势
- HAL库是ST未来主推的库,从2015年开始ST新出的芯片已经没有STD库
- HAL库的处理机制比STD库好很多,HAL库支持STM32全线产品
- HAL库跨芯片的可移植性非常好
STM32CubeMX获取:
官网地址:http://www.st.com/en/development-tools/stm32cubemx.html
STM32CubeMX安装:

  • 安装JAVA运行环境,JavaSetup8u151.exe
  • 安装SetupSTM32CubeMX-6.2.0-win,最好不要有中文路径
  • 加载“stm32cube_fw_f0_v1112.zip”HAL库到STM32CubeMX中
    STM32CubeMX加载固件库:
    在这里插入图片描述
    在这里插入图片描述
    STM32CubeMX创建工程:File->new project
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    配置的最后点击GENERATE CODEG ,生成工程。
    在这里插入图片描述
    创建完成后生成的工程目录:
    在这里插入图片描述
    在这里插入图片描述
    keil5的安装:安装完keil5后–>进行STLlink驱动安装(右击此电脑,选择管理–>选择设备管理器,发现其他设备STM32 STLink—>右击STM32 STLink ,选择更新驱动程序—>选择浏览我的计算机---->点击浏览选择驱动目录,win10系统window8–>完成驱动安装)
    在这里插入图片描述
    安装完keil后,双击pack包,然后关闭keil,在创建好的工程目录下进行入MDK-ARM打开NB-test.uvprojx工程,打开工程后查看STMicrorlectronics是否存在(即包是否安装成功)。
    在这里插入图片描述
    在这里插入图片描述

二,使用NB-IOT模块

1,NB-IOT基础工程搭建
开发板底板原理图:
在这里插入图片描述
开发板上NB-IOT核心板原理图:
在这里插入图片描述
分析NB-IOT核心板原理,分析一键还原底板原理,建立IO功能映射表。STM32F051K8芯片IO功能映射表:
在这里插入图片描述
在STM32CubexMX软件下通过IO功能映射表对硬件端口进行定义:
IO口配置:
在这里插入图片描述
在这里插入图片描述
时钟的配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
外设树配置:SPI选择全双工主机模式,USART1选择异步收发模式,USART2选择异步收发模式。
在这里插入图片描述
USART配置:USART1&USART2设置波特率为9600,开启全局中断
在这里插入图片描述
SPI配置:设置数据位为8位,设置波特率为1.5MBit/s,时钟极性为低电平驱动,时钟相位为第一个边沿
在这里插入图片描述
在这里插入图片描述
LCD驱动移植:

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

printf函数重定向
#include< stdio.h>
int fputc(int ch,FILE *f)
{
while((USART1->ISR&0X40)==0);
USART1->TDR = (uint8_t)ch;
return ch;
}
将重定向函数加入到工程下的main.c中,如下:
在这里插入图片描述
在这里插入图片描述
编译时出现如下错误:需要添加一个启动文件.s
在这里插入图片描述
在这里插入图片描述
将STLink烧写器和串口线连接好开发板后插入到电脑上,断电的情况下降SIM卡插入到开发板中。
烧写方法:
方法一:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法二:
使用烧写工具:STM32 ST-LINK Utility_v3.1.0,点击Target下的connect,出现下面的打印信息说明连接成功,然后点击Target下的program,添加烧写文件.hex文件,进行start烧写。
在这里插入图片描述
在这里插入图片描述
烧写完成后,打开串口调试助手:修改波特率和端口号,按三角形的开始键,然后对板子进行复位,查看打印信息。
在这里插入图片描述
2,NO-IOT模块AT指令介绍
什么是AT指令

  • AT命令集是由拨号解调器(MODEM)的发明者为了控制Modem发明的控制协议。
  • AT是Attention的缩写,协议本身采用文本,每个命令均为AT打头。
  • AT指令用于控制手机GSM模块

AT指令级的应用
随后的GPSR控制,3G模块,以及工业上采用的PDU,均采用AT命令集来控制。
AT的优点:简单易懂,标准串口来收发AT命令。
AT指令的示意图
在这里插入图片描述
AT指令的格式:

  • AT指令都以“AT”开头,以回车符(\r)结束。
  • 如果AT指令执行成功,‘OK’字符串返回,否则“ERROR”

AT指令
NB-IOT初始化AT指令

  • AT 命令解释,检测Module与串口是否接通,能否接受AT命令;
    命令格式:AT
    命令返回:OK与串口通信正常,无返回则与串口通未连接)
  • AT+CFUN=0关闭射频功能
  • 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”,"cnet"设置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 关闭连接
    3,AT指令透传
    串口透传开发
    为了便于我们快速掌握AT指令原理,MCU充当透明传输,PC机直接与NB-IOT模组直接通讯
    在这里插入图片描述
    在创建好的工程目录下的main.c中加入如下代码:
    在这里插入图片描述
    在stm32f0xx_it.c中加入如下串口中断处理的代码:
    在这里插入图片描述
    编译烧录到开发板后,连接串口,通过串口调试助手发送AT指令来查看信心的打印信息。
    在这里插入图片描述

三,NB-IOT连接网络

1,实现自己的服务器
物联网通信过程
在这里插入图片描述
内外网结构
在这里插入图片描述
实现内网穿透
socketTool V4.exe
在这里插入图片描述
在这里插入图片描述
官网主页:https://www.ngrok.cc/login.html
使用说明:https://www.ngrok.cc/_book/
电脑和服务器端建立隧道
在这里插入图片描述
在这里插入图片描述
2,使用AT命令连接服务器
下载ngrok客户端:
在这里插入图片描述
将隧道id添加到Sunny-Ngrok启动工具.bat 下
在这里插入图片描述
在这里插入图片描述
Lierda NB Module V150_AT CommandSet_B300_V1.1.pdf文档
通过AT+CSQ查看是否有信号,AT+CGPADDR查看信号的ip地址(是否入网)
NB-IOT通过AT指令联网:创建socket (AT+NSOCR=STREAM,6,60000)—>连接服务器*AT+NSOCO=1,远程域名地址查到的ip地址,远程端口号10624)—>发送数据(AT+NSOSD=1)—>关闭连接(AT+NSOCL=1,个数,十六进制数据)
Windows下通过cmd命令窗口键入:ping +远程域名地址 查看到ip地址

在这里插入图片描述
NB模块与服务器建立了连接:
下一步发送数据在这里插入图片描述
3,使用自动化串口工具来发送AT指令
在这里插入图片描述
通过TCP/UDP socket 调试工具查看连接好服务器后接收到的消息。

四,实现代码驱动NB-IOT

1,驱动NB联网代码
利用STM32CubeMX生成代码,单片机的串口2与NB模块进行通信,给串口2配置DMA功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DMA接受部分的函数如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2,驱动NB串口发送和接受

3,驱动NB串口任务框架

4,驱动NB完整联网

5,修改AT指令为灵活字符串

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值