Lopy doesn't send data via LoRa while using SPI and I2C sensor
-
Hello guys,
I'm trying to do a prototype that would send data of 2 sensors to another lopy. The two sensors are, pressure sensor BME280 (I²C) and accelerometre LSM9DS0 (SPI). The LoRa Raw connection between the 2 lopy4 works fine (I've tested it with many projects already). Sending data via LoRa works fine when I only use 1 sensor. But if I connect both the sensors and instanciate SPI Bus and I2C Bus, I only receive empty buffers.Did anyone manage to use SPI and I2C at the same time ?
Here is a look at my main.py
If I uncomment the code under "#-------------BME280" it doesn't work anymore, just by instanciating the I²C.
I'm not using the same clock for SPI and I2C as I saw on an other topic that it didn't work.
main.pythanks in advance
-
@robert-hh Ho boy, you might be right, I test it with an other pin and come back to you if I still have problems ! ;)
-
@gaet P6 is used for the communication to the Lora module. See: https://docs.pycom.io/gitbook/assets/lopy4-pinout.pdf
-
@robert-hh Hi Robert,
I don't use the same clock pins for SPI and I2C. You can see it in the code I didn't share yet in the bme280.py library here :
bme280.py
-
@gaet I do not see your BME280 code, but if you do not specify a pin for SCL, I2C and SPI use both P10 for clock, which is different. (SPI: mode OUT, quiet state low, I2C: mode OPEN_DRAIN, quiet mode high)
-
Yes the chip select are set to 0 when used and then set back to 1, you can see it in the function writeregistre() and readRegistre() in the lsm9ds0.py library file that I wrote (except for all the registre address)
I entache the library :
lsm9ds0.py
-
Check if LSM9DS0 CS_G and CS_XM are correctly driven to 0 only when you need to communicate with the component , as lopy4 spi pin 38,22,18 is used by sx1272 chip to work properly (this chip is used for Lora/Sigfox) you must ensure that LSM9DS0 CS_G and CS_XM must be set to '1' when you want to use radio.
(where is the source of "lsm9ds0" library you used ?)