Nút nhấn với ESP32 - chân GPIO làm đầu vào kỹ thuật số

Nút nhấn với ESP32 - chân GPIO làm đầu vào kỹ thuật số

(Cơ điện tử Việt Nam - Vi điều khiển) Nút nhấn với ESP32 - chân GPIO làm đầu vào kỹ thuật số,  trong hướng dẫn thứ năm này trong loạt bài hướng dẫn về ESP32, chúng tôi sẽ dạy bạn cách sử dụng chân GPIO của ESP32 như chân đầu vào kỹ thuật số và cách giao diện một nút nhấn với bảng phát triển ESP32. Nút nhấn được sử dụng để điều khiển thiết bị như bật và tắt điốt phát quang khi nhấn hoặc không nhấn nút nhấn. Tương tự, chúng ta có thể sử dụng nút nhấn để tăng hoặc giảm tốc độ của động cơ điện một chiều. Khi bạn sử dụng nút nhấn với ESP32, chúng ta phải sử dụng chân GPIO làm chân đầu vào kỹ thuật số. Bởi vì chúng ta sẽ đọc trạng thái của nút nhấn. Nút nhấn sẽ đưa ra hai trạng thái logic cao hoặc thấp.

Trong hướng dẫn trước, chúng ta đã học cách sử dụng chân GPIO của ESP32 làm chân đầu ra kỹ thuật số bằng cách tạo một ví dụ nhấp nháy LED:

Chúng tôi có một hướng dẫn tương tự với MicroPython:

  • Lập trình GPIO ESP32 và ESP8266 với MicroPython - Ví dụ về nhấp nháy đèn LED

Cấu hình giao diện nút nhấn

Có hai chế độ cấu hình để giao diện một nút nhấn với bảng ESP32. Chúng ta hãy thảo luận về cả hai chế độ này từng cái một.

Chế độ Pull-Up

Ở chế độ Pull-Up, khi không nhấn nút nhấn, đầu vào logic high sẽ xuất hiện trên chân GPIO của ESP32. Bởi vì tín hiệu 5V xuất hiện trên cực đầu vào thông qua một điện trở R1. Ngược lại, khi nhấn nút nhấn, các tiếp điểm bằng kim loại của nút nhấn sẽ tiếp xúc với đầu nối đất và đầu nối đầu vào. Do đó, một đầu vào logic low phản ánh trên chân đầu vào kỹ thuật số của bo mạch ESP32. Tóm lại, bằng cách đọc trạng thái này của nút nhấn với chân đầu vào kỹ thuật số của vi điều khiển, chúng ta có thể xác định nút nhấn có được nhấn hay không. Sơ đồ sau cho thấy kết nối của một nút nhấn với một điện trở kéo lên.

Nút nhấn với ESP32 - chân GPIO làm đầu vào kỹ thuật số

Chế độ Pull-Down

Ở chế độ Pull-Down, khi không nhấn nút nhấn, đầu vào mức logic low sẽ xuất hiện trên chân GPIO của ESP32. Bởi vì một tín hiệu tham chiếu mặt đất xuất hiện trên thiết bị đầu cuối đầu vào thông qua một điện trở R1. Ngược lại, khi nhấn nút nhấn, các điểm tiếp xúc bằng kim loại của nút nhấn sẽ tiếp xúc với tín hiệu + 5V và thiết bị đầu cuối đầu vào. Do đó, một đầu vào logic high phản ánh trên chân đầu vào kỹ thuật số của bảng ESP32. Sơ đồ sau cho thấy kết nối của một nút nhấn với một điện trở kéo lên.

Nút nhấn với ESP32 - chân GPIO làm đầu vào kỹ thuật số

Nút nhấn giao diện với ESP32

  • Nút nhấn có thể được giao tiếp với ESP32 thông qua điện trở kéo lên hoặc điện trở kéo xuống. Trong chế độ kéo điện trở lên, khi không nhấn nút ấn, đầu vào chân GPIO sẽ có giá trị logic high hoặc ngược lại.
  • Trong chế độ điện trở kéo xuống, khi nhấn nút nhấn, đầu vào chân GPIO sẽ ở trạng thái logic low và ngược lại là trạng thái logic high.

Vì vậy, Chúng tôi sẽ sử dụng chân đầu vào kỹ thuật số của bảng phát triển ESP32 để đọc trạng thái thấp hợp lý và logic này bằng cách sử dụng chức năng pinMode của Arduino IDE. Vì vậy, bây giờ chúng ta hãy bắt đầu với một sơ đồ mạch của giao diện nút nhấn với esp32 và sau đó tôi sẽ giải thích phần lập trình.

Nếu bạn là người mới bắt đầu và không có ý tưởng về bảng phát triển ESP32, bạn có thể xem hướng dẫn này:

Arduino IDE được sử dụng để lập trình ESP32 trong loạt bài hướng dẫn này và chúng ta có thể cài đặt bo mạch ESP32 trong Arduino IDE. Bạn có thể kiểm tra hướng dẫn này:

Nút nhấn với ESP32 - chân GPIO làm đầu vào kỹ thuật số

Vì vậy, bây giờ chúng ta hãy thực hiện một ví dụ đơn giản để kết nối một nút nhấn với bất kỳ chân GPIO nào và bật một đèn LED được kết nối với một chân kỹ thuật số khác. 

Như được hiển thị trong sơ đồ chân ở trên, chúng tôi sẽ sử dụng GPIO15 để kết nối nút nhấn và GPIO22 để kết nối một nút nhấn. Chúng tôi có thể sử dụng bất kỳ chân GPIO nào làm chân đầu vào kỹ thuật số hoặc chân đầu ra kỹ thuật số ngoại trừ một số chân GPIO chỉ có thể được sử dụng làm chân đầu vào kỹ thuật số để biết thêm thông tin về nó, hãy xem hướng dẫn về chân ESP32.

Sơ đồ mạch của nút nhấn với ESP32

Nút nhấn với ESP32 - chân GPIO làm đầu vào kỹ thuật số

Sơ đồ dành cho giao diện nút nhấn được hiển thị bên dưới:

  • Trong sơ đồ mạch trên, GPIO22 được kết nối với chân cực dương của đèn LED và một chân khác của đèn LED được nối với đất thông qua điện trở 330ohm, bạn có thể kiểm tra hướng dẫn nhấp nháy đèn LED để biết thêm thông tin về nó.
  • Nút nhấn tiếp theo, một đầu cuối được kết nối với 3,3 volt của ESP32 và các đầu cuối khác của nút nhấn là chung với GPIO15 và điện trở.
  • Một đầu khác của điện trở được nối với đất. Khi không nhấn nút nhấn, mức logic low sẽ xuất hiện trên GPIO15 hoặc trạng thái nút nhấn sẽ ở mức thấp và khi nhấn nút nhấn, mức logic high sẽ xuất hiện trên GPIO15.
  • Vì vậy, chúng ta sẽ đọc hai trạng thái này của nút nhấn và bật tắt LED cho phù hợp.

Code

Mã cho giao diện nút nhấn được đưa ra dưới đây. Tất cả các chức năng được sử dụng trong mã này giống như được sử dụng trong hướng dẫn cuối cùng về đèn LED nhấp nháy ngoại trừ một chức năng digitalRead function. Vì vậy, tôi sẽ giải thích chức năng đọc kỹ thuật số ngay bây giờ:

digitalRead (Pin_number): Chức năng đọc kỹ thuật số được sử dụng để đọc trạng thái của chân đầu vào. Hàm digitalRead này trả về đầu vào logic HIGH hoặc logic LOW. Nếu trạng thái đầu vào của chân là HIGH, nó sẽ trả về HIGH và nếu không thì ở mức LOW. Bạn chỉ cần chuyển số pin làm phần bổ sung cho chức năng này. Ví dụ trong hướng dẫn này, chúng tôi đang sử dụng chân số 15 làm đầu vào kỹ thuật số, vì vậy chúng tôi sẽ sử dụng hàm này như digitalRead (22) này hoặc chúng tôi có thể xác định 22 với bất kỳ tên nào và sử dụng tên thay vì số pin như chúng tôi đã làm trong ví dụ mã bên dưới:

// We assigned a name LED pin to pin number 22

const int LEDPIN = 22; 

// this will assign the name PushButton to pin numer 15

const int PushButton 

// This Setup function is used to initialize everything 

void setup()

{

// This statement will declare pin 22 as digital output 

pinMode(LEDPIN, OUTPUT);

// This statement will declare pin 15 as digital input 

pinMode(PushButton, INPUT);

}


void loop()


{

// digitalRead function stores the Push button state 

// in variable push_button_state

int Push_button_state = digitalRead(PushButton);

// if condition checks if push button is pressed

// if pressed LED will turn on otherwise remain off 

if ( Push_button_state == HIGH )

digitalWrite(LEDPIN, HIGH); 

}

else 

{

digitalWrite(LEDPIN, LOW); 

}

}

Vì vậy, đây là mã đơn giản được sử dụng để đọc trạng thái của nút nhấn hoặc bất kỳ công tắc nào. Vì vậy, chúng ta hãy xem mã hoạt động như thế nào?

  • Trong mã, 2 dòng đầu tiên đặt tên cho chân đầu vào 15 là PushButton và chân đầu ra 22 là LEDPIN. Vì vậy, bây giờ bên trong mã, chúng ta có thể sử dụng những tên này thay vì số pin.
  • Trong chức năng setup(), chúng tôi sử dụng chức năng pinMode () khởi tạo chân PushButton làm ĐẦU VÀO và LEDPIN làm ĐẦU VÀO.
  • Trong chức năng loop(), digitalRead hàm đọc trạng thái của nút nhấn và lưu giá trị của nó trong biến Push_button_state.
  • Sau đó, nếu điều kiện được sử dụng để kiểm tra trạng thái của biến Push_button_state.
  • Nếu Push_button_state cho đầu ra HIGH, LEDPIN sẽ được bật và nếu không, nó sẽ vẫn tắt.

Sau khi xem qua hướng dẫn này, chắc chắn bạn sẽ có thể sử dụng các chân GPIO của ESP32 như một chân đầu vào kỹ thuật số. Bạn cũng có thể xem các hướng dẫn khác về ESP32:

  • Các kênh chuyển đổi tương tự sang kỹ thuật số của ESP32 và hướng dẫn đo điện áp 
  • Chân cảm ứng ESP32 - Cách sử dụng chân cảm ứng làm nút kỹ thuật số
  • Hướng dẫn từng bước về cảm biến hiệu ứng hội trường tích hợp của ESP32
  • Các kênh điều chế độ rộng xung của ESP32 với tạo PWM chu kỳ nhiệm vụ cố định và thay đổi 
  • Giao diện LCD I2C với ESP32
  • Gán địa chỉ IP cố định / tĩnh cho ESP32
  • Máy chủ web dựa trên ESP32 trong Arduino IDE - Cách điều khiển đèn LED từ máy chủ 
  • Máy chủ web điểm truy cập mềm ESP32 trong Arduino IDE
  • Máy chủ web ESP32 trong Arduino IDE - Điều khiển động cơ Servo

Đọc thêm
Đăng nhận xét

Các Khóa Học IoT - Nhúng - ECU Chất Lượng Tại Việt Nam