Mục lục:

Giới thiệu I2C Với Mô-đun Zio và Qwiic: 6 bước
Giới thiệu I2C Với Mô-đun Zio và Qwiic: 6 bước

Video: Giới thiệu I2C Với Mô-đun Zio và Qwiic: 6 bước

Video: Giới thiệu I2C Với Mô-đun Zio và Qwiic: 6 bước
Video: Hiển Thị Thông Tin Lên LCD 1602 Với Arduino Thành Công 100% | Display With LCD and Arduino 2024, Tháng bảy
Anonim
Giới thiệu I2C với các mô-đun Zio và Qwiic
Giới thiệu I2C với các mô-đun Zio và Qwiic

Robin Sharma nói: 'Những cải tiến nhỏ hàng ngày theo thời gian dẫn đến kết quả tuyệt vời'. Bạn có thể nghĩ, "Ồ, một bài đăng I2C khác?". Chà, chắc chắn có hàng ngàn thông tin khi nói đến I2C. Nhưng hãy theo dõi, đây không chỉ là một bài báo I2C khác. Hệ thống kết nối Qwiic và bảng đột phá ngoại vi Zio chắc chắn là những người thay đổi trò chơi I²C!

Giới thiệu

Nếu bạn đang xây dựng các dự án điện tử và làm những điều tuyệt vời, bạn có thể nhận ra rằng khi các dự án của bạn lớn hơn, breadboard của bạn bắt đầu trông giống như một cái hố rắn (hơi lộn xộn phải không?).

Ngoài ra, nếu bạn có nhiều dự án đang diễn ra, bạn sẽ mất rất nhiều thời gian để chuyển đổi dây từ dự án này sang dự án khác.

Chúng tôi là những người tạo ra, vì vậy chúng tôi hiểu cuộc đấu tranh. Đóng góp gần đây nhất của chúng tôi cho cộng đồng OHS là một hệ thống tạo mẫu mô-đun được gọi là ZIO, sử dụng hệ thống kết nối Qwiic. Qwiic là một cách rất thuận tiện để giao tiếp một bảng mạch lập trình được với các cảm biến, bộ truyền động và bảng đột phá thông qua I²C.

Bước 1: I²C là gì và tại sao chúng tôi thích nó

I²C là gì và tại sao chúng tôi thích nó
I²C là gì và tại sao chúng tôi thích nó

I²C là bus đa chủ được sử dụng rộng rãi nhất, có nghĩa là nhiều chip khác nhau có thể được kết nối với cùng một bus. Nó được sử dụng trên nhiều ứng dụng giữa một chủ và tớ hoặc nhiều thiết bị chủ và tớ. Từ vi điều khiển, đến điện thoại thông minh, đến các ứng dụng công nghiệp, đặc biệt là cho các thiết bị video như màn hình máy tính. Nó có thể dễ dàng thực hiện trong nhiều thiết kế điện tử (và gần đây thậm chí còn dễ dàng hơn với đầu nối Qwiic).

Nếu phải mô tả I²C bằng hai từ, có lẽ chúng tôi sẽ sử dụng tính đơn giản và linh hoạt.

Một trong những ưu điểm lớn nhất của I²C so với các giao thức truyền thông khác là giao diện hai dây có nghĩa là nó chỉ cần hai dây tín hiệu, SDA (Đường dữ liệu nối tiếp) và SCL (Đường đồng hồ nối tiếp). Nó có thể không phải là giao thức nhanh nhất, nhưng nó nổi tiếng là rất linh hoạt, cho phép linh hoạt trong điện áp bus.

Một đặc điểm quan trọng khác khiến chiếc xe buýt này trở nên hấp dẫn là mối quan hệ thông công giữa chủ nhân và nô lệ. Nhiều thiết bị có thể được kết nối với cùng một bus và không cần thay đổi hệ thống dây giữa các thiết bị vì mỗi thiết bị có một địa chỉ duy nhất (thiết bị chính chọn thiết bị để giao tiếp).

