Gửi tín hiệu đến cổng USB bằng C


7

Tôi muốn gửi tín hiệu 5V đơn giản đến cổng usb. Lớp cách điện của dây cáp USB sẽ được gỡ bỏ và kết nối với rơle được kết nối với hệ thống cửa điện. Tôi nghĩ tôi nên viết mã này bằng C. Ai đó có thể cho tôi một gợi ý không?


3
Tín hiệu 5v đến cổng usb? Không chắc chắn tôi hiểu những gì bạn muốn.
Kellenjb

được rồi, đồ điện tử không phải là chuyên môn của tôi Tôi cần gửi tín hiệu từ cổng usb đến cáp usb. Đó là tất cả,
đừng bận tâm

Làm thế nào về một thiết bị USB to serial và chỉ kiểm soát một trong các tín hiệu như Sẵn sàng để gửi hoặc tương tự?
kenny

Câu trả lời:


8

Bạn không thể làm những gì bạn muốn chỉ bằng cách kết nối một rơle với cổng USB.

USB là một chiếc xe buýt, với một giao thức nối tiếp chạy trên nó. Bạn cần phải giao tiếp với xe buýt đó bằng các giao thức thích hợp.

Bạn sẽ yêu cầu sử dụng "thiết bị" có khả năng được lập trình để đáp ứng với kích thích dựa trên máy tính và kích hoạt tín hiệu bên ngoài.

Có nhiều cách để đạt được điều này, từ các sản phẩm làm sẵn, thông qua bộ dụng cụ DIY và cách thức để tách rời các IC mà bạn có thể sử dụng để xây dựng hệ thống của riêng mình.

Cá nhân tôi muốn giới thiệu một trong nhiều bộ dụng cụ DIY có sẵn, chẳng hạn như Bảng giao diện thử nghiệm USB Velleman K8055 . Có nhiều người khác thích nó.

Nếu bạn muốn tham gia vào nitty gritty, thì bạn cần phải xem xét những thứ như Vi điều khiển (mà Velleman dựa trên), có thể được lập trình để làm nhiều việc khác nhau. Một số trong số này có hỗ trợ USB tích hợp, nhưng phải mất khá nhiều kiến ​​thức chuyên sâu về giao thức USB để có thể nắm bắt được những điều này. Hầu hết mọi người sử dụng chip "FTDI" để chuyển đổi USB thành RS-232 trước tiên.

Nếu bạn đang muốn một sản phẩm ngoài kệ thì bạn có thể muốn xem xét khả năng của một sản phẩm Cổng máy in song song USB, rằng bạn có thể lập trình và truy cập như thể đó là một cổng song song (Centrics) được gắn trực tiếp vào máy tính của bạn. Điều này sẽ cung cấp cho bạn 8 đầu ra bạn có thể bật và tắt.

Một điều nữa cần chú ý mặc dù - hầu hết các đầu ra của máy tính / vi điều khiển sẽ không đủ mạnh để trực tiếp điều khiển rơle. Bạn sẽ cần phải truyền tín hiệu qua một số mạch "trình điều khiển" để đạt được đủ năng lượng. Điều này có thể đơn giản như một bóng bán dẫn đơn lẻ, hoặc bạn có thể đang xem xét một thứ phức tạp hơn như MOSFET, v.v ... Ồ, và hãy cẩn thận với "Back EMF" - rơle là "Tải cảm ứng".


Có thể sử dụng RJ45 chỉ để gửi tín hiệu? hoặc tôi phải sử dụng một vi điều khiển?
dùng5369

Cổng Ethernet là cổng Ethernet - cũng có các giao thức và tín hiệu đáng lo ngại. Cũng phức tạp như (nếu không nhiều hơn) USB.
Majenko

1
@ user5369 - Cổng Ethernet, giống như cổng USB, không phải là hệ thống báo hiệu một đầu. Tín hiệu được gửi xuống dòng bằng cách sử dụng dòng vi sai, không phải bằng cách làm cho dòng cao hay thấp. Các cổng máy in song song và cổng nối tiếp RS232 là về các đầu nối duy nhất bạn có thể tìm thấy trên PC sử dụng tín hiệu một đầu mà bạn có thể đặt "cao" hoặc "thấp" như bạn muốn.
Kevin Vermeer

6

USB không đơn giản như bạn nghĩ. USB có giao thức giao tiếp không cho phép bạn chỉ cần xuất ra mức cao hay thấp.

Có lẽ cách đơn giản nhất để làm điều này là sử dụng một vi điều khiển được kết nối qua usb bằng phương thức nối tiếp với USB. Bạn có thể sử dụng chip FTDI để làm điều này. Sau khi kết nối với chip FTDI, máy tính sẽ cài đặt một cổng nối tiếp ảo. Sau đó, bạn có thể gửi dữ liệu đến cổng nối tiếp này và vi điều khiển sẽ nhận được nó qua UART. Sau đó, vi điều khiển có thể đọc trong các gói bạn gửi và bạn có thể có 1 gói cho 'bật' và một gói khác cho 'tắt'. Bộ vi điều khiển sẽ chỉ bật một pin cao hoặc thấp dựa trên gói cuối cùng mà nó nhận được.

Một lựa chọn khác để xem xét sẽ là sử dụng cổng nối tiếp trực tiếp. Nhiều máy tính cung cấp cho bạn quyền kiểm soát rõ ràng để gửi ghim loại. Nếu bạn có thể có được khả năng này thì đó chỉ là vấn đề có một chương trình bật tắt trạng thái rõ ràng để gửi trạng thái.


2

USB là một bus nối tiếp tinh vi cho phép giao tiếp giữa máy chủ (PC của bạn) và tối đa 127 thiết bị (tất cả các loại sản phẩm bạn kết nối với PC). Vì vậy, có vẻ như bạn không có quyền truy cập trực tiếp vào xe buýt, dù sao bạn không thể bật và tắt mọi thứ với nó. Nhưng có một số giải pháp cho việc này.

PC đi kèm với các cổng EIA232 ít hơn (thường được gọi bằng cổng tên cũ), nhưng đôi khi bạn cần một cổng. Một vài công ty chuyên về giao diện, được gọi là cầu nối , chuyển đổi bus USB thành EIA232. FTDI là nhà sản xuất nổi tiếng của những cây cầu đó, và trong các câu trả lời khác, người ta đã đề xuất sử dụng tín hiệu điều khiển EIA232 để điều khiển rơle. Điều này có thể hoạt động, nhưng trên thực tế, việc sử dụng EIA232 không đúng cách.

Một sản phẩm ít được biết đến của FTDI là bộ chuyển đổi USB sang FIFO FT245R , cho phép bạn điều khiển I / O mục đích chung thông qua USB. Sản phẩm này từ DLP Design là một mô-đun sẵn sàng sử dụng dựa trên FT245R.

Mô-đun USB245

Sử dụng một trong các I / O để chuyển đổi rơle qua bóng bán dẫn. (I / O không thể cung cấp dòng điện cần thiết để lái rơle trực tiếp.)


Xem thêm câu trả lời này cho một câu hỏi liên quan.


0

Như những người khác đã chỉ ra, USB là một chiếc xe buýt, vì vậy bạn cần sử dụng một thiết bị ở đầu bên kia để dịch các lệnh xe buýt thành các hành động vật lý. Cách dễ nhất để làm điều đó là sử dụng một số sản phẩm hiện có được thiết kế cho việc này mà không cần phải viết mã cho đầu được nhúng - ví dụ: Phidgets có toàn bộ thiết bị - bảng chuyển tiếp này có thể là thứ bạn muốn.

Nếu bạn đang chuẩn bị để tìm hiểu một chút lập trình nhúng, một Arduino hoặc một teensy có thể cung cấp tùy chọn chi phí hợp lý và hack.


0

Chuyển đổi trực tiếp 5v sẽ chỉ có thể nếu bạn có thông tin lập trình cấp thấp và quyền truy cập cho USB PHY hoặc chip trung tâm, tức là khả năng bật / tắt VBUS 5v (và đặc biệt là đối với một cổng cụ thể, nếu bạn cần giữ cho các thiết bị khác như bàn phím usb hoạt động).

Chắc chắn có những hệ thống có thể làm được điều này (ví dụ như cổng USB đơn độc của máy tính bảng tôi đang chơi gần đây), nhưng đó là một bản hack rất cụ thể và không di động.

Hầu hết thời gian, các đề xuất mà mọi người khác đưa ra cho bạn là sử dụng chip USB-I / O như bộ điều khiển vi mô FT245 hoặc USB hoặc thậm chí là bảng chuyển tiếp USB sẵn sàng để sử dụng, vì chúng hoạt động thông qua các trình điều khiển dựa trên giao thức USB tiêu chuẩn và không phụ thuộc vào kiến ​​thức sâu sắc về các chip cụ thể được sử dụng để thực hiện giao diện máy chủ hoặc trung tâm.

EDIT: Tôi đang cố gắng nhớ lại, thực sự có thể có các lệnh tiêu chuẩn để bật / tắt VBUS của các cổng hạ lưu cụ thể trên một hub, nhưng trên thực tế, một số hub thực sự có thiết bị chuyển đổi năng lượng cần thiết để thực hiện điều đó. Tìm một cái có thể không dễ hơn / rẻ hơn so với việc mua bảng chuyển tiếp USB.

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.