Electrical – Using BLE module to detect beacons nearby

arduinoarmbluetoothbluetooth low energystm32f0

I'm trying to design a BLE reader which scans and detects nearby beacons.
However in many tutorials I have seen projects which uses Rasberry Pi and some BLE module it requires complex libraries.

I want to design the reader using a microcontroller like an STM32F0. My doubt is that if i use
beacon modules VG01 from SKYLABS and SKYLAB BLE 4.0 module SKB360 module.

Would the beacons be detectable from the SKB360 module using AT+SCAN_BLE at command in UART mode?
Our application includes locating each beacon using multiple readers installed over a very large yard. We can't use mobile device for that purpose so we are designing a beacon reader.

Best Answer

Would the beacons be detectable from the SKB360 module using AT+SCAN_BLE at command in UART mode?

Well since both products are manufactured by the same company, you should ask them.

However, using my experience, albeit with a different set of products, from a different manufacturer, this is exactly how I did initial testing.

Perhaps they have a development board you can try out first, before committing a custom design to a PCB?

I have seen projects which uses Raspberry Pi and some BLE module it requires complex libraries

The complex libraries are the results of someone else's hard word. If you want to use this product, then dig into, and understand them the best you can. Spending some time and effort learning the existing libraries will almost always save you more time and effort in the long run. It will often also open up new pathways for future development of your system, perhaps in ways that you did not anticipate.

There are times when you will find that it's better to re-create the wheel. It's my opinion that it's better to learn the existing tools first, so one can then make an informed decision.

Often times the module manufacturer will have a set of libraries for uC's that require minor adjusting for your platform of choice. You should contact them.

Good luck!

Some hacked test code below (python), where I'm searching for specific Bluetooth devices from a desktop computer using the manufacturer's Bluetooth development dongle connected via a virtual com port:

    #Scan the area for remote bluetooth devices
    #Return boolean and a list of addresses
    def ATDI(port):
        port.flushInput()
        ok, data = br_RCV_Event(port, 'ATDI\r', ['DONE'], timeout = 50, show=True)
        if (ok) :
            #get a list of discovered items
            data = filter(lambda x: 'DISCOVERY' in x,data)
            if (DEBUG):
                print "ATDI: Data from Event: ", data
            #itemize all discovered addresses
            newdata = []
            for item in data:
                device = [x.strip() for x in item.split(',')]
                address = device[2]
                signal_strength = device[4]
                #only add OUR devices to the list
                if (address.find('ECFE') >= 0) :
                    newdevice = []
                    newdevice.append(address)
                    newdevice.append(signal_strength)
                    newdata.append(newdevice)
            #reduce list to remove duplicates
            dev_dict = {}
            for device in newdata:
                address = device[0]
                signal_strength = device[1]
                dev_dict[address] = signal_strength
            #we now have a dictionary of devices and signal strengths
            #convert back to a list to keep the output consistant
            data = []
            for address, signal_strength in dev_dict.iteritems():
                device = [address, signal_strength]
                data.append(device)
            if (len(data) < 1) :
                ok = False
                print "ATDI: BlueTooth devices found.  But none of OUR devices were found."
            else:
                print
                print "ATDI: Found (" + str(len(data)) + ") compatible BlueTooth devices:"
                for device in data:
                    print "Address: ",device[0], " -- Signal Strength: ", device[1]+"dBm"
                print "--------------------------------------------------"
                print
        return ok, data