Daftar Isi:

Memperkenalkan I2C Dengan Modul Zio dan Qwiic: 6 Langkah
Memperkenalkan I2C Dengan Modul Zio dan Qwiic: 6 Langkah

Video: Memperkenalkan I2C Dengan Modul Zio dan Qwiic: 6 Langkah

Video: Memperkenalkan I2C Dengan Modul Zio dan Qwiic: 6 Langkah
Video: Getting Started with ROS2 Navigation - Episode 4 - Wiring for ROS2 2024, Juli
Anonim
Memperkenalkan I2C Dengan Modul Zio dan Qwiic
Memperkenalkan I2C Dengan Modul Zio dan Qwiic

Robin Sharma berkata: 'Peningkatan harian kecil dari waktu ke waktu menghasilkan hasil yang menakjubkan'. Anda mungkin berpikir, 'Aw, pos I2C lain?'. Ya, pasti ada ribuan informasi tentang I2C. Tapi tetap disini, ini bukan hanya artikel I2C lainnya. Sistem Qwiic Connect dan papan breakout periferal Zio jelas merupakan pengubah permainan I²C!

pengantar

Jika Anda sedang membangun proyek elektronik dan melakukan hal-hal luar biasa, Anda mungkin menyadari bahwa ketika proyek Anda semakin besar, papan tempat memotong roti Anda mulai terlihat seperti lubang ular (agak berantakan kan?).

Selain itu, jika Anda memiliki banyak proyek yang sedang berjalan, Anda menghabiskan banyak waktu untuk berpindah kabel dari satu proyek ke proyek lainnya.

Kami adalah pembuat, jadi kami memahami perjuangan. Kontribusi terbaru kami untuk komunitas K3 adalah sistem prototipe modular yang disebut ZIO, yang mengadopsi sistem penghubung Qwiic. Qwiic adalah cara yang sangat nyaman untuk mengkomunikasikan papan sirkuit yang dapat diprogram ke sensor, aktuator, dan papan breakout melalui I²C.

Langkah 1: Apa itu I²C dan Mengapa Kami Menyukainya

Apa itu I²C dan Mengapa Kami Menyukainya
Apa itu I²C dan Mengapa Kami Menyukainya

I²C adalah bus multi-master yang paling banyak digunakan, artinya berbagai chip dapat dihubungkan ke bus yang sama. Ini digunakan di banyak aplikasi antara master dan slave atau beberapa perangkat master dan slave. Mulai dari mikrokontroler, smartphone, hingga aplikasi industri, terutama untuk perangkat video seperti monitor komputer. Ini dapat dengan mudah diimplementasikan dalam banyak desain elektronik (dan baru-baru ini bahkan lebih mudah dengan konektor Qwiic).

Jika kita harus menggambarkan I²C dalam dua kata, kita mungkin akan menggunakan kesederhanaan dan fleksibilitas.

Salah satu keuntungan terbesar I²C dibandingkan protokol komunikasi lainnya adalah antarmuka dua kabel yang berarti hanya membutuhkan dua kabel sinyal, SDA (Serial Data Line) dan SCL (Serial Clock Line). Ini mungkin bukan protokol tercepat, tetapi terkenal sangat fleksibel, memungkinkan fleksibilitas dalam tegangan bus.

Karakteristik penting lainnya yang membuat bus ini menarik adalah persekutuan antara master dan slave. Beberapa perangkat dapat dihubungkan ke bus yang sama dan tidak perlu mengubah kabel antar perangkat karena setiap perangkat memiliki alamat unik (master memilih perangkat untuk berkomunikasi).

Langkah 2: Mari Kita Lihat Lebih Dekat

Mari Kita Lihat Lebih Dekat
Mari Kita Lihat Lebih Dekat
Mari Kita Lihat Lebih Dekat
Mari Kita Lihat Lebih Dekat
Mari Kita Lihat Lebih Dekat
Mari Kita Lihat Lebih Dekat
Mari Kita Lihat Lebih Dekat
Mari Kita Lihat Lebih Dekat

Jadi, bagaimana cara kerja I²C? Sebelumnya kami menyebutkan bahwa salah satu fitur yang paling signifikan adalah penyisihan tegangan, ini dimungkinkan karena I²C menggunakan kolektor terbuka (juga dikenal sebagai saluran terbuka) untuk jalur komunikasi SDA dan SCL.

SCL adalah sinyal clock, menyinkronkan transfer data antara perangkat di bus I²C dan dihasilkan oleh master. Sedangkan SDA membawa data untuk dikirim atau diterima dari sensor atau perangkat lain yang terhubung ke bus.

Output ke sinyal terhubung ke ground, artinya setiap perangkat dikenakan rendah. Untuk memulihkan sinyal ke tinggi, kedua saluran dihubungkan ke tegangan suplai positif melalui resistor pull up untuk diakhiri.

Dengan modul ZIO kami membantu Anda, semua papan breakout kami menggabungkan resistor pull up yang diperlukan.

I²C mengikuti protokol pesan untuk mengomunikasikan master dengan perangkat slave. Dua baris (SCL dan SDA) adalah umum dalam semua budak I²C, semua budak di bus mendengarkan pesan.

Protokol pesan mengikuti format yang ditunjukkan pada gambar terlampir:

Sekilas mungkin terlihat rumit, tapi kami punya sedikit kabar baik. Saat menggunakan Arduino IDE ada library Wire.h, untuk menyederhanakan semua pengaturan untuk protokol pesan I²C.

Kondisi awal dihasilkan ketika jalur data (SDA) turun rendah sementara jalur jam (SCL) masih tinggi. Saat menyiapkan proyek di antarmuka Arduino, kita tidak perlu khawatir tentang menghasilkan kondisi awal, itu akan dimulai dengan fungsi tertentu (Wire.beginTransmission(slaveAddress)).

Selain itu, fungsi ini juga memulai transmisi dengan alamat slave tertentu. Untuk memilih budak untuk berkomunikasi di bus bersama, master melanjutkan untuk meneruskan alamat ke budak untuk berkomunikasi. Setelah alamat diatur untuk berkomunikasi dengan slave yang sesuai, de message mengikuti dengan bit baca atau tulis, tergantung pada mode yang dipilih.

Salep memberikan balasan dengan pengakuan (ACK atau NACK), dan perangkat budak lainnya di bus mendiskon sisa data hingga pesan selesai dan bus gratis. Mengikuti ACK, urutan register pengalamatan internal dari slave melanjutkan transmisi.

Saat data terkirim, pesan transfer diakhiri dengan kondisi berhenti. Untuk mengakhiri transmisi, jalur data berubah menjadi tinggi dan jalur jam tetap tinggi.

Langkah 3: I²C dan ZIO

I²C dan ZIO
I²C dan ZIO

Kami menemukan bahwa saya sebaiknya membuat cetak biru semua informasi di atas dalam percakapan antara master (alias Zuino, mikro kami) dan budak (alias papan breakout ZIO).

Dalam contoh dasar ini kami menggunakan sensor jarak ZIO TOF dan ZIO OLED Display. TOF memberikan informasi jarak sementara ZIO Oled menampilkan data. Komponen dan perangkat yang digunakan:

  • ZUINO M UNO - Sang Guru
  • Tampilan OLED ZIO - Slave_01
  • Sensor Jarak ZIO TOF - Slave_02
  • Kabel Qwiic - Koneksi mudah untuk perangkat I²C

Begini cara mudah menyambungkan papan satu sama lain menggunakan Qwiic, tidak perlu papan tempat memotong roti, tambahan kabel atau pin ZUINO. Jalur Jam dan Data serial ZUINO secara otomatis terhubung ke sensor Jarak dan OLED dengan menggunakan konektor Qwiic. Dua kabel lainnya adalah 3V3 dan GND.

Pertama, mari kita lihat informasi yang dibutuhkan, untuk mengomunikasikan master dengan slave kita perlu mengetahui alamat uniknya.

Perangkat: Sensor Jarak ZIO

  • Nomor Bagian: RFD77402
  • Alamat I2C: 0x4C
  • Tautan Lembar Data

Perangkat: Tampilan OLED ZIO

  • Nomor Bagian: SSD1306
  • Alamat: 0x3C
  • Tautan Lembar Data

Untuk menemukan alamat unik untuk perangkat budak, buka lembar data yang disediakan. Untuk sensor Jarak alamat disediakan di bagian Antarmuka Modul. Setiap sensor atau komponen memiliki datasheet yang berbeda dengan informasi yang diberikan berbeda. Terkadang sulit untuk menemukannya di lembar data 30 halaman (petunjuk: buka alat temukan di penampil PDF dan ketik "alamat" atau "ID perangkat" untuk pencarian cepat).

Sekarang setelah alamat unik untuk setiap perangkat diketahui, untuk membaca/menulis data, alamat register internal harus diidentifikasi (juga dari lembar data). Setelah melihat datasheet sensor Jarak ZIO alamat untuk mendapatkan jarak sesuai dengan 0x7FF.

Dalam kasus khusus ini, kami benar-benar tidak memerlukan informasi ini untuk menggunakan sensor seperti yang sudah dilakukan perpustakaan.

Langkah selanjutnya, berikan kodenya. ZUINO M UNO kompatibel dengan Arduino IDE, yang membuat pengaturan jauh lebih mudah. Pustaka yang dibutuhkan untuk proyek ini adalah sebagai berikut:

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

Wire.h adalah perpustakaan arduino, dua perpustakaan Adafruit digunakan untuk OLED dan yang terakhir digunakan untuk sensor Jarak. Lihat tutorial ini tentang cara menautkan perpustakaan *.zip ke Arduino IDE.

Melihat kodenya, pertama-tama perpustakaan harus dideklarasikan serta alamat untuk OLED.

Dalam setup() transmisi dimulai dan teks ditampilkan untuk fungsi sensor jarak.

Loop() melakukan pengukuran pada jarak dan OLED mencetaknya.

Periksa contoh kode sumber di tautan github.

Menggunakan kedua papan breakout cukup mudah dalam semua hal. Di sisi perangkat keras, konektor Qwiic membuat pengaturan perangkat keras lebih cepat dan jauh lebih tidak berantakan daripada memiliki papan tempat memotong roti dan kabel jumper. Dan untuk firmware, menggunakan pustaka yang sesuai untuk komunikasi I2C, sensor dan tampilan membuat kode jauh lebih sederhana.

Langkah 4: Berapa Panjang Kabel Maksimum?

Panjang maksimum tergantung pada resistor pull up yang digunakan untuk SDA dan SCL dan kapasitansi kabel. Resistor juga menentukan kecepatan bus, semakin rendah kecepatan bus, semakin panjang batas kabel. Kapasitansi kabel membatasi jumlah perangkat di bus, serta panjang kabel. Aplikasi umum membatasi panjang kawat menjadi 2,5-3,5m (9-12ft) tetapi ada variasi tergantung pada kabel yang digunakan. Sebagai referensi, panjang maksimum pada aplikasi I2C yang menggunakan kabel twisted pair 22 AWG berpelindung adalah sekitar 1 m (3 kaki) pada 100 kbaund, 10 m (30 kaki) pada 10kbaud.

Ada beberapa situs seperti mogami atau WolframAlpha yang memungkinkan untuk memperkirakan panjang kabel.

Langkah 5: Bagaimana Menghubungkan Beberapa Perangkat di Bus yang Sama?

Bagaimana Menghubungkan Beberapa Perangkat di Bus yang Sama?
Bagaimana Menghubungkan Beberapa Perangkat di Bus yang Sama?
Bagaimana Menghubungkan Beberapa Perangkat di Bus yang Sama?
Bagaimana Menghubungkan Beberapa Perangkat di Bus yang Sama?

I2C adalah bus serial, di mana semua perangkat terhubung ke bus bersama. Dengan konektor Qwiic, papan breakout yang berbeda dapat dihubungkan satu demi satu menggunakan konektor Qwiic. Setiap papan memiliki setidaknya 2 konektor Qwiic.

Kami membuat papan yang berbeda untuk memecahkan beberapa batasan Qwiic dan I2C. Papan adaptor Qwiic Zio digunakan untuk terhubung melalui perangkat Qwiic tanpa konektor Qwiic, menggunakan kabel header male Qwiic ke papan tempat memotong roti. Trik sederhana ini menciptakan kemungkinan tak terbatas.

Untuk menghubungkan perangkat yang berbeda pada jaringan bus atau pohon kami datang dengan Zio Qwiic Hub.

Last but not least, Zio Qwiic MUX memungkinkan koneksi dua atau lebih perangkat menggunakan alamat yang sama.

Langkah 6: Apa itu Pemutusan I2C?

I2C diperlukan untuk mengakhiri, sehingga saluran bebas untuk menambahkan perangkat lain. Ini mungkin sedikit membingungkan, karena istilah terminasi biasanya digunakan untuk menggambarkan resistor pull-up bus (untuk memberikan status default, dalam hal ini untuk memasok arus ke rangkaian). Untuk papan Zuino, nilai resistornya adalah 4.7kΩ.

Jika penghentian dihilangkan, tidak akan ada komunikasi sama sekali di bus - master tidak akan dapat menghasilkan kondisi awal, sehingga pesan tidak akan dikirim ke budak.

Untuk informasi lebih lanjut dan kemampuan Zio, periksa produk Zio terbaru. Tujuan artikel ini adalah untuk menjelaskan dasar-dasar komunikasi I²C dan cara kerjanya dengan konektor Zio dan Qwiic. Tetap disini untuk pembaruan lebih lanjut.

Direkomendasikan: