Giao thức giao tiếp Arduino

Giao Thuc Giao Tiep Arduino



Giao thức truyền thông là tập hợp các quy tắc cho phép các thiết bị giao tiếp và trao đổi dữ liệu. Các giao thức này rất quan trọng trong giao tiếp Arduino vì Arduino liên tục gửi và nhận dữ liệu. Sử dụng các giao thức này giúp Arduino bao gồm các phương pháp phát hiện lỗi và khôi phục lỗi có thể xảy ra. Các giao thức này mang các thiết bị tương tự và kỹ thuật số lại với nhau và giúp bạn có thể thiết kế nhiều dự án.

Giao thức giao tiếp Arduino

Bằng cách sử dụng các giao thức Giao tiếp, chúng tôi có thể gửi và nhận bất kỳ dữ liệu nào của cảm biến trong Arduino.

Một số cảm biến đơn giản như Hồng ngoại (IR) có thể giao tiếp trực tiếp với Arduino nhưng một số cảm biến phức tạp như mô-đun Wi-Fi, mô-đun thẻ SD và Con quay hồi chuyển không thể giao tiếp trực tiếp với Arduino mà không có bất kỳ giao thức giao tiếp nào. Vì vậy, đó là lý do tại sao các giao thức này là một phần không thể thiếu trong giao tiếp Arduino.







Arduino có nhiều thiết bị ngoại vi gắn liền với nó; trong số đó có ba thiết bị ngoại vi giao tiếp được sử dụng trong bảng Arduino.



Giao thức giao tiếp Arduino

Giao tiếp giữa các thiết bị điện tử khác nhau như Arduino được tiêu chuẩn hóa giữa ba giao thức này; nó cho phép các nhà thiết kế giao tiếp giữa các thiết bị khác nhau một cách dễ dàng mà không gặp bất kỳ vấn đề tương thích nào. Hoạt động của ba giao thức này giống nhau vì chúng phục vụ cùng một mục đích giao tiếp, nhưng chúng khác nhau về cách thực hiện bên trong một mạch. Mô tả thêm về các giao thức này được thảo luận dưới đây.







UART

UART được gọi là Bộ tiếp nhận không đồng bộ / đồng bộ chuyển giao. UART là một giao thức truyền thông nối tiếp có nghĩa là các bit dữ liệu được chuyển theo dạng tuần tự lần lượt. Để thiết lập giao tiếp UART, chúng ta cần hai dòng. Một là chân Tx (D1) của bảng Arduino và chân thứ hai là chân Rx (D0) của bảng Arduino. Chân Tx dùng để truyền dữ liệu đến các thiết bị và chân Rx dùng để nhận dữ liệu. Các bảng Arduino khác nhau có nhiều chân UART.

Pin kỹ thuật số Arduino Pin UART
D1 Tx
D0 Rx

Để thiết lập giao tiếp nối tiếp bằng cổng UART, chúng ta cần kết nối hai thiết bị trong cấu hình được hiển thị bên dưới:



Trên Arduino Uno, một cổng nối tiếp dành riêng cho giao tiếp thường được gọi là cổng USB. Như tên cho thấy Universal Serial Bus, vì vậy nó là một cổng nối tiếp. Sử dụng cổng USB Arduino có thể thiết lập giao tiếp với máy tính. Cổng USB được kết nối với các chân Tx và Rx trên bo mạch của Arduino. Sử dụng các chân này, chúng ta có thể kết nối bất kỳ phần cứng bên ngoài nào ngoài Máy tính thông qua USB. Arduino IDE cung cấp thư viện SoftwareSerial (SoftwareSerial.h) cho phép người dùng sử dụng các chân GPIO như các chân Serial Tx và Rx.

  • UART hoạt động đơn giản với Arduino
  • UART không cần bất kỳ tín hiệu đồng hồ nào
  • Tốc độ truyền phải được đặt trong giới hạn 10% của các thiết bị giao tiếp để tránh mất dữ liệu
  • Nhiều thiết bị có Arduino trong cấu hình Master Slave không thể sử dụng được với UART
  • UART là một nửa song công, có nghĩa là các thiết bị không thể truyền và nhận dữ liệu cùng một lúc
  • Chỉ có hai thiết bị tại một thời điểm có thể giao tiếp với giao thức UART

Giao diện ngoại vi nối tiếp (SPI)

SPI là từ viết tắt của giao diện ngoại vi nối tiếp được thiết kế đặc biệt cho các bộ vi điều khiển giao tiếp với chúng. SPI hoạt động trên chế độ song công có nghĩa là SPI có thể gửi và nhận dữ liệu đồng thời. Khi so sánh với UART và I2C, nó là thiết bị ngoại vi giao tiếp nhanh nhất trong các bo mạch Arduino. Nó thường được sử dụng ở những nơi yêu cầu tốc độ dữ liệu cao như trong các ứng dụng màn hình LCD và thẻ Micro SD.

Các chân kỹ thuật số SPI trên Arduino được xác định trước. Đối với cấu hình chân Arduino Uno SPI như sau:

Dòng SPI GPIO Ghim tiêu đề ICSP
SCK 13 3
MISO 12 1
KHÓI mười một 4
SS 10 -
  • MOSI là viết tắt của Làm chủ ra nô lệ trong , MOSI là Đường truyền dữ liệu từ Master đến Slave.
  • SCK là một Dây đồng hồ xác định tốc độ truyền và các đặc tính kết thúc bắt đầu.
  • SS là viết tắt của Lựa chọn nô lệ ; Dòng SS cho phép Master chọn một thiết bị Slave cụ thể khi hoạt động trong nhiều cấu hình Slave.
  • MISO là viết tắt của Làm chủ trong nô lệ ; MISO là đường truyền Slave to Master cho Dữ liệu.

Một trong những điểm nổi bật chính của giao thức SPI là cấu hình Master-Slave. Sử dụng SPI một thiết bị có thể được định nghĩa là Master để điều khiển một số thiết bị Slave. Master có toàn quyền kiểm soát các thiết bị Slave thông qua giao thức SPI.

SPI là giao thức đồng bộ, có nghĩa là giao tiếp được liên kết với tín hiệu xung nhịp chung giữa Master và Slave. SPI có thể điều khiển nhiều thiết bị dưới dạng Slave trên một đường truyền và nhận duy nhất. Tất cả các Slave được kết nối với Master bằng cách sử dụng chung MISO nhận hàng cùng với KHÓI một đường truyền chung. SCK cũng là dòng xung nhịp chung giữa các thiết bị Master và Slave. Chỉ có sự khác biệt trong các thiết bị Slave là mỗi thiết bị phụ được điều khiển thông qua các thiết bị riêng biệt SS chọn dòng. Điều này có nghĩa là mỗi Slave cần một chân GPIO bổ sung từ bảng Arduino, chân này sẽ hoạt động như một dòng chọn cho thiết bị Slave cụ thể đó.

Một số điểm nổi bật chính của giao thức SPI được liệt kê dưới đây:

  • SPI là giao thức nhanh nhất so với I2C và UART
  • Không yêu cầu bit bắt đầu và dừng như trong UART, có nghĩa là có thể truyền dữ liệu liên tục
  • Slave có thể được giải quyết dễ dàng do cấu hình Master Slave đơn giản
  • Đối với mỗi Slave, một chân phụ được sử dụng trên bảng Arduino. Thực tế 1 Master có thể điều khiển 4 thiết bị Slave
  • Xác nhận dữ liệu bị thiếu giống như được sử dụng trong UART
  • Không thể cấu hình nhiều Master

Giao thức truyền thông I2C

Inter Integrated Circuit (I2C) là một giao thức truyền thông khác được sử dụng bởi các bo mạch Arduino. I2C là giao thức khó và phức tạp nhất để thực hiện với Arduino và các thiết bị khác. Bất chấp sự phức tạp của nó, nó cung cấp nhiều tính năng bị thiếu trong các giao thức khác như nhiều cấu hình Master và nhiều Slaves. I2C cho phép kết nối tối đa 128 thiết bị với bảng Arduino chính. Điều này chỉ có thể thực hiện được vì I2C chia sẻ dây đơn giữa tất cả các thiết bị Slave. I2C trong Arduino sử dụng hệ thống địa chỉ, nghĩa là trước khi gửi dữ liệu đến thiết bị Slave, Arduino trước tiên phải chọn thiết bị Slave bằng cách gửi địa chỉ duy nhất. I2C chỉ sử dụng hai dây làm giảm số lượng chân Arduino tổng thể, nhưng mặt xấu của nó là I2C chậm hơn so với giao thức SPI.

Pin tương tự Arduino I2C Pin
A4 SDA
A5 SCL

Ở cấp độ phần cứng, I2C chỉ được giới hạn ở hai dây, một dây cho một đường dữ liệu được gọi là SDA (Dữ liệu nối tiếp) và cái thứ hai cho dòng Đồng hồ SCL (Đồng hồ nối tiếp). Ở trạng thái nhàn rỗi, cả SDA và SCL đều được kéo lên cao. Khi cần truyền dữ liệu, các đường này được kéo xuống mức thấp bằng cách sử dụng mạch MOSFET. Sử dụng I2C trong các dự án, bắt buộc phải sử dụng điện trở kéo lên thường có giá trị là 4,7Kohm. Các điện trở kéo lên này đảm bảo rằng cả đường SDA và SCL vẫn ở mức cao khi khởi động không tải.

Một số điểm nổi bật chính của giao thức I2C là:

  • Số lượng chân cần thiết rất thấp
  • Nhiều thiết bị Master Slaves có thể được kết nối
  • Chỉ sử dụng 2 dây
  • Tốc độ chậm hơn so với SPI do kéo điện trở lên
  • Điện trở cần thêm không gian trong mạch
  • Mức độ phức tạp của dự án tăng lên cùng với sự gia tăng số lượng thiết bị

So sánh giữa UART với I2C và SPI

Giao thức UART SPI 2C
Tốc độ, vận tốc Chậm nhất Nhanh nhất Nhanh hơn UART
Số lượng thiết bị Lên đến 2 4 thiết bị Lên đến 128 thiết bị
Cần có dây 2 (Tx, Rx) 4 (SCK, KHÓI, MẮT, SS) 2 (SDA, SCL)
Chế độ hai mặt Chế độ hai mặt đầy đủ Chế độ hai mặt đầy đủ Một nửa hai mặt
Số lượng Master-Slaves có thể Nô lệ đơn chủ-đơn Một chủ-nhiều nô lệ Nhiều Master-Nhiều nô lệ
Sự phức tạp Giản dị Có thể dễ dàng điều khiển nhiều thiết bị Phức tạp với sự gia tăng số lượng thiết bị
Bit xác nhận Không Không Đúng

Sự kết luận

Trong bài viết này, chúng tôi đã đề cập đến sự so sánh toàn diện của cả ba giao thức UART, SPI và I2C được sử dụng trong Arduino. Biết tất cả các giao thức rất quan trọng vì nó mang lại cơ hội vô tận để tích hợp nhiều thiết bị. Hiểu tất cả các thiết bị ngoại vi truyền thông sẽ tiết kiệm thời gian và giúp tối ưu hóa các dự án theo đúng giao thức.