Bước 2: Hãy xem xét kỹ hơn

Hãy xem xét kỹ hơn
Hãy xem xét kỹ hơn
Hãy xem xét kỹ hơn
Hãy xem xét kỹ hơn
Hãy xem xét kỹ hơn
Hãy xem xét kỹ hơn
Hãy xem xét kỹ hơn
Hãy xem xét kỹ hơn

Vậy, I²C hoạt động như thế nào? Trước đó, chúng tôi đã đề cập rằng một trong những tính năng quan trọng nhất là phụ cấp điện áp, điều này có thể xảy ra vì I²C sử dụng bộ thu mở (còn được gọi là bộ thoát hở) cho cả đường giao tiếp SDA và SCL.

SCL là tín hiệu đồng hồ, đồng bộ hóa việc truyền dữ liệu giữa các thiết bị trên bus I²C và nó được tạo ra bởi master. Trong khi SDA mang dữ liệu để gửi hoặc nhận từ các cảm biến hoặc các thiết bị khác được kết nối với bus.

Đầu ra của tín hiệu được kết nối với mặt đất, có nghĩa là mỗi thiết bị được áp đặt ở mức thấp. Để phục hồi tín hiệu lên mức cao, cả hai đường dây được kết nối với một điện áp cung cấp dương thông qua một điện trở kéo lên được kết thúc.

Với các mô-đun ZIO mà chúng tôi đã cung cấp cho bạn, tất cả các bảng đột phá của chúng tôi đều kết hợp điện trở kéo lên cần thiết.

I²C tuân theo một giao thức tin nhắn để giao tiếp chính với các thiết bị phụ. Hai đường (SCL và SDA) là chung trong tất cả các nô lệ I²C, tất cả các nô lệ trên xe buýt đều nghe tin nhắn.

Giao thức tin nhắn tuân theo định dạng hiển thị trong hình ảnh đính kèm:

Thoạt nhìn có vẻ phức tạp, nhưng chúng tôi có một chút tin tốt. Khi sử dụng Arduino IDE, có thư viện Wire.h, để đơn giản hóa tất cả các thiết lập cho giao thức thông báo I²C.

Điều kiện bắt đầu được tạo ra khi dòng dữ liệu (SDA) xuống thấp trong khi dòng xung nhịp (SCL) vẫn ở mức cao. Khi thiết lập một dự án trên giao diện Arduino, chúng ta không thực sự cần phải lo lắng về việc tạo điều kiện bắt đầu, nó sẽ được bắt đầu bằng một chức năng cụ thể (Wire.beginTransmission (slaveAddress)).

Ngoài ra, chức năng này cũng bắt đầu truyền với địa chỉ phụ cụ thể. Để chọn slave để giao tiếp trên shared bus, master tiến hành truyền địa chỉ cho slave để giao tiếp. Sau khi địa chỉ được đặt để giao tiếp với phụ tương ứng, thông báo de sẽ theo sau với một bit đọc hoặc ghi, tùy thuộc vào chế độ được chọn.

Salve đưa ra một phản hồi với một xác nhận (ACK hoặc NACK), và các thiết bị phụ khác trên xe buýt sẽ giảm phần còn lại của dữ liệu cho đến khi thông báo hoàn tất và xe buýt miễn phí. Sau ACK, một chuỗi thanh ghi địa chỉ nội bộ của các nô lệ tiếp tục truyền.

Khi dữ liệu được gửi đi, thông báo chuyển kết thúc với điều kiện dừng. Để kết thúc quá trình truyền, đường dữ liệu thay đổi thành mức cao và đường đồng hồ vẫn ở mức cao.

Bước 3: I²C và ZIO

I²C và ZIO
I²C và ZIO

Chúng tôi nhận ra rằng tốt nhất tôi nên thiết kế tất cả thông tin ở trên trong một cuộc trò chuyện giữa chủ nhân (còn gọi là Zuino, vi mô của chúng tôi) và nô lệ (còn gọi là bảng đột phá ZIO).

Trong ví dụ cơ bản này, chúng tôi đang sử dụng cảm biến khoảng cách ZIO TOF và Màn hình ZIO OLED. TOF cung cấp thông tin khoảng cách trong khi ZIO Oled hiển thị dữ liệu. Các thành phần và thiết bị được sử dụng:

  • ZUINO M UNO - Bậc thầy
  • Màn hình ZIO OLED - Slave_01
  • Cảm biến khoảng cách ZIO TOF - Slave_02
  • Cáp Qwiic - Kết nối dễ dàng cho các thiết bị I²C

Đây là cách dễ dàng để kết nối các bảng với nhau bằng Qwiic, không cần bảng mạch, cáp bổ sung hoặc chân ZUINO. Dòng Đồng hồ và Dữ liệu nối tiếp của ZUINO được kết nối tự động với cảm biến Khoảng cách và OLED bằng cách sử dụng đầu nối Qwiic. Hai loại cáp khác là 3V3 và GND.

Trước hết, chúng ta hãy xem xét thông tin cần thiết, để giao tiếp giữa chủ nhân với nô lệ, chúng ta cần biết các địa chỉ duy nhất.

Thiết bị: Cảm biến khoảng cách ZIO

  • Một phần số: RFD77402
  • Địa chỉ I2C: 0x4C
  • Liên kết biểu dữ liệu

Thiết bị: Màn hình ZIO OLED

  • Một phần số: SSD1306
  • Địa chỉ: 0x3C
  • Liên kết biểu dữ liệu

Để tìm địa chỉ duy nhất cho các thiết bị phụ, hãy mở biểu dữ liệu được cung cấp. Đối với cảm biến Khoảng cách, địa chỉ được cung cấp tại phần Giao diện mô-đun. Mỗi cảm biến hoặc thành phần có một biểu dữ liệu khác nhau với các thông tin khác nhau được cung cấp. Đôi khi có thể khó tìm thấy nó trên một biểu dữ liệu 30 trang (gợi ý: mở công cụ tìm kiếm trên trình xem PDF và nhập “địa chỉ” hoặc “ID thiết bị” để tìm kiếm nhanh).

Bây giờ địa chỉ duy nhất cho mỗi thiết bị đã được biết, để đọc / ghi dữ liệu, địa chỉ thanh ghi bên trong phải được xác định (cũng từ biểu dữ liệu). Xem qua bảng dữ liệu cảm biến Khoảng cách ZIO, địa chỉ để lấy khoảng cách tương ứng với 0x7FF.

Trong trường hợp cụ thể này, chúng tôi thực sự không cần thông tin này để sử dụng cảm biến vì thư viện đã làm.

Bước tiếp theo, viết mã. ZUINO M UNO tương thích với Arduino IDE, giúp thiết lập dễ dàng hơn rất nhiều. Các thư viện cần thiết cho dự án này là:

  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h là một thư viện arduino, hai thư viện Adafruit được sử dụng cho OLED và thư viện cuối cùng được sử dụng cho cảm biến Khoảng cách. Xem hướng dẫn này về cách liên kết các thư viện *.zip với Arduino IDE.

Nhìn vào mã, đầu tiên các thư viện phải được khai báo cũng như địa chỉ cho OLED.

Trong thiết lập (), quá trình truyền bắt đầu và văn bản được hiển thị cho chức năng cảm biến khoảng cách.

Vòng lặp () thực hiện các phép đo về khoảng cách và OLED sẽ in nó.

Kiểm tra mã nguồn mẫu trên liên kết github.

