MCP9600 K-Type Thermocouple I2C Mini Module - Not finding the board

I’m connecting an ESP8266 to the above board. I’m running the following code:

#include <Wire.h>
#define Addr 0x64
long data1;
long data2;
long temp;
byte stat;

#define DISPLAY_ERROR false
#define LOOP_DELAY 10000
#define USER_PIN false

// Customize I2C bus pins for ESP8266 or ESP32
const int PIN_SCL = D1;
const int PIN_SDA = D2;

String I2Ctest() {
byte error;
int nDevices,address ;
String s;

s=“Scanning…\n”;

nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0) {
  s+="I2C device found at 0x";
  if (address<16)
    s+="0";
    s+=String(address,HEX);
    s+="\n";

  nDevices++;
} else if ( error > 0 ) {
  if ( DISPLAY_ERROR ) {
    s+="Unknow error at 0x";
    if (address<16)
      s+="0";
      s+=String(address,HEX);
      s+="\n";
  }  
}    

}
if (nDevices == 0)
s+=“No I2C devices found\n”;
else
s+=“done\n”;
return s;
}

void setup() {
Serial.begin(115200);
Serial.println(“I2C scanner”);
#if USER_PIN
Wire.begin(PIN_SDA, PIN_SCL);
#else
Wire.begin();
#endif
}

void loop() {
// put your main code here, to run repeatedly:
Serial.println(I2Ctest());
delay(LOOP_DELAY);
}

The following is what I see on the serial monitor screen:

Scanning…
No I2C devices found

I have tried it with and without the pull up resistors. It gives the same result. I am powering the board using 3.3V of the 8266 development board.

Thanks

Hi @bjmcontrols You could check if GND is the same (host-device), also check your wires SCL and SDA are not broken.

I have used I2C devices between 5V and 3V3 and they works well, I mean ESP8266 as Host (3V3), and sensors as Devices (5V). If you are using Arduino IDE, could try with “i2c_scanner.ino” test.

// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    https://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// Version 6, November 27, 2015.
//    Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>

void setup() {
  Wire.begin();

  Serial.begin(9600);
  while (!Serial); // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}

void loop() {
  int nDevices = 0;

  Serial.println("Scanning...");

  for (byte address = 1; address < 127; ++address) {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    byte error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.print(address, HEX);
      Serial.println("  !");

      ++nDevices;
    } else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  } else {
    Serial.println("done\n");
  }
  delay(5000); // Wait 5 seconds for next scan
}

I am not sure if the MCP9600 can be powering by 3.3V.

1 Like

Thanks for the prompt response mecatronicamade. Using a 5 volt supply was going to be my next move. Stay tuned.

1 Like

The 5V supply did not make a difference. I also tried your code and am getting the same response. I’ll keep trying. Thanks

Can you test with an arduino ?

Hello Bhaskar,

It does work with the Arduino. So, this is an IOT project for a customer. I have a number of other signals coming into the ESP. I could try an ESP32. Using an Arduino is not my first choice. Any suggestions?

Thanks

it has to do with i2c speed i think.

You are correct. You can see where I added a delay to slow it down. It’s now working. Thanks everyone.

#include <Wire.h>
#define Addr 0x64
long data1;
long data2;
long temp;
byte stat;

#define DISPLAY_ERROR false
#define LOOP_DELAY 10000
#define USER_PIN false

// Customize I2C bus pins for ESP8266 or ESP32
const int PIN_SCL = D1;
const int PIN_SDA = D2;

String I2Ctest() {
byte error;
int nDevices,address ;
String s;

s=“Scanning…\n”;

nDevices = 0;
for(address = 0; address < 127; address++ ) {
Wire.beginTransmission(address);
delay(10); //Added this delay
error = Wire.endTransmission();

if (error == 0) {
s+=“I2C device found at 0x”;
if (address<16)
s+=“0”;
s+=String(address,HEX);
s+=“\n”;

nDevices++;
} else if ( error > 0 ) {
if ( DISPLAY_ERROR ) {
s+=“Unknow error at 0x”;
if (address<16)
s+=“0”;
s+=String(address,HEX);
s+=“\n”;
}
}
}
if (nDevices == 0)
s+=“No I2C devices found\n”;
else
s+=“done\n”;
return s;
}

void setup() {
Serial.begin(115200);
Serial.println(“I2C scanner”);
#if USER_PIN
Wire.begin(PIN_SDA, PIN_SCL);
#else
Wire.begin();
#endif
}

void loop() {
// put your main code here, to run repeatedly:
Serial.println(I2Ctest());
delay(LOOP_DELAY);
}

Hello Bhaskar,

I finally got the system working connected on a breadboard, but somewhere between there and moving it over to a solder board I did something to break it. I can no longer communicate with the MCP9600. The “I2C Address Find” routine does not find the board. I have ordered another one but I thought I would check with you to see if there is anything I can do to see if this board is salvageable.

Thanks

Hi @bjmcontrols You already try to return to on a breadboard and test again?

What part is it broken? I think you could try salvageable it.

Huh! I tried it again this morning and its working fine. I have no idea why it stopped the other day and now is working fine. Anyway, thanks for your attention.

1 Like