İçindekiler:

Zio Modülleri ve Qwiic ile I2C'ye Giriş: 6 Adım
Zio Modülleri ve Qwiic ile I2C'ye Giriş: 6 Adım

Video: Zio Modülleri ve Qwiic ile I2C'ye Giriş: 6 Adım

Video: Zio Modülleri ve Qwiic ile I2C'ye Giriş: 6 Adım
Video: Hand Gestures on Android Media Players using Arduino 2024, Temmuz
Anonim
Zio Modülleri ve Qwiic ile I2C ile Tanışın
Zio Modülleri ve Qwiic ile I2C ile Tanışın

Robin Sharma, "Zaman içinde yapılan küçük günlük iyileştirmeler çarpıcı sonuçlara yol açar" dedi. 'Haa, başka bir I2C gönderisi mi?' diye düşünüyor olabilirsiniz. Şey, konu I2C olduğunda kesinlikle binlerce bilgi var. Ama bizi izlemeye devam edin, bu sadece başka bir I2C makalesi değil. Qwiic Connect Sistemi ve Zio çevre birimi devre kartları kesinlikle I²C'nin kurallarını değiştiriyor!

Tanıtım

Elektronik projeler yapıyor ve harika şeyler yapıyorsanız, projeleriniz büyüdükçe breadboard'unuzun yılan çukuru gibi görünmeye başladığını fark etmişsinizdir (biraz dağınık değil mi?).

Ek olarak, devam eden birden fazla projeniz varsa, kabloları projeden projeye değiştirmek için bir sürü zaman harcarsınız.

Biz yapıcıyız, bu yüzden mücadeleyi anlıyoruz. İSG topluluğuna en son katkımız, Qwiic bağlantı sistemini benimseyen ZIO adlı modüler bir prototipleme sistemidir. Qwiic, programlanabilir bir devre kartını I²C aracılığıyla sensörlere, aktüatörlere ve devre kartlarına iletmenin çok uygun bir yoludur.

Adım 1: I²C Nedir ve Neden Seviyoruz?

I²C Nedir ve Neden Seviyoruz?
I²C Nedir ve Neden Seviyoruz?

I²C en yaygın olarak kullanılan çoklu ana veriyoludur, yani aynı veri yoluna çeşitli yongalar bağlanabilir. Bir ana ve bağımlı veya birden çok ana ve bağımlı aygıt arasında birçok uygulamada kullanılır. Mikrodenetleyicilerden akıllı telefonlara, endüstriyel uygulamalara, özellikle bilgisayar monitörleri gibi video cihazları için. Birçok elektronik tasarımda kolayca uygulanabilir (ve son zamanlarda Qwiic konektörü ile daha da kolay).

I²C'yi iki kelimeyle tanımlamamız gerekseydi, muhtemelen basitlik ve esneklik kullanırdık.

I²C'nin diğer iletişim protokollerine göre en büyük avantajlarından biri, iki telli bir arayüz olması, yani sadece iki sinyal kablosuna, SDA (Seri Veri Hattı) ve SCL (Seri Saat Hattı) gerektirmesidir. En hızlı protokol olmayabilir, ancak çok esnek olması ve bus voltajında esneklik sağlamasıyla bilinir.

Bu otobüsü çekici kılan bir diğer önemli özellik ise efendi ile köle arasındaki dostluktur. Aynı veri yoluna birden fazla cihaz bağlanabilir ve her cihazın benzersiz bir adresi olduğu için cihazlar arasındaki kablolamayı değiştirmeye gerek yoktur (ana, iletişim kurulacak cihazı seçer).

2. Adım: Daha Yakından Bir Göz Atalım

Hadi daha yakından bakalım
Hadi daha yakından bakalım
Hadi daha yakından bakalım
Hadi daha yakından bakalım
Hadi daha yakından bakalım
Hadi daha yakından bakalım
Hadi daha yakından bakalım
Hadi daha yakından bakalım

Peki, I²C nasıl çalışır? Daha önce en önemli özelliklerden birinin voltaj toleransı olduğundan bahsetmiştik, I²C hem SDA hem de SCL iletişim hatları için açık kollektör (açık drenaj olarak da bilinir) kullandığından bu mümkündür.

SCL saat sinyalidir, I²C veriyolu üzerindeki cihazlar arasındaki veri transferini senkronize eder ve master tarafından üretilir. SDA, veri yoluna bağlı sensörlerden veya diğer cihazlardan gönderilecek veya alınacak verileri taşırken.

Sinyalin çıkışı toprağa bağlanır, yani her cihaz düşük olarak uygulanır. Sinyali yüksek seviyeye çıkarmak için, her iki hat da sonlandırılacak bir yukarı çekme direnci aracılığıyla pozitif bir besleme voltajına bağlanır.

Sizi koruduğumuz ZIO modülleri ile tüm devre kartlarımız gerekli çekme direncini içerir.

I²C, master ile slave cihazlar arasında iletişim kurmak için bir mesaj protokolünü takip eder. İki hat (SCL ve SDA) tüm I²C slave'lerinde ortaktır, veriyolundaki tüm slave'ler mesajı dinler.

Mesaj protokolü, ekli resimde gösterilen formatı takip eder:

İlk bakışta karmaşık görünebilir, ancak biraz iyi haberlerimiz var. Arduino IDE kullanırken, I²C mesaj protokolü için tüm ayarları basitleştirmek için Wire.h kütüphanesi vardır.

Başlangıç koşulu, saat hattı (SCL) hala yüksekken veri hattı (SDA) düştüğünde oluşturulur. Arduino arayüzünde bir proje kurarken, başlangıç koşulu oluşturma konusunda gerçekten endişelenmemize gerek yok, belirli bir işlevle başlatılacaktır (Wire.beginTransmission(slaveAddress)).

Ek olarak, bu işlev ayrıca belirli bağımlı adres ile iletimi başlatır. Paylaşılan veriyolunda iletişim kuracak köleyi seçmek için, ana birim adresi iletişim kurmak için köleye iletmeye devam eder. Adres, karşılık gelen bağımlı birim ile iletişim kurmak üzere ayarlandıktan sonra, seçilen moda bağlı olarak bir okuma veya yazma biti ile de mesaj gelir.

Salve, bir onay (ACK veya NACK) ile bir yanıt verir ve veriyolundaki diğer bağımlı cihazlar, mesaj tamamlanana ve veri yolu boş olana kadar verilerin geri kalanını indirir. ACK'yi takiben, bağımlı birimlerin bir dahili adresleme kaydı dizisi iletime devam eder.

Veri gönderildiğinde, aktarım mesajı bir durdurma koşuluyla sona erer. İletimi sonlandırmak için veri hattı yüksek olarak değişir ve saat hattı yüksek kalır.

3. Adım: I²C ve ZIO

I²C ve ZIO
I²C ve ZIO

Bir usta (aka Zuino, mikromuz) ve köleler (a.k.a ZIO koparma panoları) arasındaki bir konuşmada yukarıdaki tüm bilgileri en iyi şekilde planlayacağımı düşündük.

Bu temel örnekte, ZIO TOF mesafe sensörünü ve ZIO OLED Ekranını kullanıyoruz. ZIO Oled verileri görüntülerken TOF mesafe bilgilerini verir. Kullanılan bileşenler ve cihazlar:

  • ZUINO M UNO - Usta
  • ZIO OLED Ekran - Slave_01
  • ZIO TOF Mesafe Sensörü - Slave_02
  • Qwiic Kablo - I²C cihazları için kolay bağlantı

Qwiic, devre tahtasına gerek yok, ek kablolar veya ZUINO pinleri kullanarak panoları birbirine bağlamanın ne kadar kolay olduğu aşağıda açıklanmıştır. ZUINO'nun seri Saat ve Veri hattı, Qwiic konektörü kullanılarak Mesafe sensörüne ve OLED'e otomatik olarak bağlanır. Diğer iki kablo 3V3 ve GND'dir.

İlk olarak, gerekli bilgilere bir göz atalım, master ile slave'leri iletişim kurmak için benzersiz adresleri bilmemiz gerekir.

Cihaz: ZIO Mesafe Sensörü

  • Parça Numarası: RFD77402
  • I2C Adresi: 0x4C
  • Veri Sayfası Bağlantısı

Cihaz: ZIO OLED Ekran

  • Parça Numarası: SSD1306
  • Adres: 0x3C
  • Veri Sayfası Bağlantısı

Köle cihazların benzersiz adresini bulmak için sağlanan veri sayfasını açın. Mesafe sensörü için adres Modül Arayüzü bölümünde sağlanır. Her sensör veya bileşen, sağlanan farklı bilgilerle farklı bir veri sayfasına sahiptir. Bazen 30 sayfalık bir veri sayfasında bulmak zor olabilir (ipucu: PDF görüntüleyicide bulma aracını açın ve hızlı arama için "adres" veya "cihaz kimliği" yazın).

Artık her cihazın benzersiz adresi bilindiğine göre, veri okumak/yazmak için dahili kayıt adresi tanımlanmalıdır (ayrıca veri sayfasından). ZIO Mesafe sensörü veri sayfasına bakıldığında, mesafeyi almak için adres 0x7FF'ye karşılık gelir.

Bu özel durumda, kitaplığın zaten yaptığı gibi sensörü kullanmak için bu bilgilere gerçekten ihtiyacımız yok.

