NB-IOT简介
NB-IOT即窄带蜂窝物联网,是基于蜂窝的窄带物联网的一种新兴技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网;具有低成本、低功耗、广覆盖等特点。
NB-IOT开发的硬件环境
所使用硬件设备是江苏学蠡信息科技有限公司的无线传感器网络实验平台,在该平台上不仅可以进行NB-IOT的相关实验操作,可以对Lora和ZigBee等物联网通信技术的实验进行操作。并且使用了模块化插件的设计,只需要更换不同的模块就可以快速搭建一个多功能的传感器网络实验效果,非常的便捷和稳定。
针对NB-IOT的硬件设备以及各种操作均在左上方的液晶扩展板上进行。
液晶扩展版的结构介绍:
左侧部分:
无线模块接口放置NB-IOT核心模块(也叫LPMD007模块)(如下所示),它由NB-IOT模块(型号为:lierda NB86-G模块)、NB-IOT网卡、主控MCU(型号为:STM32F103T8U6单片机)以及NB-IOT天线(作用为:保护模组)构成。
仿真器接口可以通过连接ST-Link仿真器从而连接PC端,实现二者的数据传输。
方向按键在后续结合不同的传感器有不同的操作。
中间部分:
传感器模块接口用来放置不同的传感器,NB-IOT可以与不同的传感器(如下所示)相结合从而实现不同的功能。
串口功能选择器,在使用sscom进行接受和发送的时候,一定要向右波动。
液晶显示器,显示一些传感器的一些信息。
右侧部分:
电源开关,供电开关。
按键复位,每当有通过STM-Link进行下载到NB-IOT节点后,均需要进行按键复位。
USB串口,可通过 miniUSB 线缆供电和进行串口调试。
使用的NB-IOT的注意事项:
1.板子可拆卸 拆卸时候断电
2.天线用短线
3.电源必须12V
4.启动按钮在右侧 向上拨动 启动
NB-IOT开发的软件环境
使用MDK集成环境Keil工具编写代码的注意事项:
- 若想让添加头文件可以被keil5识别正确,需要点击Options for Target —》 C/C++ —》 Inlcude Paths —》添加文件所在的文件夹路径
例如:添加.h文件 利用keil上面options for torget '~'的C/C++ 下面区域的include Paths去指定这个路径 就能成功添加且.h文件也不会显示出来了 - 若文件没有被keil5识别,需要点击options for the file —》 在将File Type中的文件类型改为正确的类型,再编译即可
- 若想在keil5上新建代码文件夹存放代码文件,需要利用Manage Project Items进行添加
- 要注意的是在本地的项目路径或者在keil5上直接修改文件不会影响对方
HAL库
HAL,英文全称 Hardware Abstraction Layer,即硬件抽象层。它是 ST 公司提供的外设驱动代码的驱动库,用户只需要调用库的 API 函数,便可间接配置寄存器。我们要写程序控制 STM32 芯片,其实最终就是控制它的寄存器,使之工作在我们需要的模式下,HAL 库将大部分寄存器的操作封装成了函数,我们只需要学习和掌握 HAL 库函数的结构和用法,就能方便地驱动 STM32 工作,以节省开发时间。
利用树状图来展示HAL库文件的结构和在开发中会用到的重要文件:
利用STM32CubeMX开发工程
STM32CubeMX简介
它是由 ST 公司开发的图形化代码自动生成工具,能够快速生成初始化代码,如配置 GPIO,时钟树,中间件等,使用户专注于业务代码的开发。
下面将引入一个跑马灯小实验来展示如何使用STM32CubeMX开发
step1: 工程初步建立: 新建工程, 根据使用的MCU选择芯片型号
step2: 确认时钟源
step3: 配置系统时钟
step4: 配置IO口
step5: 进一步配置IO口的具体属性
step6: 配置工程属性
step7: 生成代码工程
以上详细步骤参考: 学蠡科技的《NB-IOT实验练习2——STM32基础实验》
使用STM32CubeMX创建好一个工程后在本地的查看如下所示:
工程文件介绍:
1.Core文件:
(1)Inc文件夹存放的是工程必须的部分头文件。 .h
(2)Src文件夹下面存放的是工程必须的部分源文件 .cpp .c
2.Drivers文件:
(1) HAL库文件
(2) CMSIS相关文件
3.MDK-ARM
各种 MDK工程文件,可进入后点击.uvprojx文件可直接启动keil5 IDE。
4.最后一个是 STM32CubeMX工程文件,双击该文件就会在 STM32CubeMX中打开。
在Keil5中打开该工程文件,要先配置好下载调试工具(步骤也见:学蠡科技的《NB-IOT实验练习2——STM32基础实验》 )
编写在 main.c 文件代码,添加如下内容:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{-
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
HAL_Delay(500);
}
}
把编译好的程序下载到硬件并复位,可看到NB-IOT模块上的两颗红色LED灯会交替周期闪烁: