Mục lục:
- Quân nhu
- Bước 1: Kết nối vật lý
- Bước 2: Cách sử dụng Thư viện
- Bước 3: Truyền dữ liệu cơ bản
- Bước 4: Nhận dữ liệu cơ bản
- Bước 5: Kiểm tra
Video: Giao tiếp nối tiếp Arduino: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Nhiều dự án Arduino dựa vào việc truyền dữ liệu giữa một số Arduino.
Cho dù bạn là người có sở thích chế tạo ô tô RC, máy bay RC hay thiết kế trạm thời tiết với màn hình từ xa, bạn sẽ cần biết cách truyền dữ liệu nối tiếp từ Arduino này sang Arduino khác một cách đáng tin cậy. Thật không may, rất khó để những người có sở thích giao tiếp dữ liệu nối tiếp hoạt động trong các dự án của riêng họ, vì dữ liệu nối tiếp được gửi dưới dạng một dòng byte.
Nếu không có bất kỳ loại ngữ cảnh nào trong dòng byte, thì gần như không thể giải thích dữ liệu. Nếu không có khả năng diễn giải dữ liệu, Arduinos của bạn sẽ không thể giao tiếp một cách đáng tin cậy. Điều quan trọng là thêm dữ liệu ngữ cảnh này vào luồng byte bằng cách sử dụng thiết kế gói nối tiếp tiêu chuẩn.
Thiết kế gói nối tiếp, nhồi gói và phân tích gói là phức tạp và khó đạt được. May mắn cho người dùng Arduino, có sẵn các thư viện có thể thực hiện tất cả các logic phức tạp này đằng sau hậu trường, do đó bạn có thể tập trung vào việc đưa dự án của mình hoạt động mà không phải lo lắng. Có thể hướng dẫn này sẽ sử dụng thư viện SerialTransfer.h để xử lý gói nối tiếp.
Tóm lại: Có thể hướng dẫn này sẽ trình bày cách bạn có thể triển khai dữ liệu nối tiếp mạnh mẽ một cách dễ dàng trong bất kỳ dự án nào bằng cách sử dụng thư viện SerialTransfer.h. Nếu bạn muốn tìm hiểu thêm về lý thuyết cấp thấp về giao tiếp nối tiếp mạnh mẽ, hãy xem hướng dẫn này.
Quân nhu
-
2 Arduinos
Chúng tôi rất khuyến khích bạn sử dụng Arduinos có nhiều UART phần cứng (tức là Arduino Mega)
- Trèo lên dây
-
Cài đặt SerialTransfer.h
Có sẵn thông qua Trình quản lý thư viện của Arduino IDE
Bước 1: Kết nối vật lý
Khi sử dụng giao tiếp nối tiếp, cần lưu ý một số điểm nối dây:
- Đảm bảo rằng tất cả các cơ sở được kết nối!
- Chân của Arduino TX (Truyền) cần được kết nối với chân RX (Nhận) của Arduino khác
Bước 2: Cách sử dụng Thư viện
SerialTransfer.h cho phép bạn dễ dàng gửi một lượng lớn dữ liệu bằng giao thức gói tùy chỉnh. Dưới đây là mô tả về tất cả các tính năng của thư viện - nhiều tính năng chúng tôi sẽ sử dụng ở phần sau của hướng dẫn này:
SerialTransfer.txBuff
Đây là một mảng byte trong đó tất cả dữ liệu trọng tải được gửi qua nối tiếp được lưu vào bộ đệm trước khi truyền. Bạn có thể nhồi bộ đệm này với các byte dữ liệu để gửi đến Arduino khác.
SerialTransfer.rxBuff
Đây là một mảng byte trong đó tất cả dữ liệu tải trọng nhận được từ Arduino khác được lưu vào bộ đệm.
SerialTransfer.bytesRead
Số byte trọng tải mà Arduino khác nhận được và được lưu trữ trong SerialTransfer.rxBuff
SerialTransfer.begin (Luồng & _port)
Khởi tạo một thể hiện của lớp của thư viện. Bạn có thể chuyển bất kỳ đối tượng lớp "Serial" nào làm tham số - ngay cả các đối tượng lớp "SoftwareSerial"!
SerialTransfer.sendData (const uint16_t & messageLen)
Điều này làm cho Arduino của bạn gửi số byte "messageLen" trong bộ đệm truyền tới Arduino khác. Ví dụ: nếu "messageLen" là 4, 4 byte đầu tiên của SerialTransfer.txBuff sẽ được gửi qua nối tiếp đến Arduino khác.
SerialTransfer.available ()
Điều này làm cho Arduino của bạn phân tích cú pháp bất kỳ dữ liệu nối tiếp nào nhận được từ Arduino khác. Nếu hàm này trả về boolean "true", điều đó có nghĩa là một gói mới đã được phân tích cú pháp thành công và dữ liệu của gói mới nhận được sẽ được lưu trữ / có sẵn trong SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Nhồi "len" số byte của một đối tượng tùy ý (byte, int, float, double, struct, v.v.) vào bộ đệm truyền bắt đầu từ chỉ mục như được chỉ định bởi đối số "chỉ mục".
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Đọc số byte "len" từ bộ đệm nhận (rxBuff) bắt đầu từ chỉ mục như được chỉ định bởi đối số "chỉ mục" thành một đối tượng tùy ý (byte, int, float, double, struct, v.v.).
GHI CHÚ:
Cách dễ nhất để truyền dữ liệu là trước tiên xác định một cấu trúc chứa tất cả dữ liệu bạn muốn gửi. Arduino ở đầu nhận phải có cấu trúc giống hệt nhau được xác định.
Bước 3: Truyền dữ liệu cơ bản
Bản phác thảo sau truyền cả giá trị ADC của analogRead (0) và giá trị của analogRead (0) được chuyển đổi thành điện áp tới Arduino # 2.
Tải bản phác thảo sau lên Arduino # 1:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; điện áp phao; } dữ liệu; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (dữ liệu, sizeof (dữ liệu)); myTransfer.sendData (sizeof (dữ liệu)); chậm trễ (100); }
Bước 4: Nhận dữ liệu cơ bản
Đoạn mã sau in giá trị ADC và điện áp nhận được từ Arduino # 1.
Tải mã sau lên Arduino # 2:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; điện áp phao; } dữ liệu; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (dữ liệu, sizeof (dữ liệu)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.println (); } else if (myTransfer.status <0) {Serial.print ("LỖI:"); if (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); else if (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); else if (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Bước 5: Kiểm tra
Khi cả hai bản phác thảo đã được tải lên Arduino tương ứng của chúng, bạn có thể sử dụng Trình theo dõi nối tiếp trên Arduino # 2 để xác minh rằng bạn đang nhận dữ liệu từ Arduino # 1!
Đề xuất:
Giao tiếp nối tiếp PIC MCU và Python: 5 bước
PIC MCU và Python Serial Communication: Xin chào, các bạn! Trong dự án này, tôi sẽ cố gắng giải thích các thử nghiệm của tôi về PIC MCU và giao tiếp nối tiếp Python. Trên internet, có rất nhiều hướng dẫn và video về cách giao tiếp với PIC MCU qua thiết bị đầu cuối ảo rất hữu ích. Howev
Giao tiếp nối tiếp Arduino và Python - Hiển thị bàn phím: 4 bước
Giao tiếp nối tiếp Arduino và Python - Hiển thị bàn phím: Dự án này được thực hiện cho người dùng mac nhưng nó cũng có thể được thực hiện cho Linux và Windows, bước duy nhất nên khác là cài đặt
Giao tiếp nối tiếp không dây bằng Bluefruit: 4 bước
Giao tiếp nối tiếp không dây sử dụng Bluefruit: Đây là hướng dẫn từng bước đơn giản để thay thế dây của bạn bằng kết nối bluetooth năng lượng thấp: Tôi đã mất một lúc để tìm ra điều này vì hầu như không có bất kỳ tài liệu nào về việc này với công nghệ năng lượng thấp bluetooth hiện đại như vậy với tư cách là Bluefrui
SmartMirror dựa trên web sử dụng giao tiếp nối tiếp: 6 bước
SmartMirror dựa trên web sử dụng giao tiếp nối tiếp: Hướng dẫn này được cung cấp với tất cả mã đã sẵn sàng để sử dụng. Quá trình phát triển rất phức tạp nhưng một khi nó được thiết lập, nó thực sự dễ dàng tùy chỉnh. Hãy xem và tận hưởng;)
Giao tiếp nối tiếp bằng ARM Cortex-M4: 4 bước
Giao tiếp nối tiếp sử dụng ARM Cortex-M4: Đây là một dự án dựa trên bảng mạch chủ sử dụng ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) cho Giao tiếp nối tiếp sử dụng Thiết bị đầu cuối ảo. Đầu ra có thể thu được trên Màn hình LCD 16x2 và đầu vào cho Giao tiếp nối tiếp có thể được cung cấp trong Serial Mo