第一章:课程导论与硬件准备
各位同学,欢迎来到《GPIO电机驱动与UART串口上位机开发实战》的第一课。
做嵌入式开发这么多年,我见过太多人一上来就啃数据手册,结果焊好板子发现电机不转、串口乱码。说白了,硬件开发最怕的就是「基础概念没理清,工具没备齐」。这一章我们不急着写代码,先把地基打牢。
1.1 GPIO与UART:你每天都在用的两个外设
先聊聊GPIO。GPIO的全称是General Purpose Input/Output,通用输入输出口。你可以把它想象成芯片的「手脚」——要么输出高/低电平去控制LED、电机使能脚,要么读取外部电平来判断按键是否按下。
核心要点:GPIO只有三种状态——高电平、低电平、高阻态。驱动电机时,我们主要用推挽输出模式,电流驱动能力一般在几mA到20mA之间。直接驱动电机?不行,电流不够,必须加驱动芯片。
再说UART。Universal Asynchronous Receiver/Transmitter,通用异步收发器。我刚开始做项目时总觉得它很神秘,其实说白了就是两根线(TX、RX)加上共地,就能让两个设备聊天。波特率要一致,数据格式要匹配,就这么简单。
| 特性 | GPIO | UART |
|---|---|---|
| 通信方式 | 并行(单线或多线) | 串行(异步) |
| 典型用途 | 控制LED、读取按键、电机使能 | 与PC通信、传感器数据上报 |
| 速度 | 取决于MCU主频,可到MHz级别 | 常用9600~115200 bps |
| 抗干扰能力 | 一般,长线需加缓冲 | 较好,差分版本(RS485)更远 |
我的经验:调试UART时,先用逻辑分析仪看波形,别上来就怀疑代码。我曾经花了一整天查一个串口乱码问题,最后发现是TX和RX接反了——嗯,这种低级错误谁都犯过。
1.2 开发板选型:STM32 vs ESP32
选开发板就像选工具,没有最好的,只有最合适的。我两个平台都用过,说说我的感受。
- STM32(以STM32F103C8T6为例):稳定、生态成熟、资料多。适合工业级应用,实时性好。缺点是WiFi/蓝牙需要外挂模块。
- ESP32:自带WiFi+蓝牙,性价比极高。适合需要无线通信的项目,比如手机APP控制电机。缺点是ADC精度一般,低功耗模式稍复杂。
我个人习惯:如果项目只需要本地控制、对实时性要求高,选STM32;如果需要联网、远程监控,ESP32更省事。本课程会以STM32为主,但原理完全通用,ESP32用户也能跟着做。
| 对比项 | STM32F103C8T6 | ESP32 |
|---|---|---|
| 主频 | 72 MHz | 240 MHz(双核) |
| GPIO数量 | 37个 | 34个 |
| UART接口 | 3个 | 3个 |
| 无线功能 | 无(需外接) | WiFi + BLE |
| 开发环境 | Keil / STM32CubeIDE | Arduino IDE / ESP-IDF |
| 参考价格 | 约15元 | 约25元 |
1.3 电机驱动模块:L298N与DRV8833
MCU的GPIO直接驱动电机?别想了,电流不够。我们需要驱动芯片来「放大」控制信号。
L298N:经典双H桥驱动芯片,能驱动两个直流电机或一个步进电机。最大电流2A,价格便宜(几块钱)。缺点是压降大(约2V),发热明显。我早期做智能小车用的就是它,皮实耐造,但效率确实不高。
DRV8833:TI出品,也是双H桥,但更现代。最大电流1.5A,压降小(0.4V左右),自带过流保护。体积小,适合电池供电的项目。我在一个便携式云台项目里用过,发热控制比L298N好太多。
避坑指南:我曾经在L298N的使能脚上直接接了5V,结果电机启动瞬间电流过大,把MCU的GPIO烧了。记住:驱动芯片的逻辑电源和电机电源一定要分开,共地但别共用电源轨。
| 参数 | L298N | DRV8833 |
|---|---|---|
| 驱动方式 | 双H桥 | 双H桥 |
| 最大电流 | 2A(每通道) | 1.5A(每通道) |
| 逻辑电压 | 5V | 2.7V~5.5V |
| 电机电压 | 5V~35V | 2.7V~10.8V |
| 保护功能 | 无 | 过流、过热、欠压 |
| 封装 | MultiWatt15 | QFN/TSSOP |
1.4 所需工具清单
工欲善其事,必先利其器。下面是我建议你准备的东西,别买太多,够用就行。
- 开发板:STM32F103C8T6最小系统板 或 ESP32-DevKitC
- 电机驱动模块:L298N模块 或 DRV8833模块
- 直流电机:2个,带轮子或编码器更好(N20电机不错)
- 电源:12V/2A适配器(给L298N供电)或 7.4V锂电池(给DRV8833)
- 杜邦线:公对公、公对母、母对母各20根
- 面包板:830孔一块
- USB转TTL模块:CH340G或CP2102,用于UART调试
- 万用表:测电压、通断,必备
- 逻辑分析仪:24MHz 8通道的就行,几十块钱,调试神器
省钱建议:逻辑分析仪可以先用示波器替代,但示波器贵。我建议买个便宜的USB逻辑分析仪,配合PulseView软件,抓UART波形、PWM信号完全够用。
1.5 本章知识体系
下面这张图帮你理清本章的核心脉络。别怕,后面每一章都会配这样的结构图。
1.6 写在最后
这一章的内容偏概念和准备,可能有点枯燥。但相信我,后面每一章都会让你亲手写出能跑的代码、能转的电机、能通信的串口。硬件开发就是这样——前期准备越充分,后面踩的坑越少。