Disturbed communication on I2C bus
I would like to ask about problem related to I2C communication on UniPi 1.1.
To be more precise, from time to time my application written in python crashes with the error OSError error: [Errno 121] Remote I/O, which indicates that the device is not connected to the I2C bus. It' not true, since for most of the time it's working just fine.
I've noticed that UniPi is using I2C for controlling peripheral devices e.g relays.
Might it be that I'm trying to get access to I2C bus from python application, while EVOK is executing some other command via I2C?
Here is exact topology of I2C network:
According to documentation:
BH1750 has 10kΩ pull-up resistors (pinout or electrical scheme)
ICM20948 has 10kΩ pull-up resistors (pinout or electrical scheme)
LiDAR has internal 3kΩ (here is information), but documentation recommends to connect additional external 4.7kΩ (i did NOT connect that).
I checked the impact of BH1750 sensors and I2C speed on the I2C bus communication quality.
Here are results: https://we.tl/t-bBP0UiNtLZ
I noticed that every time the LiDAR stops responding there is a small peak on the I2C data bus.
Here is screen of successful read from LiDAR, noice and LiDAR does not ACK frame anymore:
This error occurs both with and without the BH1750 sensors connected. At lower speeds it occurs much less frequently, but it also occurs.
I found the source of the problem, but I don't know how to solve it. The problem is caused by connecting an electrical device (resistor like a light bulb) to the circuit that supplies power to the UniPi. I tried to replace the power supply, but the same thing happens.
Do you have any tip how to solve that issue?
It is a problem related to power-supply.
It was some voltage peaks while connecting anything to the same circuit as power-supply.
I've a better one (Phoenix Contact) and it's working stable now.