Electrical – HM10 bluetooth module to discoverable state after connection break

bluetooth low energy

I am trying to setup a HM10 (or similar Bluetooth LE to serial module) but am having problems with it.

The problem is when I am connected to the device with my phone, it works great. Now, if I force close the app while connected (or walk out of range), the HM10 module never returns to a discoverable state until it is power cycled. I could not find anything in the documentation regarding this. I am not able to connect to the HM10 manually via its MAC address either.

The only fix I can come up with is to have my app send a heartbeat signal to the MCU (ATMega 328p) and if the heartbeat is not seen within its allotted time, it should send AT+RESET to the HM10.

There has to be a better way, but I am not able to find it. Please let me know what you think.

Thank you in advance.

http://fab.cba.mit.edu/classes/863.15/doc/tutorials/programming/bluetooth/bluetooth40_en.pdf

(This happens when using any generic BLE terminal app or a custom made app)
(Android and IOS)

Best Answer

I've worked on a project that involved an HM10 and experienced similar issues. Here are some ideas for debugging the issue:

Check the System LED function (PIO1) pin with a multimeter to determine if the HM10 is in a connected or disconnected state (see datasheet).

If it is in a connected state, that would explain why it is not emitting BLE advertisements. But if you physically remove it from any other BLE devices it can pair with and it remains in a connected status... this is strange.

What you may want to do next is check whether sending a reset signal to the HM10 will fix the issue. From what I understand, having the 328p sent AT+RESET may not work, as the docs state the way to sent AT commands to the device while it is in a connected state is from the remote device, and when the HM10 is in the remote control system work mode (AT+MODE2).

You can try sending a reset signal through the System KEY function (PIO0) by connecting it to ground for > 1sec. You can also try this for the RESETB (11) pin - I've found this one to be more reliable than PIO0. If this works, then you would just need to connect this pin to an output pin on the 328p and send a LOW signal to the HM10.

Related Topic