ESP8266是可程式化的通用微控制器(具有WiFi功能),具有少數的 GPIOESP模組要能順利動作需要軟體及硬體相互配合宜,而且使用者如能了解目前ESP模組的發展趨勢及開發環境才能了解網路上的文章在寫什麼,而你也能了解搜尋到的技術或文章是否能為你所用,作者就因為發現目前ESP模組正在火熱發展各種開發平台及方式正在不斷的出現及發展,每個廠商或技術擁抱者在網路發表自己的使用心得,但正因為技術掘起但開發方式正處於兵荒馬亂時代,有各種不同的開發方式且網路文章及技術分類很混亂,本人才會才會整理出這篇文章,意旨在幫忙自己溫故自新另一方面也可幫助讀者了解目前的最新使用方式。

ESP模組要能使用,首先要確定模組已有燒錄韌體在裡面,否則你下的指令是無法被ESP模組所接受,ESP模組從拍賣網站上買到手的時候,或許裡面已經有燒好最新版本的韌體,第一步模組內有燒錄韌體,ESP模組即可支援 AT command。而我們就能利用AT command 來操控ESP模組動作,當ESP模組即可支援 AT command即表示我們的硬體連接及軟體指令已没問題,如此我們可以開始使用複雜的軟體去建構開發環境進而開發複雜的ESP應用程式。正因為硬體有數種的連接方式而軟體也有數種的開發方式,所以讀者在網路上搜尋出技術文章時往往不知作者在什麼且為什麼要寫這些。目前網路上較舊的技術文章即在指導如何更新韌體,但没有說明為何需要更新韌體及更新韌體完後要做什麼事情,而較新的技術文章就會說明如何使用開發平台及使用何種語言去撰寫ESP專案的應用程式。

因此目前市場上的韌體新方式大概可分為以下幾種:

(1)AT 指令 : 透過串列傳輸, 直接下達 AT 指令進行操作. 比較常見的像是以 Arduino 為主要核心, 透過 Rx Tx ESP8266連接,進而擴展無線上網能力,使用這種方式需要使用Arduino USB線與電腦連接。在程式當中,我可以透過 Serial Serial1分別與電腦和 ESP8266通訊,並且AT指令去操控ESP8266。我們在電腦端發送 AT」指令給Arduino,而Arduino再與 ESP8266通訊,相對地 ESP8266 收到指令後,會執行指令而指令執行成功後會傳送回覆訊息給Arduino,最後再回到電腦端。用這種開發方式是開發者首先需要安裝或更新韌體程式,且必須了解控制ESP8266AT指令且撰寫的通訊程式碼會比較複雜。這種的方式大部份僅在測試ESP8266的通訊功能或硬體操控功能。

(2)使用 NodeMCU ESP8266 韌體平台 : NodeMCU是一個充許你使用 LUA 語言去控制ESP8266的開發韌體, 其實你會發現它的開發方式很類似於Arduino的作業方式,但它必須用 LuaLoaderESPlorer程式把程式燒寫到 ESP8266 的記憶體中,它的好處是你只要使用少許的程式碼即可建立Wifi連線、控制ESP8266GPIO,轉變你的ESP8266變成一個Http server¸Web Service 等等專案。但缺點是你必須再學習一種新的程式語言 .目前目前普遍的IoT架構,就是利用ESP8266 再運用常見的protocol –MQTT來傳遞訊息資料,以完成完成物聯網應用開發。

(3)MicroPython開發平台: MicroPython是由來自英國劍橋的理論物理學家Damien George 博士建立的kickstarter專案所發展出的MCU控制器。它可支援 ESP8266 晶片和其它任何的開發板。MicroPython是開源硬體,使用如其名的Python 語言來做開發。有別於Arduino使用的類C/C++語言開發, Python 相較於 C/C++ 屬於高階語言,語法上相對比C/C++ 友善直觀容易閱讀。Python程式誩言的優點是它包含了一組功能完備的標準庫,能夠輕鬆完成很多常見的任務。並且它的語法簡單,與其它大多數程式設計語言使用大括弧不一樣,它使用縮排來定義語句塊。Python的設計哲學是「優雅」、「明確」、「簡單」。Python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」,也因此它和擁有明顯個人風格的其他語言很不一樣。另外Python是一種直譯式語言,你可以直接就在命令列上就開始下達程式指令而不用經過編譯的程序。但不知道是什麼原因MicroPython這塊開發板在國內似乎不是很流行,相關網頁也很少。官方網頁如下http://micropython.org/

(4)使用官方原生的 ESP8266-RTOS-SDK:上海樂鑫提供兩種的SDK - NonOS and RTOS(, RTOS透過 C/C++ 直接撰寫程式碼,呼叫SDK提供的API。這個難度最高級,但優點是它可以提供多工及多時序的工作方式。而缺點是這種作業方式比較適合在Linux的作業平台,它需要重新利用像gcccompiler重新編輯Native SDK, 所以在Window 作業平台需要再外加gcc 的編輯程式,比較繁瑣。而Non-OS的開發方式類似於下面Arduino IDE作業方式。

(5)Arduino IDE : 使用Arduino軟體的IDE界面去寫ESP8266程式是最簡單的方式,最主要是要把ESP8266 SDK 匯入至Arduino 軟體內,所以我們就可以利用Arduino軟體的IDE界面去撰寫程式、再編輯程式成Bin檔,再匯入ESP8266 的記憶體內。如此我們便可利用Arduino的語法及程式架構去控制ESP8266晶片,進而達到我們專案所需要的功能。將原生的 Non-SDK 重新改寫並支援 Arduino IDE 環境, 就像在寫 Arduino 一樣,一樣的IDE界面可以讓原本就會撰寫 Arduino 的人很快地移轉到 ESP8266的開發環境。

下面三種是WEB 開發平台

(6)WF8266R.js:這是台灣自主研發設計的 WEB 開發平台,使用 ESP12F做為 MCU 並設計多樣的開發板以滿足不同需求的環境,並為物聯網開發者搭建了一整合方案。WF8266R.js目標是建構完整的 WoT(Web of Things)方案也就是IoT + Web-enabled 技術。其目地是為降低前端設計師(設計類,軟體類)對於硬體和網路通訊的門檻, 研發了WF8266R 開發板以及WF8266R 物聯雲 APP和相同豐富的Web DevKit,混合運用這些 API 讓設計師們快速建立自已的物聯網應用。因此初學者或設計師,不需要很強的程式和硬體背景就能完成一些互動性作品。有興趣讀者可參考http://code.unumobile.com/wf8266r/

(7)愛爾蘭Cesanta Smart.js:這是由愛爾蘭 Cesanta Software發展,是一種JavaScript-based韌體IoT開發平台,它目前僅支支援ESP8266的模組開發,把javascript當作最主要的開發語言並且把javasceipt引擎內置於ESP8266,直接用網頁將js傳入 ESP8266 執行. 有興趣讀者可參考https://github.com/cesanta/smart.js

(8) ESP8266Basic–ESP Baisc 也是開放源碼,這是較新開發平台及語言,它最主要的特點是Basic,使用傳統80年代簡單的Basic當做開發誩言,希望開發過程及程序Basic化, 所以它完全針對ESP8266模組提供基本的ESP8266 Basic直譯器,它的官網提供燒錄程式,編輯器,程式參考手册,及簡易GUI的小工具並且網站提供不少的範例程式。官方網址 https://www.esp8266basic.com/

回ESP8266文件主目錄

arrow
arrow

    stanley 發表在 痞客邦 留言(0) 人氣()