Ich hatte die Möglichkeit, BNO005 auf i2C mit Raspberry Pi 3B auszuführen, und bin gestolpert, sodass ich es als Memorandum belassen werde.
Die verwendete Sprache ist Python. Die Entwicklungsumgebung wurde gemäß [hier] festgelegt (https://learn.adafruit.com/bno055-absolute-orientation-sensor-with-raspberry-pi-and-beaglebone-black/hardware). Als ich das offizielle Beispiel von hier verschoben habe, funktionierte es mit I2C nicht so wie es war.
Ich habe den folgenden Code in Zeile 30 geändert.
Befor
# Create and configure the BNO sensor connection. Make sure only ONE of the
# below 'bno = ...' lines is uncommented:
# Raspberry Pi configuration with serial UART and RST connected to GPIO 18:
bno = BNO055.BNO055(serial_port='/dev/serial0', rst=18)
# BeagleBone Black configuration with default I2C connection (SCL=P9_19, SDA=P9_20),
# and RST connected to pin P9_12:
#bno = BNO055.BNO055(rst='P9_12')
After
# Create and configure the BNO sensor connection. Make sure only ONE of the
# below 'bno = ...' lines is uncommented:
# Raspberry Pi configuration with serial UART and RST connected to GPIO 18:
bno = BNO055.BNO055(rst=18)
# BeagleBone Black configuration with default I2C connection (SCL=P9_19, SDA=P9_20),
# and RST connected to pin P9_12:
#bno = BNO055.BNO055(rst='P9_12')
Ich habe bei der Initialisierung von BNO005 die Kommunikationsschnittstelle nicht angegeben. Auf diese Weise wurde I2C automatisch eingestellt.
Ich habe es gefunden, indem ich mir den folgenden Teil der BNO005.py-Bibliothek angesehen habe.
if serial_port is not None:
# Use serial communication if serial_port name is provided.
# Open the serial port at 115200 baud, 8N1. Add a 5 second timeout
# to prevent hanging if device is disconnected.
self._serial = serial.Serial(serial_port, 115200, timeout=serial_timeout_sec,
writeTimeout=serial_timeout_sec)
else:
# Use I2C if no serial port is provided.
# Assume we're using platform's default I2C bus if none is specified.
if i2c is None:
import Adafruit_GPIO.I2C as I2C
i2c = I2C
# Save a reference to the I2C device instance for later communication.
self._i2c_device = i2c.get_i2c_device(address, **kwargs)
Selbst wenn Sie I2C verwenden, wollte ich, dass Sie es in die Erklärung des Beispielcodes schreiben ....
Recommended Posts