2012-04-14 13 views
2

私はArduinoでWiFlyシールドを使用していますが、すべてうまくいきます:私はSkduhをUSB経由でArduinoにアップロードし、9Vバッテリーを接続し、USBとWi-Fiを切り離しますモジュールはすべてをうまく送信します(データをWebサーバーに送信します)。WiFlyシールド+ Arduino +自動接続問題

バッテリーが切れたとき、私は別のバッテリと交換していないが、その後、無線LAN/Arduinoのは、もはや私のサーバーと通信します。..

私はArduinoの上の初心者だと私は場合かどうかを毎回理解していません電源が切れているArduinoは、プログラムを失うか、または単に無線LANが自動的に接続することはできません...

これはソフトウェアの問題またはハードウェアですか? ソフトウェアの場合、私は何が間違っていますか?

これは私のスケッチの例である - 私はちょうど私のサーバーに文字列を送信しています:

#include "WiFly.h" 
#include "Credentials.h" // includes ny user:pass wifi network 

Client client("[***myserverip***]", 80); 

void setup() {  
    Serial.begin(9600); 

    WiFly.begin(); 

    if (!WiFly.join(ssid, passphrase)) { 
    Serial.println("Association failed."); 
    while (1) { 
     // Hang on failure. 
    } 
    } 

    connectServer(); 
} 

void loop() { 
    if (client.available()) { 
    char c = client.read(); 
    Serial.print(c); 
    } 

    if (!client.connected()) { 
    Serial.println(); 
    Serial.println("disconnecting."); 
    client.stop(); 
    delay(60000); // check every minute 
    connectServer(); 
    } 
} 

void connectServer() { 
    Serial.println("connecting..."); 

    if (client.connect()) { 
    Serial.println("connected"); 
    String query = "GET /arduino/test?q=testString HTTP/1.0"; 

    client.println(query); 
    client.println(); 
    } else { 
    Serial.println("connection failed"); 
    } 
} 

だから、すべてが正常に動作しますが、私は力を抜いて再度差し込み時にArduinoのプロセスを再起動してくださいdoesntの。

答えて

3

私は解決策を自分で見つけました。問題はハードウェアにありました。

私のArduino UNO R2に問題がありました。既知のバグがあります。

私はUNO R3を購入しましたが、この問題はもう発生しません。

2

これは、外部電源を使用しているときにArduinoボードに電源オンリセットがないため、電源投入直後にArduinoボードをリセットする必要があるためです。この問題を解決するために、リセットピンにコンデンサを接続することができます。しかし、電源としてUSBを使用している場合、USBコントローラはArduinoをリセットします。この場合、この問題は発生しません。