第二章:测试环境搭建——硬件准备与软件工具链安装

说实话,测试环境搭建这事儿,看着简单,但坑特别多。我见过太多人卡在这一步,折腾一整天连个灯都点不亮。今天我就把这些年踩过的坑、总结的经验,一次性说清楚。

2.1 硬件准备:选对工具,少走弯路

做ESP32的测试,硬件是基础。硬件选不对,后面全是白费功夫。

2.1.1 开发板怎么选?

我个人习惯用官方模组,比如ESP32-WROOM-32。为什么?因为稳定。我在项目中遇到过用第三方模组,结果WiFi死活连不上,查了两天才发现是天线匹配问题。嗯,从那以后我就老实了。

如果你刚开始学,我建议买官方开发板,比如ESP32-DevKitC。它自带USB转串口,调试方便。别图便宜买那种几块钱的裸板,你想想看,连个复位按键都没有,每次下载程序都要手动拉低IO0,多折腾。

我的推荐清单:

  • 入门级:ESP32-DevKitC(官方,稳定可靠)
  • 进阶:ESP32-S3-DevKitC(支持更多外设)
  • 量产验证:自研板 + 官方模组

2.1.2 调试器:JTAG还是USB转串口?

这里有个误区。很多人以为调试器就是下载器。其实不是。下载器只管把程序烧进去,调试器才能帮你单步执行、看变量。

我建议你准备两样东西:

  • USB转TTL模块(比如CH340):用来下载程序和看日志。便宜,几块钱一个。
  • JTAG调试器(比如J-Link或ESP-Prog):用来做高级调试。说实话,前期可以不用,但做复杂项目时,没有它你根本查不出问题。

注意:我曾经有一次用劣质USB线,导致下载总是失败。换了根好线,问题立刻解决。别小看一根线,它可能是你最大的坑。

2.1.3 电源:稳定是第一位的

ESP32对电源比较敏感。WiFi发射时电流能到300mA以上,如果电源不稳,会频繁重启。

我的建议:

  • 用官方开发板自带的USB供电,一般没问题
  • 如果自己画板子,用AMS1117-3.3V稳压,输入电容至少10μF
  • 别用面包板供电,接触不良会让你怀疑人生

2.2 软件工具链安装:一步步来,别急

软件环境搭建,说白了就是装几个工具。但顺序很重要。我见过有人先装Python再装ESP-IDF,结果版本冲突,折腾半天。

2.2.1 安装ESP-IDF

ESP-IDF是乐鑫官方的开发框架。它包含了编译器、调试工具、库文件等。我个人习惯用v4.4 LTS版本,稳定,文档全。

安装步骤:

  1. 打开终端,执行:git clone --recursive https://github.com/espressif/esp-idf.git
  2. 进入目录:cd esp-idf
  3. 运行安装脚本:./install.sh(Linux/Mac)或 install.bat(Windows)
  4. 设置环境变量:. ./export.sh

小技巧:Windows用户建议用PowerShell,别用CMD。我遇到过CMD下路径解析错误,折腾了半小时才发现是这个问题。

2.2.2 安装Python

ESP-IDF依赖Python 3.6以上版本。我建议装Python 3.8或3.9,兼容性最好。

安装时注意:

  • 勾选"Add Python to PATH"
  • 安装完成后,打开终端输入 python --version 验证
  • 如果系统有多个Python版本,用 python3 指定版本

避坑指南:我曾经在Windows上装了Python 3.11,结果某个库不兼容,编译报错。后来换成3.9,一切正常。所以,别追新,稳定第一。

2.2.3 串口工具

串口工具用来查看ESP32的日志输出。我推荐两个:

工具 适用平台 特点
PuTTY Windows 轻量,稳定,支持SSH和串口
screen Linux/Mac 命令行,简单高效
MobaXterm Windows 功能丰富,支持多标签

我个人习惯用MobaXterm。为什么?因为它能保存会话配置,不用每次重新设置波特率。你想想看,每次都要输入 screen /dev/ttyUSB0 115200,多麻烦。

2.3 环境验证:点亮第一盏灯

工具都装好了,怎么知道环境对不对?很简单,写个程序点灯。

这是ESP32的"Hello World"。代码很简单:

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

#define LED_GPIO 2

void app_main(void)
{
    gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT);
    
    while (1) {
        gpio_set_level(LED_GPIO, 1);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        gpio_set_level(LED_GPIO, 0);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

编译和烧录:

idf.py set-target esp32
idf.py menuconfig   # 可以跳过,用默认配置
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor

如果看到LED每隔1秒闪烁一次,恭喜你,环境搭建成功了!

验证清单:

  • ✅ 编译成功,无报错
  • ✅ 烧录成功,无超时
  • ✅ LED按预期闪烁
  • ✅ 串口输出正常,能看到日志

如果LED不亮,别慌。先检查:

  • 串口号对不对?用 ls /dev/tty* 查看
  • 波特率是不是115200?
  • GPIO2是不是被其他外设占用了?

嗯,到这里,你的测试环境就搭好了。下一章我们开始讲测试用例怎么写。说实话,那才是真正的重头戏。


公众号:蓝海资料掘金营,微信deep3321