使用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)。

  1. 然后打开“工具 > 开发板 > 开发板管理器”,等待下面的“正在下载平台索引”走完后就可以在里面搜索到ESP8266了,选择默认版本安装就行了。这里提到的“正在下载平台索引”和安装ESP8266的过程可能会很慢,如果连不上互联网的话也可能会失败,自己想办法吧。
  1. 安装完后就可以在“开发板”选项中找到ESP8266了,建议选择“Generic ESP8266 Module”。通用的就行,反正都是ESP8266没甚区别。在选择完开发板后再打开“工具”选项卡后就会发现里面多了一些东西,在这里可以设置ESP8266的程序下载速度、CPU工作频率、Flash大小等参数,相当方便,前几天我还在想万一我哪天给模块换了个大点的Flash在IDE里怎么设置,直到我发现了这个。
  1. 之后在示例里打开一个眨灯的程序,编译没有错误后把串口号选对了就可以给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.

  

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

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

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

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

  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中不这样做虽没发现什么问题,但不知道会不会有什么潜在隐患,所以还是建议保持它们一致。
  1. 在(只针对ESP01测试过)在板子配置中选择"Generic ESP8266 Module"后默认的上传波特率时115200,如果把其调整为高于115200的话(如230400)编译会出错,调低(如57600)则没问题,调整CPU频率和Flash大小也没问题。(这绝对不是硬件问题,因为在ArduinoIDE中调到头都能正常编译下载)

    (如果你的代码中初始化了串口,把它的波特率调整为与下载波特率相同好像能解决这个问题。)
  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"目录太大了所以后来我又删了,反正没什么影响。

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

使用Visual Studio Code 开发 ESP8266的更多相关文章

  1. 打造TypeScript的Visual Studio Code开发环境

    打造TypeScript的Visual Studio Code开发环境 本文转自:https://zhuanlan.zhihu.com/p/21611724 作者: 2gua TypeScript是由 ...

  2. [Tool] 使用Visual Studio Code开发TypeScript

    [Tool] 使用Visual Studio Code开发TypeScript 注意 依照本篇操作步骤实作,就可以在「Windows」.「OS X」操作系统上,使用Visual Studio Code ...

  3. Mac上使用Visual Studio Code开发/调试.NET Core代码

    Mac上使用Visual Studio Code开发/调试.NET Core代码 .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今 ...

  4. Visual Studio Code开发TypeScript

    [Tool] 使用Visual Studio Code开发TypeScript   [Tool] 使用Visual Studio Code开发TypeScript 注意 依照本篇操作步骤实作,就可以在 ...

  5. 【实验手册】使用Visual Studio Code 开发.NET Core应用程序

    .NET Core with Visual Studio Code 目录 概述... 2 先决条件... 2 练习1: 安装和配置.NET Core以及Visual Studio Code 扩展... ...

  6. 使用Visual Studio Code开发.NET Core看这篇就够了

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9926078.html 在本文中,我将带着大家一步一步的通过图文的形式来演示如何在Visual Studi ...

  7. 使用Visual Studio Code开发(编译、调试)C++程序

    总体安装步骤 安装VSC(Visual Studio Code). 安装C/C++编译器(如MinGW-w64),然后配置好环境变量.//完成这步即可在VSC的终端(命令行)下编译.运行.cpp程序了 ...

  8. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(一)-- 起步

    本文记录了在Windows环境下安装Visual Studio Code开发工具..Net Core 1.0 SDK和开发一个简单的Web-Demo网站的全过程. 一.安装Visual Studio ...

  9. 使用Visual Studio Code开发Arduino

    首发于MSPrecious成长荟 https://zhuanlan.zhihu.com/p/30868224 使用Visual Studio Code开发Arduino 1.下载安装 VS Code ...

随机推荐

  1. Groovy正则表达式复杂逻辑判断实例

    下面的两个pattern(p1和p2)分别代表了(A or B) and (C or D)和(A and B) or (C and D)的跨行匹配结果,当然还可以用正则表达式构建更复杂的pattern ...

  2. CodeReview of JDK Source Code

    jdk1.6.0_35/src.zip, only java package is reviewd(full package review caused a OutofMemory on java h ...

  3. DVWA靶场之Command Injection(命令行注入)通关

    Command Injection Low: <?php if( isset( $_POST[ 'Submit' ]  ) ) { // Get input $target = $_REQUES ...

  4. 入门Kubernetes-StatefulSets

    前言: 前面文中对通过DaemonSet.存储资源对象,实现了在指定节点中运行一个守护进程. 在真实的业务场景中,部署的服务都是有状态的.且有数据需要持久化的:那么如何实现呢? 那么接下来学习一种更加 ...

  5. HCNA Routing&Switching之广域网协议HDLC和PPP

    前文我们了解了地址转换技术NAT相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15168042.html:今天我们来聊一聊广域网中的两个二层封装协议H ...

  6. 使用autopep8自动规范化python3代码

    技术背景 编码规范是所有编程语言都有可能面临的问题,严格的按照编码规范来写代码,不仅能够提高代码的可读性,在后续程序的可维护性上面也有较大的帮助.尤其是在开源项目中,一个具备良好编程规范的项目往往能够 ...

  7. 题解 Strange Housing

    传送门 首先想了黑白染色,发现不会染 其实可以考虑如何动态地维护出这个点集 发现题面里对不在点集之中的点之间的连边没有要求 所以考虑不断向图中加点,为了满足要求,每次取一个与当前新图中相连的点 若它与 ...

  8. 三个线程按循序一个打印A一个打印B一个打印C 循环打印?

    第一种 public static volatile int flag = 1; public static void printABC1(){ Thread t1 = new Thread(() - ...

  9. C#中的几种锁:用户模式锁、内核模式锁、动态计数、监视锁

    参考网址: https://blog.csdn.net/weixin_43989331/article/details/105356008 C#中的几种锁:用户模式锁.内核模式锁.动态计数.监视锁介绍 ...

  10. 使用VC6.0开发COM组件 - 傻瓜式,不讲理论,只讲实例

    1.创建一个ATL COM AppWizard工程,如图: