I had HC-06 before.
I used that one without issues.
I connected:
VCC -> Arduino 5V
GND -> Arduino GND
RX -> Arduino TX
TX -> Arduino RX
BRK -> Unconnected
State -> Unconnected
I wrote simple code, with just Serial.read and Serial.println and when I connect to module from phone, I have idea synchronization between devices.
I can send and receive data on both sides.
Life is so beautiful.
So, what's wrong with HM-10.
I did absolutely same wiring and it doesn't work.
I can't send anything from Arduino Serial Monitor. When I send it, it doesn't show up in monitor, it just clears input field. (It should be written below as I remember from HC-06).
I connected to module with phone with BT Serial app, I send text and module recevies just question mark.
It doesn't matter if my text is 1 character or 10, it reads just one question mark.
So, in short, I can't post anything in Arduino Serial Monitor and when I post in smartphone app, Arduino Serial Monitor reads just one question mark.
I can't use AT commands. As I already said above, when I type anything in input field and press enter, text dissapears and serial monitor shows nothing(it just clears input field).
The HM-10 module operates usually at 3.3V for both power and logic levels. While some breakout boards include a voltage regulator that allows them to be powered with 5V , the module itself might not be 5V-tolerant on its UART pins. If using it with a 5V microcontroller, a logic level shifter or voltage divider is often needed to avoid damage.
➜ if you were to show us
the code
the circuit
more information on your "BT Serial app" (it should be a BLE Serial)
we could possibly provide more guidance. Otherwise the only thing we can say is that the proverbial crystal ball is still in the dishwasher...
➜ Please do yourself a favor and read How to get the best out of this forum. Post accordingly, including code with code tags, necessary documentation for your request such as your exact circuit and power supply details, links to components, etc.
I used BLE Scanner and LightBlue on my iPhone.
Wiring setup is mentioned in the first post.
I connected it like HC-06 did.
As I remember from HC-06, I needed just Serial.begin(9600) in setup scope and everything worked by itself.Whenever I connect to bluetooth and send data with Serial from phone, Arduino Serial Monitor used to receive data immediately.
I need HM-10 for more advance project, but I think it’s the simplest code that should work and to be sure, module does work.
Module has written 3.6-6V on VCC and 4V on RX-TX pins, but some tutorials what I saw, doesn’t have any resistors or something.
My board is Arduino UNO R3
Electronic components have inherent tolerances, allowing for slight deviations from their specifications, but operating them outside their rated limits always carries a risk. While some components may tolerate minor overvoltage for a short period, exceeding specifications means you're operating beyond guaranteed reliability.
If you happened to receive a component with minimal tolerance margin—one that is already near its rated limit—you risk damaging it. In this case, sending 5V from the Arduino UNO’s Tx pin to a 3.3V-rated Rx pin could easily cause failure, especially if the documentation explicitly states a maximum input voltage of 4V.
To ensure proper operation and avoid damage, always adhere to the specified voltage limits. Implementing a simple voltage divider with two resistors is an effective and reliable way to step down the voltage safely. But it might be too late for this module now.
// Basic Bluetooth sketch HC-06_01
// Connect the Hc-06 module and communicate using the serial monitor
//
// The HC-06 defaults to AT mode when first powered on.
// The default baud rate is 9600
// The Hc-06 requires all AT commands to be in uppercase. NL+CR should not be added to the command string
//
#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // RX | TX
// Connect the HC-06 TX to the Arduino RX on pin 2.
// Connect the HC-06 RX to the Arduino TX on pin 3 through a voltage divider.
//
void setup()
{
Serial.begin(9600);
Serial.println("Enter AT commands:");
// HC-06 default serial speed is 9600
BTserial.begin(9600);
}
void loop()
{
// Keep reading from HC-06 and send to Arduino Serial Monitor
if (BTserial.available())
{
Serial.write(BTserial.read());
}
// Keep reading from Arduino Serial Monitor and send to HC-06
if (Serial.available())
{
BTserial.write(Serial.read());
}
}
I connected my Android device to HC-06 and I can send text from Android to Arduino Serial Monitor, but when I type AT, it says just AT, it doesn't say "OK"
Do you mean 5V pin or RX-TX?
If 5V pin, It doesn't matter. I tried 3.3V before and didn't work. I found someone said 5V supply worked and I tried.
Absolutely no difference
OH MY WORLD!!!
I followed this tutorial, but I used Both NL & CR in Serial Monitor and it works
I have no idea, what I did differently, but it worked.
I did absolutely followed scheme and tutorial, but I used Both NL & CR mode and what a surprise!
What did I do different, no idea.
It worked on HC-06, HM-10 returns text like incorrect baud rate, but I tried all baud rates