Troubleshooting

DF2301Q Is not responding

userHead MarkR 2026-07-30 09:19:20 213 Views5 Replies

I had the Voice Recognition working before going on vacation with the built-in words. When I cam back it is no longer responding to the wakeup word “Hello Robot”. The ASR LED does not light up.
 

It does not matter if I have the I2C wires connected.  I supply power/ground to it (5v or 3.3v) with nothing else hooked up and it says “You are welcome to use the voice recognition assistant". It no longer responds to “Hello Robot”.  I have not changed the wakeup word.

 

Did I gain an accent it does not like?  LOL

 

With the I2C connected the I2C scanner sees it but nothing happens for the wakeup word. The ASR LED does not light.

I have power cycled it many times with I2C connected and not connected.

 

What can I do to fix this?

2026-07-31 22:56:48

I tried the suggestions except for resetModule() because it's not available when connected via I2C.

I tried turning on mute mode then turning it off just to see if that would clear something. I tried without setMuteMode(1) first which didn't make a difference.

It's still not working.

I updated my setup code to this:

 

void setup()

{

  byte error;

  byte address=0x64;

  Serial.begin(115200);

  Serial.println("Starting Setup()");

 

  // Wait for the DF2301Q to be detected

  Wire.begin();

  error=1;

  while (error!=0)

  {

    Wire.beginTransmission(address);

    error = Wire.endTransmission();

    if (error!=0)

    {

      Serial.println(">>> DF2301Q not detected <<<");

      delay(2000);

    }

  }

 

  // Wait for the DF2301Q to initialize. Somebody suggested this to prevent it from locking up

  delay(6000);


  // Initialize the DF2301Q

  while (!(asr.begin()))

  {

    Serial.println("Communication DF2301Q failed");

    delay(3000);

  }


  Serial.println("Begin ok!");

  //asr.resetModule(); Not available in I2C

  asr.setVolume(7); // 1-7

  asr.setMuteMode(1); // 1=mute 0=unmute

  asr.setMuteMode(0); // 1=mute 0=unmute

  asr.setWakeTime(120); // 0-255

  Serial.print("Wake time: ");

  Serial.println(asr.getWakeTime());


  asr.playByCMDID(1);  

  Serial.println("Exit Setup()");

}


I purchased a new DF2301Q board and it is working fine with this code.
I'm still wondering what could have caused the first board to fail like this.

 

Thanks for everybody's help!
 

userHeadPic MarkR
2026-07-30 10:12:22

After a little more testing

void setup()

{

  byte error;

  byte address=0x64;

  Serial.begin(115200);

  Serial.println("In Setup()");

 

  delay(6000);

  Wire.begin();

  Wire.beginTransmission(address);

  error = Wire.endTransmission();

  if (error==0)

  {

    Serial.print("I2C detected at 0x");

    Serial.println(address, HEX);

  }

  else

    Serial.println(">>> I2C not detected <<<");

 

  while (!(asr.begin()))

  {

    Serial.println("Communication with device failed, please check connection");

    delay(3000);

  }

 

  Serial.println("Begin ok!");

  //asr.setVolume(7); // 1-7

  //asr.setMuteMode(0); // 1=mute 0=unmute

  asr.setWakeTime(120); // 0-255

  Serial.print("Wake time: ");

  Serial.println(asr.getWakeTime());

 

  asr.playByCMDID(1);  

 

  Serial.println("Exit Setup()");

}


Serial Monitor Output:
In Setup()

I2C detected at 0x64

Begin ok!

Wake time: 120

Exit Setup()

I get “You are welcome to use the voice recognition system”
Then “Yes, I am here”
The blue ASR LED is lit.
And then it times out after 2 minutes and says “I'm off now”.

It does not recognize any commands I say when the ASR LED is lit or when it's off “Hello Robot” does not work. 
It acts like the mic is turned off.

Help!  I'm out of idea's at this point.  
 

userHeadPic MarkR
Jason.Miao wrote:

Uncomment setVolume(7) and setMuteMode(0) first, stuck low mic gain or hidden mute state can block all wake word detection even with LED active.

Blow compressed air gently across the small mic perforations on the module edge, dust buildup blocks audio input entirely.Drop asr.resetModule() after asr.begin() to clear leftover stored config drift from prior use.https://wiki.dfrobot.com/sen0539-en/The circular black aperture at the top left (the black round hole above the Gravity marking) is the onboard microphone pickup port.
2026-07-31 09:37:28
1 Replies
2026-07-30 09:59:24

First, check the two tiny mic holes on the module aren't clogged with dust

If that's not it, hook it up via I2C and try running asr.playByCMDID(1) in your setup — that forces it into wake-up state directly, and if the blue LED lights up then you know the ASR chip is good and it's just the wake-word mic path acting up. From there you can also try asr.setVolume(7) to crank it up and asr.setWakeTime(20) just to rule out any weird config drift.

The library also has a resetModule() function if you're using UART mode, which is worth a shot if the I2C tricks don't help. Good luck, hope you get it talking again!

userHeadPic Jason.Miao
MarkR wrote:

What tiny holes are you talking about?
I thought the mic was one of silver pieces with the black top.

 

2026-07-30 10:22:46
1 Replies