Giao tiếp nối tiếp giữa arduino và rpi bằng chân tx / rx


7

Tôi hiện đang làm việc trong một dự án mà Arduino phải giao tiếp với pi. Vì pi sắp hết cổng USB, tôi buộc phải sử dụng cổng ux / tx trên Arduino và pi.

Sự giao tiếp ở giữa những người bao gồm viết và đọc từ rostopic, có nghĩa là rosserial đang tạo ra sự giao tiếp nối tiếp.

Tôi chỉ thử nghiệm điều này bằng USB và giữa máy tính và arduino, hoạt động tốt, nhưng đã thử nghiệm trên các chân đó và không chắc chắn về một số điều.

Tôi có cần sử dụng chân nhất định? Và họ có nên được thiết lập cho truyền thông nối tiếp? trong trường hợp đó thế nào?

Tôi đoán tôi sẽ cần một bộ chuyển đổi mức logic. Nó nên được thực hiện dễ dàng bằng cách sử dụng một bộ chia điện áp. Nhưng cả hai nên có những cái riêng biệt, hay chỉ là một đủ?


Xin chào và chào mừng. Kiểm tra các raspberrypi.stackexchange.com/questions/553/ trênraspberrypi.stackexchange.com/questions/26219/ để có ý tưởng đầu tiên.
Ghanima

Câu trả lời:


1

Tôi đoán tôi sẽ cần một bộ chuyển đổi mức logic

Đúng. Tôi không nghĩ có bất kỳ sự sắp xếp nào của bộ chia điện áp mà bạn có thể sử dụng cho TX của Pi -> Arduino RX. Vì vậy, bạn cần ít nhất một shifter 2 kênh hoặc là hai chiều hoặc có một kênh đi mỗi chiều.

Tôi sử dụng một shifter giống như một hiển thị và mô tả ở đây . Mặc dù đó là một câu hỏi về "thiết bị Arduino" nhưng tôi chủ yếu làm điều đó trực tiếp với chính Arduino.

Mối quan hệ này rất đáng tin cậy ở tốc độ truyền tối đa của Arduino (115200) theo kinh nghiệm của tôi. Điều bạn phải coi chừng là quản lý nhà nước - bạn nên có một phương tiện để đặt lại Arduino về trạng thái có thể dự đoán được. Điều này thường khá dễ vì sẽ khó tạo ra tình huống khi chỉ cần nhấn "đặt lại" không hoạt động, vì ngay cả khi nội dung thông tin được gửi tại thời điểm đó không xác định, định dạng không nên (ví dụ: một bộ 3 số nguyên không dấu 2 byte tạo thành một tin nhắn hoặc bất cứ điều gì).

Nếu bạn cần làm điều đó từ xa, bạn có thể kết nối GPIO với pin thiết lập lại của Arduino thì bạn chỉ cần kéo nó xuống thấp trong giây lát và để nó ở mức cao để hoạt động bình thường. Điều này cũng cần phải vượt qua trình dịch chuyển cấp , vì vậy nếu bạn nghĩ rằng bạn muốn rằng bạn cần ít nhất 3 kênh. Bốn kênh là rất phổ biến và giá rẻ anyway.


Cảm ơn vì điều đó. Điểm dừng tiếp theo của tôi, một khi khiến Arduinos nói chuyện với nhau, là bao gồm Rpi3. Tôi vẫn có thể sử dụng I2C cho điều đó, bây giờ @Joan đã nâng cấp gói gpgio để bao gồm nó. Tôi mới với tất cả những điều này nhưng tích cực Tôi có thể làm mọi thứ hoạt động, một khi tôi biết các thông số của chúng.
SDsolar

1

Bạn không cần phải thay đổi RPI Tx ---> Arduino RX Arduino sẽ có thể đọc logic 3.3V do pi tạo ra, vì vậy bạn có thể sử dụng bộ chia điện áp đơn giản để dịch chuyển Arduino TX ---> RPI RX

RPI3 có một thiết lập khác cho UART, thực tế có 2 thiết bị có thể được sử dụng (không phải cùng một lúc) Một luôn được gắn với đơn vị Bluetooth (tôi nghĩ) Mặc định là tốt hơn (ổn định hơn) của hai được sử dụng cho bluetooth và cái còn lại được gắn với các chân UART trên GPIO. Vì vậy, hãy chắc chắn để xem xét điều đó. Nếu bạn liệt kê ra thư mục / dev, bạn sẽ thấy thiết bị được liên kết tại Serial1 (sẽ luôn trỏ đến UART thực tế đang được sử dụng) Nhưng nếu bạn có bất kỳ vấn đề nào về hiệu suất, bạn có thể chuyển đổi UART nội bộ được gắn GPIO

Dưới đây là một số cách đọc về UARTS trên pi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.