¿Puedo usar el cc2541 BLE de TI como microcontrolador para realizar operaciones / procesamiento en lugar de ATmega328P AU para ahorrar costos?

1

Estoy usando arduino pro mini (que contiene Atmega328p AU ) junto con cc2541 (HM-10) para procesar y transferir datos a través de BLE al teléfono inteligente. Me pregunto si puedo usar el cc2541 para procesar los datos con el fin de eliminar el arduino del circuito, de modo que pueda ahorrar energía y dinero. Soy bastante nuevo en el dominio de la electrónica. Por favor, sugiere alguna forma de lograrlo.

    
pregunta Perry

2 respuestas

5

Versión TL; DR: si intenta hacer esto solo para un chip y solo para usted (es decir, no es un producto), probablemente no valga la pena, ya que tendrá que gastar al menos $ 50 para un programador.

El CC2541 es una combinación de una radio BLE y 8051 con 256K o 128K de flash y 8K de RAM. Tiene 23 pines GPIO, algunos de los cuales se pueden volver a utilizar como I²C, SPI, UART y la interfaz de programación

El CC2541 proviene de TI con firmware compatible con HCI (interfaz de controlador de host), que se encuentra en una interfaz de nivel inferior que los comandos AT. Algunos proveedores, como HMSoft, tomaron el CC2541, lo empaquetaron en una placa y proporcionaron una interfaz de comando AT en la parte superior de la pila de TI. Ese es el HM-10 en tu escudo. El HM = 10 se puede comprar por separado, por ejemplo, aquí .

Sí, puede poner el código de la aplicación en un CC2541 y usar todas sus capacidades de E / S para su propio uso. Se puede volver a programar usando dos de los pines GPIO usando un programador de TI llamado CC Debugger, que cuesta $ 50 .

El gotcha es toda la documentación de TI que se supone que está utilizando IAR Embedded Workshop para 8051, que cuesta casi $ 3000. (IAR tiene una versión de evaluación gratuita que es válida solo por 30 días). No sé qué tan difícil sería usar uno de los compiladores 8051 gratuitos que hay por ahí.

No he usado el HM-10. En su lugar, he usado Silicon Labs (anteriormente Bluegiga) BLE113 , que es otro módulo pequeño con un CC2541 empaquetado dentro de una lata de blindaje más algunos condensadores y una antena y cuesta lo mismo que el HM-10 ($ 12).

La ventaja del BLE113 (además del hecho de que está blindado y con certificación FCC) es que en lugar de programar el 8051 en C, han proporcionado un lenguaje llamado BGScript, que es una sintaxis de tipo BÁSICO. una aplicación BLE en unas pocas docenas de líneas de código.

Aquí está el código BGScript completo, para un termómetro inalámbrico BLE que envía la temperatura a un host una vez por segundo:

dim tmp(5)
dim celsius
dim offset
dim addr(6)

#init gap mod, bonding and start freerunning times on system boot
event system_boot(major ,minor ,patch ,build ,ll_version ,protocol_version ,hw )

    #Get local BT address
    call system_address_get( )(addr(0:6))

    # Write BT address to DI service serial number string
    call attributes_write(xgatt_dis_2a25,0,6,addr(0:5))

    #Set device to advertisement mode and allow undirected connections
    call gap_set_mode(gap_general_discoverable,gap_undirected_connectable)

    #Allow pairing
    call sm_set_bondable_mode(1)

    #set timer to periodically create an interrupt with interval of 1s
    call hardware_set_soft_timer(32768,0,0)
end

#timer expired
event hardware_soft_timer(handle)
    #Request for ADC reading
    call hardware_adc_read(14,3,0)
end

#ADC measurement ready
event hardware_adc_result(input,value)
    offset=-1600

    # ADC value is 12 MSB
    celsius = value / 16
    # Calculate temperature
    # ADC*V_ref/ADC_max / T_coeff + offset
    celsius = (10*celsius*1150/2047) * 10/45 + offset

    #set flags
    tmp(0:1)=0      
    #set as float
    tmp(1:4)=float(celsius, -1)

    #write the temperature information to the GATT database
    call attributes_write(xgatt_htm_2a1c,0,5,tmp(0:5))      
end

event connection_disconnected(handle,result)
    #in case if disconnect, return to advertisement mode
        call gap_set_mode(gap_general_discoverable,gap_undirected_connectable)
end

(También hay un archivo XML, gatt.xml que contiene todo el servicio GATT y los UUID característicos, etc.)

BGScript tiene acceso a todos los periféricos del chip, como los pines GPIO, I²C, SPI y UART, y en el ejemplo anterior, el ADC. No tiene que comprar un entorno de desarrollo 8051 porque le dan uno gratis para BGScript. Sin embargo, todavía tienes que comprar el programador de $ 50 TI.

    
respondido por el tcrosley
2

En estos días, Texas Instruments (TI) proporciona gratuitamente su Code Composer Studio (CCS). Es un IDE con todas las funciones, capaz de soportar una gran variedad de procesadores de TI. El póster original hizo una pregunta clásica de "abrir una lata de gusanos", que debe ser elogiada. La realidad es que un "simple" BLE transciever está controlado por un sistema complejo en un chip (SoC) IC. Realmente es una plataforma informática completa en un chip con su propio sistema operativo en tiempo real (RTOS) para ayudarlo a acceder a las funciones o periféricos a los que está conectado el procesador, como el módulo de RF y cualquier interruptor o sensor.

Programar un Arduino es un juego de niños comparado con programar un SoC, pero luego llega un momento en la vida de un desarrollador en el que deben enfrentar una curva de aprendizaje montañosa para mejorar su situación.

    
respondido por el Programify