1

我正在考虑通过互联网控制 Arduino。

假设我没有与我的 Arduino 的静态 IP 连接(我正在使用 GPRS 屏蔽。)在这种情况下,我必须遵循类似这样的程序。假设我正在尝试通过网络打开/关闭单个设备。

  1. 有一个网站,其域名托管在服务器上。有一个 PHP 网页和一个关联的 MySQL 表来保存 ON/OFF 命令。
  2. 当用户需要打开设备时,他会向 PHP 页面发送特定请求。它更改存储在数据库表中的标志。
  3. arduino 会定期向网页发送请求,询问是否有任何更新。PHP 页面检查数据库并响应 arduino,因此现在 arduino 可以相应地打开/关闭设备。

我的问题是,

  1. 在 Arduino 中运行(网络)服务器可能是另一种方法。但是我可以从公共互联网访问它吗?我正在使用 GPRS 模块。移动服务用户是否允许传入连接?

  2. 为了获得实时输出,我必须在很短的时间内连续发送请求。并且 PHP 页面必须一次又一次地查询数据库。就性能而言,这不是一个好方法。在这种情况下,我有哪些选择?(我正在使用数据库,因为我计划让许多用户使用许多设备。)

  3. 我必须实现相同的替代方法是什么?

4

3 回答 3

1

您可能会考虑的另一种方法是使用 arduino 端的客户端套接字从 arduino 连接到服务器,然后当发生更新时,服务器可以将更新推送到 arduino 正在侦听的套接字。这将允许实时即时更新。

于 2013-05-03T16:15:41.057 回答
0

您没有说为什么要使用 GPRS 屏蔽。使用您概述的基本设置需要考虑的一些事项:

  • 互联网上的智慧是默认情况下传入的 GPRS 连接被禁用但可以启用。如果这是真的,那么 a) 你可能会得到一个静态 IP b) 你可能会得到一个主机名,它将解析到你的 Arduino 设备或 c) 你可以(在最坏的情况下)使用像 noip.com 和类似的动态 DNS 服务。
  • 我不同意其他海报认为投票是一个如此糟糕的想法。如果您对自己的架构很了解,那么仅轮询新数据不应导致大量流量。我要说的是,您的中间服务器应该只向 Arduino 发送 Arduino 以前从未见过的数据。在这种情况下,唯一与轮询握手/协议流量相关的额外流量,而不是数据。在后端,服务器可能会在等待下一个轮询请求时预处理要发送到 Arduino 的数据。关键是轮询相对于推送的唯一缺点应该是 a) 潜在的时间延迟和 b) 浪费在建立连接的额外数据。如果你能找到 a) 的可接受答案,b) 应该不是什么大问题。

如果您愿意考虑其他方式将您的 Arduino 连接到互联网,因为user2019047 建议有很多方法可以考虑:

  • 移动的。也许您的链接至少可以部分使用电话:假设您的服务器通知 Arduino 有新数据要通过 SMS 或来自特定号码的电话来获取?
  • 您可以通过 XBee、串口、蓝牙或其他一些无线或有线技术将您的 Arduino 与 PC 连接起来。然后连接到 Arduino 的 PC 可以与您的用户与之交谈的服务器进行通信。
于 2013-05-03T06:47:36.873 回答
0

您是否考虑过使用 Raspberry Pi 代替?您可以控制 8 个 GPIO 引脚(通用 I/O,如 Arduino),这对于大多数应用程序来说已经足够了。

http://www.raspberrypi.org/

于 2013-05-02T19:33:24.163 回答