Sommario:

Sniffer Arduino I2C: 4 passaggi
Sniffer Arduino I2C: 4 passaggi

Video: Sniffer Arduino I2C: 4 passaggi

Video: Sniffer Arduino I2C: 4 passaggi
Video: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, Luglio
Anonim
Sniffer Arduino I2C
Sniffer Arduino I2C

I2C è un protocollo seriale utilizzato per comunicare un microcontrollore con periferiche esterne collegate allo stesso circuito. Ogni periferica deve avere un numero ID univoco chiamato indirizzo che viene utilizzato per identificarla come destinatario previsto di un determinato messaggio. Questi indirizzi sono assegnati dal produttore del dispositivo e la maggior parte delle volte non possono essere modificati. Uno sniffer scansiona tutti i possibili indirizzi alla ricerca di dispositivi connessi e segnala quelli che trova. Questo aiuta a identificare i chip non contrassegnati in quanto l'indirizzo può essere cercato su Google per ulteriori informazioni sul chip.

Questo dispositivo imita su un Arduino UNO il comportamento dello script i2cdetect di Raspberry Pi, annusando tutti i possibili indirizzi i2c alla ricerca di dispositivi collegati e stampando bene i risultati su uno schermo LCD 16x02.

Per adattarsi a tutto sullo schermo, sia la parte alta che quella bassa dell'indirizzo sono stampate sopra i risultati, la parte alta è in grassetto. Due pulsanti consentono di navigare tra gli indirizzi, mostrando 16 indirizzi alla volta. Nel caso in cui venga rilevato un dispositivo, verrà stampato W per mostrarlo come indirizzo di scrittura e R se si tratta di un indirizzo di lettura. Nel caso in cui non venga rilevato nulla a quell'indirizzo, sullo schermo verrà mostrato un trattino (-).

Passaggio 1: materiali

Materiali
Materiali
Materiali
Materiali

opzione 1

1 x Arduino UNO

1 schermo LCD 16x02

1x potenziometro 10K

1x resistenza da 330 ohm

3x pulsanti

Cavi jumper

1x cambio di livello I2C (non sull'immagine dei materiali)

opzione 2

1 x Arduino UNO

Schermo tastiera LCD (i pulsanti sullo schermo non verranno utilizzati)

3x pulsanti

Cavi jumper

1x cambio di livello I2C (non sull'immagine dei materiali)

L'opzione 2 è quella che verrà costruita perché è quello che avevo a portata di mano al momento. Il traslatore di livello è una parte importante del circuito poiché al giorno d'oggi la maggior parte dei dispositivi utilizza la logica a 3,3 V e i 5 V di Arduino li danneggiano.

(Nelle immagini, il materiale barrato non è richiesto.)

Passaggio 2: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

Il circuito è piuttosto semplice, utilizzando il pinout standard per gli esempi Arduino per l'LCD, i pin predefiniti per I2C e 3 pin di ricambio per i pulsanti.

Nel caso in cui si utilizzi LCD Keypad Shield, il pinout per il display LCD cambia ma è già considerato all'interno del codice. I pulsanti LCD Keypad Shield non vengono utilizzati perché richiedono un metodo di polling analogico che interrompe la compatibilità tra i due possibili circuiti di implementazione (Shield e LCD stand alone)

Passaggio 3: codice

Codice
Codice

Nel caso in cui si utilizzi LCD Keypad Shield, #define LCD_SHIELD deve essere lasciato senza commento all'inizio dello sketch. Altrimenti, commentalo per usare il primo diagramma.

Fase 4: Conclusioni

Conclusioni
Conclusioni
Conclusioni
Conclusioni
Conclusioni
Conclusioni

Per testare il codice e il circuito, sono stati utilizzati un chip RTC BQ32000 e un accelerometro MMA8452Q. Come si può vedere dalle immagini, il dispositivo sta rilevando 4 indirizzi: 0x3A e 0xD0 come indirizzi di scrittura e 0x3B e 0xD1 come indirizzi di lettura. Questi indirizzi corrispondono ai dispositivi di test quindi il codice funziona.

Vorrei ringraziare le gentili ragazze di Beijing Makerspace, Fu Yao e Liu Xin, per avermi aiutato a ottenere i materiali necessari per testare questo progetto con così poco preavviso.

Consigliato: