I have a device in which a user connects their mobile device to an arduino uno via a HM-10 bluetooth transponder. I want to be able to calculate the approximate distance between the user and the transponder by hopefully using the RSSI methodology:

 d = 10 ^ ((TxPower - RSSI) / 20)

My goal is for the user to send a connection request to the HM-10, the uno to then calculate the distance, and if greater than x meters away, reject the request. I realize RSSI based distance is an estimate at best but that is fine for my purposes.

With that in mind, I have two questions:

1.) Is an HM-10 able to capture the RSSI strength of a mobile device to 
    calculate distance? 
2.) Can it do so WITHOUT connecting first based on the 
    initial request of the mobile device?
  • This seems to be an HM-10 question, not an Arduino question. If you control the firmware on the HM-10, you could have it refuse (/ignore) the connection request. But be aware that RSSI based distancing may be dissapointing, especially if you do not know the output power of the mobile. Where people try to do it in the other direction, the beacons include their measured field strength in the advertising packet as an attempt at calibration. Aug 29, 2016 at 5:05
  • What problem are you facing? Usually, if I have a question, I try to google it myself, with reasonable results. I'll post an answer in which I'll try to help you though.
    – aaa
    Aug 31, 2016 at 8:46
  • Do you have the bluetooth module working in the regular operating mode already? Tell us what you did, what worked and what didn't.
    – aaa
    Aug 31, 2016 at 8:49

1 Answer 1


You have two questions, but what makes you think you can't find these out?

When you want to know what a device can do (and thus can't do) you should check the devices' datasheet. I believe it is this file.

Bluetooth (and gsm) devices often work by sending AT commands. For example: "AT+PIO" to set/query GPIO pins of the module. You can send "AT+RSSI?" to get a response on the RSSI value.

Not everything can be mentioned in the datasheet though. If you can't find any sources on it, it's most likely not a feature.

The only way to add a "validation function" within the bluetooth connection code, would be to re-write the firmware of the device.

But, you could:

  1. Connect (with everyone using the right pin)
  2. Check their RSSI
  3. Disconnect if it doesn't match your criteria

I'm not sure if this module can have multiple connections, I didn't really see a way to disconnect a single connection. If not, you could even toggle the power to the module to "disconnect" the client(s).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.