İçindekiler:

Arduino I2C Sniffer: 4 Adım
Arduino I2C Sniffer: 4 Adım

Video: Arduino I2C Sniffer: 4 Adım

Video: Arduino I2C Sniffer: 4 Adım
Video: Arduino ve I2C ile 4x20 - 2x16 LCD Ekran Kullanımı 2024, Temmuz
Anonim
Arduino I2C Dinleyici
Arduino I2C Dinleyici

I2C, aynı devreye bağlı harici çevre birimleri ile bir mikro denetleyiciyi iletişim kurmak için kullanılan bir seri protokoldür. Her çevre birimi, belirli bir mesajın hedeflenen alıcısı olarak onu tanımlamak için kullanılan, adres adı verilen benzersiz bir kimlik numarasına sahip olmalıdır. Bu adresler cihaz üreticisi tarafından atanır ve çoğu zaman değiştirilemez. Bir dinleyici, bağlı cihazları arayan olası tüm adresleri tarar ve bulduklarını bildirir. Bu, işaretlenmemiş çiplerin tanımlanmasına yardımcı olur, çünkü daha sonra çiple ilgili daha fazla bilgi için adres google'da aranabilir.

Bu cihaz, bir Arduino UNO'da Raspberry Pi i2cdetect betiğinin davranışını taklit eder, bağlı cihazları arayan tüm olası i2c adreslerini koklar ve sonuçları güzel bir 16x02 LCD ekranda yazdırır.

Her şeyi ekrana sığdırmak için, adresin hem yüksek hem de alçak kısımları sonuçların üzerine yazdırılır, yüksek kısım kalın yazı tipindedir. İki basma düğmesi, bir seferde 16 adresi göstererek adresler arasında gezinmeyi sağlar. Bir aygıtın algılanması durumunda, yazma adresi olarak göstermek için W yazdırılacak ve okuma adresi olması durumunda R gösterilecektir. Bu adreste herhangi bir şey algılanmaması durumunda ekranda bir tire (-) gösterilecektir.

Adım 1: Malzemeler

Malzemeler
Malzemeler
Malzemeler
Malzemeler

seçenek 1

1 x Arduino UNO

1x16x02 LCD ekran

1x 10K potansiyometre

1x 330 ohm direnç

3x Basmalı düğmeler

Atlama kabloları

1x I2C seviye değiştirici (malzeme resminde değil)

seçenek 2

1 x Arduino UNO

LCD Tuş Takımı Kalkanı (kalkan üzerindeki düğmeler kullanılmayacaktır)

3x Basmalı düğmeler

Atlama kabloları

1x I2C seviye değiştirici (malzeme resminde değil)

Seçenek 2, inşa edilecek olandır çünkü şu anda elimde olan buydu. Seviye değiştirici devrenin önemli bir parçasıdır, çünkü günümüzde çoğu cihaz 3.3V mantığı kullanır ve Arduino'dan gelen 5V onlara zarar verir.

(Resimlerde üzeri çizili malzeme gerekli değildir.)

2. Adım: Devre

Devre
Devre
Devre
Devre
Devre
Devre

Devre oldukça basittir, LCD için Arduino örnekleri için standart pin çıkışı, I2C için varsayılan pinler ve butonlar için 3 yedek pin kullanılır.

LCD Tuş Takımı Kalkanını kullanmanız durumunda, LCD'nin pin çıkışı değişir, ancak bu zaten kod içinde kabul edilir. LCD Keypad Shield düğmeleri, iki olası uygulama devresi (Kalkan ve bağımsız LCD) arasındaki uyumluluğu bozan bir analog yoklama yöntemi gerektirdiğinden kullanılmaz.

3. Adım: Kodlayın

kod
kod

LCD Keypad Shield kullanılması durumunda, çizimin başında #define LCD_SHIELD yorumsuz bırakılmalıdır. Aksi takdirde, ilk diyagramı kullanmak için yorum yapın.

4. Adım: Sonuçlar

Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar

Kodu ve devreyi test etmek için bir BQ32000 RTC çipi ve bir MMA8452Q ivmeölçer kullanıldı. Resimlerde görüldüğü gibi cihaz, yazma adresleri olarak 0x3A ve 0xD0 ve okuma adresleri olarak 0x3B ve 0xD1 olmak üzere 4 adres algılamaktadır. Bu adresler test cihazlarına karşılık gelir, böylece kod çalışır.

Beijing Makerspace'deki nazik kızlara, Fu Yao ve Liu Xin'e, bu projeyi bu kadar kısa sürede test etmek için gerekli malzemeleri almama yardım ettikleri için teşekkür etmek istiyorum.

Önerilen: