實驗說明:
練習一個不需要其他輔助元件,只需要一塊ESP32和一條USB線的簡單實驗,讓我們的ESP32說出“Hello World!”,這是一個讓ESP32和電腦通信的實驗,這也是一個入門試驗,希望可以帶領大家進入ESP32的世界。
材料:
- ESP32-E DevKit
- USB 傳輸線
▼ 購買IoT物聯網學習教材:
相關知識 – 序列埠通訊(Serial communication)
序列埠通信一般是指通用異步接收器/發送器(UART),常用於電子電路通信中。 它有兩條通信線,一條負責發送數據(TX 線),另一條負責接收數據(RX 線)。 兩台設備的序列埠通訊連接如下:
在序列埠通信開始之前,雙方的鮑率(Baud Rate)必須相同。 只有使用相同的鮑率,設備之間的通信才能進行。 常用的鮑率是 9600 和 115200。
▼ ESP32上的序列埠串口集成了USB 轉串口,因此它可以通過 USB 線與電腦通信。
▼ Arduino Software 通過序列埠連接將程式碼上傳到ESP32。
您的電腦將連接到它的序列埠設備識別為COMx。 我們可以使用 Arduino 軟體的 Serial Monitor序列埠監控視窗與ESP32通信,通過USB線將ESP32連接到電腦,選擇正確的設備,然後單擊Serial Monitor序列埠監控視窗圖標打開 Serial Monitor窗口。
▼ 序列埠監控視窗界面如下。 如果打不開,請確保ESP32已經連接到電腦,在菜單欄“工具”中選擇正確的序列埠。
程式:
編寫一段程式讓ESP32接受到我們發的指令就顯示“Hello World!”字符串,當然您也可以讓ESP32不用接受任何指令就直接不斷回顯“Hello World!”,其實很簡單,一條 if()語句就可以讓你的ESP32聽從你的指令了,我們再藉用一下ESP32自帶的2Pin LED,讓ESP32接受到指令時LED 閃爍一下,再顯示“Hello World!”
int val;
int ledpin=2; //GPIO2
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
}
void loop()
{
val=Serial.read();
if(val=='R')
{
digitalWrite(ledpin,HIGH);
delay(500);
digitalWrite(ledpin,LOW);
delay(500);
Serial.println("Hello World!");
}
}
程式說明:
- 第 1 列定義變量val 。
- 第 2 列定義數位接口GPIO2Pin 。
- 第 5 列設置鮑率為9600,這裡要跟軟體設置相一致。當接入特定設備(如:藍牙)時,我們也要跟其他設備的鮑率達到一致。
- 第 6 列設置GPIO2Pin 為輸出接口,ESP32上我們用到的I/O 接口都要進行類似這樣的定義。
- 第 10 列讀取PC 發送給ESP32的指令或字符,並將該指令或字符賦給val。
- 第 11 列判斷接收到的指令或字符是否是“R”。
- 第 13 列點亮GPIO2Pin LED。
- 第 15 列熄滅GPIO2Pin LED。
- 第 17 列顯示“Hello World!”字符串。