Problematic Rpi shield, Help! with controlling FETs (MCP23017) in Ubuntu 16.04.4 LTS through VCP FT230XS

Hi there!

I’ve got an MCP23017 16-Channel 8W 12V FET Solenoid Driver Valve Controller with IoT Interface with VCP FT230XS(usb) and I’d like to know if there are any examples of Python code addressing through the VCP FT230XS(usb) , what libraries can I use, and if someone can help me out pointing me to documentation that would help me with getting started on controlling the FETs.

So far I have found only examples of how to run it with SMBus on a Rpi addressing on bus (1) but I haven’t been able to install it in Windows either because of the SMbus library, base station and any i2c softwares are not for programming purpouses.

Also, the Rpi 3b+ will not boot if the shield is attached before conecting power to the Rpi, the only way it works is attaching the shield when the Rpi is already booted up. am I missing something with a Rpi boot config?? .



So are you trying to run this Python script on a Windows PC or on a RPi? If on a RPi are you using our USB to I2C converter to connect the I2C devices on the RPi or are you using one of our I2C adapters here:

tried Both:
1 case
-laptop(win7(on COM6) or ubuntu16.04(ttyUSB0) through " VCP FT230XS" to " MCP23017 16-Channel 8W 12V FET Solenoid Driver Valve Controller with IoT Interface" without luck of addressing to the device using pyserial, I have not found any examples doing that path, I really need support with that.

2 case (only for testing the MCP23017…)
-Rpi 3B+ with “I2C Shield for Raspberry Pi 3 & Pi2 with Outward Facing I2C Port Terminates over HDMI Port” through “I2C to IoT Interface Adapter” to “MCP23017 16-Channel 8W 12V FET Solenoid Driver Valve Controller with IoT Interface”, addressing with bus 1 and smbus library, just the shield doesn’t work as described before,my python code run ok.

OK. On the windows computer you will need to use something like our AnyI2C software here:

Windows does not expose a native I2C port so you cannot use libraries like SMBus. If this is not your intended use of the product I do not recommend going down that path unless you just want to use AnyI2C to test sensors.

On the Pi you will need to configure the Pi a bit to start using I2C devices on it. I have a video series here which explains getting started with our I2C devices connected to a RPi:

If you have any other questions please let us know.

Thank you,
Travis Elliott

Hi Travis,

Thank you for the response. However, that’s not really what I’m after… maybe I have made myself very clear so forgive me if that’s the case.

This is what I’m after:

My goal right now is to control the FETs using something other than a Raspberry. Hence, why I bought the USB Interface Adapter for NCD IoT Devices VCP FT230XS.

I bought the devices (all of them) because of the claim that the USB interface is (and I quote) “compatible with all programming languages and operating systems that support the FT230XS”.

So what I’m asking, from any of you guys, is to please help me be able to control the FETs (in linux or windows) using the USB adapter. I have been trying and reached a dead end sending the same bits as the AnyI2C through PySerial and I’ve had no luck.

I would truly appreciate it if you can share a bit of Python/C++ code in which you control the MCP23017 through the USB interface or if you point me to something else I can read so I can understand.

Thank you and looking forward to hearing from you soon.


Yes, the USB to I2C adapter is absolutely compatible with any programming language which can access a Serial/COM port. However we do not have a Python Library developed for it yet which means you would have to write the Python application to work through PySerial to interface with it. If you are capable of doing that then everything you need to know is in this guide:

Are you open to NodeJS? If so we might be able to put some sample code together for you since we are currently working on a NodeJS based project. @Trey can provide more input on that.

Thank you so much! Yes I would be open to NodeJS. I look forward to ckecking out that code (or the portion that could help me).

Hi! Happy to help, we picked NodeJS for our newest development project because it is platform independent. We also discovered node-red, which is a visual flow builder and allowed us to make graphical representations of our boards and use them with no code required. The basic dependencies for this setup are:

NodeJS LTS (install)
Python 2.x (install)

Once you have those installed you have a couple of options, you can

  1. Build a nodeJS library and include the ncd-red-mcp23017 package as a dependency (from your package directory, npm i ncd-red-mcp23017)

  2. Install node-red then run the ncd install line, npm i ncd-red-mcp23017, in the node red directory (usually C:.node-red).

If you have any questions about how to use the library, or run into any problems, feel free to let me know!