物联网竞赛——新大陆NB-IOT模块深入浅出,全网讲解新大陆NB-IOT模块最详细的文章,一文从硬件到程序贯通基于STM32L151C8T6对NB-IOT模组的开发,快速帮助竞赛新人扫盲

物联网竞赛中时常会出现用新大陆NB-IOT模块或LoRa模块进行程序开发的任务,尽管分值占比不大,但实际完成难度也比较低,在比赛中可以花很短时间便拿下,属于半个送分题(完全的送分题是pip-v和pip list那种一秒拿一分的题)。我个人评价是这类任务做起来也比较死板,相信通过本篇文章的讲解,一个未接触过该类模块开发的新手也能快速进行任务实现。

而这篇文章会从硬件到程序较为全面地(相较于创作时网上已有的内容)对新大陆NB-IOT模块进行讲解,以便各个学习阶段的朋友都能对这个模块有更好的理解。

新大陆NB-IOT模块硬件

NB-IOT模块外观(正面)

从上图的硬件布局中不难看出,模块左半部分主要是STM32主控及其外设,而右上部分主要是NB-IOT的外设,我将围绕竞赛中常用及可能用到的外设进行简介,以便初学者对模块硬件的各部分有初步了解:

STM32L151C8T6

新大陆NB-IOT模块使用的STM32主控芯片是Cortex-M3内核低功耗系列的STM32L151C8T6D或STM32L151C8T6A(二者在程序开发上无区别),但实际上在竞赛中都是基于HAL(Hardware Abstraction Layer)库函数进行开发,上文所述任务公式化之处就在于竞赛时提供了开发所需的库文件,不需要再自己进行工程配置(这样就失去了了解STM32底层原理的机会),就算是新手进行开发,只需要记住实现功能所需的几个函数和方法就能完成任务,和填空题背公式写答案没有太大区别。而就STM32L15C8T6系列芯片而言,在网上所能找到的资源也比较零散,没有整合度高以及介绍详细的内容(毕竟不像STM32F103C8T6那样经典并被作为STM32单片机入门必选),而我将会对STM32L15C8T6进行开发所需的工程必要文件整合成一个压缩包上传,并在之后的文章中进行手把手配置STM32L15C8T6开发环境的教学。

新大陆NB-IOT模块的主控STM32L151C8T6在OLED屏幕的下边

OLED模块

OLED技术及其应用已经是老生常谈,本文侧重点不在此。NB-IOT模块使用的是SSD1306OLED驱动芯片驱动的1.3寸7PinOLED屏幕模块,意味着其使用SPI通信协议(Serial Peripheral interface)进行通信,模块中STM32与OLED模块进行通信的引脚插座已在模块丝印上标明。而在竞赛中,不管是基于新大陆LoRa模块还是基于新大陆NB-IOT模块展开的任务,基本上每次都离不开针对OLED屏幕显示的程序开发,而关于OLED程序开发的要点我会在后文程序开发中讲到。

拓展接口

拓展接口(U3)能够简化使用新大陆传感器模块的过程,新大陆传感器模块对应的排针封装能够做到即插即用的便捷程度,而在竞赛中要求使用传感器时模块是也是直接插上就行。其中供电/接地部分排针插座是原理图中的U3B,U3A则是从主控延伸出的10pin插座,提供了常用的与传感器进行通信的接口并直接标明在模块丝印上,DIY爱好者可以直接通过杜邦线与单独的引脚进行连接。

STM32串口插座

新大陆NB-IOT模块上丝印为M3串口插座(J14)的3pin排针插座是从主控PA10/U1_RX和PA9/U1_TX引脚延伸出直接与主控进行串口通信的插座。需要注意的是STM32L151C8T6一共有三对串口通信引脚,新大陆NB-IOT模块引出了其中两对,U1_RX-U1_TX这对引脚在M3串口插座(J14)中可以利用排针插座从外部在新大陆NB-IOT模块本体之上便直接与主控芯片进行串口通信,并且也可通过模块本体与智慧盒进行连接后将下文中的模块串口通道选择拨动开关拨至M3芯片侧,通过与智慧盒上的USB-B母座连接后与这对串口进行通信。而引出的另一对引脚U1_TX2-U1_RX2则在硬件手动配置后用于NB860模组与STM32主控的通信。

模块串口通道选择

