Mündəricat:

Arduino I2C Sniffer: 4 addım
Arduino I2C Sniffer: 4 addım

Video: Arduino I2C Sniffer: 4 addım

Video: Arduino I2C Sniffer: 4 addım
Video: Подключаем текстовый LCD 16x2 к arduino по I2C 2024, Noyabr
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C, bir mikrokontrolörün eyni dövrə bağlı xarici ətraf qurğularla ünsiyyət qurmaq üçün istifadə olunan serial protokoldur. Hər bir periferik cihazın, verilən mesajın təyin olunan alıcısı olaraq təyin edilməsi üçün istifadə edilən unikal bir şəxsiyyət nömrəsi olmalıdır. Bu ünvanlar cihaz istehsalçısı tərəfindən təyin olunur və əksər hallarda dəyişdirilə bilməz. Bir kəşfiyyatçı bağlı cihazları axtaran bütün mümkün ünvanları tarar və tapdıqlarını bildirir. Bu, işarələnməmiş çipləri müəyyən etməyə kömək edir, çünki çiplə bağlı daha çox məlumat əldə etmək üçün ünvana Google -dan baxıla bilər.

Bu cihaz, Arduino UNO -da Raspberry Pi i2cdetect skriptinin davranışını təqlid edir, bağlı cihazlar axtaran bütün mümkün i2c ünvanlarını koklayır və nəticələrini 16x02 LCD ekranda gözəl çap edir.

Ekrandakı hər şeyi uyğunlaşdırmaq üçün həm ünvanın həm yuxarı, həm də aşağı hissələri nəticələrin üstünə yazılır, yüksək hissəsi qalın bir yazı tipindədir. İki düymə bir anda 16 ünvan göstərən ünvanlar arasında gəzməyə imkan verir. Bir cihaz aşkar edildiyi təqdirdə, yazma ünvanı olaraq göstərmək üçün W yazılacaq və oxu ünvanı olduğu halda R göstəriləcək. Bu ünvanda heç bir şey aşkar edilmədiyi təqdirdə, ekranda defis (-) göstəriləcək.

Addım 1: Materiallar

Materiallar
Materiallar
Materiallar
Materiallar

Seçim 1

1 x Arduino UNO

1 x 16x02 LCD ekran

1x 10K potensiometr

1x 330 ohm müqavimət

3x düymələri

Keçid kabelləri

1x I2C səviyyə dəyişdiricisi (material şəklində deyil)

Seçim 2

1 x Arduino UNO

LCD Keypad Shield (qalxanındakı düymələr istifadə edilməyəcək)

3x düymələri

Keçid kabelləri

1x I2C səviyyə dəyişdiricisi (material şəklində deyil)

Seçim 2 qurulacaq variantdır, çünki hazırda əlimdə olan budur. Səviyyə dəyişdiricisi dövrənin vacib bir hissəsidir, çünki hazırda əksər cihazlar 3.3V məntiq istifadə edir və Arduinodan gələn 5V onlara zərər verir.

(Şəkillərdə işarələnmiş material tələb olunmur.)

Addım 2: Dövrə

Dövrə
Dövrə
Dövrə
Dövrə
Dövrə
Dövrə

Dövrə, LCD üçün Arduino nümunələri üçün standart pinout, I2C üçün standart sancaqlar və düymələr üçün 3 ehtiyat pin istifadə edərək olduqca düz irəlidir.

LCD Keypad Shield istifadə edirsinizsə, LCD üçün pinout dəyişir, lakin bu artıq kodda nəzərə alınır. LCD Keypad Shield düymələri iki mümkün tətbiq dövrəsi arasındakı uyğunluğu pozan analoq bir sorğu üsulu tələb etdiyi üçün istifadə edilmir (Shield və tək başına LCD)

Addım 3: Kod

Kod
Kod

LCD Keypad Shield istifadə edildiyi təqdirdə, #define LCD_SHIELD eskizin əvvəlində şərhsiz qalmalıdır. Əks təqdirdə, ilk diaqramı istifadə etmək üçün şərh yazın.

Addım 4: Nəticələr

Nəticələr
Nəticələr
Nəticələr
Nəticələr
Nəticələr
Nəticələr

Kodu və dövrəni sınamaq üçün BQ32000 RTC çipi və MMA8452Q sürətləndirici istifadə edildi. Şəkillərdən də göründüyü kimi, cihaz 4 ünvanı müəyyən edir: 0x3A və 0xD0 yazma ünvanları, 0x3B və 0xD1 isə oxunan ünvanlar kimi. Bu ünvanlar test cihazlarına uyğundur, buna görə kod işləyir.

Bu qısa müddətdə bu layihəni sınamaq üçün lazım olan materialları əldə etməyimə kömək etdikləri üçün Beijing Makerspace -dəki xeyirxah qızlara, Fu Yao və Liu Xin -ə təşəkkürümü bildirirəm.

Tövsiyə: