Connect and program esp8266 with arduino

I have the ESP8266 plugged into a MCP3428 board. I want to program it with the arduino IDE. When I plug it in to my computer via the usb cable, I see FT230X Basic UART appear under Other Devices in the device manager. Properties for this say drivers are not installed. This happens on both win7 & win10 computer. I see it says “Integrated FT232RL USB to UART Virtual COM Port” on the page for the ESP8266 product. I assume this is the port driver I would like to see? Is there a way to install this driver or the FT230X driver or otherwise get access to the ESP8266? The “port” item is dimmed in the arduino IDE so I can not change the port.
In simple terms, can you provide a roadmap of what I need to do to connect to the ESP8266 with the arduino IDE on windows through the usb port so I can upload my code? Thank you.


You can install the FTDI driver here:
After that is installed you should see a USB to Serial device listed under COM ports in your device manager.

If you have any other questions please let us know.

Thank you,
Travis Elliott

1 Like

Hi Travis,

Thank you for your quick responses. I am now seeing the board reported to be on COM8.

While we have the conversation open, can you recommend a proper library package to install in the arduino IDE to support the ncd ESP8266? I am currently getting unknown board when I exercise the “Get Board Info” command (I have one package called “Board Identify” installed). I have a Boards Manager package called ESP8266 from ESP8266 Community version 3.0.2 installed and I have currently set the board to “Generic ESP8266 Module”. I also see something about Espressif FW: nonos-sdk-2.2.1+100. I am using arduino IDE v1.8.13.

I had success when compiling the code, but it fails when I try to compile and upload to the board.
The first line of the error report is “cannot find entry symbol app_entry” and then more stuff and ultimate failure.

One other question on the side. It seems that I saw something about using MS visual code IDE. Is this an option, and if so, would it provide better debug capability than the arduino IDE? Thanks again for your assistance.


I have been trying other ESP8266 boards in the Boards Manager like the Adafruit and Arduino and some others. For further information, it has been timing out on the connection to the board and saying - The selected serial port does not exist or your board is not connected.

Are you been putting the board into program mode before attempting to flash it? You have to hold the C button, press and release the R button, then release the C button. The Adafruit board library should work with it.

1 Like

ok, Sorry. I did that before, but forgot after unplug / replug in the usb port. I had been watching the red light on the MCP board to go dim and it never did. Now I have noticed the small blue light on the ESP board. I am getting data coming out now, but 0 reading for the raw data when using the ADC_read.ino from Kruisheer on github with a single channel. I will follow through with some other versions, dumb down to something most simple, etc. I’m definitely cooking with gas, but the gas, as typical, seems to have a few air bubbles in it, but I’m sure nothing that can not be overcome. Thank you for your patience and responses!

1 Like

I apologize, but it does not seem to return any data. Is it possible to offer any suggestions? I upgraded to latest version of arduino IDE and I wired the 4-20mA pressure sensor as suggested by Bhaskar and I am only using channel 1. When I place my volt meter inline, I am seeing 5.43mA current. I am receiving communication from the ESP8266 and can view the print statements in the serial monitor, but it does not appear to ever receive any data after the Wire.requestFrom() command. Wire.available() is always returning 0. Following is the simplified code that I am using:


void setup()
Wire.write(0x10); // continuous conversion, channel 1, 12-bit resolution

void loop()
unsigned int data[2];


// Read 2 bytes of data
Wire.requestFrom(0x68, 2);

if (Wire.available() == 2)
Serial.println(“data rcvd”);
data[0] =;
data[1] =;

// Output data to serial monitor
Serial.print("rawADC Value: ");

i will recommend this lib

Hi Bhaskar,
Thank you. I now have this lib you recommended working. As it turns out, I am getting error code=2 as the return on Wire.endTransmission(). Seems to be an ACK error, so I guess it is not finding anything to reply on the 0x68 address. I tried moving jumper 1 to high position and jumper 2 to low position for address of 0x70 with same result. I will continue to work on it, but thank you to anyone reading this who might have an idea to suggest. Sorry for the trouble. If I can get this working, I will need more boards :wink:

run this i2c scan

and use the scanned address in your app,.

1 Like

It replied. “There is / are 0 devices” I have been very careful with the hardware. I am using a grounded ESD mat and wrist band anytime I am close to the board. I will go through everything to see if I can find any errors. Maybe try to remove and reset the ESP8266? I also have a 4-20mA transmitter board with plans to control an actuator. I will give it a shot to see if I can get expected current output. Thank you.

i see the problem… you are using ESP8266 not ESP32. in this you will need to define the SCL and SDA lines.
if you are using ncd ESP8266 board then replace all Wire.begin() with Wire.begin(12, 14);

