我希望能够让我的iPhone-App通过蓝牙与我的Arduino通信。 我发现了一些支持以下协议的蓝牙防护:BCSP,DUN,LAN,GAP SDP,RFCOMM和L2CAP。从谷歌搜索时发现的是,iPhone是否正在隐藏它的蓝牙堆栈?!?它是否正确?是否真的没有机会让我的iPhone在没有越狱的情况下与其他支持蓝牙的设备进行通信(据我所知,如果我使用btstack,我需要这些设备:http://code.google.com/p/btstack/)?
如果确实无法使用蓝牙,那么您建议实现通信的其他方式(期望WLAN)? 我想要意识到的是这样的事情:http://theiopage.blogspot.com/2011/08/yanis-android-wireless-eos-controller.html
感谢您的任何提示!
答案 0 :(得分:16)
有几种可用的连接技术。
正如其他人所提到的,标准蓝牙(3.0)由MFi程序控制。连接到非jailbroke iPhone的唯一方法是加入MFi计划。
串行访问很有意思。您必须加入MFi才能分发串行设备,但您可以使用Redpark Serial Cable将自己的 iPhone连接到串行设备。
有几种方法可以将蓝牙LE设备连接到Arduino。我使用的是RedBearLabs BLE Shield。它非常好用。
您还可以使用WiFi串行桥连接到Arduino。我使用WiFly设备取得了成功。
关于BLE Shield和WiFly的一个有趣的事情是你不必使用Objective C或Macintosh - 当然,这是一个选项。您可以通过在iPad或iPhone上运行的techBASIC访问这两者。
你可以通过一些研究和努力自己解决这些问题,但这些连接技术(以及一些不直接适用于Arduino的连接技术)也包含在Building iPhone and iPad Electronics Devices中,这是一本来自O'Reilly的。
答案 1 :(得分:10)
有关从库存OS iOS设备连接蓝牙3.0或更低版本设备的信息仅在被Apple's MFi program接受后才可用。
蓝牙4.0(BLE)可以在开发中和商业上访问iOS开发人员(无需访问MFi程序),使用iOS 5或更高版本中提供的公共Core Bluetooth框架,适用于iPhone 4S,iPad 3和更高版本的设备BT4.0 on-board。
几年后添加: 现在市面上有几种BLE防护罩和Arduino兼容或类似Arduino的产品,内置BLE(LightBlue Bean,RFduino等)。
答案 2 :(得分:8)
实际上,您可以在没有越狱或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/
答案 3 :(得分:2)
所以我不知道如何实现,但我认为您的Arduino应该模拟蓝牙耳机并让应用程序解析数据。由于iPhone仅支持蓝牙耳机,因此这将是唯一的方法之一。这将非常困难。
我建议你通过Wifi-Shield在Wifi上做这样的事情。你可以使用Apples genial bonjour
系统来自动检测你的硬件。
希望能给你一些想法,如何解决问题,
利奥
答案 4 :(得分:2)
改进此答案并涵盖所有细节可能需要一些文章或类似内容。我会尽量保持简短并专注于iOS方面,因为Arduino基本上没有限制通过Arduino BLE屏蔽广泛使用的蓝牙外设,例如RedBearLab BLE Shild
v4.0之前的蓝牙堆栈规范并不包含低能耗部分。虽然它很容易使用协议,特别是如果简化SPP(串行端口配置文件),它在没有MFi程序的Apple iOS设备上不可用。市场上很少有蓝牙模块,例如Panasonic的Pan1321,它包括Apple认证协处理器,可以与iOS一起使用。这个故事的悲伤部分是,如果你看一下这个官方页面iOS: Supported Bluetooth profiles SPP不存在,那么你可以在列出的配置文件之间进行选择(如果你正在制作音频或HID设备你可能会做什么)。
从蓝牙v3.0规范迁移到v4.0引入了BLE。规范的新部分与之前几乎没有什么共同之处。基本上你可以把它看作蓝牙v3.0 + BLE = v4.0或蓝牙智能。我们感兴趣的是v4.0规范的BLE部分。
除了BLE的所有优点之外,低功耗,小尺寸,低成本,最重要的是移动制造商采用,包括Apple(不需要MFi)。 CoreBluetooth完全支持BLE,iOS上的实现非常简单。你必须记住的一件事是BLE是低能量但也是低速。尽管标准规定最小连接间隔为7.5ms Apple documentation表示建议为30ms :-D我使用大量不同芯片和iOS设备所经历的是,您将能够每20-30ms传输20字节。如果需要确认,请将其加倍,例如40-60ms。
蓝牙特别兴趣小组(SIG)可提供standard BLE profiles列表。看看GATT Based。不幸的是,如果您没有从列表中制作心率监测器或设备,您可能会使用电池服务或配置文件列表中的类似设备。幸运的是,创建自定义配置文件并不复杂,这将是"占位符"对于您必须传输的应用程序特定数据。对角色,GATT(服务和特征),UUID等的理解是强制性的,但在我看来,学习曲线或BLE堆栈并不困难。
当已知在嵌入式设备上运行的BLE配置文件时,使用CoreBluetooth库通过BLE进行连接和通信非常简单。
Apple使用BLE标准作为"运营商"对于iBeacon。他们正在使用BLE广告包中的制造商特定数据来声称"声称"有些设备是iBeacon。我会说,这完全没问题。您应该记住的是BLE不是iBeacon,但所有iBeacons都是BLE(具有硬编码制造商特定数据的设备,在广播BLE模式下暴露RSSI,UUID,主要和次要)。此外,iBeacon由CoreLocation而不是CoreBluetooth处理。这清楚地说明了Apple对iBeacon的内涵。
如果您想将iOS设备与Arduino或其他嵌入式设备集成,BLE肯定是您想要考虑的事情。如果您想了解IoT炒作和可用的RF选项,还有其他原因可以让您了解有关BLE的更多信息。 BLE将继续使用v4.1和即将推出的v4.2规范,这将提高带宽,为IPv6提供支持,提高安全性等。
最后,不是那么短,但我希望它有所帮助。
答案 5 :(得分:0)
某些BLE模块可以在iBeacon模式下使用,并且可以连接到IO。我使用基于CC2540 / CC2541的模块HM10和HM11。他们有几个用于iBeacon设置的AT命令。 Changable寄存器是 UUID , Major , Minor 和 Measured Power 。本文中有更多详细信息"Turn your CC2541 based HM-10 Bluetooth Smart Module into an iBeacon"