Chuẩn giao tiếp i2c Arduino có vai trò trọng yếu trong trợ giúp giao tiếp, điều khiển các thiết bị ngoại vi

Bạn đang xem: tải thư viện i2c cho arduino

Chắc hẳn là đã có nội dung giới thiệu về giao tiếp I2C Arduino trên Mạng internet rồi. Vậy nên, nội dung này OhStem xin nói về một hướng nhìn khác: cách link và sử dụng giao tiếp I2C trong Arduino.

Nếu các bạn quan tâm về khái niệm I2C là gì, bạn tuyệt đối có thể xem lại những nội dung về giao tiếp I2C Arduino của chúng ta khác nhé!

>> Xem thêm: [PDF] Lập trình Arduino là gì? Tài liệu học Arduino miễn phí 2021

Chuẩn giao tiếp I2C Arduino là gì?

Giao tiếp I2C arduino

Đầu năm 1980, hãng sản xuất linh kiện điện tử Phillips đã thiết kế một chuẩn giao tiếp tiếp nối 2 dây, hay hay còn gọi là chuẩn giao tiếp I2C. I2C hay hay còn gọi là Inter-Integrated Circuit. Đây là cổng để giao tiếp giữa các IC với nhau.

Chuẩn giao tiếp I2C Arduino trước tiên được thiết kế và phát triển từ Philips. Tuy nhiên, nó đã được hầu như nhà sản xuất IC trên khắp năm châu sử dụng. I2C trở thành một chuẩn trọng yếu trong các giao tiếp điều khiển ngoại vi.

Ngoài Philips thì còn tồn tại các ông lớn công nghệ khác như: Texas Instrument(TI), National Semiconductor Maxim Dallas,… tham gia phát triển chuẩn giao tiếp này.

Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho hầu như các loại IC như:

  • Chip điều khiển 8051,ARM, AVR, PIC, AVR,…
  • Chip nhớ RAM tĩnh (Static Ram), EEPROM.
  • Bộ chuyển hóa tương tự số (ADC).
  • IC điều khiển LCD, LED.
  • Số tương tự(DAC).
  • … Và còn nhiều thứ khác nữa.

Chuẩn giao tiếp i2c ArduinoChuẩn giao tiếp i2c

Để sử dụng và điều khiển được cổng I2C này, bạn sẽ phải sử dụng và hàn, gắn dây Jumper lại với nhau một cách cẩn trọng. Dưới đây, OhStem sẽ hướng dẫn bạn cách kết nối dây cũng như viết code để tiến hành giao tiếp i2c arduino giữa nhiều board mạch với nhau

Tuy nhiên, nếu bạn là người mới khởi đầu học lập trình Arduino thì bạn có thể tham khảo thêm các board mạch Arduino sử dụng chuẩn cắm Grove. Những chuẩn cắm này sẽ giúp bạn đơn giản thực hành các dự án Arduino hơn. Bạn chỉ cần tập trung vào phân tích code và các dự án mình cần làm, việc nối dây đã có chuẩn cắm Grove lo!

Ưu thế: Bạn không cần phải hàn, gắn dây Jumper phức tạp và lộn xộn như trước nữa.

Bạn có thể tìm mua các bộ Arduino sử dụng chuẩn Grove tại đây.

Kết cấu và nguyên lý hoạt động của I2C

Chuẩn giao tiếp I2C arduino thường sẽ sử dụng hai đường truyền tín hiệu:

  • Một đường xung nhịp đồng hồ (hay hay còn gọi là SCL) chỉ do Master phát đi (Bình thường là ở mức 100kHz và 400kHz. Mức cao nhất là 1Mhz và 3.4MHz).
  • Một đường dữ liệu (hay hay còn gọi là SDA) theo 2 chiều.

Hầu như thiết bị đều có thể cùng được link vào một bus I2C. Nhưng bạn đừng lo về việc sẽ nhầm lẫn giữa các thiết bị. Mỗi dụng cụ đều sẽ được phân biệt bởi một địa chỉ riêng, với một mối quan hệ chủ/tớ tồn tại trong toàn thể thời gian kết nối.

giao tiếp i2c giữa 2 arduino

Mỗi một thiết bị tuyệt đối có thể hoạt động như là dụng cụ nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động truyền hay nhận còn dựa trên việc dụng cụ này là chủ (master) hay tớ (slave)

Một dụng cụ hay một IC khi link với bus I2C, ngoài một địa chỉ (duy nhất) để phân biệt, nó còn được quy định là thiết bị chủ hay tớ

Nguyên nhân tạo thành sự phân biệt này ? Này là vì trên một bus I2C thì quyền điều khiển thuộc về dụng cụ chủ. Dụng cụ chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống. Khi giữa hai thiết bị chủ-tớ giao tiếp ngoại vi thì dụng cụ chủ có tính năng tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ từ đầu tới cuối quá trình giao tiếp ngoại vi.

Bạn có thể hiểu đơn giản: dụng cụ chủ sẽ giữ vai trò chủ động, còn dụng cụ tớ sẽ đóng vai trò thụ động trong việc giao tiếp bên ngoài.

Một số vấn đề cần biết về giao tiếp I2C Arduino

  • Chuẩn giao tiếp I2C arduino sẽ sử dụng 7 bit để xác nhận địa chỉ, vậy nên  trên một bus sẽ có thể lên đến 2^7 địa chỉ, tương ứng với 128 dụng cụ có thể link. Nhưng ở đây chỉ có 112, 16 địa chỉ còn sót lại được sử dụng theo mục đích riêng. Các bit còn sót lại sẽ quy định việc đọc hoặc ghi dữ liệu (1 là write, 0 là read).
  • Ưu thế vượt trội của I2C cần nhắc đến chính là mức độ năng suất của nó. Một khối điều khiển trung tâm tuyệt đối có thể quản lý cả một mạng lưới thiết bị mà chỉ cần hai lối ra điều khiển.
  • Ngoài ra, chuẩn giao tiếp I2C arduino còn tồn tại cơ chế 10 bit địa chỉ, ngang bằng với 1024 địa chỉ. Cũng tương tự như như 7 bit, 10bit này sẽ có 1008 cổng để kết nối, còn sót lại 16 địa chỉ sẽ dùng để phục vụ cho mục đích riêng (Mình chưa rõ lắm).

Chế độ 10bit địa chỉ của Arduinochuẩn giao tiếp I2C

Cách link I2C giữa nhiều Arduino

Thiết bị cần dùng

Để tiến hành, tất cả chúng ta cần các thành phần sau:

  • 2 board Arduino.
  • Dây cáp jumper.

Cách kết nối

Board mạch arduino để giao tiếp i2cchuẩn giao tiếp I2C

Bạn thực hiện theo các bước sau để kết nối 2 Arduino Uno thông qua I2C:

  • Nối chân cắm A4 và A5 trên một Arduino với các chân. Bạn thực hiện tương tự với board Arduino kia
  • GND thì phải được dùng chung so với 2 board mạch Arduino. Nối nó với một jumper
  • Và đặc biệt Note, bạn không được nối  Arduino 5 𝒱 và 3,3 𝒱 với nhau. Tuy không tác động nhiều đến Arduino 5V, Nhưng chắc rằng sẽ làm hỏng Arduino 3,3V

Code

Đoạn code sau được chia thành hai phần: mã lập trình cho chủ và mã lập trình cho tớ (slave).

Trước nhất mình sẽ hướng dẫn làm code chủ:

Viết code cho board chủ

Và đây là đoạn code mà board tớ (slave) phiên dịch lại các ký tự nhận từ chủ:

Board slave phiên dịch khi nhận giao tiếp i2c arduino

Hướng dẫn cụ thể cho board chủ (Master)

  • Bước đầu, tất cả chúng ta hãy nhìn vào board chủ. Mình sẽ cần đến thư viện Wire.н:

thư viện wire.h arduino

  • Sau đó, trong phần lập trình, tất cả chúng ta khởi đầu thông qua việc sử dụng hàm Wire.begin (). Nếu như trong hàm không có đối số nào được phân phối, Arduino này sẽ là bo chủ.
  • Cuối cùng, tất cả chúng ta gửi một ký tự Ҳ, nằm từ 0 đến 5. Tất cả chúng ta chọn các hàm sau để khởi đầu truyền tới thiết bị có địa chỉ 9, sau đó nhập ký tự và dừng truyền:

Hướng dẫn cụ thể cho board tớ (Slave)

  • Tương tự, hãy thêm thư viện Wire.н vào. Tuy nhiên, bạn sẽ khởi đầu bus I2C bằng cách sử dụng Wire.begin (9). Số trong đối số chính là địa chỉ mà mình muốn sử dụng cho Arduino. Mọi thứ mà các dụng cụ có địa chỉ 9 sẽ tiếp nhận thông tin truyền.
  • Hiện thời tất cả chúng ta cần phản ứng lại khi thu được tín hiệu truyền I2C. Hàm sau sẽ thêm tác dụng kích hoạt bo bất kể lúc nào thu được ký tự. Bạn có thể hiểu là bất kể khi nào Arduino thu được một ký tự trên I2C, nó sẽ chạy tác dụng mà tất cả chúng ta bảo nó chạy:

  • Và đây là hàm. Lúc này, tất cả chúng ta cần lưu lại giá trị của ký tự đã nhận:

  • Trong hàm loop(), tất cả chúng ta cần giải thích ký tự đó để đèn tín hiệu nháy ở các vận tốc khác nhau, tùy thuộc vào ký tự đã nhận.

Tổng kết

Trên đây là toàn bộ các thông tin về chuẩn giao tiếp I2C arduino cũng như cách kết nối 2 board mạch arduino lại với nhau. OhStem kỳ vọng nội dung này sẽ hữu ích với bạn. Nếu bạn cảm thấy việc hàn gắn dây Jumper quá khó khăn và rắc rối, bạn có thể sử dụng các loại Arduino sử dụng chuẩn cắm Grove. Đây là loại dây cắm dễ sử dụng, thích hợp cho người mới khởi đầu.

OhStem kỳ vọng nội dung trên sẽ hữu ích so với bạn. Nếu có bất kỳ thắc mắc gì thì bạn có thể liên hệ qua Fanpage của OhStem để được trợ giúp và tư vấn, hoặc là để lại comment dưới đây nhé. OhStem sẽ phấn đấu phản hồi nhanh nhất có thể. Cảm ơn bạn đã theo dõi nội dung.

Nguồn thông tin: sưu tầm


Xem thêm những thông tin liên quan đến đề tài tải thư viện i2c cho arduino

Thêm thư viện I2C LiquidCrystal – LiquidCrystal I2C.н No such file directory

alt

  • Tác giả: Sao Dễ Thế
  • Ngày đăng: 2021-12-14
  • Nhận xét: 4 ⭐ ( 4785 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thêm Thư viện I2C LiquidCrystal cho I2C LCD Display trong Arduino IDE

    arduino i2c LiquidCrystal

LiquidCrystal I2C

  • Tác giả: www.arduinolibraries.info
  • Nhận xét: 4 ⭐ ( 8183 lượt nhận xét )
  • Khớp với kết quả tìm kiếm:

HuanVo/LiquidCrystal_I2C: Thư viện cho Led LCD I2C 16×2

  • Tác giả: github.com
  • Nhận xét: 4 ⭐ ( 5989 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Thư viện cho Led LCD I2C 16×2. Contribute to HuanVo/LiquidCrystal_I2C development by creating an tài khoản on GitHub.

BÀI 6: Hướng dẫn cài thư viện vào arduino IDE, Hổ trợ cho việc lập trình

  • Tác giả: nvnnhl.wordpress.com
  • Nhận xét: 3 ⭐ ( 4444 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Thư viện trong Arduino chứa các mã nguồn có những đặc điểm giống nhau, được xây dựng thành một gói bao gồm file:examples, .н, .cpp,…Nhằm giúp người tiêu dùng khắc phục được vấn đề nhanh chóng, trong nội dung này tôi sử dụng thư viện I2C làm ví dụ để setup vào Arduino IDE. Sau thời điểm tải…

Hướng dẫn thêm mới thư viện trong Arduino IDE (Update 2022)

  • Tác giả: arduinokit.vn
  • Nhận xét: 3 ⭐ ( 5706 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Trong quá trình làm việc cũng như vọc vạch Arduino thì việc thêm thư viện cho arduino ide là một điều xảy ra thường xuyên, việc thêm một thư viện mới không hề khó khăn mà thực sự đơn giản

Tổng hợp toàn bộ thư viện Arduino

  • Tác giả: tinhte.vn
  • Nhận xét: 5 ⭐ ( 2515 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: TỔNG HỢP TẤT CẢ THƯ VIỆN ARDUINO

    Các bạn dùng “Ctrl” + ₣ để tìm thư viện mình cần cho nhanh nhé:

    1. Thư viện trợ giúp điều khiển động cơ DC:

    2. Đọc nhiệt độ, độ ẩm DHT11

    3. Đọc nhiệt độ DS18B20

    4.

Sainsmart LCD 2004 – Vấn đề thư viện LiquidCrytal_I2C không thể biên dịch

  • Tác giả: qastack.vn
  • Nhận xét: 4 ⭐ ( 9919 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Tôi cũng gặp vấn đề với thư viện này, cho đến khi tôi nhận thấy tên…

Xem thêm các nội dung khác thuộc thể loại: Thủ thuật máy tính

Xem Thêm  Cách để Tạo album ảnh trên Facebook - cách tạo album ảnh trên facebook

By ads_php