天天看點

Arduino Core For ESP8266

如果選擇純C作為ESP8266的開發,有兩個途徑:

  1. 使用樂鑫官方原生的 RTOS-SDK或者NONOS-SDK
  2. 使用Arduino IDE
  3. 使用PlatformIO

作為一個“Arduino 移民”當然最好能用Arudino IDE來作為ESP8266的開發環境了,至少使用Arduino IDE可以省去不少開發環境配置的麻煩,要知道配置一個用于固件開發的純C環境可不是容易的事,得天天折騰Make這個著名而古老的自動化工具。是以我并不會進直采用樂鑫(ESPressif )的RTOS-SDK或者NONOS-SDK,因為那個得自已配置C環境,那對于一直使用進階語言開發而并被Jetbrains 的優秀IDE系列“寵壞”的我來說無疑是一種折磨,而做開發應該是一種享受而不是受罪,是以還是回到 Arduino 的懷抱好一些。

其實用不用Arduino IDE 還是其次,重要的是我想用Arduino 架構來開發而不是原生SDK。ESP8266這個可以多架構開發的晶片讓我在選擇架構的時候确實是作了一番的掙紮。我曾在 Espressif , NodeMCU 和 ESP Arduino 這種三架構之間徘徊了很久才最終想通了自已所要的:适當的情況下用适當的架構,三者皆為我所用!這樣說可能和沒說一樣,其實并不是這樣的,因為三種框各有優劣才導緻出現選擇困難的。

�先來說說Espressif 也就是 樂鑫的官方SDK,Arduino ESP (Arduino Core For ESP8266) 和 NodeMCU 都是其于它的,是原生架構。樂鑫又提供了兩種不同的SDK 一種是 RTOS-SDK 另一個叫NONOS-SDK 它們主要差異點如下:

  • Non-OS SDK - 主要使用定時器和回調函數的方式實作各個功能事件的嵌套,達到特定條件下觸發特定功能函數的目的。Non-OS SDK 使用 espconn 接口實作網絡操作,使用者需要按 照 espconn 接口的使用規則進行軟體開發。
  • RTOS SDK - RTOS 版本 SDK 使用 freeRTOS 系統,引入 OS 多任務處理的機制,使用者可以使用 freeRTOS 的标準接口實 現資源管理、循環操作、任務内延時、任 務間資訊傳遞和同步等面向任務流程的設計方式。具體接口使用方法參考 freeRTOS 官方網站的使用說明或者 USING THE FREERTOS REAL TIME KERNEL--A Practical Guide 介紹。
    • RTOS 版本 SDK 的網絡操作接口是标準 lwIP API,同時提供了 BSD Socket APIsocket 接口的封裝實作,使用者可以直接按照socket API的使用方式來開發軟體應用,也可以直接編譯運作其他平台的标準 Socket 應用,有效降低平台切換的學習成本。
    • RTOS 版本 SDK 引入了 cJSON 庫,使用該庫函數可以更加友善的實作對 JSON 資料包的解析。
    • RTOS 版本相容non-OS SDK中的Wi-Fi接 口、smart config接口、Sniffer相關接口、系統接口、定時器接 口、FOTA接口和外圍驅動接口,不支援AT實作。

NodeMCU是采用 NONOS-SDK 和 NodeLua 的開發架構,而Arduino ESP就是基于RTOS-SDK和Arduino Core的開發架構,但很顯示RTOS是最好的一種選擇!

當然如果你是個Geeker,從來不喜歡開發工具而且又是個硬體工程師那無疑Expressif的原生SDK絕對是最佳選擇,那我推薦使用 安信可官方 的開發工具系列,感覺上雖然很難用(因為我個人很讨厭eclipse ide)。安信可有個官方的百度網盤(具體位址到他們官網找吧),他們将所有的資料和資源都丢在那裡,有興趣的朋友可以到那裡搜刮一下。

Arduino Core for ESP8266 是基于RTOS-SDK的,而且更新得比較快。我選擇它的最重要一點是它有OTA (over-the-air Update) 而 NodeMCU沒有!

這裡 是 Arduino Core for ESP8266 的Github,他們的源碼和配置方法都有。

要Arduino IDE支援ES2688就需要添加驅動支援,可以按以下的方法操作,先打開 Arduino IDE的偏好設定,然後在"Additional Boards Manager URLS"一欄上加入以下的位址:

http://arduino.esp8266.com/stable/package_esp8266com_index.json
           

然後在選擇闆子的菜單内點選“Boards Manager”:

Arduino IDE 偏好設定

Board manager菜單

待Boards Manager加載成功後就會找到的ESP8266的驅動:

board manager

重打開工具>開發闆菜單就會發現Arudino Core For ESP8266所能支援的闆子了:

工具->開發闆

選對闆子,插上一個LED 來寫個最簡單Blink程式:

void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}
           

上傳成功後一切有如用Arduino來程式設計。

Arduino Core For ESP8266 有極為之豐富的資源,除了可以相容Arduino 絕大多數的庫之外還有很多的第三方庫支援,這一點做得當相不錯,點選庫管理可以檢視和安裝到Arduino IDE中來:

項目>加載庫>管理庫

庫管理

唯一比較坑爹的是你一定要確定你的機器在終端内通路git的速度是沒有問題的,或者你的機器是已經翻牆了的,否則上所講的内容基本與你緣分,由于我們偉大的“牆”腦殘地将GitHub的部分位址給屏了,如果不翻過去基本下載下傳不了闆子的定義與庫定義。