Usando el módulo BLE para detectar balizas cercanas

0

Estoy tratando de diseñar un lector BLE que escanee y detecte balizas cercanas. Sin embargo, en muchos tutoriales he visto proyectos que utilizan Rasberry Pi y algunos módulos BLE requieren bibliotecas complejas.

Quiero diseñar el lector utilizando un microcontrolador como un STM32F0. Mi duda es que si lo uso. beacon modules VG01 de SKYLABS and SKYLAB BLE 4.0 módulo SKB360 módulo.

¿Podrían detectarse las balizas desde el módulo SKB360 usando AT + SCAN_BLE en el comando en modo UART? Nuestra aplicación incluye la ubicación de cada baliza utilizando varios lectores instalados en un patio muy grande. No podemos usar dispositivos móviles para ese propósito, por lo que estamos diseñando un lector de balizas.

    

1 respuesta

1
  

¿Se podrían detectar las balizas desde el módulo SKB360 usando   ¿AT + SCAN_BLE en el comando en modo UART?

Bueno, ya que ambos productos son fabricados por la misma compañía, debe preguntarles.

Sin embargo, utilizando mi experiencia, aunque con un conjunto diferente de productos, de un fabricante diferente, así es como hice las pruebas iniciales.

Tal vez tengan una placa de desarrollo que puedas probar primero, antes de enviar un diseño personalizado a un PCB.

  

He visto proyectos que utilizan Raspberry Pi y algunos módulos BLE.   requiere bibliotecas complejas

Las bibliotecas complejas son el resultado de la palabra dura de otra persona. Si desea utilizar este producto, profundícelo y compréndalo lo mejor que pueda. Dedicar algo de tiempo y esfuerzo a aprender las bibliotecas existentes casi siempre le ahorrará más tiempo y esfuerzo a largo plazo. A menudo, también abrirá nuevos caminos para el desarrollo futuro de su sistema, tal vez en formas que no anticipó.

Hay ocasiones en las que encontrarás que es mejor volver a crear la rueda. En mi opinión, es mejor aprender primero las herramientas existentes, para que luego se pueda tomar una decisión informada.

Muchas veces el fabricante del módulo tendrá un conjunto de bibliotecas para los uC que requieren ajustes menores para la plataforma de su elección. Deberías contactarlos.

¡Buena suerte!

A continuación se muestra un código de prueba pirateado (python), donde busco dispositivos Bluetooth específicos desde una computadora de escritorio mediante la llave de desarrollo Bluetooth del fabricante conectada a través de un puerto de comunicaciones virtual:

    #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
    
respondido por el Chris Knudsen

Lea otras preguntas en las etiquetas