HM-10 AT command doesn't work

Thank you so much for trying to help me but it still doesn't works, I'm already frustrated!
I have tried all your advice and it's still no response.

I understand how frustrating this can be, and much of my advice is not helping.
I reread the thread, and realize that you are using a Micro, and my advice about using the hardware Serial connections on D0 and D1 are wrong for the micro, and those pins are accessed through Serial1.

Indeed you seem to have used Serial1 in the last code which also did not show on the phone. I would try that with Serial1 at 9600. I also don't know about how to handle the possible line endings issues with Serial1. There appear to be several versions of the HM10 which handle the line endings differently.

You should also consistently use the while(!Serial); expression in your code.

Software Serial on the micro is only on limited pins, but you have been correct when you used 10 and 11. Some of my software serial postings incorrectly used other pins.

I think with the Micro, you are probably best off using Serial1 and D0 and D1 for the HM 10. I do see that the physical position of the pins on the board is reversed from the numerical order, so be sure of which is which.

so the problem is probably with my connection of HM to arduino?

I am not sure about that.

Since I do not have a micro, an HM 10, or an iphone, I can not test any of what you are doing, and I am unsure of whether or not you have a defective module, incorrect code for the particular version of HM 10, incorrect code for the micro, or incorrect wiring.

I would certainly try this code with Serial1, replacing software serial, no phone connection, and see if the AT > OK shows on the serial monitor.

char c = ' ';

void setup()
{
  Serial.begin(9600);
  While(!Serial);
  Serial.print("Sketch:   ");   Serial.println(__FILE__);
  Serial.print("Uploaded: ");   Serial.println(__DATE__);
  Serial.println(" ");
  //HM 10 TX to microRX(D0) 
 // HM 10 RX to microTX(D1)
  Serial1.begin(9600);
  Serial.println("BTserial started at 9600");
}

// Arduino Execution Loop
void loop()
{
  // Read from the Bluetooth module and send to the Arduino Serial Monitor
  if (Serial1.available())
  {
    c = Serial1.read();
    Serial.write(c);
  }

  // Read from the Serial Monitor and send to the Bluetooth module
  if (Serial.available())
  {
    c = Serial.read();
    Serial1.write(c);
    Serial.write(c);
  }
}