2、开发环境搭建:Arduino IDE / ESP-IDF / STM32CubeIDE 安装与配置、串口驱动安装、第一个点灯程序

好,咱们正式开始动手了。

做嵌入式开发,第一道坎就是搭环境。说实话,我见过太多新手卡在这一步,工具链没配好,连个灯都点不亮,信心直接被打没了。今天咱们就把三个主流环境——Arduino IDE、ESP-IDF、STM32CubeIDE——全部捋一遍。串口驱动怎么装?第一个点灯程序怎么写?我一步步带你走。

2.1 为什么需要三个环境?

你可能会问:一个IDE不够用吗?

嗯,这个问题我当年也纠结过。后来做项目多了才明白:不同的芯片,有不同的生态

  • Arduino IDE:上手最快,适合快速验证想法。我经常用它做原型测试,写个传感器读取、控制个继电器,几分钟搞定。
  • ESP-IDF:乐鑫官方的框架,功能全,适合做WiFi、蓝牙、OTA升级这类复杂应用。咱们这个灌溉控制器要用到OTA,所以它必须配好。
  • STM32CubeIDE:ST意法半导体的官方IDE,适合做工业级产品。如果你以后要做更复杂的控制逻辑,它会是主力。

说白了,这三个工具各司其职。咱们的课程以ESP-IDF为主,但另外两个我也会带你配好,方便你以后扩展。

2.2 Arduino IDE 安装与配置

先来个最简单的。

Arduino IDE 的安装没什么技术含量,但有几个细节要注意。

  1. 下载:去 arduino.cc 官网,下载对应你操作系统的版本。Windows选.exe,macOS选.dmg,Linux选AppImage。
  2. 安装:一路默认就行。但我建议你不要装到C盘,尤其是Windows用户。我之前有个项目,C盘满了导致编译报错,查了半天才发现是磁盘空间不够。
  3. 配置ESP32支持:Arduino默认不支持ESP32,需要手动添加开发板管理器URL。打开 文件 -> 首选项,在“附加开发板管理器网址”里填入:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json。然后去 工具 -> 开发板 -> 开发板管理器,搜索“ESP32”并安装。
小技巧:第一次安装ESP32包时,下载速度可能很慢。我建议你挂个代理,或者换个时间段再试。实在不行,可以手动下载离线包,网上有教程。

2.3 ESP-IDF 安装与配置

这个稍微复杂点,但别怕,我踩过的坑都帮你填平了。

ESP-IDF 是乐鑫的官方开发框架,功能比Arduino强大得多。咱们的OTA升级功能,就是基于它实现的。

  1. 安装方式:我推荐用离线安装器。去乐鑫官网下载ESP-IDF的离线安装包(Windows下是.exe文件)。它会自动帮你装好Python、Git、交叉编译工具链等依赖。
  2. 设置环境变量:安装完成后,打开命令提示符,输入 idf.py --version,如果能显示版本号,说明安装成功。如果提示“不是内部或外部命令”,那就要检查环境变量了。我记得有一次帮同事排查,发现他安装时勾选了“添加到PATH”,但实际没生效。手动加一下就行:把 C:\esp-idf\esp-idf\toolsC:\esp-idf\esp-idf\python_env\idf4.4_py3.8_env\Scripts 加到系统PATH里。
  3. 创建第一个工程:打开终端,运行 idf.py create-project my_ota_project。这会生成一个模板工程,里面有main文件夹和CMakeLists.txt。
注意:ESP-IDF 的版本很重要。咱们课程用的是 v4.4 版本,因为这个版本对OTA的支持最稳定。别用最新的v5.x,有些API变了,咱们的代码可能不兼容。我曾经在v5.0上折腾了两天,最后发现是API废弃了,气得我直接回退到v4.4。

2.4 STM32CubeIDE 安装与配置

这个IDE是基于Eclipse的,功能很全,但第一次用可能会觉得有点重。

  1. 下载:去ST官网搜索“STM32CubeIDE”,注册账号后下载。注意选择对应操作系统的版本。
  2. 安装:解压后直接运行安装程序。它会自动检测你电脑上有没有Java环境,如果没有,它会帮你装一个。
  3. 配置调试器:如果你用的是ST-Link调试器,插上USB后,Windows会自动安装驱动。如果没装成功,去ST官网下载“ST-Link驱动”手动安装。macOS和Linux一般免驱。
  4. 创建工程:打开IDE,选择 File -> New -> STM32 Project,然后选择你的芯片型号(比如STM32F103C8T6)。它会生成一个带HAL库的模板工程。
个人经验:STM32CubeIDE 的代码生成功能很强大,但生成的代码有时候会有点冗余。我一般用它生成初始化代码,然后自己写业务逻辑。这样既省时间,又保证代码质量。

2.5 串口驱动安装

串口是嵌入式开发者的“眼睛”。没有它,你连芯片在干什么都不知道。

咱们用的开发板,不管是ESP32还是STM32,通常都集成了USB转串口芯片。常见的有CH340、CP2102、FT232等。

  • CH340:国产芯片,性价比高。Windows 10/11通常能自动识别,如果不行,去官网下载驱动。
  • CP2102:Silicon Labs的芯片,稳定可靠。驱动可以去Silicon Labs官网下载。
  • FT232:FTDI的芯片,老牌厂商。驱动一般系统自带。

怎么确认驱动装好了?插上开发板,打开设备管理器(Windows),看“端口(COM和LPT)”下面有没有出现新的COM口。如果出现一个带黄色感叹号的设备,那就是驱动没装好。

避坑指南:我曾经遇到过一个问题:CH340驱动装好了,但串口工具就是连不上。查了半天,发现是USB线的问题——那根线只能充电,不能传数据。所以,一定要用数据线,别用充电线。

2.6 第一个点灯程序

好了,环境都搭好了,咱们来点个灯吧。这是嵌入式界的“Hello World”。

我以ESP32为例,用ESP-IDF框架来写。代码很简单,但背后的原理你得懂。

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

#define LED_GPIO GPIO_NUM_2  // ESP32开发板上的LED通常接在GPIO2

void app_main(void)
{
    // 配置GPIO为输出模式
    gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT);

    while (1) {
        // 点亮LED
        gpio_set_level(LED_GPIO, 1);
        printf("LED ON\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);  // 延时1秒

        // 熄灭LED
        gpio_set_level(LED_GPIO, 0);
        printf("LED OFF\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);  // 延时1秒
    }
}

这段代码做了三件事:

  1. 配置GPIO2为输出模式。
  2. 循环里,先拉高电平(点亮),延时1秒。
  3. 再拉低电平(熄灭),延时1秒。

编译和烧录的命令也很简单:

idf.py build          # 编译
idf.py -p COM3 flash  # 烧录,COM3换成你实际的串口号
idf.py monitor        # 打开串口监视器,看打印信息
重点:如果你用的是Arduino IDE,点灯代码更简单——在setup()里写 pinMode(2, OUTPUT);,在loop()里写 digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); delay(1000);。但咱们课程要用ESP-IDF,所以你得习惯这种更“底层”的写法。

第一次看到LED闪烁的时候,说实话,我还是有点小激动的。这意味着你的开发环境完全通了,可以开始做更复杂的事情了。

2.7 本章小结

咱们这一章把三个开发环境都搭好了,串口驱动也装了,第一个点灯程序也跑起来了。你可能会觉得步骤有点多,但相信我,这些基础打牢了,后面写OTA升级代码的时候会顺畅很多。

下一章,咱们开始讲WiFi配网和MQTT通信——这才是灌溉控制器的核心。