2020年5月10日 星期日

建構ESP8266的Arduino IDE開發環境

第三章 ESP8266/Arduino整合開發軟體(IDE)安裝與設定


三、1 Arduino整合開發軟體(IDE)下載與安裝

三、2 ESP8266開發環境設定

三、3 Arduino IDE與ESP8266模組板連接測

























在本書中所使用的開發工具是Arduino官方所提供的整合開發環境(Integraed Development Environment,又簡稱為IDE),其所使用的語言則是Arduino相容的Processing語言(類似C/C++語言)類似C但又帶點JAVA風格的語言,只是語法較簡單且格式較自由。有鑑於有些讀者或許還不曾接觸過Arduino這個產品,所以本書打算從開發軟體的下載與安裝開始,一路到基礎的範例程式的設計與說明為止,如果已經有過Arduino程式使用與設計經驗的讀者,請自行選擇跳過這章節前面基礎的部份


三、1 Arduino整合開發軟體(IDE)下載與安裝

俗語說”工欲善其事,必先利其器”,如果徒有性能強大的硬體裝置,卻缺少良好的軟體配合也是惘然,以目前筆者撰寫此文時Arduino IDE的版本已到1.8.12版,如果還沒安裝的讀者請先連線到Arduino官方網站(http://www.arduino.cc),應該可以看到圖三.1的中標記1Arduino官方網站首頁畫面,接著將滑鼠移到上方主功能表單中標記2的SOFTWARE選項,這時網頁會自動顯示下拉選項,在點選標記3的『DOWNLOADS選項之後便可以進入下載開發軟體的頁面(如圖三.2所示)


圖三.1 Arduino官方網站首頁

(本圖及以下所有之畫面皆引用自Arduino官方網頁及其IDE軟體其內容及權利皆屬Arduino官方所有僅此致謝)


由於筆者是使用Win 10的個人電腦系統所以就以此為範例說明,在圖三.2讀者可看到圖中標記1的紅色框線之處便是目前最新的Arduino IDE版本(版本號碼為1.8.12)的下載點,如果讀者看到本文時去官方網站下載的話,由於時間的落差,可能會看到更新的版本也不一定,不過整個下載與安裝的流程應該是大同小異!而網頁右上方用紅線框起來的標記2是Windows版的開發程式,有兩種選項可以下載,上方的是一般標準的Windows安裝版(Windows Installer),下載完成之後依照一般在Windows底下軟體安裝(Install)的步驟進行就可以。下方處的則是單機壓縮獨立版(Windows ZIP file),也就是說下載之後,經過解壓縮便可以直接執行,不需要再經過安裝的過程;很多綠色自由軟體似乎都是這樣,兩者在使用上並沒有什麼差異,只是後者對於整個開發環境軟體程式的管理(例如刪除或反安裝等)都必須自己處理就是了。至於標記3的版本是專門針對Win 8.1或10的OS電腦如果點選的話會前往Microsoft Store去下載讀者有興趣的話可自行前往試試看

至於標記4則是蘋果Mac OS系統電腦的下載點,而標記5是Linux版作業系統的下載點,讀者們可依自己的電腦種類與OS的不同去下載所需的版本。筆者安裝的是Windows單機壓縮獨立版(Windows ZIP file)感覺上這樣比較符合這款具綠色精神的軟體的旨意後面也會以這個版本做安裝的說明


圖三.2 Arduino IDE不同工作系統下載選擇頁面


圖三.2中不管點選了哪一種Windows版的IDE開發程式,接下來都會進入圖三.3的下載頁面,在網頁的右下方有兩個下載的選項,標記1的第1項(just download)是免付費直接下載,而第2個則是贊助他們後再下載;說實在Arduino社群的這些朋友們不計酬勞讓大家享用他們的辛苦成果,的確是讓人很欽佩!如果可以的話贊助他們一些也不為過,不過由於是跨國界的付款,假如沒有適當的信用卡好像還無法共襄盛舉,所以大家如果無法贊助的話就記得要感念在心頭就是了。


圖三.3 Arduino IDE下載頁面


當Arduino IDE軟體下載及安裝(或解壓縮)完成後,我們如果打開Arduino IDE所在的資料夾來看的話,其內容如圖三.4所示,其中編號1的便是Arduino IDE的主程式,只要點擊它便可以起動程式。而標記2的libraries資料夾是Arduino IDE的函式庫資料夾所在之處,也是這個整合開發工具的精華之所在,因為其中包括了眾多由Arduino開發團隊所撰寫設計的一些內建函式,其中大部份都和擴充應用模組(shield)、週邊裝置及感測器有關,例如液晶顯示器(LCD)、非同步串列傳輸(Serial/UART)、伺服馬達(Servo Motor)步進馬達(Stepper Motor)、網際網路(Ethernet)、無線網路(WIFI)及各式各樣的感測器(Sensor)如溫度、濕度、壓力、紅外線‧‧‧等等!可說是琳琅滿目種類繁多,這讓許多的使用者能夠很容易的去完成他們的程式設計,難怪那麼多人會喜歡使用它!

圖三.4 Arduino IDE資料夾內容


至於標記3的drivers資料夾是存放所有Arduino 家族開發模組板的USB轉UART/RS232介面晶片的驅動程式,當第一次把Arduino 模組板插上你的電腦時就和所有使用USB介面的裝置一樣,電腦都會偵測到並自動去安裝驅動程式,以Win7以上的系統來說,幾乎不用擔心會有找不到驅動程式的問題,可是如果你的電腦還是Window XP系統的話,由於Arduino 家族不同模組板使用了不同的USB轉UART/RS232介面晶片,Window XP系統常會無法自動偵測到及安裝驅動程式,這時就必須用手動的方式將驅動程式的來源指向這個“drivers”資料夾的路徑與位置。

標記4的「examples」資料夾是存放所有Arduino 的應用範例程式,更是Arduino IDE軟體的精華所在,前面提到的程式庫中所有的種類都有相關的應用範例可供參考,而且大部份程式庫還不只一個應用範例,可說是內容豐富;只要能把這些範例程式弄清楚,大概就可以稱為Arduino 的高手了,建議有興趣而且想學好Arduino 的讀者不妨把它們一一叫出來仔細研究一下!

當程式正常起動時會先看到圖三.5的起動畫面,完成後接著跳到圖三.7的新建程式畫面,在圖三.5畫面中顯示的是最新版IDE(1.8.8)起動畫面,和之前的版本(.6)有很明顯的不同之處,我們除了可以看到Arduino的官方Logo之外(標記1),眾開發團隊人員的姓名在此已隱而不見,取而代之的是標記2紅色框框的介紹連結網址(arduino.cc/credits)。在Arduino剛起來的時候的確是個公益組織可是當它們蔚為風潮大受歡迎之後接踵而來的龐大商機令誰都會怦然心動他們的組織與成員好像也因此有了大幅的更動為了這龐大的利益他們便推出一個新系列的產品也就是標記3所示的Genuino開發板族系以便與舊的Arduino家族區隔至於兩者之間的差異由於筆者還是活在舊的世界裡,至今還沒用過這款新的模組板,所以也不是很了解筆者的觀念裡只要是好用又可用何必管他新舊就像這句話:『管他黑貓白貓,只要是會抓老鼠就是好貓』,各位說是嗎

圖三.5 新版Arduino 1.8.8 IDE起動畫面


圖三.6 舊版Arduino IDE起動畫面


圖三.7 Arduino IDE新建程式畫面

  

當進入圖三.7的新建程式畫面時,左上方標記1的抬頭標題文字sketch_may09a| Arduino 1.8.12左邊是這個新建立程式的名稱,右邊的文字代表的是這個IDE整合開發環境的版本(1.8.12版);而如果去翻英文字典查一下sketch這個單字的意義可以得知代表『素描』或『草稿』的意思;在原始Arduini團隊中的創始人Massimo Banzi先生等Arduino 開發團隊成員當初在設計這個系統時本來就是針對一些非電子專業人士,而且是一些藝術或是創意工作者而設的,所以他們對這些程式檔案也視為藝術工作的內容,因此才會取sketch這個名字作為檔案的預設名稱。而後面部份則是這個檔案的新建日期,其中” may09”代表五月(May) 9日,然後依照檔案建立的順序由a、b、c、…這樣一路延伸下去,因此為了讓檔案能更具有意義及可讀性,使用者最好把每一個新的檔案另存(即即上方主選單中標記2檔案這個選項中的另存新檔功能)成不同的名稱。

而在圖三.7新建程式畫面右下方標記為3之處的文字內容分別代表所使用的Arduino開發模組板型號(在此為Arduino/Genuino Uno板),以及開發板在個人電腦上所佔用的序列通訊埠(即COM6),如果這組訊息與目前實際的情形不合時,我們就必須先動手去修改它才行。修改的方式分成兩個部份,當要修改Arduino模組板型號時,如圖三.8所示,首先我們用滑鼠點選標記1的工具下拉功能選項,然後點選標記2開發板這個選項,這時Arduino IDE會把目前所有可用的模組板型號都列在右方的開發板管理員視窗中此時使用者便可依自己的需要點選正確的模組板型號。標記3處就是我們這次製作所使用的Uno板選項


圖三.8 Arduino IDE選取模組板型號畫面


如果要修改Arduino模組板所使用的電腦通訊埠則可依圖三.9中所示的步驟,和前面一樣我們先用滑鼠點選標記1的工具下拉功能選項,然後點選標記2序列埠這個選項同樣的Arduino IDE會把目前我們電腦中所有可用的通訊埠都列在右方的標記3之處,接著使用者便可依Arduino模組板實際連接的埠號去點選它。當上述Arduino模組板與所使用的電腦序列通訊埠都設定好之後,此IDE開發工具視窗的右下方便(即標記4之處)會呈現出使用者最後的設定內如容。

圖三.9 Arduino IDE使用電腦通訊埠選擇畫面


理論上來說不管我們撰寫哪一種語言的程式,基本上都是使用英文,以Arduino IDE這個開發工具所使用的語言來說是一種類似C又採用了一點JAVA的語法,只是又比這兩種語言簡單自由些;不管怎麼樣都是英文的環境,照理來說使用者對英文應該很熟,不過還是有許多朋友只對程式的指令與語法是OK,可是對工具中其他環境與操作部份的英文字彙還是不太能接受;而Arduino IDE中也針對不同的語系提供了支援,如果使用者想工作在中文的環境底下也是有路可循。首先假設我們一開始是處於英文環境底下圖三.10所示,先點選Arduino IDE畫面左上方標記1的『File』,然後選擇標記2的『Preferences』功能,便可看見圖三.11環境與偏好設定畫面其中標記1之處是我們所撰寫程式的預設存放位置,如果要改變的話可以透過標記2的「Browse」按鈕去調整;其中標記3的『Editor Language』下拉清單即為Arduino IDE開發工具所使用的語言選擇項,如果要選用我們習用的繁體中文(標記4)語系,就必須往下移動滑桿到中間的位置才看得到。當這些設定都選取好之後,最後按下右下方的『OK』按鈕便大功告成。

圖三.10 Arduino IDE英文環境設定畫面一


圖三.11 Arduino IDE英文環境設定畫面二


不過要注意的是Arduino IDE開發工具並不會馬上改轉換成中文環境,必須先結束程式重新再啟動才行!圖三.12】、【13圖三.10】、【11中文化之後的結果,讀者們可以比較一下兩者的異同之處。



圖三.12 Arduino IDE中文環境設定畫面之一


圖三.13 Arduino IDE中文環境設定畫面之二



三、2 ESP8266開發環境設定

在完成上述的下載與安裝動作之後,我們還是不能馬上在其中開發和設計ESP8266的程式這是因為我們只是安裝及設定好標準的Arduino IDE整合開發環境而已,可是ESP8266相關的開發模組板並非Arduino的原生模組板之一所以原始的Arduino IDE整合開發軟體並不支援任何一款的ESP8266模組板幸好網路上已經有許多熱心的創客專家及軟體高手因為有鑒於ESP8266這塊具WiFi功能的模組板便宜又好用而且功能又強大因此紛紛跳下來設計出許多方便又好用的開發軟體,所以目前除了原廠樂鑫公司所提供的C語言SDK開發工具之外還多了包括相容於Arduino IDE及Lua語言Python語言及JavaScrip等語言

本書之所以要此用Arduino IDE作為ESP8266的開發軟體,主要是因為Arduino 這個系列的產品早已經是風靡全世界,不要說是專業的電子人,連許多業餘的國、高中生都可看到有人在使用,就算不曾接觸過它,想要開始入門學習也很容易,再加上目前在Arduino IDE中已經提供了各式各樣豐富的函式庫,而且其中許多都可以直接相容於ESP8266晶片,既然有這麼好的環境我們當然要善加利用了。


圖三.14 Arduino IDE/ESP8266設定畫面


要將Arduino IDE設定為可用ESP8266晶片的開發環境,我們必須先回到【圖三.12】的『Arduino IDE設定畫面』去點選「偏好設定」這個選項,在進入【圖三.14 Arduino IDE/ESP8266設定畫面在下方標記1之處有一名為額外的開發板管理員網址輸入欄位只要輸入下列的網址即可


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


如果覺得欄位的空間太小不方便輸入亦可點選標記2的按鈕這時會出現標記3名為額外的開發板管理員網址』的彈出視窗使用者便可以在中間空白處輸入上述網址(標記4)如果以後有需要新增的其他的非官方開發板只要依序在下面輸入相關的對應網址就可以了例如圖中空白視窗的第二行就是ESP8266的下一代ESP32的支援網址輸入完之後再按下確定按鈕就大功告成完成在Arduino IDE中ESP8266開發環境的第一階段設定工作

接下來要做的工作就是把所有跟ESP8266相關而且經過ESP8266官方社群認可的開發板都載入Arduino IDE內在啟動Arduino IDE之後如圖三.15】所示,先用滑鼠左鍵點擊上方主能表標記1的【工具】選項,等下拉功能表出現後,再將滑鼠移到標記2的開發板選項上,此時系統會自動彈出右方的『開發板管理員』視窗,接著再用滑鼠點選標記3的開發板管理員功能這時系統會開啟一新的『開發板管理員』視窗(即【圖三.16】)。


圖三.15 啟動Arduino IDE開發板管理員設定可用的ESP8266開發板


在一開始的時候【圖三.16】的『開發板管理員』視窗會顯示許許多多不同開發板的相關選項與內容看起來令人眼花撩亂不過我們只須用滑鼠左鍵點擊上方[類型]欄右邊標記2的相關搜尋文字輸入欄位輸入ESP8266這個關鍵字,就可以看到標記3名為『esp8266 by ESP8266 Community版本2.5.0 INSTALLED』的欄位視窗框,記得要先將滑鼠移到這個欄位視窗框上,才會看到相關的選項與按鈕。假如之前已經安裝過這個管理軟體,便會顯示”INSTALLED”的訊息。如果是第一次按裝或者是要更新軟體的版本,可點選標記4的下拉功能按鈕,便可看到標記5的下拉視窗,然後點選所要的版本,並按下標記6的【安裝】按鈕,系統便會將標記7中所有由ESP8266所衍生出來的相關開發板資料載入Arduino IDE中。經過上述的安裝與設定後,Arduino IDE才算是真正的相容於ESP8266這個系列的開發板,不過要先確定你所使用的開發板已經名列在標記7的清單裡面。


圖三.16 於開發板管理員中設定所有相關可用的ESP8266開發板


三、3 Arduino IDE與ESP8266模組板連接測試

  經過前面的一連串的選擇與設定後,感覺上Arduino IDE和我們所選用的模組板似乎可以連接使用了,不過即使電腦已經正確偵測及安裝好模組板的驅動程式,也不保證就可以正常下載燒錄寫好的程式這是因為還有一些內建的函式庫如果沒有預先安裝的話在程式編譯的階段就會沒辦發通過;如果是第一次使用Arduino IDE這個開發系統的使用者,或者說要使用新的模組板,一般來說最好先試燒錄一些程式看看。在太極拳中第一招叫『起手式』,而在寫C語言或者JAVA語言的程式時都會先寫一個起手程式,就是在螢幕上顯示”Hello World!”這個字串;一樣的Arduino IDE也有一公認的起手程式,就是Blink這個內建的範例程式,由於它已經內建在Arduino IDE裏面,所以即使還沒學過Arduino 語言程式的新手,也可以藉由開啟這個範例程式的方式來測試Arduino IDE與ESP8266模組板的連接狀態。接下就讓我們看看如何進行這個測試的過程。

在Arduino標準的開發過程是要先選擇所使用的開發板,當我們完成前面的ESP8266開發環境的設定工作之後,先用滑鼠左鍵點擊圖三.17上方主能表標記1的【工具】選項,等下拉功能表出現後,再將滑鼠移到標記2的【開發板】選項上,此時系統會自動彈出右方的『開發板管理員』視窗,接著使用者只要上下移動滑鼠便可找到所要使用的開發板型號。在圖中標記為3、4的「NodeMcu 1.0(ESP-12E Module)」及「WeMos D1 R1」這兩款ESP8266開發板,是本書建議採用的開發板,其特性與外觀會在後面的單元再做詳細的介紹。在點選完成之後【開發板】選項的右邊便會出現使用者所選擇到的開發板型號名稱


圖三.17 Arduino IDE/ESP8266開發板設定畫面


在選擇好開發板的型號之後,還必需設定這塊板子所使用的串列通訊埠的號碼;我們再次用滑鼠左鍵點擊圖三.18上方主能表標記1的【工具】選項,在下拉功能表出現後,再將滑鼠移到標記2的『序列埠:』選項上,系統一樣會在右方自動彈出『序列埠』這個視窗,在其中系統會將所有存在電腦中的序列埠號碼都列出來,使用者可依開發板實際連接的位置去點選(以圖三.18來說「WeMos D1 R1」這片開發板是分配在COM6)。

由ESP8266所構成的子模塊(ESP-01~ESP-12F)因為針對不同的使用場合與成本其外接的Flash記憶體大小也會有所不同像前面建議使用的兩款開發板它們的Flash記憶體都是4M bytes不過由於受限於CPU本身程式記憶體管理的限制所以真正能被程式所使用的只有1M bytes而已其餘的記憶體只能轉成儲存檔案資料(SPIFFS)之用由於開發板已經內建這麼多的記憶體而且後面我們也會有一些跟SPIFFS相關的應用實習所以最好也先把它設定好

圖三.18 Arduino IDE/ESP8266序列通信埠設定畫面


圖三.19 Arduino IDE/ESP8266設定畫面


要設定SPIFFS的功能,一樣是要先點選主能表的【工具】選項,只是這時我們要選擇下拉功能表中的『File Size:』選項,也就是【圖三.19】中標記2的地方;當滑鼠移到這裡時,系統會在右方自動彈出Flash記憶體的設定選擇視窗,以「NodeMcu 1.0(ESP-12E Module)」和「WeMos D1 R1」這兩款ESP8266開發板來說,由於使用的是ESP-12E/F這兩款的子模塊,它們的Flash記憶體都是4M bytes,所以為了充分利用所有的記憶體,最好是選擇標記3的「4M(3M SPIFFS)」選項!

在開發板和通訊序列埠設定好之後,照理接下來就可以叫出「Blink」這個基礎的範例程式來測試了,不過由於ESP8266和Arduino家族一系列的開發板是截然不同的產品,所以開啟的方式也不太一樣,接著就讓我們看看如何開啟ESP8266專用的「Blink」範例程式。

圖三.20 開啟Arduino IDE內建ESP8266的 Blink範例程式畫面


  請參考【圖三.20】的Arduino IDE畫面,首先我們用滑鼠點選螢幕左上方主選單標記1的[檔案]選項,等下拉選擇頁面展開之後,再將滑鼠移到標記2的『範例』處,這時應該可以看到一卡車的範例程式列表(即標記5的方框)彈出來供使用者選擇;接著將滑鼠移到這塊方框內,由於前面的範例(【圖三.18】)是選用了「WeMos D1 R1」這款ESP8266開發板,所以我們往下滑動直到看到標記6名為『WeMos D1 R1的範例』的區域為止,然後再將滑鼠移到標記3名稱為『ESP8266』的選項,此時可在右方看到標記為7的範例程式彈出視窗,其中標記4的「Blink」就是這個範例程式,在點選它之後,便可以在【圖三.21】中看見「Blink」這個範例程式的內容了。其中標記2的部份便是「WeMos D1 R1」這片開發板的基本相關參數,和所使用的序列通信埠(COM6)。


圖三.21 範例程式Blink內容畫面


  在每一片標準的Arduino 開發板上都有內建一顆LED燈並接在編號為13的數位接腳上,當13腳輸出High時便會點亮這顆LED燈,如果輸出Low則會熄滅;而原始的Arduino的『Blink』範例程式會讓這顆LED燈點亮一秒後熄滅一秒,並且不斷的重複下去。在Arduino IDE中寫好的程式要先經過編譯才能載入/燒錄到模組板的單晶片內,圖三.22左上方標記4的按鈕符號稱為「Verify」,直接翻譯為驗證,其實也就是一般程式中所謂編譯(Compiling)的意思;而旁邊另一個標記為5的按鈕符號稱為「Upload」,直譯為上傳,按下它便會連續執行編譯載入(即燒錄) 兩個動作。

如果上傳燒錄程式成功,在圖三.22下方的狀態視窗中出現標記1上傳完畢與標記2的「flush complete」提示訊息;假如編譯發生錯誤或是燒錄失敗,下方的狀態視窗都會出現相關的訊息提醒使用者,使用者便可依訊息的內容找出問題再去修正,直到一切無誤且燒錄成功為止。由於Arduino IDE 1.5.7版之後的環境都可在視窗的左方替程式加上行號,因此當有錯誤發生時,只要依下方的狀態視窗中標示的錯誤行列處尋找,便可以很容易的找到bug並予以修正。


圖三.22 範例程式Blink編譯完成/燒錄成功畫面


如果一切都正確無誤的話,使用者便可看到「WeMos D1 R1」開發板上的ESP8266郵票板(又稱為ESP-12E模組板)上的內建LED燈以亮一秒滅兩秒的節奏閃爍著;前面說過所有標準的Arduino開發板上這顆LED燈的位置是在數位的第13腳,可是在ESP8266所有的子板塊這顆LED燈的位置是在第2腳(同時也是上傳燒錄用的TX腳),因此如果直接拿原始的Arduino『Blink』範例來測試的話,可能會無法看到正確的結果;所以在【圖三.22】中的ESP8266內建『Blink』範例程式中,這顆LED燈的腳位是以標記3的「LED_BULITIN」內建常數變數來代表,而這個常數會隨著使用的開發板不同而由系統自行調整。

如果在開發測試的過程中出了一些狀況,但是我們無法確定是什麼問題時,一般都會以燒錄『Blink』這個範例程式來測試系統的狀態是否正常,看是硬體連線的問題?還是程式本身的問題?然後再依測試的結果去找出問題所在,建議讀者們也可以比照辦理。



沒有留言:

張貼留言