2020年10月11日 星期日

ESP32/Arduino整合開發軟體(IDE)安裝與設定


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

2、 ESP32開發環境設定

3、 Arduino IDE與ESP32開發模組板連接測試



























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


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


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


圖1.1 Arduino官方網站首頁

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


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

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


圖1.2 Arduino IDE不同工作系統下載選擇頁面

圖1.3 Arduino IDE下載頁面


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

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


圖1.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 的讀者不妨把它們一一叫出來仔細研究一下!我們後面的第一個測試ESP32開發模組板的範例程式(Blink.ino)也是從這裡直接叫出來使用的

圖1.5 新版Arduino 1.8.13 IDE起動畫面

圖1.6 Arduino IDE新建程式畫面


當程式正常起動時會先看到【圖1.5】的起動畫面,完成後接著跳到【圖1.6】的新建程式畫面,在【圖1.5】畫面中顯示的是最新版IDE(1.8.13)起動畫面,在此我們除了可以看到Arduino的官方Logo之外(標記1),標記2紅色框框的介紹連結網址(arduino.cc/credits)而標記3所示的「Genuino」開發板則是新的『Arduino』家族系列。

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

而在圖1.6新建程式畫面右下方標記為2之處的文字內容分別代表所使用的Arduino開發模組板型號(在此為WEMOS LOLIN32板),以及開發板在個人電腦上所佔用的序列通訊埠(即COM6),如果這組訊息與目前實際的情形不合時,我們就必須先動手去修改它才行。


圖1.7 Arduino IDE選取模組板型號畫面


當要修改Arduino模組板型號時,如圖1.7所示,首先我們用滑鼠點選標記1的工具下拉功能選項,然後點選標記2開發板這個選項,這時Arduino IDE會把目前所有可用的模組板型號都列在右方的開發板管理員視窗中此時使用者便可依自己的需要點選正確的模組板型號。標記3處就是我們要使用的ESP32系列開發模組板選項當滑鼠游標移到這裡時系統會再帶出右方的ESP32系列開發模組板彈選擇出窗其中標記4便是WEMOS LOLIN32板的選擇點

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

圖1.8 Arduino IDE使用電腦通訊埠選擇畫面


理論上來說不管我們撰寫哪一種語言的程式,基本上都是使用英文,以Arduino IDE這個開發工具所使用的語言來說是一種類似C又採用了一點JAVA的語法,只是又比這兩種語言簡單自由些;不管怎麼樣都是英文的環境,照理來說使用者對英文應該很熟,不過還是有許多朋友只對程式的指令與語法是OK,可是對工具中其他環境與操作部份的英文字彙還是不太能接受;而Arduino IDE中也針對不同的語系提供了支援,如果使用者想工作在中文的環境底下也是有路可循。

圖1.9 Arduino IDE英文環境設定中文畫面一


首先假設我們一開始是處於英文環境底下圖1.9所示,先點選Arduino IDE畫面左上方標記1的『File』,然後選擇標記2的Preferences功能,便可看見圖1.10的『Preferences』(環境與偏好)設定畫面標記2的『Editor Language』下拉清單即為Arduino IDE開發工具可使用的語言選擇項,如果要選用我們習用的繁體中文(標記3)語系,就必須往下移動滑桿到中間的位置才看得到。當這些設定都選取好之後,最後按下右下方標記4的『OK』按鈕便大功告成。


圖1.10 Arduino IDE英文環境設定中文畫面二


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


圖3-12

圖1.11 Arduino IDE英文環境設定中文畫面一


圖1.12 Arduino IDE中文環境設定英文畫面之二

在初始的Arduino IDE中我們所撰寫的程式都會放在Arduino主程式內定的程式資料夾中使用者常常會找不到在哪裡因此建議由我們自己決定存方位置會比較好在【圖1.11】中標記1之處是我們所撰寫程式的預訂存放位置(在此為「D:\Arduino\Program」),如果要改變的話,可以透過標記2的「瀏覽」(Browse)按鈕去調整選擇


三、2 Arduino IDE/ESP32開發環境設定

在完成上述的下載與安裝動作之後,我們還是不能馬上在其中開發和設計ESP32的程式這是因為我們只是安裝及設定好標準的Arduino IDE整合開發環境而已,可是ESP8266相關的開發模組板並非Arduino的原生模組板之一所以原始的Arduino IDE整合開發軟體並不支援任何一款的ESP32模組板幸好網路上已經有許多熱心的創客專家及軟體高手因為有鑒於ESP32這塊具WiFi與藍芽功能的模組板便宜又好用而且功能又強大因此紛紛跳下來設計出許多方便又好用的開發軟體

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

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


https://dl.espressif.com/dl/package_esp32_index.json


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


圖2.1  Arduino IDE/ESP832設定畫面


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


圖2.2 啟動Arduino IDE開發板管理員設定可用的ESP32開發板


圖2.3 於開發板管理員中設定所有相關可用的ESP32開發板


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


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

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

在Arduino標準的開發過程是要先選擇所使用的開發板,如前面的【圖1.7】所示,先用滑鼠左鍵點擊上方主能表標記1的【工具】選項,等下拉功能表出現後,再將滑鼠移到標記2的【開發板】選項上,此時系統會自動彈出右方的『開發板管理員』視窗,接著使用者只要上下移動滑鼠便可找到所要使用的開發板型號。標記3處就是我們要使用的ESP32系列開發模組板選項,當滑鼠游標移到這裡時,系統會再帶出右方的ESP32系列開發模組板彈選擇出窗,其中標記4便是「WEMOS LOLIN32」開發板的選擇點。

一般常用的ESP32開發板以沿用傳統的NodeMcu外觀的「ESP32 Dev Moudle」與「ESP32 Wrover Moudle」為主,可分成【圖3.1】的30 Pin與【圖3.2】的36 Pin兩種尺寸;不過這種NodeMcu外觀的開發模板在要燒錄程式時,必須等到Arduino IDE 下方的訊息視窗(如【圖3.3】標記1所示)出現上傳燒錄提示訊息的時候,馬上按下板子上的「BOOT」按鈕,否則會燒錄失敗(如【圖3.3】標記2所示),使用上感覺上不是很方便。


圖3.1  30 Pin NodeMcu ESP32 Dev開發板外觀圖


圖3.2  36 Pin NodeMcu ESP32 Devkit開發板外觀圖


圖3.3  NodeMcu ESP32開發板上傳燒錄失敗訊息圖


「WEMOS LOLIN32」板開發板的外觀如【圖3.4】所示,尺寸大小與接腳和傳統的Arduino Uno很類似但是在燒錄程式時只要直接點選Arduino IDE的上傳(Upload)選項就可以非其他設定有錯誤否則不會因為前面提到的手腳太慢問題而失敗因此建議初學者可使用這款的開發板。


圖3.4  WeMos D1 R32開發板外觀圖


在選擇好開發板的型號之後,還必需設定這塊板子所使用的串列通訊埠的號碼;我們可依前面圖1.8中所示的步驟,和前面一樣我們先用滑鼠點選標記1的工具下拉功能選項,但是接著點選標記2序列埠這個選項系統一樣會在右方自動彈出『序列埠』這個視窗,在其中系統會將所有存在電腦中的序列埠號碼都列出來,使用者可依開發板實際連接的位置去點選圖1.8來說「WeMos D1 R32」這片開發板是分配在COM6)。當上述Arduino模組板與所使用的電腦序列通訊埠都設定好之後,此IDE開發工具視窗的右下方便(即【圖1.8】標記4之處)會呈現出使用者最後的設定內如容。

在開發板種類和通訊序列埠設定好之後,就可以叫出「Blink」這個基礎的範例程式來測試了,接下來就讓我們看看如何開啟ESP8266專用的「Blink」範例程式請參考【圖3.5】的Arduino IDE畫面,首先我們用滑鼠點選螢幕左上方主選單的[檔案]選項,等下拉選擇頁面展開之後,再將滑鼠移到顯示『範例』處,這時應該可以看到一卡車的範例程式列表彈出來供使用者選擇;接著將滑鼠移到這塊方框內,選取名稱為『0.1 Basic』的選項,此時可在右方看到該項下的範例程式彈出視窗,其中第三項也就是被標記1紅線框住的「Blink」就是這個範例程式,在點選它之後,便可以如前面【圖3.3】所示中看見「Blink」這個範例程式的內容了。


圖3.5 開啟Arduino IDE內建ESP32的 Blink.ino範例程式畫面


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

如果上傳燒錄程式成功,在圖3.5】左下方的狀態視窗中出現標記2上傳完畢的提示訊息;假如編譯發生錯誤或是燒錄失敗,下方的狀態視窗都會出現相關的訊息提醒使用者,使用者便可依訊息的內容找出問題再去修正,直到一切無誤且燒錄成功為止。

如果一切都正確無誤的話,使用者便可看到「WeMos D1 R32」開發板上的內建LED燈以亮一秒滅一秒的節奏閃爍著;前面說過所有標準的Arduino開發板上這顆LED燈的位置是在數位的第13腳,可是在ESP32所有種類的郵票板上這顆LED燈已經被取消,因此如果直接拿原始的Arduino『Blink』範例來測試的話,可能會無法看到正確的結果;到了ESP82266這塊WiFi晶片橫空出世之後它們相關的郵票貼片板(例如ESP-12/E/F等)上都有內建一顆接在GPIO2的LED以作為燒錄時指示之用但是到了ESP32之後所有的ESP32郵票貼片板又把這顆LED給取消了不過目前大部分的延伸開發板(如前面的【圖3.1】【圖3.2】【圖3.4】這三款)為了延續ESP家族的前一款ESP8266的精神大部分的延伸開發板都有在上面加了一顆同樣接在GPIO2的LED所以在【圖3.3】的『Blink』範例程式中,標記3處特別加上一行宣告這顆LED燈的腳位是GPIO2的「LED_BULITIN」內建常數變數,如果不加上這一行程式除了會在編譯的時候出現錯誤的訊息之外當然也看不到LED在閃爍了。

在燒錄好這個『Blink』範例程式之後如果能看到你所使用的ESP32開發板上有LED在正常的閃爍代表你的Arduino IDE已經可以正常使用在ESP32系列的開發模組板了而且兩者之間的連線與燒錄程式的任督二脈也已經打通接下來就可以開始一系列和ESP32有關的開發與設計工作了


沒有留言:

張貼留言

三、使用Line Notify傳送照片之安全監控系統之二---低功耗篇

在前一個章節中 , 我們建構了一個標準照片擷取 、 傳送與儲存的按全監控裝置 , 不過假如我們使用的場域中有許多的地方都必須按裝這類的裝置時 , 例如在一個有許多門 、 窗的家庭或辦公室 , 由於我們的系統使用無線WiFi作為信號傳輸之用 , 所以信號的傳輸除非裝置離WiFi分享...