Tabla de contenido:

Sniffer Arduino I2C: 4 pasos
Sniffer Arduino I2C: 4 pasos

Video: Sniffer Arduino I2C: 4 pasos

Video: Sniffer Arduino I2C: 4 pasos
Video: How I2C Communication Works and How To Use It with Arduino 2024, Noviembre
Anonim
Sniffer Arduino I2C
Sniffer Arduino I2C

I2C es un protocolo en serie que se utiliza para comunicar un microcontrolador con periféricos externos conectados al mismo circuito. Cada periférico debe tener un número de identificación único llamado dirección que se utiliza para identificarlo como el destinatario previsto de un mensaje determinado. Esas direcciones son asignadas por el fabricante del dispositivo y la mayoría de las veces no se pueden cambiar. Un rastreador escanea todas las direcciones posibles en busca de dispositivos conectados e informa los que encuentra. Esto ayuda a identificar los chips sin marcar, ya que luego la dirección se puede buscar en Google para obtener más información sobre el chip.

Este dispositivo imita en un Arduino UNO el comportamiento del script Raspberry Pi i2cdetect, rastreando todas las posibles direcciones i2c en busca de dispositivos conectados e imprimiendo los resultados de manera agradable en una pantalla LCD de 16x02.

Para ajustar todo en la pantalla, tanto la parte alta como la baja de la dirección se imprimen encima de los resultados, y la parte alta está en negrita. Dos botones permiten navegar entre las direcciones, mostrando 16 direcciones a la vez. En caso de que se detecte un dispositivo, se imprimirá W para mostrarlo como una dirección de escritura y R se mostrará en caso de que sea una dirección de lectura. En caso de que no se detecte nada en esa dirección, se mostrará un guión (-) en la pantalla.

Paso 1: Materiales

Materiales
Materiales
Materiales
Materiales

Opción 1

1 x Arduino UNO

1 x pantalla LCD 16x02

1 potenciómetro de 10K

1x resistencia de 330 ohmios

3x pulsadores

Cables de salto

1x cambiador de nivel I2C (no en la imagen de materiales)

opcion 2

1 x Arduino UNO

Protector de teclado LCD (los botones del protector no se utilizarán)

3x pulsadores

Cables de salto

1x cambiador de nivel I2C (no en la imagen de materiales)

La opción 2 es la que se construirá porque eso es lo que tenía a mano en este momento. El cambiador de nivel es una parte importante del circuito ya que hoy en día la mayoría de los dispositivos usan lógica de 3.3V y los 5V del Arduino los dañan.

(En las imágenes, no se requiere el material tachado).

Paso 2: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

El circuito es bastante sencillo, utilizando el pinout estándar para los ejemplos de Arduino para la pantalla LCD, los pines predeterminados para I2C y 3 pines de repuesto para los botones.

En caso de que utilice el protector del teclado LCD, la distribución de pines de la pantalla LCD cambia, pero eso ya se considera dentro del código. Los botones del protector del teclado LCD no se utilizan porque requieren un método de sondeo analógico que rompe la compatibilidad entre los dos posibles circuitos de implementación (protector y LCD independiente)

Paso 3: Código

Código
Código

En caso de que se utilice el protector del teclado LCD, #define LCD_SHIELD debe dejarse sin comentar al principio del boceto. De lo contrario, coméntelo para usar el primer diagrama.

Paso 4: Conclusiones

Conclusiones
Conclusiones
Conclusiones
Conclusiones
Conclusiones
Conclusiones

Para probar el código y el circuito, se utilizaron un chip BQ32000 RTC y un acelerómetro MMA8452Q. Como se puede ver en las imágenes, el dispositivo está detectando 4 direcciones: 0x3A y 0xD0 como direcciones de escritura, y 0x3B y 0xD1 como direcciones de lectura. Estas direcciones corresponden a los dispositivos de prueba, por lo que el código está funcionando.

Me gustaría agradecer a las amables chicas de Beijing Makerspace, Fu Yao y Liu Xin, por ayudarme a obtener los materiales necesarios para probar este proyecto en tan poco tiempo.

Recomendado: