Tìm hiểu về các chân GPIO của Raspberry Pi

0
905
Sơ đồ chân GPIO của Raspberry Pi

Trong bài viết này, chúng ta sẽ tìm hiểu với các chân GPIO của Raspberry Pi và chức năng của nó. Việc tìm hiểu này sẽ giúp các bạn kết nối và lập trình điều khiển cho các thiết bị được kết nối với Raspberry Pi được chính xác, dễ dàng hơn.

GPIO là gì?

GPIO là từ viết tắt của General Purpose Input/Output, là các chân (pin) trên một header có thể dùng làm ngõ vào (input pin) hoặc ngõ ra (output pin), phụ thuộc vào cách thiết lập của người điều khiển, có thể được điều khiển thông qua phần mềm.

GPIO là nơi Raspberry Pi giao tiếp với thế giới bên ngoài thông qua các thiết bị điện tử, điều khiển được kết nối với các chân GPIO.

Raspberry Pi cho phép các thiết bị ngoại vi (như các cảm biến – nhiệt độ, độ ẩm hay thiết bị điện tử như công tắc, LED đơn…) và cách bo mạch mở rộng (như mạch RPi Gertboard) kết nối và truy xuất CPU thông qua các chân GPIO.

Ví dụ: Để điều khiển bật/tắt một LED đơn, chúng ta dùng một chân GPIO (chẳng hạn chân GPIO 7) của Raspberry Pi để kết nối với đèn LED, chân này có nhiệm vụ cấp điện áp 3V cho đèn LED và làm cho đèn LED phát sáng. Như vậy, chân GPIO trong trường hợp này (GPIO 7) được thiết lập là chân ngõ ra (output pin). Trong một ví dụ khác, khi kết nối cảm biến đo nhiệt độ và độ ẩm DHT11 với Raspberry Pi, chân thứ nhất của DHT11 kết nối với chân 3.3V của Raspberry Pi (như trong hình 1), chân thứ hai của DHT11 kết nối với chân GPIO (chẳng hạn chân GPIO 7) của Raspberry Pi, chân thứ tư của DHT11 kết nối với chân GND (0V) của Raspberry Pi. Khi chương trình lập trình cho cảm biến DHT11 hoạt động, chân GPIO 7 sẽ nhận dữ liệu nhiệt độ, độ ẩm từ chân thứ hai DHT11 dưới dạng bit dữ liệu. Như vậy, trong trường hợp này, chân GPIO 7 lại được thiết lập là chân ngõ vào (input pin).

Hình 1: Sơ đồ kết nối chân cảm biến DHT11 với Raspberry Pi.

Trên bo mạch của máy tính Raspberry Pi model A và B, có 26 chân GPIO nằm trên một header (ngay bên cạnh cổng cắm RCA video – cổng có màu vàng hoặc xanh da trời), được chia thành hai hàng, mỗi hàng có 13 chân.

Trên bo mạch của máy tính Raspberry Pi 3 model B, có đến 40 chân GPIO (nằm sau hai cổng cắm USB), cũng được chia thành hai hàng, mỗi hàng 20 chân.

Sơ đồ chân GPIO của Raspberry Pi

Các Raspberry Pi có sơ đồ chân GPIO khác nhau tùy theo phiên bản, ở đây, chúng ta chỉ đề cập đến sơ đồ chân GPIO của Raspberry Pi 3 model B. Raspberry Pi 3 model B có sơ đồ chân của GPIO được quy định như trong hình 2 bên dưới.

Sơ đồ chân GPIO của Raspberry Pi 3 model B

Hình 2: Sơ đồ chân GPIO của Raspberry Pi 3 model B.

Có nhiều cách đánh số, ký hiệu cho các chân GPIO của Raspberry Pi. Ở đây, chúng ta chỉ đề cập đến hai cách đánh số chính, đó là kiểu BCM và kiểu BOARD.

Đánh số theo kiểu BCM là cách ký hiệu các chân theo đúng chức năng của nó. Trong hình 2 ở trên, hai cột dọc, ngoài cùng ở hai bên với các ô như GPIO 2, GPIO 3, GPIO 14, GPIO 15, 3.3V, GND… đó là cách đánh số theo kiểu BCM.

