通过蓝牙将iPhone连接到Arduino

我希望能够让我的iPhone应用程序通过蓝牙与我的Arduino进行通信。 我发现一些支持以下协议的蓝牙屏蔽:BCSP,DUN,LAN,GAP SDP,RFCOMM和L2CAP。 从googlesearchgooglesearch的时候,iPhone正在隐藏它的蓝牙栈吗?! 它是否正确? 是否真的没有机会让我的iPhone与其他蓝牙设备进行通信,而不越狱(据我所知,如果我使用btstack,请访问http://code.google.com/p/btstack/ ) ?

如果蓝牙是不可能的,你会build议什么其他方式(期待WLAN)来实现通信? 我想要实现的是这样的东西: http : //theiopage.blogspot.com/2011/08/yanis-android-wireless-eos-controller.html

感谢您的任何提示!

有几种可用的连接技术。

正如其他人所说,标准的蓝牙(3.0)是由MFi程序控制的。 连接到非越狱iPhone的唯一方法是joinMFi计划。

串行访问很有趣。 您必须joinMFi才能分配串行设备,但是您可以使用Redpark串行电缆将您自己的 iPhone连接到串行设备。

有几种方法可以将蓝牙LE设备连接到Arduino。 我使用的是RedBearLabs BLE Shield 。 它工作相当不错。

iPhone到RedBearLab BLE Shield到Arduino,使用techBASIC为黑客卡车供电

您也可以使用WiFi串行桥连接到Arduino。 我已经在WiFly设备上取得了成功。

iPhone到WiFly到Arduino

其中一个关于BLE Shield和WiFly的好东西就是你不必使用Objective C或Macintosh,尽pipe这是一个选项。 您可以通过在iPad或iPhone上运行的techBASIC进行访问。

你也许可以通过一些研究和努力,自己来解决这些问题,但是这些连接技术(还有一些不直接适用于Arduino的连接技术)也包含在构buildiPhone和iPad电子设备中 ,赖利。

O'Reilly出版的新书

有关连接到Bluetooth 3.0或更低版本设备的信息,只有在被Apple MFi程序接受后才可以使用。

蓝牙4.0(BLE)在开发和商业上可供iOS开发人员使用(无需访问MFi程序),使用iOS 5或更高版本的iPhone 4S,iPad 3和更高版本的装载BT4.0的公共Core蓝牙框架在船上。

几年后又增加了一些:现在有几种BLE屏蔽和Arduino兼容或Arduino的产品,内置BLE(LightBlue Bean,RFduino等)。

事实上,如果没有Jailbreaking或MFi的注册,你现在可以做到这一点。

看看在较新的iOS设备和Arduino BT 4.0屏蔽蓝牙4.0。

这可能有助于: http : //blog.makezine.com/2012/03/19/bluetooth-4-0-from-arduino-to-iphone-no-jailbreaking-no-mfi/

所以我不知道如何实现,但我认为你的Arduino应该模拟一个蓝牙耳机,让应用程序parsing数据。 由于iPhone只支持蓝牙耳机,这将是唯一的方法之一。 这将是非常困难的。

我build议你在Wifi上用Wifi-Shield做类似的事情。 比你可以使用苹果亲切bonjour ,自动检测您的硬件。

希望给你一些想法,如何解决问题,

狮子座

改善这个答案并覆盖所有细节可能需要一些文章或类似的东西。 我会尽量保持简短,并将注意力集中在iOS端,因为Arduino基本上没有限制通过Arduino BLE屏蔽广泛使用的蓝牙外设,例如RedBearLab BLE Shild

蓝牙v2.0 + EDR,v2.1 + EDR,v3.0 + HS ….

v4.0之前的蓝牙堆栈规范不包含低功耗部分。 虽然使用协议非常简单,但如果简化为SPP(串行端口configuration文件),则在没有MFi程序的Apple iOS设备上不可用。 目前市场上的蓝牙模块很less,如Panasonic的Pan1321,其中包括苹果authentication协处理器,可以在iOS上使用。 悲剧的一部分是,如果你看这个官方页面iOS:支持蓝牙configuration文件 SPP不存在,所以你可以select列出的configuration文件(如果你是制作audio或HID设备,你可能会select)。

低功耗蓝牙(BLE)

从蓝牙v3.0规范迁移到v4.0引入了BLE。 规范的新部分与以前几乎没有什么共同之处。 基本上你可以看作是蓝牙v3.0 + BLE = v4.0或蓝牙智能。 v4.0规范的BLE部分是我们感兴趣的。

CoreBluetooth

除了BLE的所有优点,如低功耗,小尺寸,低成本,其中最重要的是被包括苹果(不需要MFi)的移动制造商所采用。 BLE完全由CoreBluetooth支持,iOS侧的实现非常简单。 有一点你必须记住的是,BLE是低能量,但低速。 虽然标准规定了7.5ms的最小连接间隔苹果文档说build议是30ms :-D我使用一堆不同的芯片和iOS设备的经验是,你将能够每20-30ms传输20bytes。 如果需要确认,则要比双倍,如40-60ms。

定制configuration文件

蓝牙特别兴趣小组(SIG)提供标准BLEconfiguration文件列表。 看看基于GATT的。 不幸的是,如果您没有从列表中制作心率监测器或设备,您可能会使用电池服务或类似的configuration文件列表。 幸运的是,创build自定义configuration文件并不复杂,它将成为您必须传输的应用程序特定数据的“占位符”。 理解angular色,GATT(服务和特性),UUID和其他是强制性的,但学习曲线或BLE堆栈在我看来并不困难。

一旦知道在embedded式设备上运行的BLEconfiguration文件,使用CoreBluetooth库就可以很容易地通过BLE进行连接和通信。

iBeacon显示

苹果使用BLE标准作为iBeacon的“载体”做了小小的破解。 他们使用BLE广告数据包中的制造商特定数据来“声称”某个设备是iBeacon。 我会说,这完全可以。 你应该记住的是,BLE不是iBeacon,但是所有的iBeacons都是BLE(具有硬编码制造商特定数据的设备,在广播BLE模式中暴露RSSI,UUID,主要和次要)。 另外,iBeacon由CoreLocation而不是CoreBluetooth处理。 这清楚地表明苹果公司与iBeacon的内涵。

结论

如果您想将iOS设备与Arduino或其他embedded式设备集成在一起,BLE绝对是您想要考虑的事情。 如果您想了解物联网宣传和可用射频选项,还有其他原因可能会让您想要了解有关BLE的更多信息。 BLE在这里将继续使用v4.1和即将发布的v4.2规范,这将提高带宽,支持IPv6,提高安全性等。

最后,不要太短,但我希望它有帮助。

某些BLE模块可以在iBeacon模式下使用,并且可以连接到IO。 我使用基于CC2540 / CC2541的HM10和HM11模块。 他们有几个用于iBeacon安装的AT命令。 Changable寄存器是UUID主要次要和被测量的力量 。 本文中的更多细节“将基于CC2541的HM-10蓝牙智能模块变成iBeacon”