Sử dụng cả hai bảng đột phá là khá dễ dàng theo mọi nghĩa. Về mặt phần cứng, đầu nối Qwiic giúp thiết lập phần cứng nhanh hơn và ít lộn xộn hơn nhiều so với việc có một breadboard và dây jumper. Và đối với phần sụn, sử dụng các thư viện tương ứng cho giao tiếp I2C, cảm biến và màn hình hiển thị làm cho mã trở nên đơn giản hơn rất nhiều.

Bước 4: Chiều dài cáp tối đa là bao nhiêu?

Chiều dài tối đa phụ thuộc vào điện trở kéo lên được sử dụng cho SDA và SCL và điện dung của cáp. Các điện trở cũng quyết định tốc độ bus, tốc độ bus càng thấp thì giới hạn cáp càng dài. Điện dung của cáp giới hạn số lượng thiết bị trên bus, cũng như chiều dài cáp. Các ứng dụng điển hình giới hạn chiều dài dây ở mức 2,5-3,5m (9-12ft) nhưng có sự thay đổi tùy thuộc vào loại cáp được sử dụng. Để tham khảo, chiều dài tối đa trên các ứng dụng I2C sử dụng cáp xoắn đôi 22 AWG được bảo vệ là khoảng 1 m (3 ft) ở 100 kb Yellow, 10 m (30ft) ở 10kbaud.

Có một số trang web như mogami hoặc WolframAlpha cho phép ước tính chiều dài cáp.

Bước 5: Làm thế nào để kết nối nhiều thiết bị trên cùng một xe buýt?

Làm thế nào để kết nối nhiều thiết bị trên cùng một xe buýt?
Làm thế nào để kết nối nhiều thiết bị trên cùng một xe buýt?
Làm thế nào để kết nối nhiều thiết bị trên cùng một xe buýt?
Làm thế nào để kết nối nhiều thiết bị trên cùng một xe buýt?

I2C là một bus nối tiếp, nơi tất cả các thiết bị được kết nối với một bus chung. Với đầu nối Qwiic, các bảng đột phá khác nhau có thể được kết nối lần lượt với nhau bằng đầu nối Qwiic. Mỗi bảng có ít nhất 2 đầu nối Qwiic.

Chúng tôi đã tạo ra các bảng khác nhau để giải quyết một số hạn chế của Qwiic và I2C. Bo mạch bộ điều hợp Zio Qwiic được sử dụng để kết nối qua các thiết bị Qwiic mà không có đầu nối Qwiic, sử dụng cáp đầu cắm nam Qwiic với breadboard. Thủ thuật đơn giản này tạo ra khả năng không giới hạn.

Để kết nối các thiết bị khác nhau trên mạng hình cây hoặc bus, chúng tôi đã đưa ra Zio Qwiic Hub.

Cuối cùng nhưng không kém phần quan trọng, Zio Qwiic MUX cho phép kết nối hai hoặc nhiều thiết bị sử dụng cùng một địa chỉ.

Bước 6: Chấm dứt I2C là gì?

I2C là bắt buộc phải kết thúc, vì vậy đường dây có thể tự do thêm các thiết bị khác. Điều này có thể hơi khó hiểu, vì thuật ngữ kết thúc thường được sử dụng để mô tả các điện trở kéo lên của bus (để cung cấp trạng thái mặc định, trong trường hợp này là cung cấp dòng điện cho mạch). Đối với bo mạch Zuino, giá trị điện trở là 4,7kΩ.

Nếu phần kết thúc bị bỏ qua, sẽ không có thông tin liên lạc nào trên bus - master sẽ không thể tạo điều kiện bắt đầu, vì vậy thông báo sẽ không được truyền đến các nô lệ.

Để biết thêm thông tin và khả năng của Zio, hãy kiểm tra các sản phẩm Zio mới nhất. Mục tiêu của bài viết này là giải thích các khái niệm cơ bản về giao tiếp I²C và cách nó hoạt động với trình kết nối Zio và Qwiic. Hãy theo dõi để biết thêm thông tin cập nhật.

Đề xuất: