2022年7月3日 星期日

使用 Arduino IDE 編譯 ESP32 程式

ESP32由總部位於上海的中國公司樂鑫資訊科技建立和開發,由台積電採用40奈米技術製造。ESP32是一系列低成本,低功耗的單晶片微控制器,整合了Wi-Fi和雙模藍牙。 ESP32系列採用Tensilica Xtensa LX6微處理器,包括雙核心和單核變體,內建天線開關,RF變換器,功率放大器,低雜訊接收放大器,濾波器和電源管理模組。 

本實作使用 WeMos LoLin32 開發板,此開發板是Wemos基於 ESP-32 模組所設計的核心開發板,內建802.11 b/g/n/e/i 2.4 GHz Wi-Fi 的微控制器、藍牙 v4.2 BR/EDR 和低功耗藍牙(BLE、BT4.0、Bluetooth Smart)並引接 ESP-32所有的GPIO接腳,配有雙核心 Tensilica 32bit LX6 微處理器,高達 240 MHz 時脈,適合使用麵包板進行開發應用。
 WeMos LoLin32 內部電路圖如下:

要使用Arduino IDE 編譯 ESP32 程式必須先在Arduino IDE加入開發版的支援。打開功能表 檔案/偏好設定,點擊 額外的開發版管理員網址 右方的按鈕,再於視窗中加入開發版的支援網址:
https://dl.espressif.com/dl/package_esp32_index.json
接著打開功能表 工具 / 開發板 / 開發版管理員,以關鍵字 esp32 搜尋開發軟體並安裝。下圖為筆者安裝完成後之畫面。

當把ESP32接上電腦後可能會發現COM埠無法使用,這是因為少了 USB to UART Bridge Driver ,去官網下載驅動程式回來安裝即可,網址如下:
https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
正確安裝後, 裝置管理員 會出現正確的硬體裝置:
接下來,在Arduino IDE 中編譯程式並燒錄到ESP32中。本實作為:讓開發板的第5號引腳產生高、低電壓變換輸出而讓內建LED產生點滅效果。
//初體驗,LED點滅測試
#define BLINK_GPIO (gpio_num_t)5

void setup() {
  gpio_pad_select_gpio(BLINK_GPIO);  // 選定控制接腳
  gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
}

void loop() {
  Serial.begin(9600);  //設定通訊速率
  printf("LED亮燈\n");
  gpio_set_level(BLINK_GPIO, 0);          // 輸出低電位
  vTaskDelay(3000 / portTICK_PERIOD_MS);  // 點燈3秒
  printf(" LED熄燈\n");
  gpio_set_level(BLINK_GPIO, 1);          // 輸出高電位
  vTaskDelay(1000 / portTICK_PERIOD_MS);  // 熄燈1秒
}