问题 从iPhone到Raspberry Pi的有线连接


我想在我的iPhone上构建一个连接到我的覆盆子Pi的应用程序。因为这些将非常接近(彼此相邻),我想使用有线连接(闪存端口到USB)进行通信。这可能还是我必须使用无线技术?我的假设是有线会更好,因为它确保连接并且会更快,但是,我愿意接受纠正。

这与我想在iphone上访问覆盆子pi传感器的业余爱好者项目有关。传感器(和Pi)将位于iphone旁边。我正在构建一个定制奇怪的案例来组合它们。

任何想法都非常感激。

谢谢 伊恩


6677
2018-01-07 16:55


起源

@Eimantas:OP正在询问有线连接。 BLE设备的吞吐量也很低。 - Rok Jarc
@rokjarc他愿意纠正并询问他是否必须使用无线技术。所以无线是一种选择。 - Eimantas
好。在那种情况下 - 是的,没有申请MFi(对于一家公司来说不是那么复杂,但我不为业余爱好者所知),BLE是您的选择之一。吞吐量<3kb / s。另一种选择是RPi侧的硬件调制解调器(FSK或类似)和iOS侧的软件调制解调器(通过音频插孔进行通信)。在任何情况下:USB或UART连接(需要MFi)确实会快得多。 - Rok Jarc
还有WiFi选项(不需要MFi)。如果您对电子产品有更多经验,可能需要使用一个模块,如一个MRF24W系列,或者一个WiFly模块...... - Rok Jarc


答案:


对于与外围设备(例如Raspberry Pi)的通信,您有几种选择。

UART通过30针或闪电连接器 (需要MFi)

USB通过30针或闪电连接器 (需要MFi)

快速开始: Microchip的开发套件。该模块可以延长与RPi的通信,或者您可以尝试将附件堆栈(以及与验证芯片的通信)实现到RPi本身。

通过音频插孔进行FSK或类似的调制音频通信 (不需要MFi)

您必须在RPi端实现硬件FSK调制解调器,在iOS端实现软件调制解调器。这有点棘手,但绝不是不可能的。

当然你也可以在RPi端实现软件调制解调器。但由于RPi没有音频输入,你必须使用USB声卡或其他东西。或者让您的生活变得复杂,试图快速采样模拟引脚。

用户并不是真的杰克在这个主题上做了一个令人印象深刻的链接列表 在这里

蓝牙作为外部附件 (需要MFi)

快速开始: RN-41/42 APL

易于使用的蓝牙堆栈。与认证芯片的通信由BT模块处理。请注意,与iOS设备通信时,数据吞吐量并不比使用BLE模块时好。

蓝牙作为  BLE   (不需要MFi)

数据吞吐量并没有那么糟糕 老人 BT。实现通信可能在代码方面更棘手。 这个模块 看起来很有趣

WiFi通讯 (不需要MFi)

WiFi可能是一个不错的选择。但是,为了使您的设备和iOS设备能够找到彼此,您将需要静态IP(对于服务器设备)或最小 零配置 (你好)实施。

使用WiFi时,您可以使用基础设施网络(使用外部接入点),也可以使用AdHoc(由您的设备创建)。后来看起来很有希望但要小心 - iOS7和AdHoc网络似乎并没有很好地协同工作。

有了WiFi,你有很多模块可供选择。更简单的使用将是一个类似的模块 RN-XV WiFly模块。 TCP堆栈已在模块中实现 - 您可以使用简单的UART通信。我不确定如何在这个上实现Zeroconf。

或者有 生的 像WiFi模块一样 MRF24WG0MA / MB。它们稳定可靠,可用于家用蚀刻PCB。 RPi用户的缺点是你几乎肯定需要一个PIC24或RPi和MRF24W之间的东西。 Microchip为其微控制器提供免费的TCP / IP堆栈,该堆栈包括Zeroconf。

而最简单的方法:您可以简单地使用WiFi加密狗(使用RPi)进行通信。 Zeroconf应该足够容易在RPi上实现 - 如果你可以为RPi分配静态IP(如果它充当服务器),那么在开始时它甚至都不需要。


11
2018-01-08 10:17





如果没有注册苹果MFI计划,这是不可能的。你必须支付并签署一堆NDA。

https://developer.apple.com/programs/mfi/

您可以使用其他方法,如蓝牙和音频端口连接。


2
2018-01-07 16:56



查看MFI计划,您需要成为一家公司才能注册。对于我的项目,我猜我将不得不使用蓝牙。谢谢您的帮助!!! - user2294382
这是一款符合MFi标准的Lightning转USB有线解决方案:redpark.com串口+电源线L4-DB9PV(雷击到DB9,它的MFi,115美元)连接到Startech端口USB到Null Modem RS232 ICUSB232FTN(20美元)。我自己正在研究这个话题,所以我还没有尝试过。 - Jeff


虽然@RokJarc的答案非常完整,但我也使用iOS的个人热点在有线(闪电到USB)和无线连接方面取得了成功。以下是步骤:

对于有线,在Pi上安装 ipheth-utils

sudo apt-get install ipheth-utils

并添加一个 eth1 网络界面通过编辑 /etc/network/interfaces 包括:

allow-hotplug eth1
iface eth1 inet manual

对于无线,请确保 /etc/network/interfaces 有一个无线网络条目,如:

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

如果您正在使用wpa_supplicant并为iPhone的热点添加网络条目 /etc/wpa_supplicant/wpa_supplicant.conf

network={
    ssid="Banana Phone"
    psk="ring ring ring"
    key_mgmt=WPA-PSK
    id_str="banana"
    priority=3
}

ssid应该是手机的名称 Settings -> General -> About -> Name 密码应来自个人热点屏幕。

现在启动手机上的个人热点。当通过USB连接到照明电缆或使用wifi时,pi应自动连接。在连接之后,应该在某处将pi分配给ip 172.20.10.x。你可以跑 ifconfig 在pi上找出哪一个。 (我相信你应该能够在这里定义一个静态IP,但还没有弄乱)

从那里,您可以将另一台计算机连接到热点,然后使用.sh连接到pi 172.20.10.x ip或甚至直接从手机ssh。


在我的个人测试中,闪电的延迟一直很低,而且我已经 在Raspberry Pi Two和Raspberry Pi Zero上使用它,用于将实时mjpeg视频从两个摄像头传输到VR耳机。在该方案中,网络是100ms左右延迟的相当小的来源。当然,体验并不是Vive质量,但它仍然可用,iPhone + Pi组合提供了许多有趣的黑客机会


2
2018-03-21 09:01