Tartalomjegyzék:

Arduino I2C szaglás: 4 lépés
Arduino I2C szaglás: 4 lépés

Videó: Arduino I2C szaglás: 4 lépés

Videó: Arduino I2C szaglás: 4 lépés
Videó: Technikai szenzorok 2024, November
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

Az I2C egy soros protokoll, amelyet a mikrokontroller és az ugyanazon áramkörhöz csatlakoztatott külső perifériák közötti kommunikációra használnak. Minden perifériának rendelkeznie kell egyedi azonosítószámmal, amelyet úgy hívnak, hogy azonosítja azt az üzenet kívánt címzettjeként. Ezeket a címeket az eszköz gyártója rendeli hozzá, és legtöbbször nem módosítható. Egy szippantó beolvassa az összes lehetséges címet, és csatlakoztatott eszközöket keres, és jelentést tesz a megtaláltról. Ez segít azonosítani a jelöletlen chipeket, mivel ekkor a cím google -ban megtalálható a chipre vonatkozó további információkért.

Ez az eszköz egy Arduino UNO -n utánozza a Raspberry Pi i2cdetect szkript viselkedését, szagolgatva az összes lehetséges i2c -címet, amelyek csatlakoztatott eszközöket keresnek, és szépen kinyomtatják az eredményeket egy 16x02 -es LCD -képernyőn.

Annak érdekében, hogy a képernyőn minden elférjen, a cím magas és alsó része is az eredmények fölé kerül nyomtatásra, a felső rész vastag betűvel van ellátva. Két nyomógomb lehetővé teszi a címek közötti navigációt, egyszerre 16 címet. Ha egy eszközt észlel, W nyomtatásra kerül, hogy írási címként jelenjen meg, és R jelenik meg, ha olvasási címről van szó. Ha ezen a címen nem észlel semmit, a képernyőn megjelenik egy kötőjel (-).

1. lépés: Anyagok

Anyagok
Anyagok
Anyagok
Anyagok

1.opció

1 x Arduino UNO

1 x 16x02 LCD képernyő

1x 10K potenciométer

1x 330 ohmos ellenállás

3x nyomógombok

Jumper kábelek

1x I2C szintváltó (nem az anyag képén)

2. lehetőség

1 x Arduino UNO

LCD kezelőpajzs (a pajzs gombjai nem használhatók)

3x nyomógombok

Jumper kábelek

1x I2C szintváltó (nem az anyag képén)

A 2. opciót fogják felépíteni, mert jelenleg ez volt a kezemben. A szintváltó az áramkör fontos része, mivel manapság a legtöbb eszköz 3.3V -os logikát használ, és az Arduino 5V -ja károsítja őket.

(A képeken az áthúzott anyag nem kötelező.)

2. lépés: Áramkör

Áramkör
Áramkör
Áramkör
Áramkör
Áramkör
Áramkör

Az áramkör meglehetősen egyenes irányú, az Arduino példákhoz használt szabványos érintkezővel, az LCD -hez alapértelmezett csapokkal, az I2C alapértelmezett csapjaival és 3 tartalékcsappal a nyomógombokhoz.

Abban az esetben, ha az LCD billentyűpajzsot használja, az LCD kijelzése megváltozik, de ez már szerepel a kódban. Az LCD billentyűpajzs gombjait nem használják, mert analóg lekérdezési módszert igényelnek, amely megszakítja a két lehetséges megvalósítási áramkör (pajzs és önálló LCD) közötti kompatibilitást.

3. lépés: Kód

Kód
Kód

Az LCD kezelőpajzs használata esetén a #define LCD_SHIELD megjegyzést nem kell hagyni a vázlat elején. Ellenkező esetben megjegyzéssel használja az első diagramot.

4. lépés: Következtetések

Következtetések
Következtetések
Következtetések
Következtetések
Következtetések
Következtetések

A kód és az áramkör teszteléséhez egy BQ32000 RTC chipet és egy MMA8452Q gyorsulásmérőt használtunk. Amint a képeken is látható, a készülék 4 címet észlel: 0x3A és 0xD0 írási címekként, valamint 0x3B és 0xD1 olvasási címekként. Ezek a címek megfelelnek a teszteszközöknek, így a kód működik.

Szeretnék köszönetet mondani a Beijing Makerspace kedves lányainak, Fu Yao -nak és Liu Xin -nek, hogy ilyen rövid időn belül segítettek beszerezni a projekt teszteléséhez szükséges anyagokat.

Ajánlott: