i2c es una configuración de colector abierto. Los pines de un dispositivo solo deben tirar de la línea hacia abajo o liberarlos (por ejemplo, establecerlos como entradas de alta impedancia), permitiendo que las resistencias de extracción i2c suban la línea a VCC. VCC puede ser cualquier cosa dentro de las especificaciones del dispositivo. En este caso, un pullup de 3.3v funcionará con el sensor, y en (AVR VCC 5v * 0.6) = 3v es más alto que el Logic High mínimo para el AVR. Solo debe asegurarse de que los pull-ups solo estén conectados a 3.3v, por lo que todos los demás deben eliminarse / eliminarse o, en el caso de los pull-ups internos, deben estar inhabilitados.
El módulo de sensor al que se vincula ya tiene resistencias de pull-up externas conectadas a su VCC (suponiendo 3.3v). Solo tiene que deshabilitar cualquier extracción interna en la biblioteca AVR o i2c que está usando (si está usando una).
Editar: Así es como se conectaría. El LD1117 es solo un regulador estándar de 3.3v.
simular este circuito : esquema creado usando CircuitLab
Alternativamente, puedes hacer transbordadores o transistores bidireccionales para el cambio de nivel, o desplazadores de nivel i2c dedicados.
¿Cómo obtengo un Arduino (5 V) y MPR121 (3.3 V) para hablar? y Conversión I2C 3.3 a 5.0 V también tiene más información.