2013-05-02 194 views
1

我想通過互聯網控制Arduino。通過公共互聯網控制Arduino

說我沒有一個靜態IP連接到我的Arduino(我正在使用GPRS屏蔽)。在這種情況下,我必須按照這樣的程序。假設我正嘗試通過網絡開啓/關閉單個設備。

  1. 在服務器上有一個託管域名的網站。有一個PHP網頁 和一個關聯的MySQL表來保存命令的ON/OFF 命令。
  2. 當用戶需要打開設備時,他發送一個 特定請求到PHP頁面。它更改存儲在 數據庫表中的標誌。
  3. arduino定期向網頁發送請求,詢問 是否有更新。 PHP頁面檢查數據庫並且 響應arduino,所以現在arduino可以相應地打開/關閉設備 。

我的問題是,

  1. 運行在Arduino的一個(網絡)服務器可能是另一種方法。但是,我可以通過公共互聯網訪問它嗎?我正在使用GPRS模塊。移動服務用戶是否允許傳入連接?

  2. 要獲得實時輸出,我必須以非常短的時間連續發送請求。 PHP頁面必須一次又一次地查詢數據庫。性能明智這不是一個好方法。我在這種情況下有什麼替代方案? (我正在使用一個數據庫,因爲我打算讓很多用戶擁有很多設備。)

  3. 什麼是我必須實現相同的替代方法?

+0

有趣的項目! 1.)與您的移動運營商聯繫以訪問互聯網。我假設你必須在允許訪問蜂窩網絡之前註冊它?我的猜測是很有可能的。但爲什麼不繞過網絡服務器,並從手機控制Arduino? 2.)在我看來,Arduino的投票並不是一個好的方法。最好將命令發送給Arduino。 3.)通過互聯網遠程連接到家庭計算機(遠程桌面連接),通過WiFi或無線電(xbee等)將家庭計算機連接到Arduino。我的設置是筆記本電腦上的應用程序,XBEE到Arduino。奇蹟般有效。 – user2019047 2013-05-02 07:02:36

回答

0

您是否考慮過使用Raspberry Pi?您可以控制8個GPIO引腳(通用I/O,如Arduino),這對於大多數應用來說已經足夠了。

http://www.raspberrypi.org/

+0

這不回答這個問題。這個問題明確表示他想用Arduino來完成這個任務。 – sgonzalez 2014-08-31 03:50:20

0

你不說爲什麼你使用的是GPRS屏蔽。有些事情需要考慮使用您所概述的基本設置:

  • 互聯網上的智慧是默認情況下,傳入的GPRS連接被禁用,但可以啓用。如果這是真的,那麼a)你可能會得到一個靜態IP b)你可能會得到一個主機名,這將解析到你的Arduino設備,或者c)你可以(在最壞的情況下)使用像noip.com和類似的動態DNS服務。
  • 我不同意其他海報投票是這樣一個可怕的想法。如果你對你的架構很敏感,那麼只有新的數據輪詢不應該導致密集的流量。我所說的是你的中介服務器應該只發送數據到Arduino以前從未見過的Arduino。在這種情況下,唯一額外的流量與輪詢握手/協議流量相關,而不是數據。在後端,服務器可能會在等待下一輪詢請求時預處理要發送給Arduino的數據。關鍵是投票相對於推動的唯一缺點應該是a)潛在的時間滯後和b)額外的數據浪費在進行連接。如果你能找到a)可接受的答案,b)應該不是什麼大問題。

如果你願意考慮你的Arduino連接到互聯網的user2019047suggests的其他方式有很多種方式來思考:

  • 移動。也許你的鏈接可以使用電話,至少部分是這樣的:說你的服務器通知Arduino有新的數據可以通過短信接收,或者通過特定號碼撥打電話?
  • 您可以通過XBee,串口,藍牙或其他無線或有線技術將您的Arduino與PC連接。然後,連接到Arduino的PC可以與您的用戶通話的服務器進行通信。
1

你可以考慮當發生更新服務器可以只推送更新到Arduino監聽的插座中使用的Arduino的最終客戶端插座,然後再從Arduino是連接到服務器的另一種方法。這將允許實時即時更新。