1. 课程导学与硬件准备
各位同学,欢迎来到这门实战课。我是你们的讲师,一个在嵌入式圈子里摸爬滚打了十几年的老工程师。今天咱们先不急着写代码,把地基打牢再说。
这一章,我会带你搞清楚三件事:嵌入式系统到底是个啥玩意儿?LoRa 和 GPS 这两个技术凭什么能组合在一起干活?以及,咱们得准备哪些家伙事儿才能把课跟下来。
嵌入式系统:不只是单片机
很多人一提到嵌入式,脑子里就蹦出「单片机」。其实,嵌入式系统的范围比这大得多。它是指那些「嵌入」到某个设备里,专门干一件事的计算机系统。你的手机、路由器、智能手表、甚至微波炉里的控制板,都是嵌入式系统。
我个人习惯把嵌入式系统拆成三个层次来看:
- 硬件层:CPU、内存、外设接口(UART、SPI、I2C)。这是骨架。
- 固件层:裸机程序或 RTOS(实时操作系统)。这是肌肉。
- 应用层:业务逻辑,比如解析 GPS 数据、发送 LoRa 报文。这是灵魂。
咱们这门课,三个层次都会涉及。但重心会放在「硬件驱动」和「应用层」的衔接上。说白了,就是教你怎么让单片机跟 LoRa 模块、GPS 模块「说上话」。
LoRa 技术原理:远距离与低功耗的平衡
LoRa 是「Long Range」的缩写。它是一种扩频调制技术,由 Semtech 公司发明。它的核心优势就两个:传得远、功耗低。
为什么它能传得远?因为 LoRa 用了「啁啾扩频」(CSS)技术。简单说,就是把一个窄带信号,在频域上「拉宽」了。这样做的好处是,抗干扰能力极强,接收灵敏度可以做到 -140 dBm 以下。我在一个城市公园里做过测试,用 20 dBm 的发射功率,空旷地带轻松传了 3 公里。
但 LoRa 也有短板:速率低。它的有效数据速率通常在 0.3 kbps 到 50 kbps 之间。你想想看,传一张高清照片肯定不行,但传几个传感器数值、一个 GPS 坐标,绰绰有余。
LoRa 的几个关键参数,你得记住:
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 扩频因子 (SF) | SF7 ~ SF12,越大越远,但越慢 | 一般用 SF9 做平衡 |
| 带宽 (BW) | 125 kHz / 250 kHz / 500 kHz | 125 kHz 最常用 |
| 编码率 (CR) | 4/5 ~ 4/8,越高越抗干扰 | 默认 4/5 即可 |
| 发射功率 | 2 dBm ~ 20 dBm | 注意各国法规限制 |
GPS 定位基础:从卫星到坐标
GPS 全称是 Global Positioning System,美国佬搞的。咱们常用的北斗、GLONASS 也是类似原理。GPS 模块通过接收至少 4 颗卫星的信号,计算出自己的经纬度和海拔。
模块输出的数据格式,99% 都是 NMEA-0183 协议。这是一种纯文本协议,以 $ 开头,以 <CR><LF> 结尾。最常用的语句是 $GPGGA 和 $GPRMC。
举个例子,一条典型的 GGA 语句长这样:
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
我来给你拆解一下:
123519:UTC 时间 12:35:194807.038,N:北纬 48 度 07.038 分01131.000,E:东经 11 度 31.000 分1:定位状态(1 表示单点定位)08:使用 8 颗卫星545.4,M:海拔 545.4 米
咱们后面写驱动,主要就是解析这种字符串。别怕,C 语言里用 strtok 或者 sscanf 就能搞定。
开发板选型:为什么是 STM32?
市面上单片机那么多,为什么我选 STM32?原因有三:
- 生态成熟:HAL 库、LL 库、CubeMX 配置工具,资料多到你看不完。
- 性能够用:咱们用的 STM32F103 系列,72 MHz 主频,足够同时跑 LoRa 驱动和 GPS 解析。
- 便宜耐造:一块最小系统板十几块钱,烧了也不心疼。
具体到咱们课程,我推荐用 STM32F103C8T6 核心板。它有两个 USART,一个给 LoRa 模块,一个给 GPS 模块,刚刚好。
所需元器件清单
工欲善其事,必先利其器。下面这个清单,建议你一次性买齐。我在淘宝上买过很多次,总价不超过 100 块钱。
| 元器件 | 型号/规格 | 数量 | 备注 |
|---|---|---|---|
| STM32 核心板 | STM32F103C8T6 | 1 | 带 USB 转串口 |
| LoRa 模块 | E32-433T20S (SX1278) | 2 | 至少两个才能通信 |
| GPS 模块 | ATGM336H (北斗+GPS) | 1 | 带陶瓷天线 |
| USB 转 TTL | CH340G | 1 | 调试用 |
| 杜邦线 | 公对母 / 母对母 | 各 20 根 | 颜色分开好区分 |
| 面包板 | 830 孔 | 1 | 不用焊接,方便改 |
| LED + 电阻 | 5mm LED + 220Ω | 若干 | 指示状态用 |
本章知识体系
下面这张图,把咱们这一章的核心内容串起来了。你可以把它当成一张「地图」,后面每学一个知识点,都能在这张图上找到位置。
嗯,这张图你看明白了吗?从上到下,咱们先搞懂三个技术各自是什么,然后统一到「硬件准备」这个落脚点上。后面的课程,就是围绕这张图展开的。
好了,这一章的内容就到这里。东西不多,但都是后面实战的根基。尤其是元器件清单,建议你对照着买齐,别等到写代码的时候才发现缺这缺那。