草庐IT

ios - 从 iPhone 到 Raspberry Pi 的有线连接

coder 2023-07-28 原文

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

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

非常感谢任何想法。

谢谢 伊恩

最佳答案

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

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

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

快速入门:Microchip's development kits .该模块可以延长与 RPi 的通信,或者您可以尝试将附件堆栈(以及与认证芯片的通信)实现到 RPi 本身。

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

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

当然,您也可以在 RPi 端实现软件调制解调器。但由于 RPi 没有音频输入,您将不得不使用 USB 声卡或其他东西。或尝试以足够快的速度对模拟引脚进行采样会使您的生活复杂化。

用户 not really Jake 就此主题制作了一个令人印象深刻的链接列表 here on SO .

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

快速入门:RN-41/42-APL

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

蓝牙作为 BLE 模块(无需 MFi)

数据吞吐量并不比 BT 差多少。实现通信在代码方面可能有点棘手。 This module看起来很有趣。

WiFi 通信(无需 MFi)

WiFi 可能是一个不错的选择。但是为了让您的设备和 iOS 设备能够找到彼此,您将需要静态 IP(用于服务器设备)或最小的 Zeroconf ( Bonjour ) 实现。

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

有了 WiFi,您有许多模块可供选择。更简单的使用方式是像 RN-XV WiFly Module 这样的模块。 . TCP 堆栈已在模块中实现 - 您可以使用简单的 UART 通信。我不确定如何在这个上实现 Zeroconf。

或者有原始 WiFi 模块,如MRF24WG0MA/MB .它们稳定可靠,可用于家庭 eclipse 刻 PCB。 RPi 用户的缺点是您几乎肯定需要一个 PIC24 或介于 RPi 和 MRF24W 之间的东西。 Microchip 为其微 Controller 提供免费的 TCP/IP 堆栈,该堆栈包括 Zeroconf。

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

关于ios - 从 iPhone 到 Raspberry Pi 的有线连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977389/

有关ios - 从 iPhone 到 Raspberry Pi 的有线连接的更多相关文章

  1. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  2. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  3. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  4. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  5. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  6. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  7. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

  8. ruby-on-rails - 连接字符串时如何在 <%=%> block 内输出 html_safe? - 2

    考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://

  9. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  10. ruby-on-rails - 什么会导致与 APNS 的连接间歇性断开连接? - 2

    我有一个ruby​​脚本可以打开与Apple推送服务器的连接并发送所有待处理的通知。我看不出任何原因,但当Apple断开我的脚本时,我遇到了管道损坏错误。我已经编写了我的脚本来适应这种情况,但我宁愿只是找出它发生的原因,这样我就可以在第一时间避免它。它不会始终根据特定通知断开连接。它不会以特定的字节传输大小断开连接。一切似乎都是零星的。您可以在单个连接上发送的数据传输或有效负载计数是否有某些限制?看到人们的解决方案始终保持一个连接打开,我认为这不是问题所在。我看到连接在3次通知后断开,我看到它在14次通知后断开。我从未见过它能超过14点。有没有人遇到过这种类型的问题?如何处理?

随机推荐