網頁

2017年9月18日 星期一

Arduino ESP32 - 簡易入門實作範例

聲明:
由於本人並非 esp32 晶片專家,祇是單純記錄 esp32 入門操作範例,所以此篇文章寫得不是很完整。若要專業教學文章、知識、原理探究、應用等,敬請 Google 其他人寫的文章,請勿看本篇文章避免浪費您的寶貴時間。

安裝 CP210x USB to UART Bridge VCP Drivers
The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products.

在 Google 輸入 CP210x
按此 連結 :CP210x USB to UART Bridge VCP Drivers - Silicon Labs
到 Silicon Labs網站
移到下面的 「Download VCP (5.3 MB) 」此連結,按下去以下載 CP210x_Windows_Drivers.zip



選下載的檔案按右鍵,解壓縮「 CP210x_Windows_Drivers.zip」。進入「CP210x_Windows_Drivers 」資料夾
對「CP210xVCPInstaller_x64.exe」此執行檔連按二次,執行此檔案。(按下一步,接受授權)

將 ESP32 裝置連接到電腦 的usb port。
螢幕出現 正在安裝驅動程式。
按桌面左下方視窗圖示,選 「裝置管理員」,按連接埠(COM & LPT),會出現「Silicon Labs CP210x USB to UART Bridge(COM3)」。
我是 COM3,但每個使用者看到的不一定跟我一樣。



安裝 ARDUINO 1.8.4

1.到arduino 網站
https://www.arduino.cc
2.點右上方的 「三」按鈕 (沒有出現如下的畫面,就直接選「SOFTWARE」此連結。
3.選「software」。
往下移 看到 「Download the Arduino IDE」內的 ARDUINO 1.8.4。
按右邊 「Windows Installer」。

進入「Contribute to the Arduino Software」此畫面,按下面的「Just Download」。

下載 arduino-1.8.4-windows.exe。
下載完畢後,對「arduino-1.8.4-windows.exe」此檔案連按二下,以執行此程式。
按「I Agree」「Next」,都用預設值即可,最後按 「Close」。

如何在Arduino IDE上面安裝 ESP32

Google 輸入 「esp32 arduino」 。
選 第1 個網頁 : GitHub - espressif/arduino-esp32: Arduino core for the ESP32。
 按右下方的 「Clone or download」。


按「Download ZIP」。

下載 : arduino-esp32-master.zip。
對此檔案,按右鍵,解壓縮。
將 解壓縮出來的資料夾 arduino-esp32-master改名為 「 esp32」。
到 「 c:\文件\Arduino」資料夾,新增 「hardware」資料夾。
在 hardware 下新增 espressif 資料夾。
把上面的   esp32 資料夾複製到 「 C:\文件\Arduino\hardware\espressif」。

進入「 C:\文件\Arduino\hardware\espressif\esp32\tools」,執行 「get.exe」

會開一個類似命令提示字元的視窗,下載資料。
下載完成後,會關閉此視窗。
在「tools」夾下,會多了一個「xtensa-esp32-elf」資料夾。

有關說明請參考 https://github.com/espressif/arduino-esp32 此網頁中的
Instructions for Windows 。


開啟 「Arduino」此程式
「工具/序列埠」 ,改成 esp32面板所連接的 com 編號  , 可從「裝置管理員」看到,我是com3。

工具/開發板,改為「WeMos "WiFi&Bluetooth Battery」。

Upload Speed 改為 115200。
按「新增」。
按「驗證」。

setup :把初始化的程式,寫在此副程式內,祇執行一次,按 ESP32板子的enable 鍵,也是執行 setup。
loop :主程式放在這裏面,會一直重複執行。


檢查有無錯誤。

esp32 要切換到 「on」的位置。再按「上傳」。

範例一 : 讓 led 燈重複閃爍
(Turns an LED on for one second, then off for one second, repeatedly.)
此塊 esp32 led 燈是接在 pin 16。
檔案/範例/01.Basics/Blink 。

加入 #define LED_BUILTIN 16 此敘述 :

#define LED_BUILTIN 16
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

按「上傳」或按「草稿碼/上傳」。
結果:
 led 燈暗
led  燈亮 (在 pin 16 上面)

範例二 : 讓 led 漸亮 又漸暗
(
This example shows how to software fade LED using the ledcWrite function.
LEDC Software Fade )

檔案/範例/ESP32/AnalogOut/LEDCSoftwareFade



把  LED_PIN  改為 16
#define LED_PIN            16

按「上傳」
結果:

範例三 : boot 按鍵測試
檔案/範例/ESP32/Touch/TouchRead。
因 boot 按鍵 對應到 touch1。

將 T0改成 T1

Serial.println(touchRead(T1));
按「上傳」。
結果:
按 右邊的「序列埠監控視窗」,看com3的結果。
若看不到結果,請把 下面的 baud rate 改成 115200。
當你按 esp32控制板的boot鍵,com3 的視窗會出現0。

範例四 : 以web 的方式 ,控制  led 燈亮或不亮

(From there, you can open that address in a web browser
 to turn on and off the LED on pin 16.)

檔案/範例/WiFi/SimpleWiFiServer。

修改 wifi 的ssid和密碼。

const char* ssid     = "asus3";
const char* password = "12345678";

修改 pin 編號 ,此塊 ESP32的 led 燈 對應到 pin 16。
pinMode(16, OUTPUT); 

修改 pin 編號
 if (currentLine.endsWith("GET /H")) {
          digitalWrite(16, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /L")) {
          digitalWrite(16, LOW);                // GET /L turns the LED off

結果:
透過瀏覽器,可以 控制 led 燈亮或不亮 。
註:根據我的測試,以這塊板子,其實  digitalWrite(16, HIGH);    是讓led 不亮,而 寫入 LOW 訊號,才是讓 LED 亮起來。
我的esp32  ,透過 手機的熱點,抓到的 ip 為 192.168.43.216。

範例五 : ESP32 當 WiFi AP (WiFi 熱點)
紅色字為修改的地方

const char* ssid     = "esp32";
const char* password = "12345678";


 // WiFi.begin(ssid, password);
 WiFi.softAP(ssid, password);

// Serial.println(WiFi.localIP());
   
    Serial.println(WiFi.softAPIP());


結果:

7 則留言 :

  1. 回覆
    1. 如果沒有現成 wifi可用 ,就祇能讓 esp32當熱點,讓別的設備以 wifi 的方式跟 esp32 連,達到控制的目的。

      刪除
  2. 可以使用esp32做水位感測器嗎

    回覆刪除
  3. 可以教如何使用esp32水位感測器嗎?

    回覆刪除
  4. 請問一下,esp32 的adc訊號是0-4095嗎?相對於0-3.3嗎?

    回覆刪除
  5. 亂交!拜託不要這樣讓人誤會好不好!你這樣造成很多人不方便ㄟ!!!!!!!!!

    回覆刪除
    回覆
    1. 冒昧問一下 哪個部分亂交 小弟我也是看這個作者學的 沒問題啊

      刪除