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 官方出的图形化配置工具。用它来配置时钟、引脚、外设,然后自动生成初始化代码。说白了,就是帮你省掉写底层配置的功夫。
安装步骤:
- 去 ST 官网下载 CubeMX,需要注册账号
- 安装 Java 运行环境(CubeMX 基于 Java)
- 安装完成后,打开 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 本章小结
这一章我们做了三件事:
- 搞清楚了物联网终端的架构——采集、处理、传输
- 选好了芯片和模组——STM32F103 + BC26 是黄金组合
- 搭好了开发环境——Keil + CubeMX + 串口工具
下一章,我们会用 CubeMX 生成第一个工程,然后点亮 LED。别小看这个 LED,它背后藏着 GPIO 配置、时钟树、工程结构这些基本功。嗯,到时候见。
课后作业:
- 安装 Keil MDK 和 CubeMX,确保能打开
- 用 USB 转 TTL 线连接电脑,打开 SSCOM,看看能不能收到数据(可以短接 TX 和 RX 自测)
- 思考一下:你的项目里,传感器数据多久采集一次?需要实时上传还是定时上传?这决定了你的终端架构设计。