使用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"目錄太大了所以后來我又刪了,反正沒什么影響。
(第二天問題明明奇妙的消失了,也許是服務端網絡問題。)