Taula de continguts:

Sniffer Arduino I2C: 4 passos
Sniffer Arduino I2C: 4 passos

Vídeo: Sniffer Arduino I2C: 4 passos

Vídeo: Sniffer Arduino I2C: 4 passos
Vídeo: How I2C Communication Works and How To Use It with Arduino 2024, Juliol
Anonim
Sniffer Arduino I2C
Sniffer Arduino I2C

I2C és un protocol sèrie utilitzat per comunicar un microcontrolador amb perifèrics externs connectats al mateix circuit. Cada perifèric ha de tenir un número d'identificació únic anomenat adreça que s'utilitzi per identificar-lo com el destinatari d'un missatge determinat. Aquestes adreces són assignades pel fabricant del dispositiu i la majoria de les vegades no es poden canviar. Un sniffer analitza totes les adreces possibles a la recerca de dispositius connectats i informa de les que troba. Això ajuda a identificar els xips no marcats, ja que es pot buscar l'adreça per obtenir més informació sobre el xip.

Aquest dispositiu imita en un Arduino UNO el comportament de l’escriptura i2cdetect de Raspberry Pi, ensumant totes les adreces i2c possibles que busquen dispositius connectats i imprimint els resultats molt bé en una pantalla LCD de 16x02.

Per adaptar-se a tot el que apareix a la pantalla, les parts alta i baixa de l’adreça s’imprimeixen per sobre dels resultats, la part alta apareix en una lletra negreta. Dos polsadors permeten navegar entre les adreces, mostrant 16 adreces alhora. En cas que es detecti un dispositiu, s'imprimirà W per mostrar-lo com a adreça d'escriptura i R es mostrarà en cas que es tracti d'una adreça de lectura. En cas que no es detecti res en aquesta adreça, es mostrarà un guionet (-) a la pantalla.

Pas 1: materials

Materials
Materials
Materials
Materials

opció 1

1 x Arduino UNO

Pantalla LCD 1 x 16x02

1x potenciòmetre de 10K

1x resistència de 330 ohms

3 botons polsadors

Cables de pont

1 canvi de nivell I2C (no a la imatge dels materials)

Opció 2

1 x Arduino UNO

Escut del teclat LCD (no s'utilitzaran els botons de l'escut)

3 botons polsadors

Cables de pont

1 canvi de nivell I2C (no a la imatge dels materials)

L'opció 2 és la que es construirà perquè és el que tenia a mà en aquest moment. El canvi de nivell és una part important del circuit, ja que actualment la majoria dels dispositius utilitzen una lògica de 3,3 V i els 5 V de l’Arduino els fan malbé.

(A les imatges no es requereix el material ratllat.)

Pas 2: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

El circuit és força senzill, utilitzant el pinout estàndard per als exemples d’Arduino per a la pantalla LCD, els pins predeterminats per a I2C i 3 pins de recanvi per als botons.

En cas que utilitzeu l’escut del teclat LCD, el pinout de la pantalla LCD canvia, però això ja es considera dins del codi. Els botons LCD Keypad Shield no s’utilitzen perquè requereixen un mètode de sondeig analògic que trenqui la compatibilitat entre els dos circuits d’implementació possibles (Shield i LCD autònom)

Pas 3: Codi

Codi
Codi

En cas que s’utilitzi l’escut del teclat LCD, #define LCD_SHIELD s’ha de deixar sense comentar al principi de l’esbós. En cas contrari, comenteu-lo per utilitzar el primer diagrama.

Pas 4: Conclusions

Conclusions
Conclusions
Conclusions
Conclusions
Conclusions
Conclusions

Per provar el codi i el circuit, es va utilitzar un xip RTC BQ32000 i un acceleròmetre MMA8452Q. Com es pot veure a les imatges, el dispositiu detecta 4 adreces: 0x3A i 0xD0 com a adreces d’escriptura i 0x3B i 0xD1 com a adreces llegides. Aquestes adreces corresponen als dispositius de prova, de manera que el codi funciona.

M'agradaria donar les gràcies a les amables noies de Beijing Makerspace, Fu Yao i Liu Xin, per ajudar-me a obtenir el material necessari per provar aquest projecte amb tan poc temps d'antelació.

Recomanat: