第01篇 ESP32 Arduino開發環境架設

ESP32 內建藍牙及WiFi 具雙核心、深度睡眠、遠端更新OTA 等功能
可以補足傳統 Arduino 缺乏的網路串連服務

我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195

開發環境操作也可以參考本人的ESP32 Youtube教學頻道

ESP32介紹

ESP32腳位:腳位36根,扣除系統使用約10根,還有約26根可用,腳位說明如下圖

這裡特別說明,如果你用過ESP8266系列產品,你會發現8266最大的問題是他的類比只有1個,而ESP32則有18個ADC,也就是說有18個腳位是不分數位類比,直接使用analogRead或digitalRead就可以分別做類別或數位讀取,光這點優勢你就可以換掉ESP8266了。

18 x Analog-to-Digital:可接類比或數位感測(粉紅色標示)
3 x SPI interfaces(MOSI,MISO,SCK,SS):高速資料傳輸 SD card, TFT, RFID(藍色標示)
3 x UART interfaces:藍芽、相機(不限腳位編號)
2 x I2C interfaces(SDA,SCL) and I2S interfaces:LCD、氣壓、陀螺儀(GPIO 21,22)
16 x PWM output channels:數位輸出也可類比輸出(不限定腳位編號,但需要宣告channel)
2 x Digital-to-Analog Converters (DAC):不太需要用
10 x Capacitive sensing GPIOs:提供觸控電容(棕色標示)
GPIO 34,35,36,39:Input only(不能作為輸出腳位)
GPIO 0,6,7,8,9,10,11:系統用,勿使用(淺灰色標示)
GPIO 18:重開機
還有一些個人遇到的問題(不清楚原因,但會搞死你)

  1. DHT11不可以用GPIO 5、26
  2. GPIO 12, 2燒錄時不可接任何裝置,請空接,燒錄完成後,再接回,否則會上傳失敗。
    3.WiFi啟動後,2,4,12,13,14,15,25,26,27僅能數位讀取,不可類比

Arduino IDE 編輯工具安裝

IDE工具下載: 請至https://www.arduino.cc/en/Main/Software網站下載,筆者比較建議直接下載免安裝檔(如下圖:Windows ZIP for non admin install),解壓縮後直接可用,因為這樣的程式可以帶著走,不需要安裝,未來電腦更新或升級也可以直接開啟,甚至放在USB都可以使用。

下載後,直接解壓縮到C:或D:底下都可以使用,整個路徑建議不要有任何中文。
此處選擇Just Download,另外一個選項則是捐獻Arduino基金會。

下載完成後,找到下載的壓縮檔,選擇解「壓縮所有檔案」,直接將壓縮檔解壓縮到C:\或D:\跟目錄下,例如筆者常放在C:\之下。

將壓縮檔解壓縮到C:\或D:\跟目錄下

等候3~5分鐘解壓縮完畢之後,我們可以在C:\Arduino1.8.x下找到主程式Arduino.exe,這樣主程式就算安裝完畢,接下來準備安裝ESP32開發核心。

在C:\Arduino1.8.x下的主程式Arduino.exe

安裝ESP32核心程式

由於ESP32是Arduino相容並非Arduino原廠產品,因此必須在Arduino IDE中安裝ESP32核心程式,這樣才可使用Arduino IDE寫ESP32。

開啟Arduino IDE後,選擇功能表的檔案/偏好設定,開啟偏好設定視窗,在addition boards manager URL輸入以下文字後,按OK。

https://dl.espressif.com/dl/package_esp32_index.json
在Arduino IDE中安裝ESP32核心程式

接著點選工具/開發板/開發板管理員,即會出現開發板管理員視窗,在開發板管理員視窗中,輸入關鍵字ESP32後,即可篩選出ESP32核心套件,目前(2020/02月)最新版本為1.0.4,直接點選右側的安裝按鈕,並等候5~10分鐘讓系統下載核心套件並完成安裝,最後再關閉開發板管理員視窗。

安裝ESP32開發板套件

完成以上步驟,再次選擇工具/開發板,並往下拉即可在下方找到最新的ESP32系列主板,接下來就看您買的是哪一種ESP32主板來選擇。

選擇ESP32開發板型號

若您購買的是NodeMCU-32s,選擇正確的版本後會出現以下畫面,除了序列埠稍後要更改之外,其餘都請保留預設值不要更動。

選擇型號後預設值畫面

安裝ESP32驅動程式

完成環境設定後,我們將購買的ESP32插入USB,會發現需要安裝USB驅動程式,目前ESP32大部分採用CH340或者CP2102與電腦溝通並上傳程式,傳統UNO則是CH340,目前windows或MAC系統都沒有內建驅動,因此當您接上ESP32的USB後,還需要安裝驅動。

開啟檔案總管,並在本機上按右鍵/管理,可以進入裝置管理員。由於尚未安裝驅動程式,因此會列在其他裝置,使用者應該能找到這個前方有驚嘆號「!」的USB to UART裝置,就是Arduino ESP32的USB裝置。

裝置管理員內的USB to UART裝置,就是尚未安裝驅動程式的Arduino ESP32

若是CH340請至這裡下載:http://www.wch.cn/download/CH341SER_ZIP.html

若是CP2102請至這裡下載:https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

由於兩者安裝方式大致相同,因此這裡以CH340為例,依照您的作業系統在網站點選下載

下載CH340驅動程式
下載後,執行並直接install安裝
安裝完成

接著查看連接埠的埠號,在我的電腦(本機)上按右鍵,並點選管理,開啟電腦管理視窗

開啟電腦管理視窗

點選裝置管理員,若安裝正確的話,前方的驚嘆號會消失,並會將裝置放在連接埠下,此時要記得紀錄一下最後方的COM編號喔。

查看連接埠

完成驅動程式安裝,再回到Arduino IDE中,此時在工具/開發板的序列埠選擇取得正確的COM編號(本例為COM3)。

在Arduino IDE中選擇序列埠編號

完成以上步驟即算完成開發環境設定,接下來我們寫第一個HelloWorld測試一下。

程式上傳測試 Hello World !

完成環境設定後,就可以來寫程式測試看看,由於ESP32的語法幾乎與Arduino UNO相同 ,因此這裡就先用HelloWorld先做個簡單練習。

首先在Setup()中輸入Serial.begin(115200); 此為宣告序列傳輸鮑率是115200(Baud),接著在Loop()中輸入Serial.println(“Hello World!”); 及delay(1000);,代表每1000ms(=1 second)就會在序列視窗印出Hello World!。完整程式如下圖。

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);     //啟動序列通訊鮑率115200
  }

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello World!");    //印出Hello World!
  delay(1000);                       //休息一秒(1/1000)s
  }
程式撰寫畫面

接著我們將程式上傳到ESP32,點選左上的→符號,先會跳出一個存檔視窗,我們先按取消略過存檔,然後等候下方訊息列出現連線訊息時:
Connecting……_…………
長按ESP32主板上右下的IO0按鈕(有些會標示為BOOT),直到出現上傳開始再放開IO0,此按鈕為工作模式切換鈕,上傳程式時都需要按這個按鈕將ESP32的「工作模式」轉換成「下載模式」,此為保護措施,避免無意間覆蓋掉原有的程式內容,不過有些ESP32已經取消這個機制,稱為一鍵下載(或一鍵燒錄)。

程式上傳中畫面

程式更新中,會出現程式上傳的%數,提示使用者程式上傳進度。

程式上傳進度畫面

上傳完畢則會出現Hard resetting via RTS pin…,意思是利用左側的RST按鈕重開機,讓ESP32重新開機來執行程式,不過一般按RST這個步驟是可以省略。

程式上傳完成畫面

完成HelloWorld程式上傳後,點選右上角的放大鏡圖示開啟序列視窗,即可看到一秒一次的「HelloWorld!」出現。這裡要注意的是序列視窗的baud率必須與Serial.begin的數字相同,才有辦法顯示,否則可能會空白,或是亂碼。

開啟序列視窗,設定115200 baud率

經由上述的說明,ESP32確實可以由Arduino IDE進行開發,而且語法、感測器都相同,非常建議立即無痛移轉到ESP32陣營,大量的WiFi及藍牙專案等著您慢慢開發,由於篇幅有限,後續的WiFi及藍牙應用,將於下一期再詳述,敬啟期待。

ESP32藍牙連線及智慧家電
ESP32 ThinkSpeak雲端圖表製作
LINE Notify串接

延伸閱讀

📌 第二篇 ESP32的Hello World

3 Comments

  1. 依敘述指示很順利的show出Hello World

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *