ESP32, IOT物聯網

【IOT物聯網應用-ESP32】第三篇:開始使用Arduino IDE編寫程式 序列埠通信

實驗說明:

練習一個不需要其他輔助元件,只需要一塊ESP32和一條USB線的簡單實驗,讓我們的ESP32說出“Hello World!”,這是一個讓ESP32和電腦通信的實驗,這也是一個入門試驗,希望可以帶領大家進入ESP32的世界。

 

材料:

  • ESP32-E DevKit
  • USB 傳輸線

▼ 購買IoT物聯網學習教材:

ESP32 物聯網應用學習套件 ESP32CAM IoT物聯網學習教材 適用Arduino

 

相關知識 – 序列埠通訊(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!”字符串。

 

 

 

相關文章