1 Like

Hi Bhaskar,
We took a step ahead with adding the lines callout in Wire.begin(). It was exciting to see something returned, but it does not seem correct. I spent the last 10 hours trying varying configurations, computers, channels, etc. I have a sensor under pressure and the values do not change when the pressure changes. I also have a 4-20mA current source simulator and I receive the same numbers, even when I modify the output current sent to the mpc3428 board.

I am still using the code library you recommended. When I am set at 12 bits, 14 bits and 16 bits resolution, respectively, I see raw_adc values of 1, 5, 21. I see the value for 16 bit change to 20 when I toggle the one shot mode, but it does not change at the other resolutions with toggling one shot.

When I try using channel 2, I see raw_adc values of 1, 4, 18. I have multiple decades of software development experience, but still not great at doing bit shift calculations so I wasn’t able to fully duplicate everything in the straight .ino program from Kruisheer due to not knowing the binary or hex code to set proper configuration, but I do also see a raw_adc value of 1 when using this library with its default setting of channel 1, 12 bits, o toggle and gain of 1.

I also purchased a single channel mpc3428 product from ncd and am moving to see if I can get different results with it, The current design for our product would require 3 of the 8 channel receivers and 2 of the 4 channel 4-20mA output boards for each system. We have a number of orders in the q once we demonstrate everything working. Our pilot plant worked, but a major upgrade is to automate things, thus our need for boards like you provide.

Is there any other advice you can provide? Is there any other data I can send from my testing that would be helpful? I could easily slip down from Iowa if it would make it easier to provide support :wink: Thank you very much for any assistance you can provide.

Best Regards

Hi Bhaskar and Friends,

Good news, I am able to get the ncd 4 channel 4-20mA current transmitter board to work successfully with your code from github. The day is looking up. I will continue with my efforts on the receiver board.

Best Regards

Hi Folks,

As it turns out, the other one I had bought was the 2-channel ADS1115 board along with a shield for an Arduino. I am using an UNO Wifi Rev2. This is the ncd board:

I am able to get this 2-channel ADS1115 to work. I have two different pressure sensors connected. One has a 0-150psi range and the other has a 0-300psi range. I am able to see them output a coordinated pressure reading.

With the 8-channel board, I switched the ESP8266 between the 8-channel current receiver and the 4-channel current transmitter, but still could not get the receiver to work. I can only conclude that there could be something wrong with the board and I would like to request to send it back. I would like to have it tested and verified to work or replaced and then I will be able to order more. Thank you.

Best Regards,


If you run I2C bus scan code does the address for the 8 channel board appear in the list of discovered devices on the I2C bus?

Yes, it shows addresses 0x68 and 0x6E.

Typically if the device appears in the I2C bus scan then it is functional. What do you mean you could not get the receiver to work? Was it returning incorrect readings or no readings? What is the model of the 8 input receiver and what code are you using to interface with it on the Arduino module. I apologize if this information was already stated in this thread but it is a very long thread.

It appears to be returning incorrect readings. When toggling between 12, 14 and 16 bit mode, it returns raw_adc values of 1, 5 and 21, respectively, on channel 1. In 16 bit mode, it returns a value of 20 when I toggle 1-shot mode. It does not affect other bit modes. On channel 2, it shows values of 1, 4 and 18, respectively. This same result happens with both a pressure transducer and a plctools analog current simulator attached.

The model of the receiver is:

I am using the code recommended by Bhaskar: GitHub - ncdcommunity/Arduino_Library_MCP3428_16Bit_4Channel_ADC: MCP3428 16Bit 4Channel Analog To Digital Converter Interfacing With Arduino

I ran the i2c_scan code again this morning. It will not open the port with one of the ESP8266s attached. It says port busy, even after computer restart, remove mouse, remove port from device manager, multiple reboots with device plugged and unplugged, use of rst button… I switched to the other ESP8266 which comes up under another port and it works fine. Maybe a separate issue, I don’t know. I have 2 ESP8266s from purchasing the board listed above and the 4-channel current transmitter board. I have to step out to do some hay stuff for a few hours, but will return to the computer shortly.

Thank you.

If nothing is connected to the inputs then readings of 1, 5, and 21 in 12, 14, and 16 bit modes(respectively) sounds acceptable. The readings generally are never 0 so increasing the resolution will result in higher values due to scale. I would connect a 12mA signal to the inputs and see if the readings go up as expected.

As for accessing connection to the ESP8266 in question make sure no other software is attempting to connect to the port. Serial ports only allow 1 connection so if software is connected to it no other device will be able to connect to it.