Isi kandungan:

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

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

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

Robin Sharma berkata: 'Peningkatan harian yang kecil dari masa ke masa membawa kepada hasil yang menakjubkan'. Anda mungkin berfikir, 'Aduh, pos I2C lain?'. Sudah tentu, terdapat ribuan maklumat mengenai I2C. Tetapi nantikan, ini bukan hanya artikel I2C yang lain. Sistem Sambungan Qwiic dan papan pelarian persisian Zio pastinya penukar permainan I²C!

Pengenalan

Sekiranya anda membina projek elektronik dan melakukan perkara-perkara hebat, anda mungkin menyedari bahawa apabila projek anda semakin besar, papan roti anda mula kelihatan seperti lubang ular (agak tidak kemas?).

Sebagai tambahan, jika anda mempunyai banyak projek yang sedang berjalan, anda menghabiskan banyak masa menukar wayar dari projek ke projek.

Kita adalah pembuat, jadi kita memahami perjuangan. Sumbangan terbaru kami kepada komuniti OHS adalah sistem prototaip modular yang dipanggil ZIO, menggunakan sistem penyambungan Qwiic. Qwiic adalah kaedah yang sangat mudah untuk menyampaikan papan litar yang dapat diprogramkan ke sensor, penggerak dan papan pemecah melalui I²C.

Langkah 1: Apa Itu I²C dan Mengapa Kita Menyukainya

Apa Itu I²C dan Mengapa Kita Menyukainya
Apa Itu I²C dan Mengapa Kita Menyukainya

I²C adalah bas multi-master yang paling banyak digunakan, yang bermaksud bahawa pelbagai cip boleh disambungkan ke bas yang sama. Ia digunakan di banyak aplikasi antara master dan slave atau pelbagai peranti master dan slave. Dari pengawal mikro, ke telefon pintar, ke aplikasi industri, terutamanya untuk peranti video seperti monitor komputer. Ia dapat dilaksanakan dengan mudah dalam banyak reka bentuk elektronik (dan baru-baru ini lebih mudah dengan penyambung Qwiic).

Sekiranya kita harus menggambarkan I²C dalam dua perkataan, kita mungkin akan menggunakan kesederhanaan dan kelenturan.

Salah satu kelebihan terbesar I²C berbanding protokol komunikasi lain adalah bahawa ia adalah antara muka dua wayar yang bermaksud bahawa ia hanya memerlukan dua wayar isyarat, SDA (Serial Data Line) dan SCL (Serial Clock Line). Ini mungkin bukan protokol terpantas, tetapi terkenal kerana sangat fleksibel, yang memungkinkan fleksibiliti voltan bas.

Ciri penting lain yang menjadikan bas ini menarik adalah persekutuan antara tuan dan hamba. Beberapa peranti boleh disambungkan ke bas yang sama dan tidak perlu menukar pendawaian antara peranti kerana setiap peranti mempunyai alamat yang unik (master memilih peranti untuk berkomunikasi).

Langkah 2: Mari Lihat Lebih dekat

Mari Lihat Lebih dekat
Mari Lihat Lebih dekat
Mari Lihat Lebih dekat
Mari Lihat Lebih dekat
Mari Lihat Lebih dekat
Mari Lihat Lebih dekat
Mari Lihat Lebih dekat
Mari Lihat Lebih dekat

Jadi, bagaimana I²C berfungsi? Sebelumnya kami telah menyebutkan bahawa salah satu ciri yang paling ketara adalah elaun voltan, ini mungkin berlaku kerana I²C menggunakan pengumpul terbuka (juga dikenali sebagai longkang terbuka) untuk kedua-dua talian komunikasi SDA dan SCL.

SCL adalah isyarat jam, menyegerakkan pemindahan data antara peranti pada bas I²C dan ia dihasilkan oleh induk. Sementara SDA membawa data untuk dihantar atau diterima dari sensor atau peranti lain yang disambungkan ke bas.

Output ke isyarat dihubungkan ke tanah, yang bermaksud bahawa setiap peranti dikenakan serendah. Untuk memulihkan isyarat ke tinggi, kedua-dua talian disambungkan ke voltan bekalan positif melalui resistor penarik untuk ditamatkan.

Dengan modul ZIO kami membuat anda dilindungi, semua papan pelindung kami menggabungkan perintang penarik yang diperlukan.

I²C mengikuti protokol mesej untuk berkomunikasi master dengan peranti hamba. Dua baris (SCL dan SDA) adalah umum dalam semua hamba I²C, semua budak di dalam bas mendengar mesej.

Protokol mesej mengikuti format yang ditunjukkan dalam gambar yang dilampirkan:

Mungkin kelihatan rumit pada pandangan pertama, tetapi kami mendapat sedikit berita baik. Semasa menggunakan Arduino IDE terdapat perpustakaan Wire.h, untuk mempermudah semua persediaan untuk protokol mesej I²C.

Keadaan mula dihasilkan apabila garis data (SDA) turun rendah sementara garis jam (SCL) masih tinggi. Semasa menyiapkan projek di antara muka Arduino, kita tidak perlu risau untuk menghasilkan keadaan permulaan, ia akan dimulakan dengan fungsi tertentu (Wire.beginTransmission (slaveAddress)).

Selain itu, fungsi ini juga memulai pengiriman dengan alamat hamba tertentu. Untuk memilih hamba untuk berkomunikasi di bas bersama, tuan meneruskan untuk menyampaikan alamat kepada hamba untuk berkomunikasi. Setelah alamat diatur untuk berkomunikasi dengan budak yang sesuai, pesan akan diikuti dengan bit baca atau tulis, bergantung pada mod yang dipilih.

Salve memberikan balasan dengan tanda terima (ACK atau NACK), dan peranti hamba lain di dalam bas memberikan potongan data selebihnya sehingga mesej selesai dan bas percuma. Mengikuti ACK, urutan daftar alamat dalaman hamba meneruskan penghantaran.

Semasa data dihantar, pesan pemindahan berakhir dengan keadaan berhenti. Untuk mengakhiri penghantaran talian data berubah menjadi tinggi dan garis jam tetap tinggi.

Langkah 3: I²C dan ZIO

I²C dan ZIO
I²C dan ZIO

Kami mendapati bahawa saya sebaiknya mencetak semula semua maklumat di atas dalam perbualan antara tuan (a.k.a Zuino, mikro kami) dan hamba (papan pelindung ZIO).

Dalam contoh asas ini kita menggunakan sensor jarak ZIO TOF dan ZIO OLED Display. TOF memberikan maklumat jarak sementara ZIO Oled memaparkan data. Komponen dan peranti yang digunakan:

  • ZUINO M UNO - Tuan
  • Paparan ZIO OLED - Budak_01
  • Sensor Jarak TOF ZIO - Slave_02
  • Kabel Qwiic - Sambungan mudah untuk peranti I²C

Begini caranya mudah untuk menghubungkan papan antara satu sama lain menggunakan Qwiic, papan roti tidak diperlukan, kabel tambahan yang dipasang atau pin ZUINO. Jam dan siri siri ZUINO secara automatik disambungkan ke sensor Jarak dan OLED dengan menggunakan penyambung Qwiic. Dua kabel lain adalah 3V3 dan GND.

Pertama, mari kita lihat maklumat yang diperlukan, untuk berkomunikasi tuan dengan hamba kita perlu mengetahui alamat unik.

Peranti: Sensor Jarak ZIO

  • Nombor Bahagian: RFD77402
  • Alamat I2C: 0x4C
  • Pautan Lembaran Data

Peranti: Paparan ZIO OLED

  • Nombor Bahagian: SSD1306
  • Alamat: 0x3C
  • Pautan Lembaran Data

Untuk mencari alamat unik untuk peranti hamba, buka lembaran data yang disediakan. Untuk sensor Jarak alamat disediakan di bahagian Modul Interface. Setiap sensor atau komponen mempunyai lembaran data yang berbeza dengan maklumat yang berbeza disediakan. Kadang kala sukar untuk mencarinya di lembar data 30 halaman (petunjuk: buka alat cari pada penampil PDF dan ketik "alamat" atau "ID peranti" untuk carian pantas).

Sekarang bahawa alamat unik untuk setiap peranti diketahui, untuk membaca / menulis data, alamat daftar dalaman harus dikenal pasti (juga dari lembar data). Melihat lembaran data sensor ZIO Distance alamat untuk mendapatkan jarak sepadan dengan 0x7FF.

Dalam kes ini, kami sebenarnya tidak memerlukan maklumat ini untuk menggunakan sensor kerana perpustakaan sudah menggunakannya.

