2014-01-22 60 views
0

基本上我有一個Arduino UNO,我通過以太網連接到我的路由器。我用我的服務器登錄了IP,並且想將數據推送到我的arduino。我想數據流將發送數據(不確定最佳的方式?我應該打開一個端口並將數據流?)到路由器,然後將它轉發到我的路由器分配的本地地址的我的Arduino。從服務器到路由器的數據轉發到Arduino

如何告訴路由器轉發此信息而無需登錄並更改路由器的任何內容。這個練習的重點是用代碼做所有事情,而不是做任何其他活動,比如登錄到路由器並設置。我想這樣做,因爲我有我的Arduino錄音溫度,我想推送數據以表明它是否應該切換從華氏度或華氏度發送數據,反之亦然。

+0

更好的方法是調用服務器的頻率來檢查數據的格式。如果你需要從互聯網連接到Arduino的端口,你需要在你的路由器上配置端口轉發 – Ramesh

+0

有沒有辦法解決這個問題?通過發送http帖子進行通信有什麼可能呢?我想減少網絡流量,因爲arduino會提出很多請求,否則我會更新爲即時 – bubblebath

回答

2

我會使用帶有發佈/訂閱模式的套接字服務器。可能有幾個在那裏,但我最瞭解XSockets.NET。

幾個小時前,我實際上已將Arduino連接到XSockets,並在網頁和我的arduino之間進行通信。

我會把在GitHub上的代碼,當我做,但你可以看看視頻在這裏展示的概念:The Stuff For You Starts At 3:20

+0

OMG,這太棒了。我沒有選擇chossen的答案,因爲我想看看是否有其他人回來的替代品。非常感謝,但如果你把github的東西將完全激化:D – bubblebath

+0

謝謝。我將把所有的代碼放在github上,例如如何在arduino/netduino和瀏覽器之間進行發佈/訂閱等。可能需要一兩週的時間,因爲我必須首先編寫它們:) – Uffe

0

你不需要,只要打開任何端口爲您的Arduino和服務器上同一個本地網絡。由於IP地址映射包括您的arduino在內的網絡上的所有設備。

您希望在路由器上打開端口的原因是讓本地網絡之外的人訪問您網絡上的服務器。存在端口轉發的原因是,當有人向你的公共IP(它是你的路由器)發送一個數據包時,它知道發送數據包的本地IP。然後丟棄它,除非您將端口轉發到本地IP,這意味着您的路由器將帶有該端口的所有數據包發送到本地IP地址。

您還需要製作自己的服務器程序,例如用作服務器的java程序。

我做了類似於你正在尋找的東西,但我使用WiFi屏蔽來代替。我在維護與它的連接時遇到了一些問題,但到目前爲止,它似乎是WiFi libary的問題。

您可能仍然不過從中學到一些東西:
Maintaining communication between Arduino and Java program

如果您想了解更多關於Java服務器一般是如何工作的,這裏是一個偉大的教程這也解釋了很多基礎知識:
http://www.thenewboston.org/watch.php?cat=25&number=38