Sonraki adım, kodu eller. ZUINO M UNO, kurulumu çok daha kolay hale getiren Arduino IDE ile uyumludur. Bu proje için gerekli kütüphaneler şunlardır:

  • tel.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h bir arduino kütüphanesidir, OLED için iki Adafruit kütüphanesi ve sonuncuları Mesafe sensörü için kullanılır. *.zip kitaplıklarını Arduino IDE'ye nasıl bağlayacağınızla ilgili bu eğiticiye bakın.

Koda bakıldığında, önce OLED'in adresinin yanı sıra kitaplıkların da bildirilmesi gerekiyor.

Kurulumda() iletim başlar ve mesafe sensörü işlevi için metin görüntülenir.

loop(), mesafeyi ölçer ve OLED bunu yazdırır.

Github bağlantısındaki örnek kaynak kodunu kontrol edin.

Her iki koparma panosunu kullanmak her anlamda oldukça kolaydır. Donanım tarafında, Qwiic konektörü, donanım kurulumunu bir devre tahtası ve atlama tellerine sahip olmaktan çok daha hızlı ve çok daha az dağınık hale getirir. Ve donanım yazılımı için, I2C iletişimi için ilgili kitaplıkları kullanmak, sensör ve ekran, kodu çok daha basit hale getirir.

Adım 4: Maksimum Kablo Uzunluğu Nedir?

Maksimum uzunluk, SDA ve SCL için kullanılan çekme dirençlerine ve kablo kapasitansına bağlıdır. Dirençler ayrıca bara hızını da belirler, bara hızı ne kadar düşükse kablo limiti o kadar uzun olur. Kablo kapasitansı, veri yolu üzerindeki cihaz sayısını ve kablo uzunluğunu sınırlar. Tipik uygulamalar, kablo uzunluğunu 2,5-3,5m (9-12ft) ile sınırlandırır, ancak kullanılan kabloya bağlı olarak farklılıklar vardır. Referans olarak, blendajlı 22 AWG bükümlü çift kablo kullanan I2C uygulamalarında maksimum uzunluk 100 kbaund'da yaklaşık 1 m (3 ft), 10 kbaud'da 10 m'dir (30 ft).

Kablo uzunluğunu tahmin etmeye izin veren mogami veya WolframAlpha gibi bazı siteler var.

Adım 5: Aynı Veri Yoluna Birden Çok Cihaz Nasıl Bağlanır?

Aynı Bus Üzerinden Birden Fazla Cihaz Nasıl Bağlanır?
Aynı Bus Üzerinden Birden Fazla Cihaz Nasıl Bağlanır?
Aynı Bus Üzerinden Birden Fazla Cihaz Nasıl Bağlanır?
Aynı Bus Üzerinden Birden Fazla Cihaz Nasıl Bağlanır?

I2C, tüm cihazların paylaşılan bir veri yoluna bağlı olduğu bir seri veri yoludur. Qwiic konektörü ile farklı devre kartları, Qwiic konektörü kullanılarak birbiri ardına bağlanabilir. Her kartta en az 2 Qwiic konektörü bulunur.

Bazı Qwiic ve I2C sınırlamalarını çözmek için farklı panolar oluşturduk. Zio Qwiic adaptör kartı, Qwiic cihazları aracılığıyla, Qwiic'i devre tahtasına erkek başlık kablosu kullanarak, Qwiic konektörü olmadan bağlamak için kullanılır. Bu basit numara sınırsız olanaklar yaratır.

Bir veri yolu veya ağaç ağında farklı cihazları bağlamak için Zio Qwiic Hub'ı bulduk.

Son olarak, Zio Qwiic MUX, aynı adresi kullanan iki veya daha fazla cihazın bağlanmasına izin verir.

Adım 6: I2C Sonlandırma Nedir?

Sonlandırmak için I2C gereklidir, bu nedenle hat başka cihazlar eklemekte serbesttir. Sonlandırma terimi genellikle bus çekme dirençlerini tanımlamak için kullanıldığından (varsayılan bir durum sağlamak için, bu durumda devreye akım sağlamak için) bu biraz kafa karıştırıcı olabilir. Zuino kartları için direnç değeri 4.7kΩ'dur.

Sonlandırma atlanırsa, bus üzerinde hiçbir iletişim olmayacaktır - master başlatma koşulunu oluşturamaz, bu nedenle mesaj bağımlılara iletilmez.

Daha fazla bilgi ve Zio yetenekleri için en son Zio ürünlerini kontrol edin. Bu makaledeki amaç, I²C iletişim temellerini ve bunun Zio ve Qwiic konektörüyle nasıl çalıştığını açıklamaktır. Daha fazla güncelleme için bizi izlemeye devam edin.

Önerilen: