If you see the error message
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid I2C peripheral
you are likely running code like this:
import machine i2c = machine.I2C(machine.Pin(5), machine.Pin(4))
Solution
The MicroPython API has changed (source: forum). You need to use this syntax instead:
import machine i2c = machine.I2C(-1, machine.Pin(5), machine.Pin(4))
-1
is the I2C ID that selects a specific peripheral. -1
selects a software I2C implementation which can work on most pins. See the MicroPython I2C class documentation for more details.