ESP32+Arduino+VS code开发环境搭建+BLINK

关于ESP32开发工具
之前一直都有在看关于这个芯片的内容,这个国产的芯片有两种开发方式,一个是内置的ESP-IDF,一个是Arduino开发方式。之前一直没搞懂这两者的区别。
后来发现其实说白了ESP-IDF就是官方自建的一套C/C++的库和工具链,随后在这之上,乐鑫官方又维护了一套支持Arduino语法的库函数,以供支持Arduino。
其中一个很明显的特点就是,在用Arduino开发的过程中,可以混合使用Arduino和ESP-IDF的指令。例如下述两句话,都可以起到延迟1000ms的作用

# ESP-IDF语句
vTaskDelay(1000 / portTICK_PERIOD_MS);
# Arduino语句
delay(1000);

ESP32+Arduino+VS code开发环境搭建+BLINK

1 Arduino 安装

Arduino安装链接: https://www.arduino.cc/en/software

里面有一个windows app版本,是在微软商店里的,如果要用VS code的请不要用这个版本。
(由于沙盘环境问题,VScode的Arduino插件不支持(插件中说的))

Arduino版本在1.6.x及之后的应该都可以,我装的是目前最新的稳定版1.8.19的zip版本,直接解压用就好。

2 VS code安装与Arduino插件

VS code安装时候记得把C/C++ Extension Pack勾上,或者你后续打开.ino文件的时候VScode会提醒你安装的。

安装Arduino 插件

选择左侧导航栏里的插件选项
搜索Arduino,选择安装即可
ESP32+Arduino+VS code开发环境搭建+BLINK
下载好插件的时候,如果你这时候直接运行VS code中关于Arduino的命令,例如:
Ctrp+Shit+P 后 输入 Arduino: Examples
会提示报错“Cannot find Arduino IDE. Please specify the “arduino.path” in the User Settings. Requires a restart after change”
ESP32+Arduino+VS code开发环境搭建+BLINK

所以我们需要配置一下设置,把我们解压的Arduino路径添加进去。
点击 “文件”–“首选项”–“设置”,打开设置页面后点击右上角的“打开设置(json)”,会打开一个.json文件,添加"arduino.path":“你的路径”
ESP32+Arduino+VS code开发环境搭建+BLINK

{
    "workbench.colorTheme": "Default Dark+",
    "python.defaultInterpreterPath": "C:\\Users\\Administrator\\anaconda3\\envs\\dataprocess\\python.exe",
    "notebook.lineNumbers": "on",
    "notebook.cellToolbarLocation": {
        "default": "right",
        "jupyter-notebook": "left"
    }, # 添加一个逗号
    "arduino.path": "E:\\arduino-1.8.19" # 添加这句路径,实际路径改为你安装的文件夹
}

然后重启一次VS code,此时再运行arduino: examples,就会成功打开如下的页面了,此时你的Arduino IDE和VS code就连接上了。
如果你只是开发Arduino系列的AVR系列的板子,现在大概是可以直接用了。

  • 首先打开一个例程,例如Blink.ino

  • 随后Ctrl+Shift+P打开命令,输入Arduino: Board Config,在弹出的窗口选择板子(例如Arduino Uno),code就会开始配置文件

  • 右下角处选择对应的COM口
    ESP32+Arduino+VS code开发环境搭建+BLINK

  • 按Ctrl+Alt+R,开始编译文件

  • 按Ctrl+Alt+U,开始上传文件

  • Done,Uno板子开始亮了。

2.2关于VS code编译Arduino很慢的现象

虽然此时可以正常运行了,但是你可能会发现输出窗口里会提示:

[Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README

实际你也会发现每次上传都需要重新编译一遍,反而比Arduino IDE还要慢了
这在Arduino的插件中有描述到,这是因为设置输出路径,所以VScode每次只会临时生成一个文件,然后上传后就没了
因此,为了提高效率,肯定是要设置一下输出路径的。
在工作空间的.vscode下的arduino.json文件里,打开可以看到如下的页面。添加一行"output": "…/build"即可。

此时设置的是工作空间的上一级文件夹,Arduino要求这个路径不能是工作空间本身以及子文件夹,不然可能会出问题。并且这一文件夹在rebuild时会覆盖,所以不要放有用的东西。

ESP32+Arduino+VS code开发环境搭建+BLINK
此时的运行会在上一级目录里多一个build文件夹。
ESP32+Arduino+VS code开发环境搭建+BLINK

3 配置ESP32开发环境

此处与Arduino IDE配置ESP32的过程类似,都是需要加载第三方的板载文件。
因为通过Arduino进行ESP32的开发,其实也是乐鑫官方基于自行开发的ESP-IDF,再封装了一层,以支持Arduino的语法。

3.1 添加ESP32网址并更新开发板列表

Ctrl+Shift+P,输入arduino: Board Manager打开开发板管理器,
在右下角点击"Additional URLs"
ESP32+Arduino+VS code开发环境搭建+BLINK
打开后选择“添加项”,输入网址:“https://dl.espressif.com/dl/package_esp32_index.json”,保存。
ESP32+Arduino+VS code开发环境搭建+BLINK
此时,返回开发板管理器页面,点击"Refresh Package Indexs",等待,并选择对应板子的install选项(这一步可能有*会更快,实测,没有*会报错= =)
ESP32+Arduino+VS code开发环境搭建+BLINK

完成后,就会得到图中所示的ESP32的开发板文件了
ESP32+Arduino+VS code开发环境搭建+BLINK

其他关于Arduino支持的第三方板子的链接,可以在https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls上找到,但上面并不是全部。
例如:
ESP8266:http://arduino.esp8266.com/stable/package_esp8266com_index.json

3.2 ESP32 Link例程

接下来就是尝试写一个嵌入式的hello word了。
首先我们另外创建一个文件夹,复制例程的Blink.ino。
我选择的板子是ESP32-Pico-D4,由于没有板载LED,因此需要自己找一个GPIO口连一个LED灯,也使我们需要定义例程中的LED_BUILTIN这个量,因为若板子有板载LED地话,这个量一般会在你选择板子后在板子的文件中指明(此时就不需要更改例程了)
这里我选择了GPIO25(随便选的),所以在最前面需要添加一句宏定义
#define LED_BUILTIN 25

ESP32+Arduino+VS code开发环境搭建+BLINK

#define LED_BUILTIN 25
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

之后类似地,我们选择板子为ESP32-Pico-D4
ESP32+Arduino+VS code开发环境搭建+BLINK
选择COM口,修改arduino.json文件以添加output path以保留编译文件
然后按Ctrl+Alt+U,等待上传即可。
ESP32+Arduino+VS code开发环境搭建+BLINK

参考书籍:
《超图解:ESP32 深度实作》–赵英杰

上一篇:ESP32-CAM视频流


下一篇:万答#11,MySQL中char与varchar有什么区别