最全配置Arduino IDE的esp8266開發環境教程

前言

    Arduino IDE除了可以編寫在Arduino上運行的程序,還可以配置成esp8266的開發環境,這樣就可以直接在Arduino IDE上開發esp8266的固件程序。但是正常流程安裝非常慢,還會頻繁報錯或者不能使用。所以下面我不僅會展示正常流程如何安裝,也會講解正常流程安裝的原理,從而找出一些非正常安裝的方法。

正常安裝流程

  1. 打開Arduino IDE(這裏安裝IDE就不講了,可以到官網下載安裝包,不過要記住安裝位置),在菜單"文件->首選項"彈出的對話框的"附加開發板管理網址"框中填入http://arduino.esp8266.com/stable/package_esp8266com_index.json
    如圖:
    最全配置Arduino IDE的esp8266開發環境教程-shouxian.png
  2. 重啓IDE,然後在菜單"工具->開發板->開發板管理器"彈出的對話框最上方的搜索欄中輸入"esp",搜索。如圖:
    最全配置Arduino IDE的esp8266開發環境教程-sousuo.png
    可以搜到esp8266 by Conmmunity,我因爲已經安裝過了,下面顯示是更新和刪除,第一次安裝顯示是一個安裝按鈕。點擊安裝,就開始爬進度條了。
  3. 安裝完成後,就會在"工具->開發板"菜單中顯示esp8266開發板,如圖:
    最全配置Arduino IDE的esp8266開發環境教程-success.png

正常流程的安裝原理

    我知道,如果你們能通過上述方法能安裝成功,也就不會搜索到我的博客了(成功了記得點個贊)。所遇到的問題無非有兩種:下載太慢,頻繁出錯;下載完成後,刷程序時出錯。我這裏先告訴大家正常流程的安裝原理,這樣就可以取巧手動安裝環境了。後面我還會講,如何驗證是否環境配置成功。
    其實流程不是很麻煩O. o。首先是Arduino IDE會根據你選擇的版本到github的esp8266 Arduino項目網址去把項目整個拉下來,然後會在配置文件設置的目錄下新建一個文件夾存儲這個項目。可以在首選項菜單彈出的對話框的最下方看到配置文件的路徑。我的esp8266項目的目錄就是在這個目錄下的package文件夾裏,具體是C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266。
內部路徑如下:
最全配置Arduino IDE的esp8266開發環境教程-dir.png
其中2.4.2代表我下載的esp8266項目的版本號,目錄下面就是整個項目的解壓後的內容,注意有一個很重要的python腳本get.py。而下面esp8266/tools目錄下的工具就是由get.py下載安裝的。
    閱讀了get.py可知,get.py是根據我們之前在首選項裏配置的那個鏈接下的json文件來下載依賴配置的。這個json文件也是在首選項的配置目錄下,比如我的就是在C:\Users\Administrator\AppData\Local\Arduino15\,下面有一個package_esp8266com_index.json文件,可以看到和我們按正常流程配置的附加開發板管理網址的那個最後文件名是一樣的。get.py會從這個配置文件中讀取tools目錄下那三個工具的下載網址、版本號等配置,然後判斷在dist目錄下是否已經下載了這三個工具的壓縮文件,如果已經有,則解壓,然後按照我上面的esp8266/tools目錄存放(工具名\版本號\解壓內容)。如果dist目錄沒有,則下載下來,再按上述步驟解壓存放。

手動安裝原理

    根據上述流程,我們首先需要在配置文件目錄下將esp8266項目目錄配置好,然後在esp8266 Arduino項目git網址上下載項目解壓,如果還想試試被牆住之後網速情況,在配置了python環境的情況下,可以直接執行get.py腳本。但是如果你之前esp8266 Arduino項目都無法下載,這裏基本可以放棄,可以採用下面方式繼續。
    打開package_esp8266com_index.json(應該gradle的依賴配置,我一直用maven,這個沒有深入瞭解)文件,裏面列出了各個版本esp8266 arduino項目的相關配置,包括依賴工具的版本。

//我安裝的2.4.2,所以工具依賴也選這個的版本
"toolsDependencies": [
  {
    "packager": "esp8266",
    "version": "0.4.13",
    "name": "esptool"
  },
  {
    "packager": "esp8266",
    "version": "1.20.0-26-gb404fb9-2",
    "name": "xtensa-lx106-elf-gcc"
  },
  {
    "packager": "esp8266",
    "version": "0.2.0",
    "name": "mkspiffs"
  }
]

在這個json文件中也能分別搜索到這三個工具對應版本的下載網址,隨便貼一個給大家參考:

{
  "version": "2.5.0-4-b40a506",
  "name": "xtensa-lx106-elf-gcc",
  "systems": [
    {
      "host": "aarch64-linux-gnu",
      "url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-4/aarch64-linux-gnu.xtensa-lx106-elf-b40a506.1563313032.tar.gz",
      "archiveFileName": "aarch64-linux-gnu.xtensa-lx106-elf-b40a506.1563313032.tar.gz",
      "checksum": "SHA-256:88c5e9a813bd01c97fe2a07a7280e0685cf18a937ad3ea756d33f8bfbbcbfec3",
      "size": "40983153"
    }
  .....

然後我們就能根據給出的url手動把這三個工具對應的壓縮文件也下載下來了。
    接下來還有兩種選擇。你可以新建一個dist目錄,把這三個壓縮文件放進去,然後執行get.py。get.py檢測到目錄下有對應版本的工具壓縮包後,會自動幫你解壓,部署到文件夾esp8266/tools。但是這裏有個問題需要注意一下,get.py裏會進行SHA安全驗證,如果因此而失敗,你需要註釋掉安全驗證這個語句。與其這麼麻煩,不如直接按照我給出的目錄結構自行解壓,部署。

判斷安裝成功

    首先你需要一個USB2TTL工具和一塊esp8266板,如何驗證這兩個是能工作的,可以參考我的另一篇esp8266-01刷AT固件。當然接線圖我也直接轉到這裏。
最全配置Arduino IDE的esp8266開發環境教程-sousuo.png

  1. 接線圖如上。如果插上usb不能識別,需要安裝驅動,也參考上面的文章。
  2. 打開Arduino IDE,開發板選中"Generic ESP8266 module"。
    我標記的配置需要改成和下圖一致。注意端口是要選取你插入的USB端口。
    最全配置Arduino IDE的esp8266開發環境教程-config.png
  3. 編譯上傳。測試程序如下(你可以直接在文件->示例->esp8266中找到很多demo,比如blink之類,這裏選輸出配置),這個程序會在串口輸出端不停輸出板的配置信息。
//  ESP8266 CheckFlashConfig by Markus Sattler
//  This sketch tests if the EEPROM settings of the IDE match to the Hardware
void setup(void) {
      Serial.begin(115200);
}
void loop() {
      uint32_t realSize = ESP.getFlashChipRealSize();
      uint32_t ideSize = ESP.getFlashChipSize();
      FlashMode_t ideMode = ESP.getFlashChipMode();
      Serial.printf("Flash real id:   %08X\n", ESP.getFlashChipId());
      Serial.printf("Flash real size: %u bytes\n\n", realSize);
      Serial.printf("Flash ide  size: %u bytes\n", ideSize);
      Serial.printf("Flash ide speed: %u Hz\n", ESP.getFlashChipSpeed());
      Serial.printf("Flash ide mode:  %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));
      if (ideSize != realSize) {
        Serial.println("Flash Chip configuration wrong!\n");
      } else {
        Serial.println("Flash Chip configuration ok.\n");
      }
      delay(5000);
}
  1. 成功判斷:成功日誌輸出如下:
    最全配置Arduino IDE的esp8266開發環境教程-test.png
    還可以在工具->串口監視器中看到類似:
    最全配置Arduino IDE的esp8266開發環境教程-output.png

如果沒有成功,建議可以嘗試下將RST插口接地,重置芯片,然後再試一遍,不懂這個操作可以參考esp8266-01刷AT固件。如果還是沒有成功,說明環境沒有安裝成功。

百般無奈的最終解決方案

    如果實在被牆的沒辦法,而且其他方法也一直解決不了問題,我發現還有一個訣竅。在晚上,我所在的網絡使用標準安裝流程是無論如何走不通的,一直失敗。但是當在早上進行安裝的時候,就像風一樣快了。我不知道這中間是因爲git的代理服務器問題還是牆的問題。如果你實在沒辦法了,可以一試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章