I’ve been tinkering with the existing PCB layout (shown below) to see if power supply changes fix the Garmin LiDAR Lite (GLL) I²C interference.
I’ve basically removed the black cuboid 1.5A 5V switching power regulator using the space instead to add a 680uF electrolytic capacitor between 5V and ground near the GLL as specified in the docs. I then powered her up directly via the PCB, rather than indirectly via the RPi micro USB 5V output GPIO pin. I used a lab power supply which can handle up to 5A.
Hermione showed identical I²C errors with the GLL plugged in, even if not used. The PSU showed only 0.45mA at boot, 0.5mA with Hermione’s code running passively, and about 0.6A while she was ‘flying’. This strongly suggests the new PCB won’t solve the problem either. I am running out of fingers to cross 🙁
The option of using the GLL PWM output is still open, but I’m not keen to swap over to using the pigpio library this requires as it uses a daemon process in the background, unlike RPi.GPIO and RPIO which both directly access the /dev/gpio devices. I wonder how hard it would be to write my own PWM C library with python wrapper to epoll the GLL PWM pin? It would require a new PCB revision as would pigpio so there’s a PITA there too. For some reason, probably because this all just works on Zoe, I still want to keep banging my head to solve the I²C problems.