Giao tiếp USB giữa mô-đun Arduino Nano và đầu đọc UHF


0

Tôi đang làm việc trong một dự án đòi hỏi một bộ phát triển đầu đọc UHF có thể giao tiếp bằng cách sử dụng RS232 hoặc bằng USB. Thông qua USB và thiết bị đầu cuối nối tiếp, tôi đã có thể gửi lệnh đến người đọc cũng như phân tích phản ứng của nó.

Mục tiêu của tôi là gửi những lệnh tương tự đến người đọc, nhưng thông qua Arduino Nano. Bản năng đầu tiên của tôi là sử dụng RS232, chuyển đổi tín hiệu qua MAX 232. Tuy nhiên, đây là một dự án trường học và cố vấn của tôi ưa thích tôi cố gắng làm việc với USB. Tôi quen thuộc với giao tiếp UART và tôi đã giả định rằng USB hoạt động bằng UART.

Tôi đã mua một bộ chuyển đổi USB cho phép tôi truy cập vào các chân, nhưng nó có hai chân bổ sung hơn tôi không mong đợi: CTS và DTR. Tôi đã cố gắng giao tiếp mặc dù các chân này (chỉ để chúng mở và kết nối Rx, Tx, Vcc và GND như bình thường). Khi cắm vào đầu đọc UHF, thiết bị đã bật nguồn (vì nó lấy nguồn từ kết nối USB), tuy nhiên, nó không nhận được tín hiệu đầu ra từ Arduino Nano.

Tôi biết rằng tốc độ truyền của tôi và các cài đặt khác là chính xác, bởi vì, như tôi đã nói, giao tiếp qua USB và thiết bị đầu cuối Nối tiếp cho tôi không có vấn đề gì. Suy nghĩ ban đầu của tôi là tôi cần kết nối đúng các chân CTS và DTR, nhưng ngay lập tức tôi không thể tìm thấy một tài liệu tham khảo tốt về cách làm điều này và tôi không hoàn toàn tin rằng đây là vấn đề. Suy nghĩ khác của tôi là có lẽ tôi đang viết sai các giá trị HEX của mình từ Arduino, sử dụng một dòng tương tự như sau, trong đó "UHF_Reader" được định nghĩa bởi SoftwareSerial:

UHF_Reader.write(0xAA);

Tuy nhiên, theo tôi, nghiên cứu cho thấy đây thực sự là cách chính xác để xuất giá trị HEX qua serial.

Nỗ lực cuối cùng của tôi để giải quyết vấn đề này là kết nối micro-USB từ Nano với USB của đầu đọc, sau đó sử dụng Phần mềm nối tiếp với bộ chuyển đổi USB để phân tích đầu ra trên thiết bị đầu cuối Nối tiếp, trong khi cấp nguồn cho Nano qua 5V cung cấp năng lượng. Tuy nhiên, do đầu đọc lấy nguồn từ cổng USB, nó thậm chí không bật khi tôi thử điều này (tôi giả sử rằng Vcc chỉ có thể được cung cấp từ đầu USB?). Bất kể, nỗ lực này cũng tỏ ra vô dụng.

Nếu bất cứ ai có thể đưa ra bất kỳ lời khuyên nào, hoặc hướng tôi đến bất kỳ tài liệu tham khảo nào cho một cái gì đó tương tự, tôi sẽ đánh giá cao nó! Tôi đã dành một thời gian cho việc này, và tôi không thể tìm ra vấn đề là gì.

Để tham khảo, trình đọc tôi đang sử dụng được tìm thấy ở đây: Trình đọc UHF

Và bộ chuyển đổi USB tôi đang sử dụng có ở đây: Bộ chuyển đổi USB

Câu trả lời:


0

Tôi đã đặt giả thiết rằng USB hoạt động bằng UART.

Không. Bạn có nó ngược. Các thiết bị có thể mô phỏng UART (được gọi là CDC / ACM) qua kết nối USB là một trong nhiều cấu hình thiết bị có thể, nhưng nó khác xa với một chiếc UART như một chiếc xe F1 là từ Penny Fartasing.

USB hoạt động theo nguyên tắc Master / Slave nghiêm ngặt. Đó là, nó có một thiết bị chính duy nhất, được gọi là Máy chủ , điều phối tất cả các thiết bị trên xe buýt và đưa ra yêu cầu cho chúng. Mọi thứ bạn cắm vào hệ thống USB là Thiết bị và yêu cầu Máy chủ lưu trữ để báo cho nó biết phải làm gì.

Không phải Nano, cũng không phải bộ chuyển đổi này bạn đã mua, đều là Máy chủ lưu trữ . Chúng chỉ là Thiết bị . Và thiết bị không thể nói chuyện với thiết bị. Chỉ chủ nhà mới có thể nói chuyện với Thiết bị.

Có nghĩa là bạn cần một Host ở đó ở đâu đó. Nếu bạn muốn nó được điều khiển bởi Arduino thì bạn cần có USB Host Shield (hoặc một cái gì đó tương tự) thường giao tiếp qua SPI.

Nếu thiết bị bạn đang cố nói chuyện sử dụng cấu hình CDC / ACM thì bạn có thể sử dụng USB Host Shield với nó. Nếu nó sử dụng cấu hình độc quyền, như CH340G hoặc FT232, thì việc làm cho nó hoạt động với USB Host Shield sẽ khó hơn nhiều (thậm chí là không thể) trừ khi bạn thân mật với giao thức cơ bản được sử dụng.

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.