SLAMCraft:自主导航机器人 DIY(二)从零设计机器人控制板
文章目录项目往期文章一、电路设计环境搭建1.1 EDA软件安装1.2 立创开源广场二、原理图设计2.1 硬件的系统设计2.2 电源部分(Power)2.2.1 MP2482的降压方案2.2.2AMS1117的降压方案2.2.3 电源接口与保护2.3 最小系统(SystemCore)2.4 外设部分(HardWear)2.4.1 GPIO外设电路2.4.2 串口接口电路2.4.3 I2C接口电路2.
本文记录一次完整的机器人控制板原理图设计过程,从系统拆分开始,逐步完成电源、最小系统与常见外设接口的设计,并在最后通过点灯验证硬件是否可用。
本文你会看到什么
- 机器人控制板的模块化拆分思路
- 12V → 5V → 3.3V 的电源设计方案
- STM32 最小系统的组成与注意事项
- 常见外设接口(GPIO / UART / I2C / SPI / CAN / PWM)的电路设计要点
- 二层板 layout 的最低必要原则
- 通过点灯程序验证硬件是否“活着”
文章目录
项目往期文章
单片机开发环境搭建看这里
CSDN高赞项目:工程训练竞赛之垃圾分类垃圾桶
SLAMCraft:自主导航机器人DIY(一)如何设计一个自己的SLAM机器人
一、电路设计环境搭建
本项目在设计上刻意控制了复杂度,适合作为 PCB 入门练习。考虑到部分读者此前尚未接触过 PCB 绘制,本文选用嘉立创生态中的 EDA 工具与器件资源,以降低学习与实现门槛。
1.1 EDA软件安装
打开百度搜索嘉立创EDA,进入网站后点击客户端下载,并下载立创EDA标准版,根据自己的电脑环境选择安装合适的版本,我这里选择64位版本。安装方法:下载成功后选择安装的磁盘,一路next即可,然后根据引导进行注册账号登录即可使用。

1.2 立创开源广场
立创开源广场汇集了大量成熟的硬件项目,通常包含完整的原理图与 PCB 设计文件。在开展开源或自制项目之前,可以在此检索相关方案,或针对具体功能模块(如降压电源)进行参考,以辅助设计与学习。
二、原理图设计
一般的硬件设计会先根据产品功能进行模块拆分,在此基础上完成原理图设计,再由原理图推进 PCB Layout,最终生成制板文件并进行电路板制造。在这一流程中,原理图承担着承上启下的作用,其合理性和完整性,往往直接影响后续设计的顺利程度。
2.1 硬件的系统设计
本机器人控制板在结构上可划分为三部分:电源模块(Power)、最小系统(SystemCore)以及外设接口模(HardWare)。电源部分采用 12V 锂电池作为输入,通过 DC 电路将电压降至 5V,为板载外设供电,同时预留 USB 接口为树莓派 4B 提供 5V 电源。在搭载激光雷达与相机的使用场景下,5V / 3A 的供电能力能够满足系统需求。
最小系统电路是单片机嵌入式系统的基础组成部分,主要包括主晶振电路、BOOT 与 SWD 接口以及系统复位电路。主晶振用于为 MCU 提供系统时钟,本设计选用 8 MHz 晶振,后续在软件配置阶段通过倍频方式生成系统工作时钟(相关配置将在编码部分展开)。
对于掉电后仍需保持计时的时间与日期信息,控制板预留了 RTC 接口,并配合 32.768 kHz 晶振与纽扣电池使用。SWD 接口用于程序下载与 ST-Link 调试,BOOT 引脚则用于控制系统上电时从 Flash 或内部 SRAM 启动。
控制板在外设配置上覆盖了常见的嵌入式接口类型,资源规模适中,能够支撑基础功能开发与接口学习。
按接口类型划分,外设主要包括以下几类:
- GPIO 接口:用于按键输入与 LED 指示,通过配置 STM32 的 GPIO 模式实现基本的人机交互。
- 串口接口(UART):共设计两路串口,其中一路用于与树莓派通信,另一路作为备用接口,可用于调试输出(如 Shell 日志),或扩展蓝牙、Wi-Fi 等无线模块。
- I2C 接口:连接 MPU6050 与 OLED 模块,前者用于 IMU 数据采集,后者作为调试与状态显示。
- SPI 接口:用于连接 SD 卡模块,采用 SPI 模式进行数据读写。实际使用中建议选用容量不高于 4GB 的 SD 卡,以避免高速卡在 SPI 模式下的兼容性问题。
- CAN 接口:当前未接入具体外设,作为后续功能扩展与学习预留。
- PWM 接口:分为两类用途,一类用于输出 PWM 信号控制电机转速,另一类用于采集编码器返回的脉冲信号,以计算轮子的转速。

2.2 电源部分(Power)
在机器人控制板中,电源模块是系统稳定运行的基础。它不仅负责为各个功能单元提供可靠的电力,还需要兼顾过流与浪涌保护、功耗控制以及噪声抑制等因素,从而影响整机的稳定性与可靠性。
因此,在硬件设计阶段,对电源方案的选型与实现进行充分考虑,是不可回避的一步。
本文将围绕电源部分的设计,介绍一种常见且易于实现的供电方案:使用 MP2482 完成 12V → 5V 的降压,再通过 AMS1117 实现 5V → 3.3V,为系统各模块提供所需电源。
2.2.1 MP2482的降压方案
MP2482作为一款单片降压开关模式转换器,内置了内部功率MOSFET。其特点在于能够在广泛的输入电压范围内提供高达5A的连续输出电流,并具备优秀的负载和线路调节能力。对于我们的12V输入、5V3A输出的供电需求而言,MP2482恰好符合这一要求。进一步查询MP2482的芯片手册后,我们发现在输入电压为12V、输出电流为2A时,整个转换效率也表现出色(如下图所示)。这一结果充分验证了我们设计方案的正确性。

在MP2482芯片中,有两个关键的外部元件,即反馈电阻和分压电阻。这两个电阻分别被标记为R1和R2。有趣的是,这两个电阻的值决定了MP2482的输出电压。简单地说,输出电压(Vo)与这两个电阻的关系可以通过下面的公式计算:
V o = V r e f ( 1 + R 2 R 1 ) V_o = V_{ref}\left(1+\frac{R_2}{R_1}\right) Vo=Vref(1+R1R2)
这里V_ref 是MP2482的参考电压,一般为0.8V。通过调整R1和R2的值,我们可以轻松地实现不同的输出电压。这使得MP2482成为设计中非常灵活的一个组件,能够满足各种不同电源需求。将R1和R2选择一组从常用阻值即可,这里我选择的是75KΩ和14.3KΩ,反馈电阻和分压电阻的确定后,可以参考官方给的原理图进行原理图设计,下面是官方给的原理图:
在电源电路设计中,滤波电容是不可或缺的组成部分,其主要作用是降低纹波与噪声,并提升电源输出的稳定性。 在 MP2482 的官方参考原理图基础上,适当增加输入端与输出端的滤波电容,有助于改善电源的瞬态响应和抗干扰能力,从而进一步提升整体电源性能与系统稳定性。
在电源设计中,滤波电容分别在输入端和输出端发挥着不同的作用。在输出端,合理配置滤波电容可以有效降低输出纹波电压,使电源输出更加平稳,这对于对电源稳定性要求较高的应用尤为重要。在输入端,滤波电容主要用于抑制来自输入电源的噪声与干扰,为 MP2482 提供相对干净、稳定的输入环境,从而保证其正常、可靠地工作。
通过在官方参考原理图的基础上补充必要的滤波电容,MP2482 的电源系统在稳定性和抗干扰能力上得到了进一步增强,使其能够在更复杂的工作条件下保持稳定输出。
这一调整有助于提升电源电路的整体可靠性,并为后续系统运行留出余量。此外,考虑到机器人在非工作状态下需要对整板电源进行断开,本设计在电源输入路径中增加了电源开关,用于实现整板的物理断电控制。
2.2.2 AMS1117的降压方案
在需要将 5V 电压转换为 3.3V 为单片机供电的场景下,AMS1117 是一种常见且成熟的选择。
作为一款线性稳压器,AMS1117 方案简单、可靠,适合用于对电源纹波要求不高、负载电流相对稳定的 3.3V 供电场景。
选择 AMS1117 的主要原因如下:
| 优势 | 说明 |
|---|---|
| 稳定性好、压差低 | 在输入电压存在一定波动的情况下,仍能够提供相对稳定的 3.3V 输出 |
| 使用简单 | 仅需少量外围元件(输入、输出电容)即可完成稳压设计,电路实现成本低 |
| 具备保护机制 | 支持过热保护,在过载或异常情况下可降低损坏风险,提高系统可靠性 |
由于 AMS1117 的外围电路较为简单,仅需在电路中加入适当的滤波电容即可,因此这里直接提供整个电路的原理图,不再赘述具体细节。
2.2.3 电源接口与保护
本控制板不仅为板载外设提供电源,还通过 USB 接口为上位机(树莓派 4B)提供 5V 电源。考虑到树莓派 4B 的 USB 接口推荐 5V / 3A 的供电能力,为确保安全,我们在 5V 输出路径上串联了一个保险丝元件进行保护。
此外,为了防止由于静电或浪涌电流导致的损害,本设计在 5V 和 3.3V 电源回路中串联了 TVS(瞬态电压抑制二极管),有效抑制外部干扰对板载外设和 MCU 的影响。
2.3 最小系统(SystemCore)
在构建 STM32 最小系统时,理解其组成部分至关重要。以下是需要考虑的关键元素:
- STM32 微控制器芯片(MCU):作为系统的核心,选择适合项目需求的 STM32 系列 MCU 是至关重要的。这包括处理器的速度、内存容量以及外设支持等方面的选择。
- 晶体振荡器:提供系统时钟信号,确保 MCU 按照预定速度运行。选择合适的晶体振荡器频率至关重要,它需要与 MCU 的时钟要求相匹配。
- 下载程序电路:此电路用于程序下载和调试,通常使用 ST-Link 接口。
晶振部分有两个: - 一个 8 MHz 的晶振为 STM32F103C8T6 提供系统时钟信号;
- 另一个 32.768 kHz 的晶振为 RTC 提供时钟源,并配有纽扣电池以确保时钟在掉电时继续运行。
在设计时,需要为这两个晶振选择合适的电容,并确保布线尽量短,晶振与 MCU 尽可能靠近。此外,系统需要具备复位功能,设计了一个复位电路:当按键未按下时,RST 引脚为高电平(VCC);按下时,RST 引脚接地,实现系统复位。
MCU 部分将在后续章节中与外设一同详细阐述。
STLINK下载电路比较简单,只需要引出SWD引脚即可BOOT部分参考官方手册即可。
2.4 外设部分(HardWare)
2.4.1 GPIO外设电路
在本次机器人控制板的硬件系统中,GPIO 类外设包括按键、LED 和蜂鸣器,具体配置如下:
- 按键:连接至 GPIO 的上拉输入模式。在单片机的 GPIO 初始化过程中,按键对应的 GPIO 被设置为上拉模式,这样当按下按键时,GPIO 引脚会接入低电平。通过这种设置,能够使低电平信号的输入更加灵敏。
- LED 和蜂鸣器:连接至 GPIO 的推挽输出模式。推挽输出模式意味着 GPIO 可以提供高电平或低电平输出信号,但由于 GPIO 本身输出电流较小,驱动能力有限。在驱动蜂鸣器时,需要结合三极管来增强驱动能力。

2.4.2 串口接口电路
由于树莓派使用的是 USB 接口,采用 CH340 芯片可以将串口信号转换为 USB 信号,从而简化了与 STM32 的通信过程,避免了使用杜邦线,提升了系统连接的稳定性。 目前,串口二暂时未使用,未来计划用于连接无线模块(如 Wi-Fi 或蓝牙),也可以作为程序调试接口,用于打印 Shell 信息等。
简易双向串口除了 VCC 外,还需要 TX、RX 和 GND 三根线。串口一采用 CH340N 作为串口转 USB 的转换芯片,CH340N 是一种常见的串口转 USB 芯片,其外围电路简单,不需要额外的晶振,完全能够满足本项目的需求。具体的原理图设计可以参考 CH340N 的官方手册,由于外围电路较为简单,此处仅提供原理图,具体细节不再赘述。
2.4.3 I2C接口电路
I2C(Inter-Integrated Circuit)是由飞利浦公司开发的简单双向二线制串行通信协议。 I2C 总线由两根信号线组成:
- SCL:时钟线,用于同步数据传输
- SDA:数据线,双向传输数据
I2C 通信采用半双工同步模式,数据传输以高位先行的方式进行,即先发送数据的高位。I2C 支持多主机与多从机通信,但不使用片选信号。每个设备在总线上都有唯一的设备地址,主机通过在 SDA 线上发送设备地址来定位从机。为了确保总线正常工作,I2C 总线上需要接入两个上拉电阻,以拉高信号线。时钟线 SCL 的作用是控制数据线 SDA 上数据的有效性:当 SCL 为高电平时,SDA 上的数据有效;当 SCL 为低电平时,SDA 上的数据无效。
本次设计中,I2C 接口设备包括两个:OLED 和 MPU6050。
- OLED 的接口相对简单,仅需引出 VCC、GND、SCL 和 SDA 信号,并将其连接到母座即可。
- MPU6050 为板载设备,相较于 OLED,外围电路较为复杂。考虑到集成度,MPU6050 被直接集成到电路板上。
OLED 接口使用了常见的 2.54 母座,简化了连接方式。MPU6050 的外围电路设计参考了官方文档,特别是 C35 电容的作用。C35 电容充当电容泵,帮助维持 MPU6050 模块的电流和电压稳定。尽管理论上推荐使用陶瓷电容,但考虑到成本,普通电容也能满足需求。
2.4.4 SPI接口电路
SD 卡的常见驱动方式有 SDIO 和 SPI 协议。在这两者的比较中,SDIO 协议具有更高的读写速度。它支持 4 线模式,通过 4 条数据线同时传输 4 位数据,从而提高了数据传输效率。然而,SDIO 需要更多的引脚,导致控制的复杂性较高。
相比之下,SPI 协议只需要 2 条数据线(MISO 和 MOSI),使得控制方式相对简单,但其数据传输速度较低。因此,在本设计中,我们选用了 SPI 协议来驱动 SD 卡的读写。
SPI,即Serial Peripheral Interface,是串行外设接口的缩写,是一种高速、全双工、同步的串行通信总线。相比于IIC和串口,SPI速度更快,但相对于USB和网口则较慢。SPI采用主从方式工作,通常包括一个主设备和一个或多个从设备。它需要至少4根线:MISO(主设备输入/从设备输出)、MOSI(主设备输出/从设备输入)、SCLK(时钟)、CS(片选)。由于SPI使用的引脚较少,且布线方便,因此越来越多的芯片集成了这种通信协议。
SD卡有两种,包括TF卡和mico SD,这里的SD卡主要指的是mico SD卡,翻过来以后从左到右为PIN1-PIN8,其各个引脚的功能如下:
| PIN | SD | SPI |
|---|---|---|
| 1 | DAT2 | 仅上拉 |
| 2 | CD/DAT3 | CS |
| 3 | CMD | MOSI |
| 4 | VDD | VCC |
| 5 | CLK | SCK |
| 6 | VSS | GND |
| 7 | DAT0 | MISO |
| 8 | DAT1 | 仅上拉 |
根据上述引脚关系,参考SPI电路设计标准可知,SPI需要进行引脚上拉(10K):上拉电阻可以防止这些信号线因为没有外部输入而漂浮,从而避免在通信过程中发生意外的信号变化或误判;有效地抑制电磁干扰和其他噪声的影响。通过将信号线拉高到一个明确定义的电平(通常是高电平),可以减少外部干扰对信号的影响,提高通信的可靠性和稳定性;在工作时需要一定的电平约束,包括SCLK和CS线。通过添加上拉电阻,可以确保这些要求得到满足,从而使得SPI设备能够正确识别和解析数据线上的信号。具体的电路设计如下:
2.4.5 CAN接口电路
CAN(Controller Area Network)是一种广泛应用于汽车、工业控制和其他领域的串行通信协议。它被设计用于在高噪声环境下可靠地传输数据,具有高速、可靠、实时性强的特点。CAN通信采用差分信号传输,能够抵抗电磁干扰,并支持多主机系统。CAN通常用于传输实时数据和控制信息,是许多嵌入式系统中重要的通信协议之一。
控制板上的CAN是作为预备的通信接口,TJA1050是CAN (Controller Area Network)协议控制器和物理总线之间的接口。该器件向总线提供差分发送能力,并向CAN控制器提供差分接收能力。TJA1050是继PCA82C250和PCA82C251之后,飞利浦推出的第三款高速CAN收发器。最重要的区别是:由于输出信号CANH和CANH的最佳匹配,大大降低了电磁发射,改善了在无电状态下的行为。这使得TJA1050非常适合在部分供电网络中处于断电情况的节点中使用。CAN总线是一种差分信号传输系统,终端电阻的阻值通常与总线特性阻抗相匹配,以防止信号反射和干扰。这有助于确保信号在总线上的稳定传输,并减少信号失真。具体的外围电路设计如下:
2.4.6 PWM外设电路
PWM外设有两种:一种是对外输出PWM控制电机,两个PWM控制两个电机,通过两个电机的组合即可实现机器人的移动;另一种采集编码器返回的脉冲,通过AB相计算出电机的转速,同时预留了一组PWM输出控制舵机的接口。无论是哪一种外设,接口电路都较为简单,只需要将其引出接在MCU的对应引脚上即可。

这里各个引脚的功能如下:
| 外设部分 | 对应引脚 |
|---|---|
| PWM控制电机 | AOx、BOx |
| PWM控制舵机 | PA8 |
| 电机编码器(AB相) | A1 B1、A2 B2 |
其中PWM控制电机部分,AOx、BOx接在TB6612驱动上,进而控制电机。TB6612是常见的电机驱动,可以对外输出两组PWM控制电机,并且根据输入PIN值的不同可以实现正反转,具体的外围电路如下:

到这一步基本上就完成了我们需要的机器人控制板的原理图部分,在下一个部分我们将会进行PCB设计。
2.5 layout注意事项
本次机器人控制板初步定为二层板,整个板载外设都是低速信号。低速板的layout较为简单,对于新手来说不必事先对layout做过多学习,只需要注意以下一些基本的布线规则即可:
| PCB布局: |
|---|
| 1.遵循“先整体,后局部”,先进行核心部分的布局和layout,例如:MCU核心部分、串口接口等。 |
| 2.布局参考原理图,根据单板的主信号流向规律安排主要元器件。 |
| 3.电源、模拟小信号、高速信号、时钟信号、同步信号、ADC采样信号等关键信号优先布线。 |
| 4.剩下的就是将各个部分连线上,拉线即可。 |
这里不对layout进行过多阐述,可以去MOOC平台、BILIBILI搜索立创EDA的使用技巧和教程。
三. 快来做点灯大师
本项目的开发环境是在windows平台的Keil5 MDK,十六师兄在这里就不过多赘述,可以查看十六师兄在之前博客中写过的安装与破解方法,记得要安装STM32F10X的pack。创造不易多多点赞!安装方法:单片机开发环境搭建看这里 安装完成后,简易写个点灯程序进行硬件检查。
在嘉立创打板后,使用加热台进行元器件的焊接,这里提一嘴焊接是一个技术活,我要是焊接废了两块控制板后才制作好成品,硬件设计往往不能一次成功,这里也是迭代了两个版本才做出较为满意的作品。创造不易多多点赞,带你手把手做项目, 如需需要相关的打板文件请私聊。如需合作可以私聊,目前在某大厂任职,在去年的秋招中获得数十个offer。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)