通过公共互联网控制Arduino

时间:2013-05-02 06:03:19

标签: embedded arduino communication gprs

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

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

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

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

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

    3. 我必须采取哪些替代方法?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

http://www.raspberrypi.org/

答案 2 :(得分:0)

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

  • 互联网上的智慧是,默认情况下,传入的GPRS连接已禁用,但可以启用。如果这是真的那么a)你可能得到一个静态IP b)你可能得到一个将解析为你的Arduino设备的主机名或c)你可以(在最坏的情况下)使用动态DNS服务,如noip.com和类似的。 / LI>
  • 我不同意其他海报,即民意调查是一个非常糟糕的想法。如果您对您的架构很聪明,那么轮询仅限新数据不应该导致密集流量。我所说的是你的中间服务器应该只向Arduino发送Arduino之前没见过的数据。在这种情况下,与轮询握手/协议流量相关联的唯一额外流量,而不是数据。在后端,服务器可能会在等待下一个轮询请求时预处理要发送到Arduino的数据。关键是推送的唯一不利因素应该是a)潜在的时间滞后和b)浪费连接的额外数据。如果你能找到a)的可接受的答案,b)不应该是一个非常大的交易。

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

  • 移动。也许您的链接可以使用电话,至少部分是:说您的服务器通知Arduino有新的数据可以通过短信接听,或者来自特定号码的电话?
  • 您可以通过XBee,串行,蓝牙或其他一些无线或有线技术将您的Arduino与PC连接起来。然后连接到Arduino的PC可以与您的用户通信的服务器通信。