Hello,
I am unable to utilize the serial monitor with my QWIIC micro.
I have tried everything I know to get this working. When I open the serial monitor nothing happens. Tried multiple sketches. Regular arduino mega board works.
Stats:
-
Blink sketch works, anything with serial monitor does not work.
-
USB cable purchased from sparkfun
-
Win10 Build1903
-
Arduino 1.8.12
-
Sparkfun SAMD boards 1.7.4
-
Arduino SAMD boards 1.8.5
Using Serial monitor code from here(Example 2):
https://learn.sparkfun.com/tutorials/sp … eshooting
Capture of the arduino output(bootloader problem?):
https://drive.google.com/file/d/1iw7gf2 … sp=sharing
Capture of Serial monitor and Tools menu:
https://drive.google.com/file/d/1idYrLR … sp=sharing
I can see text in your serial monitor so that’s working.
What is it you’re expecting to see? Do you have anything connected to the Serial pins D16 and D17?
Chris- there is no reply in that text as shown in the troubleshooting guide. Not sure where the visible text comes from in the serial monitor but it is using the serialusb library rather than serial. This is a bare board I am trying to troubleshoot.
See below for an upload of a 1 second blink and serial write sketch. Obviously the serial is working as I am able to upload the code and it blinks. Serial monitor on 2 different pc does not return any values.
https://youtu.be/IxOTD2yFrGo
Can you please link to the code you are using?
See Image and code below.
https://drive.google.com/file/d/1Lj_AKB … sp=sharing
/*
* SerialOutput sketch
* Print numbers to the serial port
*/
void setup()
{
Serial.begin(9600); // send and receive at 9600 baud
pinMode(LED_BUILTIN, OUTPUT);
}
int number = 0;
void loop()
{
Serial.print("The number is ");
Serial.println(number); // print the number
digitalWrite(LED_BUILTIN, HIGH);
delay(500); // delay half second between numbers
number++; // to the next number
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
Can you try using SerialUSB instead of Serial?
Thank you Brandon that worked.
/*
* SerialOutput sketch
* Print numbers to the serial port
*/
void setup()
{
SerialUSB.begin(9600); // send and receive at 9600 baud
pinMode(LED_BUILTIN, OUTPUT);
}
int number = 0;
void loop()
{
SerialUSB.print("The number is ");
SerialUSB.println(number); // print the number
digitalWrite(LED_BUILTIN, HIGH);
delay(500); // delay half second between numbers
number++; // to the next number
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
However I just tried the same replacement in the code provided for the thermocouple amp. The serial monitor does not display anything. Uploaded to a arduino nano it works fine. There is something odd going on here with the board configuration. Would be glad to help you find a bug.
/*
Temperature Measurements with the MCP9600 Thermocouple Amplifier
By: Fischer Moseley
SparkFun Electronics
Date: July 8, 2019
License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware License).
This example outputs the ambient and thermocouple temperatures from the MCP9600 sensor.
Hardware Connections:
Attach the Qwiic Shield to your Arduino/Photon/ESP32 or other
Plug the sensor onto the shield
Serial.print it out at 115200 baud to serial monitor.
*/
#include <SparkFun_MCP9600.h>
MCP9600 tempSensor1;
MCP9600 tempSensor2;
void setup(){
SerialUSB.begin(115200);
Wire.begin();
Wire.setClock(100000);
tempSensor1.begin(); // Uses the default address 0x60 for SparkFun
tempSensor2.begin(0x67); // Default address for SparkX
//check if the sensor is connected
if(tempSensor1.isConnected()){
SerialUSB.println("Device will acknowledge!");
}
else {
SerialUSB.println("Device did not acknowledge! Freezing.");
while(1); //hang forever
}
//check if the Device ID is correct
if(tempSensor1.checkDeviceID()){
SerialUSB.println("Device ID is correct!");
}
else {
SerialUSB.println("Device ID is not correct! Freezing.");
while(1);
}
}
void loop(){ //print the thermocouple, ambient and delta temperatures every 200ms if available
if(tempSensor1.available() || tempSensor2.available() ){
SerialUSB.print("Thermocouple1: ");
SerialUSB.print(tempSensor1.getThermocoupleTemp());
SerialUSB.print(" °C Ambient: ");
SerialUSB.print(tempSensor1.getAmbientTemp());
SerialUSB.print(" °C Temperature Delta: ");
SerialUSB.print(tempSensor1.getTempDelta());
SerialUSB.print(" °C ");
SerialUSB.print("Thermocouple2: ");
SerialUSB.print(tempSensor2.getThermocoupleTemp());
SerialUSB.print(" °C Ambient: ");
SerialUSB.print(tempSensor2.getAmbientTemp());
SerialUSB.print(" °C Temperature Delta: ");
SerialUSB.print(tempSensor2.getTempDelta());
SerialUSB.print(" °C");
SerialUSB.println();
}
delay(20);
}
What’s the baud rate on the serial monitor? You were using 9600 before and the new example uses 115200
I tried both speeds in the thermocouple program. And flipped the drop down on the serial monitor to match.
Added a wait and delay until serial connection is open. Turns out it is not a serial problem after using SerialUSB.
Now Device ID is not matching. This code works on another Arduino. I have tried the qwiic connector and hardwiring to SDA/SCL. Same result. Does not work commenting out that ID check no serial data prints out.
SERIAL MONITOR IMAGE:
https://drive.google.com/file/d/1sI8sc6 … sp=sharing
/*
Temperature Measurements with the MCP9600 Thermocouple Amplifier
By: Fischer Moseley
SparkFun Electronics
Date: July 8, 2019
License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware License).
This example outputs the ambient and thermocouple temperatures from the MCP9600 sensor.
Hardware Connections:
Attach the Qwiic Shield to your Arduino/Photon/ESP32 or other
Plug the sensor onto the shield
SerialUSB.print it out at 115200 baud to serial monitor.
*/
#include <SparkFun_MCP9600.h>
MCP9600 tempSensor;
void setup(){
SerialUSB.begin(115200);
Wire.begin();
Wire.setClock(100000);
tempSensor.begin(); // Uses the default address 0x60 for SparkFun
//tempSensor.begin(0x66); // Default address for SparkX
while(!SerialUSB)
{
}
delay(2000);
//check if the sensor is connected
if(tempSensor.isConnected()){
SerialUSB.println("Device will acknowledge!");
}
else {
SerialUSB.println("Device did not acknowledge! Freezing.");
while(1); //hang forever
}
//check if the Device ID is correct
if(tempSensor.checkDeviceID()){
SerialUSB.println("Device ID is correct!");
}
else {
SerialUSB.println("Device ID is not correct! Freezing.");
while(1);
}
}
void loop(){ //print the thermocouple, ambient and delta temperatures every 200ms if available
if(tempSensor.available()){
SerialUSB.print("Thermocouple: ");
SerialUSB.print(tempSensor.getThermocoupleTemp());
SerialUSB.print(" °C Ambient: ");
SerialUSB.print(tempSensor.getAmbientTemp());
SerialUSB.print(" °C Temperature Delta: ");
SerialUSB.print(tempSensor.getTempDelta());
SerialUSB.print(" °C");
SerialUSB.println();
}
delay(20); //don't hammer too hard on the I2C bus
}
What address does your MCP9600 Thermocouple Amplifier? There were a few different versions and the addresses on them were all different. Make sure your code matches the address of the board you have.
Thank you guys for the help. For now I have moved on to using an arduino nano because it is not having any i2c issues. I am using one MCP9600 Thermocouple Amplifier @0x60 and another @0x67 with no problems. Switch over to the qwiic and it doesn’t work…The documentation for both the qwiic micro and the thermocouple amp is pretty good to get you started but my case doesn’t appear to be normal. Wondering if there is a hardware issue.
Can you provide a detailed image of your thermocouple board?
Attached is the side with the address and I2C jumpers. The other side is hard to photograph at this point.
For the jumpers that are cut I have verified that they do not have a connection with a multimeter. This setup is stable with the Arduino Nano.
https://drive.google.com/file/d/1dcvxDw … sp=sharing