Langkah seterusnya, berikan kod. ZUINO M UNO serasi dengan Arduino IDE, yang menjadikan penyediaannya lebih mudah. Perpustakaan yang diperlukan untuk projek ini adalah seperti 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 mengenai cara memautkan perpustakaan *.zip ke Arduino IDE.

Melihat kodnya, pertama perpustakaan harus dinyatakan dan juga alamat untuk OLED.

Dalam persediaan () penghantaran bermula dan teks ditampilkan untuk fungsi sensor jarak.

Gelung () mengambil ukuran pada jarak jauh dan OLED mencetaknya.

Periksa contoh kod sumber pada pautan github.

Menggunakan kedua-dua papan breakout cukup mudah dalam semua aspek. Di bahagian perkakasan, penyambung Qwiic menjadikan penyediaan perkakasan lebih cepat dan jauh lebih tidak kemas daripada mempunyai papan roti dan kabel jumper. Dan untuk firmware, menggunakan perpustakaan yang sesuai untuk komunikasi I2C, sensor dan paparan menjadikan kod jauh lebih mudah.

Langkah 4: Berapa Panjang Kabel Maksimum?

Panjang maksimum bergantung pada resistor penarik yang digunakan untuk SDA dan SCL dan kapasitansi kabel. Perintang juga menentukan kelajuan bas, semakin rendah kelajuan bas, semakin panjang had kabel. Kapasitansi kabel menghadkan bilangan peranti di dalam bas, dan juga panjang kabel. Aplikasi biasa mengehadkan panjang wayar hingga 2.5-3.5m (9-12 kaki) tetapi terdapat variasi bergantung pada kabel yang digunakan. Sebagai rujukan, panjang maksimum pada aplikasi I2C menggunakan kabel pasangan terpintal 22 AWG terlindung adalah sekitar 1 m (3 kaki) pada 100 kbaund, 10 m (30 kaki) pada 10kbaud.

Terdapat beberapa laman web seperti mogami atau WolframAlpha yang memungkinkan untuk menganggarkan panjang kabel.

Langkah 5: Bagaimana Menghubungkan Pelbagai Peranti pada Bas yang Sama?

Bagaimana Menghubungkan Pelbagai Peranti pada Bas yang Sama?
Bagaimana Menghubungkan Pelbagai Peranti pada Bas yang Sama?
Bagaimana Menghubungkan Pelbagai Peranti pada Bas yang Sama?
Bagaimana Menghubungkan Pelbagai Peranti pada Bas yang Sama?

I2C adalah bas bersiri, di mana semua peranti disambungkan ke bas bersama. Dengan penyambung Qwiic, papan pemisah yang berbeza dapat dihubungkan satu sama lain menggunakan penyambung Qwiic. Setiap papan mempunyai sekurang-kurangnya 2 penyambung Qwiic.

Kami membuat papan yang berbeza untuk menyelesaikan beberapa batasan Qwiic dan I2C. Papan penyesuai Zio Qwiic digunakan untuk menyambung melalui peranti Qwiic tanpa penyambung Qwiic, menggunakan kabel header lelaki Qwiic ke papan roti. Trik mudah ini mewujudkan kemungkinan yang tidak terhad.

Untuk menyambungkan pelbagai peranti pada rangkaian bas atau pokok, kami hadir dengan Zio Qwiic Hub.

Akhir sekali, Zio Qwiic MUX membenarkan sambungan dua atau lebih peranti menggunakan alamat yang sama.

Langkah 6: Apakah Penamatan I2C?

I2C diperlukan untuk menamatkan, jadi talian bebas untuk menambah peranti lain. Ini mungkin agak membingungkan, kerana istilah penamatan biasanya digunakan untuk menggambarkan perintang penarik bus (untuk memberikan keadaan lalai, dalam hal ini untuk membekalkan arus ke litar). Untuk papan Zuino, nilai perintang adalah 4.7kΩ.

Sekiranya penghentian dihilangkan, tidak akan ada komunikasi sama sekali di dalam bas - tuan tidak akan dapat menghasilkan keadaan permulaan, jadi mesej itu tidak akan dihantar kepada budak.

Untuk maklumat lebih lanjut dan keupayaan Zio, periksa produk Zio terkini. Matlamat artikel ini adalah untuk menerangkan asas komunikasi I²C dan bagaimana ia berfungsi dengan penyambung Zio dan Qwiic. Nantikan lebih banyak kemas kini.

Disyorkan: