I am trying to build this project and there is this advice:
My leads are well over 1 meter so should I shorten them before I get too far into this ?
Oh yeah, I am using an Arduino Feather Huzzah rather than a Raspberry PI.
the I2C bus, which connects it to the RPi, does not work much over 1 metre of unshielded cable (less if shielded). To be able to receive weak signals from satellites, we needed to keep the RFI to a minimum. By using a short antenna probe on the end of a flying, coaxial, lead connected to a Yaesu FT-817, we found that the main sources of RFI in the SARCTRAC system were:
Thank you Fungus ;D Though I confess that I dont know how to lower the pullup resistance. There is nothing between the Feather Huzzah and the device (BNO055) other than wire. From the data sheet it looks like a 10k pullup is in place which from your statement seems adequate.
I2C Pins
SCL - I2C clock pin, connect to your microcontrollers I2C clock line. This pin can be used with 3V or 5V logic, and there's a 10K pullup on this pin.
SDA - I2C data pin, connect to your microcontrollers I2C data line. This pin can be used with 3V or 5V logic, and there's a 10K pullup on this pin.
You add external pullup resistors in parallel with the 10K resistors already there. For example adding 10K resistors would lower the total pullup resistance to 5K. 4.7K is the default pullup called for in many examples.
With your longer wires you may need even stronger pullup. Then try the suggestion of JCA34F.
groundFungus:
Use low capacitance wire (CAT5 cable).
There is no distance spec in I2C, but there is a maximum capacitance spec of 400pf. CAT5 is about 50pf per meter but the connectors add some additional capacitance.
You need a pullup resistor on the i2c lines. The exact resistor value can't be determined without an oscilloscope, but 3.2K to 10K usually works. An i2c device communicates by pulling the data line low. If the pullup resistor is too low, like below 3.2K, then the device can't pull the data line low. If it's too high, then the device may think the data line is already low from another device on the i2c bus.