通过蓝牙将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 。 它工作相当不错。
您也可以使用WiFi串行桥连接到Arduino。 我已经在WiFly设备上取得了成功。
其中一个关于BLE Shield和WiFly的好东西就是你不必使用Objective C或Macintosh,尽pipe这是一个选项。 您可以通过在iPad或iPhone上运行的techBASIC进行访问。
你也许可以通过一些研究和努力,自己来解决这些问题,但是这些连接技术(还有一些不直接适用于Arduino的连接技术)也包含在构buildiPhone和iPad电子设备中 ,赖利。
有关连接到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”