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

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 cc2541 para procesar datos con el fin de eliminar arduino del circuito, para poder ahorrar energía y dinero. Soy bastante nuevo en el dominio de la electrónica. Por favor, sugiera alguna forma de lograrlo.

Si tiene pines GPIO disponibles y puede escribir el código, puede hacerlo con seguridad.
@Whiskeyjack, sé 'qué codificar', pero ¿puedo cargar ese código en cc2541? ¿Cómo puedo hacer eso?
Creo que no puedes "codificar a medida" HM-10. Tiene conjuntos específicos de comandos AT que puede enviar a través de UART/USB y obtener resultados en el mismo canal.
Gracias @dastaan, entonces, ¿cómo puedo eliminar arduino de mi circuito para ahorrar energía? ¿Hay alguna manera?
No sé si este módulo HM10 se puede programar (porque tiene un número limitado de pines expuestos), pero nuevamente no estoy seguro. Si le preocupa la energía, siempre puede hacer que su microcontrolador duerma cuando no esté funcionando. Eso le ahorrará mucho jugo de batería. Si está dispuesto a hacer todo lo posible, puede diseñar su propia placa personalizada con CC2541 y cargar su código en ella. Esto ahorrará mucho dinero si va por una gran cantidad, pero como pasatiempo, no le aconsejaré que vaya por ese camino.
Según TI , debería ser posible actualizar un firmware que permita el desarrollo con BTool.

Respuestas (2)

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

El CC2541 es una combinación de una radio BLE y 8051 con flash de 256K o 128K y 8K de RAM. Tiene 23 pines GPIO, algunos de los cuales se pueden reutilizar como I²C, SPI, UART e 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 su Shield. 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 reprogramar usando dos de los pines GPIO usando un programador de TI llamado CC Debugger, que cuesta $50 .

El problema es que toda la documentación de TI supone que está utilizando el Taller integrado de IAR 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é cuán difícil sería usar uno de los compiladores 8051 gratuitos que existen.

No he usado el HM-10. En cambio, 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 certificado por la FCC) es que en lugar de programar el 8051 en C, han proporcionado un lenguaje llamado BGScript, que es una sintaxis similar a BASIC: literalmente puede escribir 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 tienes que comprar un entorno de desarrollo 8051 porque te dan uno para BGScript gratis. Sin embargo, aún tiene que comprar el programador TI de $ 50.

En estos días, Texas Instruments (TI) ofrece su Code Composer Studio (CCS) de forma gratuita. Es un IDE con todas las funciones capaz de admitir una amplia gama de procesadores TI. El cartel original hizo una pregunta clásica de "abrir una lata de gusanos" que es digna de elogio. La realidad es que un transceptor BLE 'simple' 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 obtener acceso a las funciones o periféricos a los que está conectado el procesador, como el módulo RF y cualquier interruptor o sensor.

Programar un Arduino es un juego de niños en comparación con programar un SoC, pero luego llega un momento en la vida de un desarrollador en el que debe enfrentar una vez más una curva de aprendizaje montañosa para mejorar.

Desafortunadamente, a partir de las actualizaciones de hoy, Code Composer Studio no es compatible con CC2541 ni con ninguna otra cosa con un núcleo de CPU 8051. Acabo de descargar y actualizar para estar seguro.
¿Tiene alguna evidencia real de que CCS es compatible con CC254x? Esas partes se originan con una adquisición y utilizan un núcleo 8051 en lugar de un núcleo de procesador tradicional de TI. Un comentario publicado incorrectamente como respuesta alega hoy que CCS no es compatible con CC2541 , por lo que ¿podría apoyar su sugerencia o retirarla?