También he estado jugando con BLE, y decidí ir con el chip Nordic nRF8001 porque parecía más fácil de trabajar y no requería costosas herramientas IAR. nRF8001 es ligeramente más barato que la parte CC2540 en BLE112, pero es sólo esclavo.
Compré el de Nordic Kit de desarrollo nRF8001 para $99, which includes nRF8001 samples and several nRF8001 boards (one with a trace antenna and one with an SMA connector) with standard 0.1" header for easy interfacing with your microcontroller development board. The documentation assumes that you have the $ 399 placa de desarrollo nRFgo y quiero utilizar el microcontrolador nRF8200 incluido. Yo no lo hice, así que en su lugar conecté una placa nRF8001 directamente a un Arduino.
Hablas de SPI al nRF8001, pero básicamente con 2 pines diferentes tipo slave select. Un pin (REQN) es una selección de esclavo tradicional que se pone a nivel bajo para indicar que el maestro (usted) quiere enviar un mensaje. El otro pin (RDYN) es para que el esclavo (nRF8001) indique que ha recibido algo por RF que quiere enviar al maestro, o que está listo para recibir un comando del maestro. El maestro entonces pone REQN bajo y comienza a recibir.
El protocolo es muy conciso y está bien documentado (en el PDF de especificaciones del producto proporcionado por Nordic) y escribí un boceto de Arduino para configurar el nRF8001 y tenerlo hablando con mi iPhone 4S en una tarde. El formato es básicamente un byte de longitud, un byte de comando, y luego los argumentos opcionales específicos del comando.
Necesitarás el software nRFgo Studio de Nordic para crear una configuración que especifique los servicios que soportará tu dispositivo; luego incluirá un archivo services.h que contiene los mensajes de configuración que necesitas enviar al nRF8001. Finalmente conseguí emular un pulsómetro y mostrar los números en la aplicación de demostración de Nordic para iOS.
Una gran ventaja del nRF8001 en comparación con el BLE112 es que, aparte de los mensajes de configuración propios generados por nRFgo Studio, sólo se trata de un protocolo serie bien documentado. ¡No hay actualizaciones de firmware! Está muy bien que el CC2540 tenga un microcontrolador 8051 a bordo, pero tendrás que pagar miles de dólares por las herramientas IAR o lidiar con las limitaciones y molestias de la pila de software de BlueGiga. Un CC2540 en bruto es más barato que el nRF8001 más un microcontrolador, pero las placas de BlueGiga no son baratas.
(Hay una UART en el nRF8001 que se saca en las placas incluidas en el kit de desarrollo, pero es sólo para el Modo de Prueba Directa de Bluetooth y no se utiliza normalmente).