Serial Control Motor Driver to work on Jetson Nano

Greetings,

My jetson nano is unable to detect the SCMD via I2C. So far I have set the config pins on the backside of the board to set the mode to I2C. The config pin is set to 1000 which results in address 0x5D and sets mode to I2C. I am not using the expansion port since I am just attempting to drive 2 motors. I have tried closing the user PU jumper and then, additionally, the exp. PU jumper but I am unable to find the device using: i2cdetect -y -r 0 or i2cdetect -y -r 1. Any help is very much appreciated!

I want to know:

  1. If I need to close the User Pullup jumper.

  2. If I need to close the Expansion Pullup jumper.

  3. Is there any additional ingredient (software install) needed to find device? I have the SCMD python library but I need to at least detect device on I2C before utilizing any sort of library.

This two articles seem to provide conflicting guidance on determining whether to close the jumpers. Both example do not use the expansion port.

a. Jetbot example states closing jumper is not necessary. Link: https://learn.sparkfun.com/tutorials/as … ai-kit/all

b. Hookup guide states both Expansion and User PU jumpers need be closed. Link: https://learn.sparkfun.com/tutorials/se … 1593206449

I know that the examples and library uses the address 0x5D, however can you confirm if you change the address that the i2cdetect picks up a different address?

I have tried changing the address via config jumper but so far none of the device’s possible addresses are detected. I think the issue is my setup. Can you clarify, if closing the user PU jumper will enable internal pull-up resistors? Can I just leave the user PU jumper open and insert my pull up resistors to the SDL and SCL lines? Thanks

That jumper enables pull-up resistors but they are external resistors found on the board near the header pins.

I am now able to see the device using i2cdetect -y -r 0. The address is 0x58 (as expected per the config jumpers on the back of the board). When checking if motor driver connection is established I am using the following:

myMotor = qwiic_scmd.QwiicScmd(address=0x58)

But I receive an error after:

myMotor.is_connected()

Error is:

Error connecting to Device: 58, [Errno 121] Remote I/O error

Is there any additional ingredient needed to establish connection with the motor driver? Thanks for your help.

Since this is an older kit, the code could have issues. I’m trying to look through the examples GitHub, maintained by Nvidia, but I’m not able to narrow it down. What examples are you trying to run?