使用Visual Studio Code 开发 ESP8266

时间:2023-02-11 11:44:56

使用Visual Studio Code 开发 ESP8266

  ESP8266+ArduinoIDE+VSCode开发ESP8266。
  首先说明一下ESP8266并不是某一WiFi模块的名字(我以前是这么认为的),ESP8266是一块SOC的型号,任何基于ESP8266的WiFi模块都不过是ESP8266EX芯片加一块Flash芯片而已。比如ESP01、ESP12E、ESP12F等,它们的区别只不过是Flash存储空间不同或引出的引脚不同而已,ESP01的Flash最小,ESP12F比ESP12E多引出几个引脚(但是那几个引脚是和板上Flash连接的,不建议使用)。
  ESP8266芯⽚内⽆可编程存储器,⽤户程序必须由外部 flash 存储。([ESP8266EX技术规格书](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_cn.pdf))

一、在ArduinoIDE中添加ESP8266支持

无论如何,感谢Arduino. 虽然这个IDE并不怎么好用。

ESP8266 core for Arduino 项目地址:https://github.com/esp8266/Arduino

  1. 推荐去Arduino官网下一个免安装版的IDE,放在一个找得到的地方,一会用得着。

    Arduino便携版配置教程,仔细看看:https://www.arduino.cc/en/Guide/PortableIDE,中心思想就是在解压后的目录下建一个"Portable"文件夹。

  2. 设置好代理。如果不设置代理下面下载文件的时候可能会出错,到时候只能找其他办法解决,反正我是设置代理的,坚决不向那种不公平待遇妥协。

  3. 打开ArduinoIDE,找到“文件 > 首选项 > 设置 > 附件开发板管理网址”,在里面填入网址(这个网址可以在"ESP8266 core for Arduino"项目的自述文件中找到,我这里填的是https://arduino.esp8266.com/stable/package_esp8266com_index.json)。

使用Visual Studio Code 开发 ESP8266
  1. 然后打开“工具 > 开发板 > 开发板管理器”,等待下面的“正在下载平台索引”走完后就可以在里面搜索到ESP8266了,选择默认版本安装就行了。这里提到的“正在下载平台索引”和安装ESP8266的过程可能会很慢,如果连不上互联网的话也可能会失败,自己想办法吧。
使用Visual Studio Code 开发 ESP8266
  1. 安装完后就可以在“开发板”选项中找到ESP8266了,建议选择“Generic ESP8266 Module”。通用的就行,反正都是ESP8266没甚区别。在选择完开发板后再打开“工具”选项卡后就会发现里面多了一些东西,在这里可以设置ESP8266的程序下载速度、CPU工作频率、Flash大小等参数,相当方便,前几天我还在想万一我哪天给模块换了个大点的Flash在IDE里怎么设置,直到我发现了这个。
使用Visual Studio Code 开发 ESP8266
  1. 之后在示例里打开一个眨灯的程序,编译没有错误后把串口号选对了就可以给ESP8266下载程序看看效果了。下载的时候需要注意的是需要在ESP8266上电的时候把GPIO0拉低,下载完后复位执行(当然如果是支持自动下载的如NodeMCU这种板子就完全不用做任何操作了)。
使用Visual Studio Code 开发 ESP8266

二、转战 Visual Studio Code

注意:新版的VSCode(1.43)有BUG,在使用Arduino时无法选择串口,点击选择端口无反应,手动在配置文件中指定端口号也没用。网上有人遇到同样问题:https://github.com/microsoft/vscode-arduino/issues/816
如果截止到你安装时候新版本依然存在问题可以换旧版本的VSCode;也可以做一个便携版的旧版本VSCode,这样可以不影响当前配置。(我用的是1.36.1)
参考1:https://code.visualstudio.com/docs/editor/portable
参考2:https://github.com/DIOLeo/VSCode-Portable-WithMinGWw64
下载1:https://code.visualstudio.com/updates/v1_43
下载2:https://portapps.io/app/vscode-portable/ (推荐)

vscode-arduino 项目地址:https://github.com/microsoft/vscode-arduino

Arduino那个IDE实在是用不习惯,不过好在我们有VSCode. 知道VSCode好用,但是由于STM32用VSCode开发有点麻烦,所以也没怎么用过,不过现在有了开发ESP8266的需求,希望能好好玩玩VSCode.

  

  1. 下载VSCode. 这个就没啥好说的了,直接去微软官网下载。千万别百度!千万别百度!千万别百度!

  2. 在VScode中安装Android插件。打开VSCode的拓展中心搜索“Arduino”,找到那个Microsoft出品的Arduino拓展装上就行了,安装完成后重载VSCode启用。

  3. 打开VSCode的配置文件(快捷键“CTRL+,”,该文件在Win中的路径为"%APPDATA%\Code\User\settings.json"),搜索到“Arduino”相关的配置。将上前面下载的并配置好的ArduinoIDE的路径添加到“Arduino:Path”中,配置会自动保存

使用Visual Studio Code 开发 ESP8266
  1. 设置好Arduino插件后就可以在VSCode中编译和下载Arduino代码了。可以直接将Arduino的.ino文件或工作目录拖到VSCode中打开,也可以在VSCoode中新建.ino格式的文件。进文件后按[F1]打开命令模式输入"Arduino"可以查看Arduino的相关命令,比如板子配置、选择端口、编译(Ctrl+Alt+R)和上传(Ctrl+Alt+U)程序等,当然其中大部分选项在VScode的右下角也能找到。
使用Visual Studio Code 开发 ESP8266
  1. 至此就完成了 VSCode-arduino 的基本配置。只要打开一个项目设置好板子型号和其他信息、连接上串口既可以正常开发了。

三、补充

无论在VSCode中打开.ino文件或是创建.ino文件,一般都会在工程文件的同级目录生成一个".vscode"的隐藏文件夹,里边包含我们需要用到和修改的配置。

使用Visual Studio Code 开发 ESP8266

3.1 编译过程中输出窗口有乱码?

  • 打开ArduinoIDE并将其设置为英文可以解决这个问题。

3.2 include path 设置

  • 当第一次在VSCode中打开一个有内容的.ino项目时一般会提示很多形如“xxx未定义”的错误(前提是安装了C/C++插件),对于这种错误(实际编译时不会出错)在主文件中包含include几个.h可以解决,添加完include后先编译一下,如果仍有问题视具体情况Google吧,我把我开发ESP8266用到的几个文件列举一下。如果.h文件找不到可以在"c_cpp_properties.json"中添加相应的"includePath",粘贴路径后记得把单斜杠换成双斜杠或反斜杠。
  •  //包含的文件
    #include <Arduino.h> //这个就不解释了
    #include <HardwareSerial.h> //如果没有这个会提示"Serial"未定义
    //引用的路径
    "ArduinoIDE路径\\1.8.12\\tools\\**",
    "ArduinoIDE路径\\1.8.12\\hardware\\arduino\\avr\\**",
    "ArduinoIDE路径\\1.8.12\\Portable\\packages\\esp8266\\hardware\\esp8266\\2.6.3\\cores\\esp8266",
    "ArduinoIDE路径\\1.8.12\\Portable\\packages\\esp8266\\tools\\**",
    "ArduinoIDE路径\\1.8.12\\Portable\\packages\\esp8266\\hardware\\esp8266\\2.6.3\\libraries\\ESP8266WiFi\\src",
    "ArduinoIDE路径\\1.8.12\\Portable\\packages\\esp8266\\hardware\\esp8266\\2.6.3\\**"

3.3 输出路径配置

  • 在"arduino.json"中添加"output"可以有效提高代码的二次编译速度。Arduino要求输出路径不能是工作空间本身或在工作空间的子文件夹中,因此设置在与工作空间同级的目录下就行了,比如

    json "output": "../build"

3.4 输出滚屏

  • 如果在编译或下载代码是输出窗口不能随输出内容自动向上滚动绝对是会令人抓狂的,因为你需要把鼠标放到输出窗口上不停的滑动滚轮才能看到实时输出(事实上ArduinoIDE确实存在这种现象)。在VSCode里想要切换输出滚动很简单,只需点击输出窗口右上角的小锁图标或按快捷键[Ctrl+end].
使用Visual Studio Code 开发 ESP8266

3.5 推荐的插件(拓展)

  1. Arduino:万恶之源,下载的时候选Microsoft出产的那个;
  2. C/C++:静态语法检测;
  3. Bracket Pair Colorizer 2:五颜六色的括号,很漂亮的;
  4. background:背景图片,骚骚的(●ˇ∀ˇ●);
  5. Fix VSCode Checksums:由于上面那个添加背景图片的插件会修改VSCode核心文件因此会提>示“Code 安装似乎损坏”,安装这个插件并执行"Fix Checksums : Apply"命令可以解决那个问题,不过仍有可能在VSCode的标题栏中提示[不受支持],不过没什么影响。([不受支持]是说VSCode的CSS被改了破坏了完整性所以VSCode不受支持);
  6. Chinese (Simplified) Language Pack for Visual Studio Code:为你的VSCode添加中文支持。

[已知问题]

  1. 在ArduinoIDE打开文件时要求".ino"文件的文件名和其所在目录的名称必须相同,在VSCode中不这样做虽没发现什么问题,但不知道会不会有什么潜在隐患,所以还是建议保持它们一致。
使用Visual Studio Code 开发 ESP8266
  1. 在(只针对ESP01测试过)在板子配置中选择"Generic ESP8266 Module"后默认的上传波特率时115200,如果把其调整为高于115200的话(如230400)编译会出错,调低(如57600)则没问题,调整CPU频率和Flash大小也没问题。(这绝对不是硬件问题,因为在ArduinoIDE中调到头都能正常编译下载)

    (如果你的代码中初始化了串口,把它的波特率调整为与下载波特率相同好像能解决这个问题。)
使用Visual Studio Code 开发 ESP8266
  1. ".vscode"中的配置文件根据不同情况肯定要适当修改,留意。
  2. 关于编译过程中出现的"fatal: not a git repository (or any of the parent directories): .git",其实这个并没什么影响。不止在VSCode中在原版的Arduino中也有这个问题,这问题是在安装ESP8266支持后出现的。要解决也不是没办法需要一个".git"目录,用"git clone"把Arduino的仓库克隆下来然后把".git"文件夹复制到Arduino安装目录下就行了,但是".git"目录太大了所以后来我又删了,反正没什么影响。

    (第二天问题明明奇妙的消失了,也许是服务端网络问题。)