Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
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
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
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
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
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.