1、课程导论与开发环境搭建:物联网终端架构概述、STM32与NB-IoT选型、Keil MDK与CubeMX安装、串口调试工具配置

1.1 物联网终端到底长什么样?

说实话,很多初学者一上来就盯着代码看,结果越看越懵。我个人的习惯是——先搞清楚整个系统长什么样,再动手。

一个典型的物联网终端,说白了就三块:

  • 感知层:传感器采集数据,比如温度、湿度、光照
  • 控制层:主控芯片处理数据,这里我们用 STM32
  • 通信层:把数据发到云端,这里我们用 NB-IoT 模组

你想想看,这三层之间怎么配合?传感器把物理量变成电信号,STM32 通过 ADC 或者 I2C 读进来,处理一下,再通过串口发给 NB-IoT 模组,模组再通过基站上云。嗯,流程就这么简单。

核心要点:物联网终端不是单片机开发,也不是单纯的无线通信。它是「采集 + 处理 + 传输」的闭环。缺一个,都不叫完整的终端。

我在项目中遇到过不少同学,把 STM32 调得溜溜的,但一接上 NB-IoT 模组就各种掉线。为什么?因为没搞清楚终端架构里的「状态机」——什么时候采集,什么时候发送,什么时候休眠。这些后面我们会详细讲。

1.2 STM32 选型:别盲目追求高配

选芯片这件事,我踩过坑。以前有个项目,上来就选了 STM32F407,结果发现根本用不上浮点运算,白白多花了十几块钱成本。

对于 NB-IoT 终端,我个人建议:

需求场景 推荐型号 理由
简单传感器采集(温湿度、烟感) STM32F103C8T6 性价比高,资料多,够用
多传感器 + 低功耗 STM32L051 休眠功耗低至 0.4μA
需要 LCD 显示或复杂运算 STM32F401 主频高,带 DSP 指令

说白了,选型就三个字:够用就行。别为了「以后可能用得上」去选高配芯片。NB-IoT 终端大部分时间在休眠,主频再高也没用。

我的经验:初学者先用 STM32F103C8T6,也就是我们常说的「蓝板子」。淘宝 10 块钱一块,烧了也不心疼。等把整个流程跑通了,再考虑低功耗选型。

1.3 NB-IoT 模组怎么选?

NB-IoT 模组,市面上主流的有 BC26、BC95、M5310 等等。我最早用的是 BC95,那时候资料少,一个 AT 指令调了三天才通。

现在嘛,我个人推荐 BC26 或者 M5310-A。原因很简单:

  • BC26:支持移动、电信、联通三网,兼容性好
  • M5310-A:中移物联的,国内用移动卡的话,稳定性不错
  • BC95:老款了,但有些项目还在用,资料多

这里有个坑,我曾经遇到过——模组和卡的运营商要匹配。你买个电信的 NB 卡,结果模组只支持移动频段,那就尴尬了。所以买之前,一定问清楚卖家支持哪个运营商的卡。

注意:NB-IoT 模组一般用串口和 STM32 通信。串口波特率默认 9600,但有些模组是 115200。拿到手先看手册,别上来就调。

1.4 开发环境搭建:Keil MDK 与 CubeMX

好,选型说完了,咱们开始搭环境。这部分我尽量说得简单点,别搞复杂了。

1.4.1 安装 Keil MDK

Keil MDK 是我们写 STM32 代码的主力工具。去官网下载 MDK-Arm 版本,目前最新的是 V5.38。安装过程没什么特别的,一路 Next 就行。

但要注意:

  • 安装路径不要有中文
  • 安装完成后,需要注册(你懂的)
  • 记得安装对应芯片的 Pack 包,比如 STM32F1 的 DFP

我个人习惯用 Keil 5,界面清爽,编译速度也快。V4 版本太老了,不建议再用。

1.4.2 安装 STM32CubeMX

CubeMX 是 ST 官方出的图形化配置工具。用它来配置时钟、引脚、外设,然后自动生成初始化代码。说白了,就是帮你省掉写底层配置的功夫。

安装步骤:

  1. 去 ST 官网下载 CubeMX,需要注册账号
  2. 安装 Java 运行环境(CubeMX 基于 Java)
  3. 安装完成后,打开 CubeMX,会自动更新固件库

嗯,这里有个小技巧——CubeMX 生成的代码默认是 HAL 库。HAL 库封装得比较厚,但可读性好。如果你追求极致性能,可以改用 LL 库。不过对于初学者,HAL 库足够了。

我的工作流:先用 CubeMX 配置好所有外设,生成 MDK 工程。然后在 Keil 里写业务逻辑。这样既快又不容易出错。

1.5 串口调试工具配置

串口是嵌入式开发者的「眼睛」。没有串口,你根本不知道 STM32 在干什么,NB-IoT 模组有没有收到数据。

常用的串口工具有:

  • SSCOM:小巧,绿色版,我用了十年
  • Putty:功能强,但配置稍复杂
  • MobaXterm:支持多标签,适合同时监控多个串口

我个人推荐 SSCOM,原因就一个字——。打开就能用,波特率、数据位、停止位一设,点打开就完事。

配置要点:

  • 波特率:和你的设备一致,STM32 默认 115200 或 9600
  • 数据位:8
  • 停止位:1
  • 校验位:None
  • 流控:None

避坑指南:我曾经遇到过串口线接触不良,导致数据乱码。排查了半天,最后发现是杜邦线松了。所以,串口线一定要插紧。有条件的话,用 USB 转 TTL 的成品线,别用杜邦线自己拼。

1.6 本章小结

这一章我们做了三件事:

  1. 搞清楚了物联网终端的架构——采集、处理、传输
  2. 选好了芯片和模组——STM32F103 + BC26 是黄金组合
  3. 搭好了开发环境——Keil + CubeMX + 串口工具

下一章,我们会用 CubeMX 生成第一个工程,然后点亮 LED。别小看这个 LED,它背后藏着 GPIO 配置、时钟树、工程结构这些基本功。嗯,到时候见。

课后作业:

  • 安装 Keil MDK 和 CubeMX,确保能打开
  • 用 USB 转 TTL 线连接电脑,打开 SSCOM,看看能不能收到数据(可以短接 TX 和 RX 自测)
  • 思考一下:你的项目里,传感器数据多久采集一次?需要实时上传还是定时上传?这决定了你的终端架构设计。