使用Visual Studio Code 开发 ESP8266
使用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
推荐去Arduino官网下一个免安装版的IDE,放在一个找得到的地方,一会用得着。
Arduino便携版配置教程,仔细看看:https://www.arduino.cc/en/Guide/PortableIDE,中心思想就是在解压后的目录下建一个"Portable"文件夹。设置好代理。如果不设置代理下面下载文件的时候可能会出错,到时候只能找其他办法解决,反正我是设置代理的,坚决不向那种不公平待遇妥协。
打开ArduinoIDE,找到“文件 > 首选项 > 设置 > 附件开发板管理网址”,在里面填入网址(这个网址可以在"ESP8266 core for Arduino"项目的自述文件中找到,我这里填的是https://arduino.esp8266.com/stable/package_esp8266com_index.json)。

- 然后打开“工具 > 开发板 > 开发板管理器”,等待下面的“正在下载平台索引”走完后就可以在里面搜索到ESP8266了,选择默认版本安装就行了。这里提到的“正在下载平台索引”和安装ESP8266的过程可能会很慢,如果连不上互联网的话也可能会失败,自己想办法吧。

- 安装完后就可以在“开发板”选项中找到ESP8266了,建议选择“Generic ESP8266 Module”。通用的就行,反正都是ESP8266没甚区别。在选择完开发板后再打开“工具”选项卡后就会发现里面多了一些东西,在这里可以设置ESP8266的程序下载速度、CPU工作频率、Flash大小等参数,相当方便,前几天我还在想万一我哪天给模块换了个大点的Flash在IDE里怎么设置,直到我发现了这个。

- 之后在示例里打开一个眨灯的程序,编译没有错误后把串口号选对了就可以给ESP8266下载程序看看效果了。下载的时候需要注意的是需要在ESP8266上电的时候把GPIO0拉低,下载完后复位执行(当然如果是支持自动下载的如NodeMCU这种板子就完全不用做任何操作了)。

二、转战 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.
下载VSCode. 这个就没啥好说的了,直接去微软官网下载。千万别百度!千万别百度!千万别百度!
在VScode中安装Android插件。打开VSCode的拓展中心搜索“Arduino”,找到那个Microsoft出品的Arduino拓展装上就行了,安装完成后重载VSCode启用。
打开VSCode的配置文件(快捷键“CTRL+,”,该文件在Win中的路径为"%APPDATA%\Code\User\settings.json"),搜索到“Arduino”相关的配置。将上前面下载的并配置好的ArduinoIDE的路径添加到“Arduino:Path”中,配置会自动保存

- 设置好Arduino插件后就可以在VSCode中编译和下载Arduino代码了。可以直接将Arduino的.ino文件或工作目录拖到VSCode中打开,也可以在VSCoode中新建.ino格式的文件。进文件后按[F1]打开命令模式输入"Arduino"可以查看Arduino的相关命令,比如板子配置、选择端口、编译(Ctrl+Alt+R)和上传(Ctrl+Alt+U)程序等,当然其中大部分选项在VScode的右下角也能找到。

- 至此就完成了 VSCode-arduino 的基本配置。只要打开一个项目设置好板子型号和其他信息、连接上串口既可以正常开发了。
三、补充
无论在VSCode中打开.ino文件或是创建.ino文件,一般都会在工程文件的同级目录生成一个".vscode"的隐藏文件夹,里边包含我们需要用到和修改的配置。

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].

3.5 推荐的插件(拓展)
- Arduino:万恶之源,下载的时候选Microsoft出产的那个;
- C/C++:静态语法检测;
- Bracket Pair Colorizer 2:五颜六色的括号,很漂亮的;
- background:背景图片,骚骚的(●ˇ∀ˇ●);
- Fix VSCode Checksums:由于上面那个添加背景图片的插件会修改VSCode核心文件因此会提>示“Code 安装似乎损坏”,安装这个插件并执行"Fix Checksums : Apply"命令可以解决那个问题,不过仍有可能在VSCode的标题栏中提示[不受支持],不过没什么影响。([不受支持]是说VSCode的CSS被改了破坏了完整性所以VSCode不受支持);
- Chinese (Simplified) Language Pack for Visual Studio Code:为你的VSCode添加中文支持。
[已知问题]
- 在ArduinoIDE打开文件时要求".ino"文件的文件名和其所在目录的名称必须相同,在VSCode中不这样做虽没发现什么问题,但不知道会不会有什么潜在隐患,所以还是建议保持它们一致。

- 在(只针对ESP01测试过)在板子配置中选择"Generic ESP8266 Module"后默认的上传波特率时115200,如果把其调整为高于115200的话(如230400)编译会出错,调低(如57600)则没问题,调整CPU频率和Flash大小也没问题。(这绝对不是硬件问题,因为在ArduinoIDE中调到头都能正常编译下载)
(如果你的代码中初始化了串口,把它的波特率调整为与下载波特率相同好像能解决这个问题。)

- ".vscode"中的配置文件根据不同情况肯定要适当修改,留意。
- 关于编译过程中出现的"fatal: not a git repository (or any of the parent directories): .git",其实这个并没什么影响。不止在VSCode中在原版的Arduino中也有这个问题,这问题是在安装ESP8266支持后出现的。要解决也不是没办法需要一个".git"目录,用"git clone"把Arduino的仓库克隆下来然后把".git"文件夹复制到Arduino安装目录下就行了,但是".git"目录太大了所以后来我又删了,反正没什么影响。
(第二天问题明明奇妙的消失了,也许是服务端网络问题。)
使用Visual Studio Code 开发 ESP8266的更多相关文章
- 打造TypeScript的Visual Studio Code开发环境
打造TypeScript的Visual Studio Code开发环境 本文转自:https://zhuanlan.zhihu.com/p/21611724 作者: 2gua TypeScript是由 ...
- [Tool] 使用Visual Studio Code开发TypeScript
[Tool] 使用Visual Studio Code开发TypeScript 注意 依照本篇操作步骤实作,就可以在「Windows」.「OS X」操作系统上,使用Visual Studio Code ...
- Mac上使用Visual Studio Code开发/调试.NET Core代码
Mac上使用Visual Studio Code开发/调试.NET Core代码 .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今 ...
- Visual Studio Code开发TypeScript
[Tool] 使用Visual Studio Code开发TypeScript [Tool] 使用Visual Studio Code开发TypeScript 注意 依照本篇操作步骤实作,就可以在 ...
- 【实验手册】使用Visual Studio Code 开发.NET Core应用程序
.NET Core with Visual Studio Code 目录 概述... 2 先决条件... 2 练习1: 安装和配置.NET Core以及Visual Studio Code 扩展... ...
- 使用Visual Studio Code开发.NET Core看这篇就够了
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9926078.html 在本文中,我将带着大家一步一步的通过图文的形式来演示如何在Visual Studi ...
- 使用Visual Studio Code开发(编译、调试)C++程序
总体安装步骤 安装VSC(Visual Studio Code). 安装C/C++编译器(如MinGW-w64),然后配置好环境变量.//完成这步即可在VSC的终端(命令行)下编译.运行.cpp程序了 ...
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(一)-- 起步
本文记录了在Windows环境下安装Visual Studio Code开发工具..Net Core 1.0 SDK和开发一个简单的Web-Demo网站的全过程. 一.安装Visual Studio ...
- 使用Visual Studio Code开发Arduino
首发于MSPrecious成长荟 https://zhuanlan.zhihu.com/p/30868224 使用Visual Studio Code开发Arduino 1.下载安装 VS Code ...
随机推荐
- 能够进行多段文本匹配的NFA改良算法
下面的代码基于NFA算法实现了在多段字符串中匹配正则表达式,对比NFA算法可以看到它将pc由局部变量提升为类成员,以保存中间匹配状态,另外在匹配成功后将pc恢复到null状态.实际使用中,此类还应该增 ...
- 修改Linux系统的默认语言编码集
RedHat 今天晚上发现服务器上vi的界面提示变成了乱码,只能将XShell的编码改为GBK才能正常显示,导致consolas字体无法使用,GBK编码下的字体丑陋无比,无法忍受,一轮google之后 ...
- Linux sudo权限提升漏洞CVE-2021-3156 POC及复现过程
漏洞简介 2021年1月26日,国外研究团队披露了sudo 中存在的堆溢出漏洞(CVE-2021-3156).利用该漏洞,非特权账户可以使用默认的sudo配置主机上获取root权限,该漏洞影响1.8. ...
- 题解 CF613E Puzzle Lover
解题思路 其实仔细观察我们可以发现路径一定是一个类似于下图的一个左括号之后中间随便反复曲折,然后右边在来一个右括号. 然后对于两个括号形状的东西其实是可以利用 Hash 来判等特殊处理的. 对于中间的 ...
- 聊一聊中台和DDD(领域驱动设计)
本次分享价值:本次分享主要针对中台.微服务和领域模型的理念.本质及其构建方法论进行探讨.对领域分析的价值所在就是寻求"千变万化"中相对的"稳定性.第一性",然后 ...
- 深层剖析鸿蒙轻内核M核的动态内存如何支持多段非连续性内存
摘要:鸿蒙轻内核M核新增支持了多段非连续性内存区域,把多个非连续性内存逻辑上合一,用户不感知底层的不同内存块. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列九 动态内存Dynamic Mem ...
- 什么是.NET CLI CLR IL JIT GC,它们是如何工作的
参考网址: https://cloud.tencent.com/developer/article/1432891 1:什么是.NET? NET 是 Microsoft 的用以创建 XML Web 服 ...
- C# 中的异步问题 Task
public class SharedData { public int Value { get; set; } } public class Test { async Task ModifyValu ...
- Redis缓存雪崩、缓存穿透、热点key
转载自 https://blog.csdn.net/wang0112233/article/details/79558612 https://www.sohu.com/a/230787856_231 ...
- SpringCloud之网关zuul
1.微服务网关介绍和使用场景 1)什么是网关 API Gateway,是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控.缓存.限流等功能 统一接入 智 ...