Mục lục:

Bộ chuyển đổi I2C (I-Squared-C) rẻ nhất thế giới: 5 bước (có hình ảnh)
Bộ chuyển đổi I2C (I-Squared-C) rẻ nhất thế giới: 5 bước (có hình ảnh)

Video: Bộ chuyển đổi I2C (I-Squared-C) rẻ nhất thế giới: 5 bước (có hình ảnh)

Video: Bộ chuyển đổi I2C (I-Squared-C) rẻ nhất thế giới: 5 bước (có hình ảnh)
Video: Arduino | Lập Trình IC Mở Rộng Chân I/O PCF8574 2024, Tháng bảy
Anonim
Bộ chuyển đổi I2C (I-Squared-C) rẻ nhất thế giới
Bộ chuyển đổi I2C (I-Squared-C) rẻ nhất thế giới

Tạo giao diện cảm biến cho máy tính của bạn với chi phí thấp hơn! Cập nhật 6/9/08: Sau khi khám phá một số cách, tôi kết luận rằng không có cách nào thực tế để thực hiện kỹ thuật này trong Microsoft Windows. Đây không phải là trò đánh cắp hệ điều hành nhỏ nhặt, tôi thực sự đã phá vỡ một lý do cố gắng! Xin lỗi! Người dùng Windows cần khả năng I2C được phục vụ tốt nhất bởi các giải pháp dựa trên USB hiện có. Cập nhật ngày 24/5/08: Hỗ trợ Linux đã được thêm vào, cũng như mã mẫu cho bộ điều khiển Nintendo Wii Nunchuk và "đèn LED thông minh" BlinkM. Xem tệp README.txt đi kèm với mã nguồn để biết hướng dẫn biên dịch và thiết lập trên Linux. I2C (viết tắt của Inter-Integrated Circuit) là một bus nối tiếp hai dây thường được sử dụng trong máy tính để giao tiếp cấp thấp giữa các thành phần bên trong. I2C cũng phổ biến trong lĩnh vực chế tạo người máy. Tất cả các loại cảm biến và thiết bị truyền động đều có sẵn ở dạng tương thích I2C: máy đo khoảng cách siêu âm, cảm biến gia tốc, độ nghiêng, nhiệt độ và áp suất, bộ điều khiển servo và bộ mở rộng bus cung cấp thêm các dòng đa năng (GPIO)., Microchip PIC, v.v.) có hỗ trợ I2C được tích hợp sẵn. Nhưng sức mạnh xử lý có sẵn trên vi điều khiển bị hạn chế và việc phát triển phần mềm - với các trình biên dịch chéo và môi trường lập trình chuyên biệt - đôi khi có thể là một công việc vặt. Với việc máy tính xách tay và máy tính bo mạch đơn ngày càng trở nên nhỏ hơn và giá cả phải chăng hơn, ngày càng có nhiều người thấy các hệ thống này được sử dụng trực tiếp trong các dự án chế tạo người máy và điện tử. Điều này cung cấp sức mạnh dồi dào cho các khả năng mới như xử lý thị giác và AI tinh vi hơn, đồng thời nó mở rộng đáng kể phạm vi của các công cụ và ngôn ngữ phát triển có sẵn… nhưng nó cũng đưa ra một vấn đề mới: việc giao tiếp các hệ thống "thông thường" này với thiết bị ngoại vi thường được thực hiện thông qua chính thống các cổng cấp cho người tiêu dùng như USB; không có "cổng I2C" có sẵn bên ngoài, chúng tôi chỉ có thể khai thác để sử dụng các cảm biến của chúng tôi… hay là ở đó?

Bước 1: Tùy chọn hiện có

Tùy chọn hiện có
Tùy chọn hiện có
Tùy chọn hiện có
Tùy chọn hiện có

Một cách để kết nối thiết bị I2C với máy tính để bàn hoặc máy tính xách tay thông thường là thông qua bộ chuyển đổi USB-to-I2C. Có ít nhất một tá tùy chọn như vậy, từ bộ dụng cụ tự làm với phần mềm mã nguồn mở, đến các đơn vị thương mại phức tạp với mọi tiếng chuông và tiếng còi.

Một nhược điểm của cách tiếp cận USB-to-I2C là chi phí. Một mô hình thương mại đầy đủ tính năng có thể có giá từ 250 đô la trở lên. Ngay cả các lựa chọn thay thế homebrew "miễn phí" cũng giả định một tập hợp các bộ phận và đầu tư trước vào một lập trình viên vi điều khiển và kiến thức liên quan để sử dụng nó. Một nhược điểm khác là sự khan hiếm tương đối của hỗ trợ trình điều khiển bên ngoài màn hình Windows phổ biến. Một số thiết bị này hoạt động nguyên bản trên máy tính Macintosh hoặc Linux.

Bước 2: DDC là I2C

DDC là I2C
DDC là I2C
DDC là I2C
DDC là I2C
DDC là I2C
DDC là I2C

Khi tôi nói trong phần giới thiệu rằng không có cổng I2C bên ngoài trên hầu hết các máy tính, tôi đã nói dối. Hóa ra là có, và nó đã ở đó suốt gần một thập kỷ nay, chủ yếu nằm im.

Hầu hết các cạc đồ họa và màn hình hiện đại đều có hỗ trợ cho một thứ gọi là Kênh dữ liệu hiển thị (DDC), một liên kết giao tiếp trong cáp video cho phép máy tính và màn hình thỏa thuận độ phân giải tương thích lẫn nhau và cho phép phần mềm điều khiển các chức năng của màn hình thường được truy cập bằng các nút vật lý trên trưng bày. Trên thực tế, DDC chỉ đơn giản là việc triển khai một bus I2C với một vài quy tắc đã được thiết lập. Bằng cách khai thác kết nối này giữa máy tính và màn hình (hoặc sử dụng các đường DDC trên một cổng video không sử dụng dự phòng, chẳng hạn như kết nối màn hình bên ngoài trên máy tính xách tay), người ta có thể giao tiếp với một số thiết bị I2C mà hầu như không tốn phí, bỏ qua thông thường cần một thiết bị chuyển đổi hoàn toàn. Tất cả những gì chúng ta cần để truy cập vật lý bus I2C này là một cáp video bị hack…

Bước 3: Bóc tách cáp

Mổ xẻ cáp
Mổ xẻ cáp
Mổ xẻ cáp
Mổ xẻ cáp

Bốn dây là cần thiết cho giao diện I2C của chúng tôi: nguồn + 5V, nối đất, dữ liệu nối tiếp và đồng hồ nối tiếp. Sơ đồ chân cho các loại cổng video khác nhau có thể được tìm thấy trên Wikipedia hoặc Pinouts.ru. Hãy nhớ nếu sử dụng cáp VGA để tìm một cáp có đầy đủ các chân cắm; Một số chỉ bao gồm một tập hợp con. Cắt lại lớp cách điện và lớp bảo vệ từ bên ngoài của cáp, bạn có thể sẽ tìm thấy hai nhóm dây bên trong. Các dây dày hơn, hoặc các bó dây được bọc trong lớp che chắn bổ sung, thường mang tín hiệu video. Chúng tôi không quan tâm đến những điều này và chúng có thể được cắt bớt. Các dây mỏng hơn, không được che chắn thường mang tín hiệu DDC (I2C) trong số những dây khác. Đồng hồ vạn năng hoặc máy kiểm tra tính liên tục có thể giúp tìm đúng bốn dây cho cáp của bạn. Sử dụng đầu nối trần có thể có lợi ở đây, vì bạn chỉ cần hàn bốn dây vào các chân cần quan tâm. Lưu ý về nguồn + 5V: dòng điện khả dụng rất hạn chế; khoảng 50 mA theo thông số kỹ thuật DDC. Hầu hết các thiết bị I2C chỉ hút một lượng nhỏ dòng điện, vì vậy có thể chạy nhiều đèn cùng một lúc… nhưng nếu sử dụng nhiều hơn một hoặc hai đèn LED (hoặc các thiết bị có dòng điện tương đối cao khác), nên cung cấp nguồn điện bên ngoài.

Bước 4: Bộ điều hợp đã hoàn thành

Bộ điều hợp đã hoàn thành
Bộ điều hợp đã hoàn thành

Đây là bộ điều hợp đã hoàn thành. Thats tất cả để có nó! Tôi đã làm thêm phần râu của mình để nó có thể dễ dàng vừa trong túi máy tính xách tay của tôi và thêm một phích cắm bốn chân kết nối trực tiếp với bộ điều khiển servo I2C mà tôi có.

Bước 5: Phần mềm và Dự án

Phần mềm và Dự án
Phần mềm và Dự án
Phần mềm và Dự án
Phần mềm và Dự án

Mã nguồn Mac OS X và Linux để làm việc với bộ điều hợp có thể được tải xuống từ trang web của tôi (liên kết tải xuống ở cuối trang). Nó được viết bằng C và bạn sẽ cần phải cài đặt gcc (Linux thường bao gồm cài đặt này theo mặc định, trong khi người dùng Mac sẽ cần cài đặt các công cụ dành cho nhà phát triển là trình cài đặt tùy chọn trên đĩa hệ điều hành gốc của bạn hoặc có thể tải xuống miễn phí từ Apple). Mã ví dụ được bao gồm để đọc cảm biến nhiệt độ, nhấp nháy "đèn LED thông minh" BlinkM, ghi và xác minh EEPROM nối tiếp, đọc bộ điều khiển Nintento Wii Nunchuk (chỉ dành cho Linux) và giao tiếp với bảng điều khiển servo. Rất tiếc, sơ đồ bộ điều hợp này không tương thích với tất cả các hệ thống. Không bắt buộc phải hỗ trợ DDC, vì vậy không phải tất cả các card màn hình đều hỗ trợ khả năng này. Cho đến nay, tôi đã gặp may mắn với các hệ thống Mac có chip đồ họa ATI hoặc Intel, nhưng các hệ thống dựa trên NVIDIA thì không may mắn. Về mặt Linux, tôi chỉ thử nghiệm thành công IBM ThinkPad A31p (đồ họa ATI), nhưng nó sẽ không hoạt động với Asus EeePC (Intel). Các hình ảnh ở đây cho thấy một giàn thử nghiệm chứng minh các thiết bị I2C khác nhau đang hoạt động. Máy tính liên tục đọc nhiệt độ môi trường từ cảm biến nhiệt độ I2C, định kỳ ghi dữ liệu này vào chip EEPROM nối tiếp I2C (vâng, nó chỉ có thể in ra một tệp, nhưng điều này là để chứng minh thêm các ứng dụng I2C), và sau đó là một servo (thông qua một bộ điều khiển I2C) đóng vai trò như một quay số chỉ báo tạm thời. Với thư viện và mã mẫu cho các thiết bị này đã có sẵn, chỉ mất vài phút để ghép bản trình diễn này lại với nhau (và hầu hết trong số đó là trong việc tạo quay số chỉ báo).

Đề xuất: