使用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. Send Excerpts from Jenkins Console Output as Email Contents

    Sometimes we need to send some excerpts from Jenkins console output (job logs) as email, such as tes ...

  2. Shell-11-read命令

    read read命令从标准输入读取,并且把输入的内容赋值给变量 参数 示例 1 2 3 while 4 分别赋值变量

  3. one_gadget的一些姿势

    概要 one_gadget是libc中存在的一些执行execve("/bin/sh", NULL, NULL)的片段,当可以泄露libc地址,并且可以知道libc版本的时候,可以使 ...

  4. Redis分布式锁的原理和实现

    前言 我们之前聊过redis的,对基础不了解的可以移步查看一下: 几分钟搞定redis存储session共享--设计实现:https://www.cnblogs.com/xiongze520/p/10 ...

  5. 通过白码SQL数据库对接功能改进原系统

    前言: 之前提到过之所以要使用数据库对接功能,就是因为原有系统上有些功能存在不完善甚至不好用的情况,需要二次开发来优化业务流程或是直接用白码用户端上的通用功能.对接了之后就不需要再写代码来搭建或者优化 ...

  6. Mysql 主从同步原理简析

    在开始讲述原理的情况下,我们先来做个知识汇总,究竟什么是主从,为什么要搞主从,可以怎么实现主从,mysql主从同步的原理1.什么是主从其实主从这个概念非常简单主机就是我们平常主要用来读写的服务,我们称 ...

  7. 黑马JVM教程——自学笔记(三)

    四.类加载与字节码技术 4.1.类文件结构 首先获得.class字节码文件 方法: 在文本文档里写入java代码(文件名与类名一致),将文件类型改为.java java终端中,执行javac X:.. ...

  8. 【spring】spring 核心注解

    注解具体分类如下: 1.模式注解 @Repository             数据仓储模式注解 @Component            通用组件模式注解 @Service            ...

  9. hive -- 外部表、内部表、临时表

    1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...

  10. 关于servlet中要写初始化逻辑应该重载有参还是无参的init

    关于开发者在写初始化逻辑的时候,应该选用的哪个init方法@author mzy 在查看servlet的源码的时候,因为servlet是一个接口使用较麻烦: 所以我们使用它的实现类:GenericSe ...