MicroPython · ESP32-C3 · 2WD

MicroPython 智能小车程序设计(2WD)教程提纲

PiCar Mini 2WD(ESP32-C3 SuperMini + 双 H 桥 + HC-SR04)配套的程序设计教学路线:每章对应可观察的硬件现象,从 GPIO 到避障综合项目。

← 返回 PiCar Mini 2WD 专题页

1. 教程定位

本教程面向已学习少量 Python 基础、但尚不熟悉嵌入式硬件编程的学习者。课程以 MicroPython 为编程语言,以 ESP32-C3 SuperMini + 2WD 小车 为硬件平台,通过一辆可运行的小车,把 Python 程序设计与传感器、电机、GPIO 控制结合起来。

教程不采用「先系统讲完语法、再做项目」的方式,而是围绕智能小车的功能逐步展开:每一章都对应一个可以观察到的硬件现象或小车动作,让学习者在动手实验中理解程序结构、硬件接口和控制逻辑。

教程主线:

点亮 LED → 读取按钮 → 控制单电机 → 控制 2WD 小车 → 超声波避障 → 综合项目

其中,点亮 LED 用于建立 GPIO 输出概念;读取按钮 用于理解 GPIO 输入与程序状态;控制单电机 用于学习 H 桥驱动和 PWM;控制 2WD 小车 用于组合左右轮动作;超声波避障 用于把传感器数据转化为控制决策;最终通过综合项目整理成完整的小车程序。

MicroPython 2WD 教程主线示意图
MicroPython 智能小车程序设计(2WD)教程主线

本教程强调三个方面:

  1. 可见结果:每个阶段都能通过灯光、按钮、电机或小车动作看到程序运行结果。
  2. 逐步组合:先完成单个模块,再组合成完整小车。
  3. 代码整理:在项目后期将程序拆分为 config.pybutton.pystatus_led.pymotor_driver.pycar.pyultrasonic.pymain.py 等文件,形成清晰的项目结构。

2. 教程目标

完成本教程后,学生应能够:

  1. 使用 MicroPython 在 ESP32-C3 上运行程序。
  2. 理解 GPIO 输入、输出、PWM 的基本用法。
  3. 控制红绿 3mm LED 灯珠显示小车状态。
  4. 读取按钮输入,实现启动 / 停止控制。
  5. 控制 2WD 小车前进、后退、转向、停止。
  6. 使用 HC-SR04 超声波模块测距。
  7. 实现简单避障逻辑。
  8. 将代码拆分为多个模块,形成可维护的小车程序结构。

3. 硬件基础方案

本教程使用一套 2WD 智能小车硬件作为教学平台。硬件由 ESP32-C3 SuperMini 控制板2WD 底盘套件双 H 桥电机驱动模块HC-SR04 超声波模块运行按钮红绿 3mm LED 灯珠18650 供电模块 组成。

2WD 底盘套件
2WD 底盘套件(含 TT 电机×2、驱动轮、万向轮、亚克力底板;与 PiCar Mini 2WD 专题一致)

其中,2WD 底盘套件提供小车的机械结构和左右两个驱动电机;ESP32-C3 SuperMini 运行 MicroPython 程序;电机驱动模块负责把控制板输出的 GPIO 信号转换为电机动作;超声波模块用于检测前方距离;按钮用于启动或停止程序流程;红绿 LED 灯珠用于显示小车状态;电池与充放电模块为整车供电。

模块用途
ESP32-C3 SuperMini主控,运行 MicroPython 程序
2WD 底盘套件底盘、两个 TT 电机、两个驱动轮、万向轮
双 H 桥电机驱动模块控制左右两个直流电机
HC-SR04 超声波模块前方距离检测
运行按钮启动 / 停止小车
红、绿 3mm LED 灯珠状态指示
18650 + 5V 充放电一体小板整车供电

4. 建议章节安排

第 1 章 MicroPython 与 ESP32 控制板

学习目标

  1. 认识 MicroPython 与普通 Python 的区别。
  2. 认识 ESP32-C3 SuperMini 开发板。
  3. 掌握变量、简单数据类型与 if / else 条件判断。
  4. 使用 GPIO 输出控制红、绿 3mm LED 灯珠。
  5. 建立「程序可以控制硬件」的基本认识。

建议内容

  1. MicroPython 的用途。
  2. ESP32-C3 开发板接口说明。
  3. 固件、串口、REPL、main.py 的概念。
  4. 第一个程序:print("Hello, PiCar")
  5. 变量与数据类型。
  6. if / else 条件判断。
  7. machine.Pin 的基本用法。
  8. GPIO 输出高电平 / 低电平。
  9. 红灯、绿灯的独立控制。
  10. 闪烁程序。

实验

  1. 连接 ESP32-C3。
  2. 打开 REPL。
  3. 运行第一段 MicroPython 程序。
  4. 根据变量判断状态。
  5. 点亮绿色 LED。
  6. 点亮红色 LED。
  7. 红绿交替闪烁。

第 2 章 按键控制灯光

学习目标

  1. 掌握 GPIO 输入。
  2. 理解按钮按下 / 释放对应的电平变化。
  3. 实现简单启动 / 停止逻辑。
  4. 掌握 while 循环、for 循环与 sleep 延时控制。

建议内容

  1. Pin.IN 输入模式。
  2. 上拉 / 下拉概念。
  3. 读取按钮状态。
  4. 简单按键消抖。
  5. 按一下启动,再按一下停止。
  6. while 循环持续读取按钮。
  7. for 循环实现有限次数测试。
  8. time.sleep() 延时与消抖等待。

实验

  1. 串口打印按钮状态。
  2. 按钮控制 LED。
  3. 按钮切换运行状态。
  4. while 循环持续检测按钮。
  5. 使用 sleep 控制读取间隔。

建议模块: button.py


第 3 章 电机控制

学习目标

  1. 理解 PWM 的占空比。
  2. 用 PWM 改变 LED 亮度。
  3. 理解 H 桥电机驱动的基本控制方式。
  4. 掌握函数定义与调用。
  5. 掌握 import 与模块拆分。
  6. 控制单个 TT 电机正转、反转、停止。
  7. 使用 PWM 控制电机速度。

建议内容 — PWM 与函数基础

  1. PWM 的基本概念。
  2. MicroPython 中 machine.PWM 的用法。
  3. 频率与占空比。
  4. LED 渐亮 / 渐暗。
  5. 函数定义与调用。
  6. import 与模块。
  7. 用函数封装灯光控制。

建议内容 — 单电机控制

  1. 电机驱动模块接口。
  2. A1 / A2 控制电机 A。
  3. HIGH / LOW 组合与电机状态。
  4. 电机停止与刹车区别。
  5. 电机 PWM 控制方式。
  6. 单个电机速度函数。

实验

  1. LED 呼吸灯。
  2. 用变量控制亮度。
  3. 编写一个简单函数。
  4. 编写 status_led.py
  5. 在主程序中 import status_led
  6. 左轮正转、反转、停止;右轮重复相同实验。
  7. 单个电机不同速度测试。

建议模块: status_led.pymotor_driver.py

建议扩展函数: set_motor_speed(speed)


第 4 章 2WD 小车运动控制

学习目标

  1. 控制左右两个电机组合动作。
  2. 实现小车前进、后退、左转、右转、停止。
  3. 将电机控制封装为小车动作函数。
  4. 理解左右轮速度差与转向效果。

建议内容

  1. 左右轮运动组合。
  2. 小车基本动作。
  3. 使用函数封装动作。
  4. 固定时间运动。
  5. 简单动作序列。
  6. 固定速度行驶;慢速 / 中速 / 快速。
  7. 左右轮差速转向与速度函数。

实验

  1. 前进 2 秒后停止;后退 1 秒后停止。
  2. 左转、右转。
  3. 动作组合:前进 → 停止 → 转向 → 前进。
  4. 小车低速 / 高速前进;左右轮不同速度转弯。

建议模块: car.py

建议函数: forward()backward()turn_left()turn_right()stop()set_speed(left_speed, right_speed)


第 5 章 超声波测距

学习目标

  1. 理解 HC-SR04 的 Trig / Echo 工作方式。
  2. 使用 MicroPython 读取距离。
  3. 处理测距异常。

建议内容

  1. HC-SR04 接线。
  2. 触发测距、Echo 脉宽测量、距离计算、连续测距。

实验

  1. 串口输出距离。
  2. 距离过近点亮红灯;距离安全点亮绿灯。

建议模块: ultrasonic.py


第 6 章 小车避障

学习目标

  1. 将电机控制与超声波测距组合。
  2. 根据距离判断小车是否继续前进。
  3. 实现停止、后退、转向等避障动作。
  4. 使用状态灯显示避障状态。
状态含义
IDLE待机
RUNNING运行
OBSTACLE检测到障碍
STOPPED停止

建议内容

  1. 安全距离阈值。
  2. 距离安全时前进;距离过近时停止。
  3. 后退与转向。
  4. 状态变量与状态切换;状态灯显示运行状态。
  5. 主循环设计。

实验

  1. 前方距离安全时前进;过近时停止。
  2. 后退后转向;自动避障循环。
  3. 遇障碍切换 OBSTACLE;不同状态显示不同灯光。

第 7 章 综合项目:2WD 智能小车

学习目标

  1. 整合前 6 章的按钮、LED、电机、超声波与避障逻辑。
  2. 将代码整理为完整项目结构。
  3. 完成项目验收。

建议内容

  1. 按本文「项目代码组织建议」整理文件结构。
  2. config.py 管理引脚配置。
  3. status_led.py 管理状态灯。
  4. button.py 管理按键输入。
  5. motor_driver.py 管理单电机与 H 桥控制。
  6. car.py 管理 2WD 小车运动。
  7. ultrasonic.py 管理超声波测距。
  8. main.py 组织主程序流程。

验收功能

  1. 上电待机。
  2. 按钮启动 / 停止。
  3. 绿灯表示运行;红灯表示障碍或停止。
  4. 超声波检测前方障碍;自动避障。
  5. 串口输出关键运行信息。
  6. 异常或停止状态下电机停止。

5. 项目代码组织建议

建议从中期开始使用如下结构:

main.py              # 主程序入口
config.py            # GPIO 引脚配置
status_led.py        # 红绿状态灯控制
button.py            # 按钮输入与消抖
motor_driver.py      # 单电机驱动封装
car.py               # 2WD 小车动作封装
ultrasonic.py        # 超声波测距

config.py 中建议为每个 GPIO 定义常量(如左右电机四线、超声波 Echo/Trig、红绿 LED、运行键等)。具体整型引脚号仅以配套专题页 第四节「GPIO 与接线」 为唯一依据,按该节表格与飞线图抄入即可;本提纲不重复列出数字,避免与专题页两处维护不一致。

# config.py —— 示例结构(数值请从专题页第四节抄入)
LEFT_MOTOR_A = ...
LEFT_MOTOR_B = ...
RIGHT_MOTOR_A = ...
RIGHT_MOTOR_B = ...

ULTRASONIC_ECHO = ...
ULTRASONIC_TRIG = ...

LED_GREEN = ...
LED_RED = ...

BUTTON_RUN = ...