Đánh số theo kiểu BOARD là cách đánh số các chân GPIO dựa trên vị trí của chân trên header. Trên header của Raspberry Pi, các chân GPIO được chia làm hai hàng, mỗi hàng 20 chân. Hai mươi chân hàng bên trái đánh số là 1, 3, 5, 7, 9, …, 39. Hai mươi chân còn lại, hàng bên phải đánh số là 2, 4, 6, 8, 10 …, 40. Thông thường, chúng ta dùng cách đánh số theo kiểu BOARD.

Lưu ý: Chúng ta cần hiểu được các quy tắc đánh số, ký hiệu các chân này để có thể lập trình và điều khiển chính xác các chân GPIO, đúng với yêu cầu sử dụng.

GPIO của Raspberry Pi 3 model B có tất cả 40 chân, được chia làm hai hàng, mỗi hàng 20 chân, một hàng gồm các chân đánh số lẽ từ 1–39, một hàng gồm các chân đánh số chẵn từ 2–40 (đánh số theo mạch – BOARD number).

GPIO của Raspberry Pi 3 model B gồm có:

  • 2 chân có mức điện áp 3.3V (chân số 1 và chân số 17).
  • 2 chân có mức điện áp 5V (chân số 2, chân số 4).
  • 8 chân Ground (0V) (chân số 6, 9, 14, 20, 25, 30, 34 và 39).
  • 28 chân GPIO (chân số 3, 5, 7, 8, 10, 11, 12, 13, 15, 16, 18, 19, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 40). 

Cùng với chức năng đơn giản của các chân ngõ vào và ngõ ra, các chân GPIO cũng có thể thực hiện nhiều chức năng khác nhau. Một số chân cụ thể là:

Các chân I2C

Raspberry Pi sử dụng chuẩn giao tiếp I2C để giao tiếp với các thiết bị tương thích với Inter-Integrated Circuit (một giao thức truyền thông nối tiếp hai dây tốc độ thấp). Chuẩn giao tiếp này yêu cầu vai trò chủ-tớ giữa cả hai thiết bị. I2C có hai kết nối: SDA (Serial Data) và SCL (Serial Clock). Chúng hoạt động bằng cách gửi dữ liệu đến và sử dụng kết nối SDA, và tốc độ truyền dữ liệu được điều khiển thông qua chân SCL.

  • Data: (GPIO 2), Clock (GPIO 3)
  • EEPROM Data: (GPIO 0), EEPROM Clock (GPIO 1)

Xem thêm bài viết: Giới thiệu giao tiếp I2C

Các chân UART

Các chân giao tiếp nối tiếp hoặc UART (Universal Asynchronous Receiver/Transmitter – Bộ thu / phát không đồng bộ đa năng) cung cấp cách thức giao tiếp giữa hai bộ vi điều khiển hoặc máy tính. Chân TX được sử dụng để truyền dữ liệu nối tiếp và chân RX được sử dụng để nhận dữ liệu nối tiếp đến từ một thiết bị nối tiếp khác. Có 2 chân liên quan đến giao tiếp UART.

  • TX (GPIO14)
  • RX (GPIO15)

Các chân SPI

SPI (Serial Peripheral Interface) là một giao thức được sử dụng cho giao tiếp chủ-tớ. Raspberry Pi sử dụng giao thức này để giao tiếp nhanh chóng giữa một hoặc nhiều thiết bị ngoại vi. Dữ liệu được đồng bộ hóa bằng đồng hồ (SCLK tại chân GPIO 11) từ thiết bị chính (Raspberry Pi) và dữ liệu được gửi từ Raspberry Pi tới thiết bị SPI bằng chân MOSI (Master Out Slave In). Nếu thiết bị SPI cần giao tiếp lại với Raspberry Pi, thì nó sẽ gửi dữ liệu trở lại bằng chân MISO (Master In Slave Out). Có 5 chân liên quan đến giao tiếp SPI:

  • GND: Kết nối tất cả các chân GND của tất cả các thành phần tớ (slave) và bo mạch Raspberry Pi 3 với nhau.
  • SCLK: Tín hiệu đồng hồ của SPI. Kết nối tất cả các chân SCLK với nhau.
  • MOSI (Master Out Slave In): Chân này được sử dụng để gửi dữ liệu từ chủ (master) đến tớ (slave).
  • MISO (Master In Slave Out): Chân này được sử dụng để nhận dữ liệu từ slave đến master.
  • CE (Chip Enable): Chúng tôi cần kết nối một chân CE cho mỗi thiết bị slave (hoặc các thiết bị ngoại vi) trong mạch của chúng ta. Theo mặc định, chúng ta có hai chân CE nhưng chúng ta có thể cấu hình nhiều chân CE hơn từ các chân GPIO có sẵn khác.

Các chân SPI trên bo mạch Raspberry Pi 3:

  • SPI0: GPIO 9 (MISO), GPIO 10 (MOSI), GPIO 11 (SCLK), GPIO 8 (CE0), GPIO 7 (CE1)
  • SPI1: GPIO 19 (MISO), GPIO 20 (MOSI), GPIO 21 (SCLK), GPIO 18 (CE0), GPIO 17 (CE1), GPIO 16 (CE2)

Xem thêm bài viết: Giới thiệu chuẩn giao tiếp SPI

Các chân GPIO chịu mức điện áp tối thiểu là 3V, tối đa là 5V. Nếu mức điện áp nằm ngoài giới hạn này sẽ làm hỏng mạch. Thông thường, chúng ta nên sử dụng một mạch mở rộng để kết nối với các thiết bị ngoại vi, không nên kết nối trực tiếp các thiết bị, linh kiện điện tử vào GPIO trên Raspberry Pi.

Để hiểu rõ hơn về chức năng của từng chân GPIO, các bạn xem thêm trên website này.

Các chân PWM 

PWM (Pulse Width Modulation – Điều chế độ rộng xung) là một kỹ thuật phổ biến được sử dụng để thay đổi độ rộng của các xung trong một chuỗi xung. PWM có nhiều ứng dụng như điều khiển độ sáng của đèn LED, điều khiển tốc độ của động cơ DC, điều khiển động cơ servo hoặc nơi bạn phải lấy ngõ ra analog bằng các thiết bị kỹ thuật số.

  • Phần mềm PWM có sẵn trên tất cả các chân
  • Phần cứng PWM chỉ khả dụng trên các chân này: GPIO 12, GPIO 13, GPIO 18, GPIO 19

Cách sử dụng chân GPIO của Raspberry Pi  

Các chân GPIO được sử dụng để kết nối với các thiết bị, linh kiện điện tử như điện trở, đèn led, công tắc, cảm biến…, là nơi RPi giao tiếp với thế giới bên ngoài.

Ví dụ: Chúng ta có thể kết nối một cảm biến nhiệt độ và độ ẩm DHT11 cùng với một điện trở để tạo ứng dụng đo nhiệt độ, độ ẩm môi trường. Ứng dụng này sẽ được trình bày chi tiết trong bài viết tiếp theo.

Kết nối cảm biến DHT11 với các chân GPIO của Raspberry Pi

Hình 3: Sơ đồ kết nối cảm biến DHT11 với các chân GPIO của Raspberry Pi.

Chân GPIO được đặt làm ngõ vào sẽ cho phép Raspberry Pi nhận tín hiệu được gửi bởi một thiết bị được kết nối với chân này. Điện áp từ 1,8V đến 3,3V sẽ được Raspberry Pi đọc là mức CAO và nếu điện áp thấp hơn 1,8V sẽ được đọc là mức THẤP.

Lưu ý: Không kết nối thiết bị có điện áp đầu vào trên 3,3V với bất kỳ chân GPIO nào, nếu không thiết bị sẽ làm hỏng Raspberry Pi.

Chân GPIO được đặt làm chân ra sẽ gửi tín hiệu điện áp ở mức cao (3,3V) hoặc thấp (0V). Khi chân này được đặt ở mức CAO, điện áp ở đầu ra là 3,3V và khi đặt ở mức THẤP, điện áp đầu ra là 0V.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây