Go Down

Topic: How to make an iBeacon Detector with Arduino? (Read 67316 times) previous topic - next topic

rogerClark

Hi Guys,

I just thought I'd post this link to a "debugger" board on eBay which I think should probably be able to upload firmware to these modules

www.ebay.com/itm/281595136870?



See this link for where someone made their own board. However I'm hoping in this case as it says it supports SmartRF Studio, that I don't need to somehow get the firmware onto this "programmer" board,

http://jas-hacks.blogspot.com.au/2012/04/alternate-cc111024302510.html

It will take a week or two for the programmer to get here, but I will update the forum when I get it, as this could be a low cost way of uploading completely alternative firmware, e.g. by RedBear labs
Freelance developer and IT consultant
www.rogerclark.net

luisonoff

Thank you very much to everyone for this topic, especially rogerClark. I found it very useful.


I have a HM-11 module v535 and this is my experience:
I can broadcast ibeacon when in slave role.
When I put central role I cannot broadcast ibeacon nor detect my LG G3 phone.


My questions are:

Has anyone been able to find other ibeacon using DISI command?

Is it possible to broadcast ibeacon while in central role?

Can I be in peripheral, connected to another device, and broadcast ibeacon at the same time?


Thank you! :D

eeprasad

Hello everyone,

I tested with HM-10 as iBeacon reader successfully

Steps:

you need 2 HM-10 modules

1. Update HM-10 Firmware to V539 :- HM-10 HMSoft CC2541 V539 firmware upgrade file.........[2014-09]

2. Make one HM-10 module as iBeacon :-   AT+IBEA1  setup ibeacon on HM-10

3. Send following AT commands to setup second HM-10

"AT+ROLE1"   Set as Master
"AT+IMME1"   Set Module work type as 1
"AT+DISI?"    find near iBeacons


Device response :-  OK+DISISOK+DISCEOK+DISC:4C000215:74278BDAB64445208F0C720EAF059935:FFE0FFE1C5:78A50487497A:-048OK+DISCE

UUID, Major and Minor and Device address also here.

Hope you finally get the right answer for your problem.  ;)   :)


Best Regards,
Lasantha Prasad


viky

Hello, so I finally got a response from  JNHuaMao!!!!

They said that they will be releasing a new firmware version this month that will give the HM-10 the capability to be use as an iBeacon finder/detector.

It will be Firmware Version V536.

So I'll just wait and try it out when it is release.
Did you try the firmware already? What's your progress on this project? I am working on something which is completely similar to you and am also facing the same issues. Will be very grateful if you can help :)

leogar07

Hello, the firmware version that has the iBeacon detector option is v539.
And it works!! I was going to write about it but the last post before yours (eeprasad) beat me to it.

Follow his instructions and you should have it running!

Cheers

yurismolnik

Hi Gentlemen!

I've assembled iBeacon scanner with Arduino & HM-10 module (v540 firmware). So far so good. But there is one issue: response time between "AT+DISI?" command and receive "OK+DISCE" response is about 3 (three!) seconds. It's too much for my project.
Did your faced with the same issue? Maybe anyone has solution to decrease response time?

rogerClark

These commands are part of the firmware inside the module, which is not open source

The DISI command doesn't seem to take any arguments e.g. timeout, so I very much doubt if there is any way to change the scanning time.

After all, some beacons may not be broadcasting very regularly (your specific beacons may be, but the firmware is general purpose)

If you absolutely must have a shorter timeout on this scan, you only alternative is probablty to load alternative firmware onto the module.
There is some firmware somewhere on github which has a BASIC programming capability. which may give some control over this.

Alternatively, you would need to write your own firmware using the SDK / API libs from TI. The only problem with this, is you'd need the IAR compiler, which I think costs in excess of $2000 - though there may be an evaluation version etc you could try.
Freelance developer and IT consultant
www.rogerclark.net

yurismolnik

rogerClark,

Thank you for your response! I'm going to continue my investigations and try to ask this question HM-10 vendor.
Will share my results.

borkar

I have been using AT+DISI to detect iBeacons and do receive the expected response on Serial Monitor if I just use my Arduino UNO as a UART bridge between the laptop and HM-10 (i.e load empty file on UNO and connect RX-RX and TX-TX pins of Arduino and HM-10 and then use serial monitor to send AT commands and receive responses).

However, when I am trying to do the same by making Arduino send the AT commands to HM-10 via a software serial port and print the response on Serial Monitor, I get the responses of all other AT commands but for AT+DISI I just receive OK+DISIS

and nothing after that

Has anyone faced a similar issue? I am not sure, if the software buffer overflows (though upon checking the overflow flag, it didn't seem to be overflowing) or there is an issue with the baud rate (though the response to all other commands is coming correctly, so I am assuming I am right when my serial monitor, Software serial port and HM-10 are all configured to be running at 9600)

yurismolnik

borkar

Did you initiated your module before "AT+DISI?" with next commsnds:

AT+ROLE1
AT+IMME1
AT+SHOW1

borkar

yurismolnik

Yes, I do initiate the communication with
AT+ROLE1
AT+IMME1
AT+SHOW1

I receive the responses for the above commands also through the Software Serial port but only for AT+DISI, i receive the response only till OK+DISIS

above issue is happening only when I am using the software serial port. If I communicate to HM-10 via UNO's serial port (pin1 RX, pin2 Tx) I receive the full response with UUIDs, RSSIs and ending of OK+DISCE

rogerClark

yurismolnik

Yes, I do initiate the communication with
I receive the responses for the above commands also through the Software Serial port but only for AT+DISI, i receive the response only till OK+DISIS

above issue is happening only when I am using the software serial port. If I communicate to HM-10 via UNO's serial port (pin1 RX, pin2 Tx) I receive the full response with UUIDs, RSSIs and ending of OK+DISCE
What firmware version are you running. I recall some issues with the newer versions (see previous postings in this - and other - threads about which versions actually work)

I had to downgrade to an older version of firmware, for things to start working correctly
Freelance developer and IT consultant
www.rogerclark.net

borkar

What firmware version are you running. I recall some issues with the newer versions (see previous postings in this - and other - threads about which versions actually work)

I had to downgrade to an older version of firmware, for things to start working correctly
I am running on v540.

Since it works correctly on the Uno's hardware serial port (pin1, 2) when communicated with, from the Serial Monitor, I had a feeling that it is not the issue with HM-10 but rather than how I am using the Software Serial Port with it. But I will dig into and check the older versions.

Meanwhile, has anyone tried using a software serial port to send AT commands to HM-10?

frandecai

Hi all.
I've researched an iBeacon detector using Arduino and a HM-10 bluetooth module (this one)

I've developed two versions:
- Using "AT+DISC?" command. Only interested on device's MAC.
- Using "AT+DISI?" command. Interested on device's MAC and signal strength.


If anyone wants the source code just ask.

GregL

Hi @frandecai - I would be very interested in you sketch.

Ive been struggling to get the AT+DISI? command to work. If I send it the AT+DISI? command it will return a result of a detected MAC and signal strength, but it only does it once. I then need to resend the AT+DISI? command to get it to return again.

I was hoping I could just send it the following commands and it would continue to return any seen BLE beacons until it is powered off.

AT+ROLE1
AT+IMME1
AT+SHOW1
AT+DISI?

So would love to see your sketch.

Also can you confirm what HM-10 firmware version you are using.

Go Up