在新大陆NB-IOT模块上丝印为模块串口通道选择的DPDT拨动开关(JP2),该开关用于选择与新大陆智慧盒通讯时的串口通道,丝印之上的“模块”指代的对象是整个新大陆NB-IOT模块的主控。

NB模块串口设置与模块串口通道选择原理图

如上述原理图中,拨动开关能够选择智慧盒欲与进行串口通信的对象,此处的RXD和TXD标识实际上为新大陆NB-IOT模块10Pin排针(J9)中的RXD与TXD引脚,NB_RX和NB_TX则是从NB860模组的TXD和RXD引脚延伸而出,将拨动开关拨至NB侧时便可通过智慧盒与新大陆NB-IOT模块上的NB860模组进行串口通信,而将拨动开关拨至M3芯片时则直接通过智慧盒直接与STM32L151C8T6进行通信。需要注意的是,在新大陆NB-IOT模块上并没有类似于CH340,CP2101之类的USB转串口芯片,但却在新大陆NB-IOT模块(背面)却有MAX3485RS458芯片。而USB转串口芯片实际上是在新大陆智慧盒之中的CP2101USB转串口芯片。

NB模块串口设置

在新大陆NB-IOT模块上丝印为“NB模块串口设置”的红色DIP(Dual in-line package)拨码开关(S1),该开关是用于选择NB860模组是与NB串口插座进行通信还是与STM32主控进行通信。丝印上的“NB模块”指代的对象是新大陆NB-IOT模块(正面)右上方处的NB860模组。此处需要注意的是,在通过智慧盒与新大陆NB-IOT本体进行连接并试图通过前者进行通讯或烧录时,必须将拨码开关的3,4号开关拨向OFF侧,确保不会占用进行程序烧录的U1_RX-U1_TX引脚对。

板载按键

新大陆NB-IOT模块一共有KEY1,KEY2,KEY3,KEY4四个板载按键,我已将按键及其相连接进行通断的引脚在图中框出并注明,在物联网竞赛中不管是NB-IOT模块还是LoRa模块按键交互都是必出现的任务并且极易得分的点。竞赛资料中的hal_key.c已经定义好了实现按键监听所需的函数,对于开发者而言只需要了解函数的用法就能够实现任务中的功能,而对于按键相关的程序,我会在后文的程序开发篇详细讲解。

NB-IOT模块外观(背面)

新大陆NB-IOT模块背面功能性硬件并不多,相较于其正面更多的是一些负责模块工作(如稳压,通信)的IC。就物联网竞赛而言,背面可以说是无人问津的,但为了加深各位读者对模块整体的认识以及帮助新手快速扫盲,本文还是会简要介绍其模块背面的硬件及其功能。

金属柱 

新大陆NB-IOT之后的四个金属柱,对应着新大陆智慧盒上的四个磁铁孔,其存在是为了利用磁铁吸附固定住模块本体,方便模块背面的10Pin金属排针座与智慧盒之上的10Pin金属排针紧密连接,这种模块化的磁吸式设计使智慧盒的复用性和模块更换的便捷性大大提高。

AMS1117稳压芯片

老生常谈的稳压芯片,常见于各种电子产品中,用于将5V输入电压转换至3.7V。

物联网SIM卡卡槽

为用于NB-IOT窄带物联网通信所提供的卡槽,竞赛暂未提及使用其通信及其相关功能开发,这里不展开讲解。

MAX3485

用于RS485和RS232通信相关的芯片。

HEF4093BT

拥有施密特特性的4通道与非门芯片。

STC121E5616AD

该芯片用于NB-IOT模块RS485通信功能。

10Pin排针座

新大陆NB-IOT模块背面的10Pin排针座(J9),用于连接NB-IOT模块本体与 智慧盒并进行供电/通信

新大陆NB-IOT模块程序开发

在物联网竞赛的任务书中对于此模块的程序开发基本上离不开围绕OLED屏幕模块和板载按键的运用,并且其程序开发同样适用于经常在竞赛中同时出现的新大陆LoRa模块中。本文将围绕针对其OLED屏幕及其板载按键的程序进行讲解。

OLED模块

作者:敖然722

物联沃分享整理
物联沃-IOTWORD物联网 » 物联网竞赛——新大陆NB-IOT模块深入浅出,全网讲解新大陆NB-IOT模块最详细的文章,一文从硬件到程序贯通基于STM32L151C8T6对NB-IOT模组的开发,快速帮助竞赛新人扫盲

发表回复