Conecte un iPhone a Arduino a través de Bluetooth

Me encantaría poder dejar que mi aplicación de iPhone se comunique con mi Arduino a través de Bluetooth. Encontré algunos escudos de Bluetooth compatibles con los siguientes protocolos: BCSP, DUN, LAN, GAP SDP, RFCOMM y L2CAP. Por lo que encontré mientras buscaba Google, ¿es que el iPhone está ocultando su stack de bluetooth? ¿Es esto correcto? ¿Realmente no hay ninguna posibilidad de permitir que mi iPhone se comunique con otro dispositivo habilitado para bluetooth sin jailbreak (que, por lo que sé, sería necesario si utilizara btstack: http://code.google.com/p/btstack/ ) ?

Si el bluetooth no es realmente posible, ¿qué otras forms (esperamos WLAN) sugerirías para realizar una comunicación? Lo que me gustaría dar count es algo así como aquí: http://theiopage.blogspot.com/2011/08/yanis-android-wireless-eos-controller.html

Gracias por cualquier consejo!

Hay varias tecnologías de connection disponibles.

Como otros han mencionado, el Bluetooth (3.0) estándar está controlado por el progtwig MFi. La única forma de conectarse a un iPhone que no es Jailbroke es join al progtwig MFi.

El acceso serial es interesante. Tienes que unirte a MFi para distribuir un dispositivo serie, pero puedes usar Redpark Serial Cable para conectar tu propio iPhone a un dispositivo serie.

Existen varias forms de conectar dispositivos Bluetooth LE al Arduino. Uno de los que he usado es el escudo RedBearLabs BLE . Funciona muy malditamente bien.

iPhone a RedBearLab BLE Shield a Arduino, alimentando un camión pirateado usando techBASIC

También puede conectarse a un Arduino mediante un puente serie WiFi. He tenido éxito con el dispositivo WiFly .

iPhone para WiFly a Arduino

Una de las cosas buenas acerca de BLE Shield y WiFly es que no tiene que usar el Objetivo C o un Macintosh, aunque esa es una opción, por supuesto. Puede acceder a ambos a través de techBASIC , ejecutándose directamente en el iPad o iPhone.

Probablemente pueda resolverlos por su count con un poco de investigación y esfuerzo, pero estas tecnologías de connection (además de algunas más que no se aplican directamente a Arduino) también están cubiertas en los dispositivos electrónicos de construcción iPhone y iPad , un nuevo libro de O ' Reilly

Nuevo libro de O'Reilly

La información sobre cómo conectarse a dispositivos Bluetooth 3.0 o inferiores desde dispositivos iOS OS disponibles solo está disponible después de haber sido aceptada en el progtwig MFi de Apple .

Bluetooth 4.0 (BLE) es accesible tanto para desarrolladores como comercialmente para desarrolladores de iOS (sin necesidad de acceder al progtwig MFi), utilizando el marco público Core Bluetooth disponible en iOS 5 o posterior en iPhone 4S, iPad 3 y dispositivos posteriores que llevan BT4.0 a bordo.

Se agregaron algunos años más tarde: ahora hay varios escudos de BLE y productos similares a Arduino compatibles con Arduino con BLE incorporado (LightBlue Bean, RFduino, etc.) disponibles en el mercado.

De hecho, puede hacer que suceda ahora sin Jailbreaking o la inscripción de MFi.

Eche un vistazo a Bluetooth 4.0 en los dispositivos iOS más recientes y el escudo Arduino BT 4.0.

Esto podría ayudar: http://blog.makezine.com/2012/03/19/bluetooth-4-0-from-arduino-to-iphone-no-jailbreaking-no-mfi/

Entonces no sé cómo implementar, pero creo que su Arduino debería simular un auricular Bluetooth y dejar que la aplicación analice los datos. Debido a que los iPhones solo admiten los auriculares Bluetooth, este sería uno de los únicos methods. Y sería muy difícil.

Te recomiendo que hagas cosas como esta a través de Wi-Fi con un Wifi-Shield. Que puedas usar Apples genial bonjour systeme, para detectar automáticamente tu hardware.

Espero que te dé alguna idea, cómo resolver el problema,

León

Mejorar esta respuesta y cubrir todos los detalles probablemente necesite algún artículo o similar. Intentaré acortar las cosas y centrarme en el lado iOS, ya que Arduino básicamente no tiene limitaciones en los periféricos Bluetooth que están ampliamente disponibles a través de escudos Arduino BLE, como es RedBearLab BLE Shild

Bluetooth v2.0 + EDR, v2.1 + EDR, v3.0 + HS …

La especificación de stack Bluetooth antes de v4.0 no contiene parte de baja energía. Aunque es un protocolo fácil de usar, especialmente si se simplifica en torno a SPP (Serial Port Profile), no está disponible en dispositivos iOS de Apple sin el progtwig MFi . Hay pocos modules Bluetooth en el mercado, como Pan1321 de Panasonic, que incluye el coprocesador de authentication Apple y que se puede usar con iOS. Parte triste de la historia es que si miras esta página oficial iOS: los perfiles Bluetooth compatibles SPP no está allí, así que puedes elegir entre los perfiles listdos (lo que probablemente harás si estás haciendo un dispositivo HID o de audio).

Bluetooth de baja energía (BLE)

La migration desde la especificación Bluetooth v3.0 a v4.0 introdujo BLE. Nueva parte de la especificación tiene muy poco en común con la anterior. Básicamente, podría verlo como Bluetooth v3.0 + BLE = v4.0 o Bluetooth Smart. La parte BLE de la especificación v4.0 es lo que nos interesa.

CoreBluetooth

Además de todas las ventajas de BLE, como el bajo consumo de energía, el tamaño pequeño y el bajo costo, lo más importante fue la adopción por parte de los fabricantes de dispositivos mobilees, incluida Apple (no se necesita MFi). BLE es totalmente compatible con CoreBluetooth y la implementación en iOS es sencilla. Una cosa que debe tener en count es que BLE es de baja energía pero también de baja velocidad. Aunque el estándar especifica un intervalo mínimo de connection de 7.5 ms, la documentation de Apple dice que la recomendación es de 30 ms 😀 Lo que he experimentado al usar muchos chips y dispositivos iOS es que podrás transmitir 20 bytes cada 20-30 ms. Si se necesita acuse de recibo, que lo haga doble, como 40-60 ms.

Perfiles personalizados

La list de perfiles BLE estándar está disponible por Bluetooth Special Interest Group (SIG). Eche un vistazo a GATT basado. Desafortunadamente, si no configura un monitor de frecuencia cardíaca o un dispositivo de la list, probablemente use el service de batería o similar de una list de perfiles. Afortunadamente, no es complicado crear un perfil personalizado, que será "marcador de position" para los datos específicos de la aplicación que debe transmitir. La comprensión de los roles, GATT (Servicios y Características), UUID y otros es obligatoria, pero la curva de aprendizaje o la acumulación de BLE no es difícil, en mi opinión.

Una vez que se conoce el perfil BLE, se ejecuta en un dispositivo embedded, la connection y la comunicación con BLE es muy simple usando la biblioteca CoreBluetooth.

iBeacon

Apple hizo poco piratear usando el estándar BLE como "operador" para iBeacon. Están utilizando datos específicos del fabricante en el package publicitario BLE para "reclamar" que algún dispositivo es iBeacon. Lo que está perfectamente bien, diría yo. Lo que debe tener en count es que BLE no es iBeacon, pero todos los iBeacon son BLE (dispositivo con datos específicos del fabricante codificados, que exponen RSSI, UUID, mayor y menor en el modo de transmisión BLE). Además, iBeacon es manejado por CoreLocation no CoreBluetooth . Esto deja en claro cuál fue la intención de Apple con iBeacon.

Conclusión

Si desea integrar un dispositivo iOS con Arduino o algún otro dispositivo embedded, BLE es definitivamente algo que desea considerar. Existen razones adicionales por las que desea get más información acerca de BLE si observa el deployment de IoT y las opciones de RF disponibles. BLE está aquí para quedarse con las especificaciones v4.1 y próximas v4.2 que mejorarán el ancho de banda, brindarán soporte para IPv6, mejor security, etc.

Al final, no tan corto, pero espero que sea de ayuda.

Algunos modules BLE se pueden usar en modo iBeacon y se pueden conectar a IO. Trabajé con los modules HM10 y HM11, basados ​​en CC2540 / CC2541. Tienen varios commands AT para la configuration de iBeacon. Los loggings modificables son UUID , Major , Minor y Measunetworking Power . Más detalles en este artículo "Convierta su module inteligente Bluetooth basado en CC2541 HM-10 en un iBeacon"