1

在一个项目中,我一直在使用蓝牙模块(Panasonic PAN1321)以大约 200Hz(这是传输数据包的速率)将实时数据从某些传感器传输到 Android 平板电脑。现在我正在考虑改用 WiFi。我的理解是它的射程更远,更健壮。此外,许多无线系统都使用它,因此将我的系统与现有设置集成起来会更容易。我打算使用 Bluegiga WF121 作为我的 WiFi 节点。该模块提供 TCP 或 UDP 通信。我不了解 TCP 或 UDP。如果有人回答以下问题,我将不胜感激:

  • 从蓝牙转向 Wifi 值得吗?
  • 我能否在我的 WiFi 模块和 Android 平板电脑之间进行点对点数据传输(就像我的蓝牙模块一样)?
  • 在 WiFi 上,我可以实现高达 500Hz 的数据传输率,数据包大小约为 80 到 120 字节吗?对于我的项目中的实时反馈,500Hz 绰绰有余,但 200Hz 也足够了。甚至更低的数据传输率是可能的,但这会增加我的嵌入式系统的内存需求,这可能是一个瓶颈。
  • 数据包中包含一个时间戳,因此数据包的时间并不重要,但数据包的顺序更重要。只要我每秒可以接收多达 500 个数据包(最大 60000 字节/秒),数据包丢失也不重要。我不确定WiFi是否会太多。
  • 我应该从 TCP 还是 UDP 开始开发?
  • 我只想在我的 Android 平板电脑上使用 WiFi 来与传感器的 WiFi 模块通信,并在平板电脑上使用 3G/4G 进行互联网连接。这可能吗?

期待您的回答/讨论。干杯

4

2 回答 2

4
  • 200Hz = 每 5ms 一次。
  • 500Hz = 每 2ms 一次。

如果您 p​​ing 本地网络上的设备,您通常会看到延迟低于 1 毫秒。到目前为止,在不创建某种大缓冲区的情况下以该频率发送 0 字节数据没有问题。

关于带宽:

[WP]:802.11b 的最大原始数据速率为 11 Mbit/s [...] 实际上,应用程序可以实现的最大 802.11b 吞吐量约为 5.9 Mbit/s 使用 TCP 和 7.1 Mbit/s 使用 UDP。

如果您假设过时的 11MBit WiFi 连接速度相当慢,那么发送数据应该没有问题。蓝牙是低功耗、低带宽技术,因此速度要慢得多。6Mbit/s 意味着您可以以 ~ 4kHz 的速度传输。


我的理解是它的射程更远,更健壮。

正确,主要是因为它使用更多的功率。

从蓝牙转向 Wifi 值得吗?

是的,如果低范围和带宽限制了您。如果没有,为什么要实施新的东西。

我能否在我的 WiFi 模块和 Android 平板电脑之间进行点对点数据传输(就像我的蓝牙模块一样)?

  • UDP 可以广播或定向。设备之间没有连接。
  • TCP 需要点对点连接。
  • 两者在 Android 上使用都没有问题,一旦您拥有网络权限,应用程序就可以同时接收两者。请参阅任何通用 Java TCP/UDP 教程。

在 WiFi 上,我可以实现高达 500Hz 的数据传输率,数据包大小约为 80 到 120 字节吗?

只要连接足够好就没有问题。

数据包中包含一个时间戳,因此数据包的时间并不重要,但数据包的顺序更重要。

TCP 保证数据包的顺序。UDP 没有。(在 UDP 之上有一些实现类似于 TCP 连接)

只要我每秒可以接收多达 500 个数据包(最大 60000 字节/秒),数据包丢失也不重要。

TCP 还保证在建立连接时没有丢包。如果数据包丢失(这在本地网络上已经很少见),TCP 将重新请求它。您的应用程序只看到有序数据包的恒定流。UDP 没有任何保证。您的应用程序以它们到达的任何顺序获取数据包(我会假设本地网络中的顺序正确,基本上没有什么可以重新排序它们)并且如果它们丢失,它将看不到它们。

我应该从 TCP 还是 UDP 开始开发?

TCP听起来更好。如果您不希望丢包/重新排序,实现起来也更简单,因为这是在 TCP 堆栈中实现的。

我只想在我的 Android 平板电脑上使用 WiFi 来与传感器的 WiFi 模块通信,并在平板电脑上使用 3G/4G 进行互联网连接。这可能吗?

您可以创建某种可通过 Internet 访问的服务器,并让设备连接到该服务器。然后,服务器可以将它从传感器接收到的数据中继到仅连接 3G 的设备。我认为您无法将其实现到传感器中,但这并非不可能。3G 案例意味着服务器或传感器需要接受来自互联网的连接。您无法访问使用 3G 的设备,因为移动网络通常有防火墙,在 NAT 等之后。移动带宽通常也远低于您的目标 60000 字节/秒。取决于国家/提供商/位置/ ..如果您可以传输那么多。

于 2013-08-07T16:08:57.563 回答
3

问题1:值得吗?抱歉,您必须在了解权衡(包括开发时间)后自己决定

问题2:点对点?是的

问题 3:以 500 Hz 传输?每秒 500 msg * 每条消息 200 字节(允许协议开销)* 每字节 8 位 = 0.8 GHz。所以理论上可以在 1Ghz 信道上。然而,这假设完美的发送者和接收者,所以你可能做得不太好。如果你能用 10Ghz 的 WiFi 就可以了。作为一般规则,由于协议开销较小,UDP 比 TCP 更快。

问题 4:可靠性。TCP 保证按顺序传递,但您必须自己找到消息边界。UDP 是用于消息传递和排序的尽力而为的协议,但数据包边界与消息边界匹配,从而简化了接收代码。在 UDP 之上建立可靠性是可能的,但你基本上是在重新发明 TCP。还可以重新排序 UDP 数据包和/或跳过乱序的数据包,因此如果它们以错误的顺序出现,它们看起来就像丢失了。

问题 4:TCP 还是 UDP。我会说 UDP(已编辑)

问题5:平板用WiFi,上网用3G/4G?不确定这个。如果您使用 IP 寻址并且没有为 WiFi 配置 DNS 服务器,您可能能够将互联网流量强制到电话网络上,但这只是猜测。

于 2013-08-07T15:24:53.973 回答