Habe Probleme mit dem originalen Wifi Shield

Hallo an alle,

bin neu hier. Beschäftige mich seit längerer Zeit mir Mikrocontrollern. Auch mit C und C++ bin ich einigermassen vertraut. Aber mit dem Wifi Shield bin ich an meine Grenzen gestossen.

Habe versucht sämtliche Sketches die ich fürs Ethernet Shield gefunden habe irgendwie umzuschreiben, aber irgendwie hat es nicht so richtig hingehauen.

Habe einfach keinen durchschlagenden Erfolg erzielt.

Möchte praktisch den Arduino als Webserver nutzen mit Controll Buttons, Rückmeldungen und so weiter…

Möchte auch die SD Karte auf dem Wifi Shield richtig nutzen…

Zum Beispiel Daten zur SD Karte schicken bzw. von ihr holen usw…

Habe wie gesagt sehr viel experimentiert aber nie mit zufriedenstellendem Ergebnis.

Have auch nirgendwo ein Buch über das Wifi Shield gefunden, wahrscheinlich ist es noch zu neu.

Suche auf diesem Wege praktisch allen verfügbaren Code für das Wifi Shield um zu experimentieren.

Wenn es nötig ist kann ich auch einige meiner Codebeispiele posten, wie gesagt nur funktionieren sie alle nicht richtig.

Vielen Dank schon mal im Vorraus und an alle noch schöne Weihnachten und einen guten Rutsch.

http://arduino.cc/en/Main/ArduinoWiFiShield und http://arduino.cc/en/uploads/Main/WiFiShield_library.zip findest Du keine Beispiele bzw nützliche Information?
Grüße Uwe

Hallo,

habe mitlerweile ein paar Stunden mit dem Arduino Uno R3 und dem originalen WiFi Shield verbracht und habe jetzt eine einigermassen zufriedenstellende erste Lösung gefunden.

Es hakt hin und wieder mit dem Browser aber der Arduino hat halt nur 12 MHZ…

Jeder der sich irgendwie Hilfe ersieht kann gerne meinen Code benutzen und nach Herzenslust verändern. Er selbst baut auf dem WifiWebServer der beim Arduino mit dabei war auf.

Ich würde mich nach wie vor über andere Codes zum Wifi Shield freuen.

Zu Uwe: Danke für die schnelle Antwort aber unter den genannten Quellen ist leider nicht viel brauchbare Hilfe dabei.

Wie gesagt der jetztige Sketch ist ein WifiWebServer der alle analogen Ports und alle freien digitalen Ports anzeigt und 3 als Ausgänge verändern kann.

Naja schaut es euch mal an über Verbesserungen oder Kritik würde ich mich sehr freuen.

Bis dann.

Viele Grüße.

Rokitz.

  1. Hälfte vom Code
#include <SPI.h>                          //for serial peripheral interface
#include <WiFi.h>                          //for WIFI

char ssid[] = "your network";      //  your network SSID (name) 
char pass[] = "your password";           // your network password

WiFiServer server(80);                      //standard port 80
       
String readString;                        //string for fetching data from address
int status = WL_IDLE_STATUS;              //WLAN Status

void setup() {
 
  Serial.begin(9600);                       //opens serial interface with a boudrate of 9600
  
                                            // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); 
  } 
  
                                            // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);    
                                            // Connect to WPA/WPA2 network.    
    status = WiFi.begin(ssid, pass);
                                            // wait 5 seconds for connection:
    delay(5000);
  } 
  server.begin();
                                            // you're connected now, so print out the status:
  printWifiStatus();
}


void loop() {
                                            // listen for incoming clients
  WiFiClient client = server.available();
  if (client) {
    Serial.println("new client");
                                            // an http request ends with a blank line
   boolean currentLineIsBlank = true;
   
   String readstring ="";                    //clean the string
   
    while (client.connected()) {
         
      if (client.available()) {
        char c = client.read();                //serial interface gives out client iformation
        Serial.write(c);
         
        readstring+= c;                        //save the chars in readstring
       
        if (c == '\n' && currentLineIsBlank) {    // when the new client information comes in
                                                          // Button Calls
          if (readstring.indexOf("toogeln6")!= -1) {digitalWrite(6, !digitalRead(6));}
          if (readstring.indexOf("toogeln8")!= -1) {digitalWrite(8, !digitalRead(8));} //always, when string is part of the big string then
          if (readstring.indexOf("toogeln9") != -1) {digitalWrite(9, !digitalRead(9));} //toggle the output
          
                                                          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");                //from here the html code
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.print("<html><head>");
          client.print("<title>KIROLABS ARDUINO WEBSERVER 2.0</title>");
          client.println("</head>");
          client.print("<body bgcolor='#999999'>");
          client.print("<meta content='text/html; charset=ISO-8859-1'");
          client.print("http-equiv='content-type'>");
          client.print("<div align='center'><big><big><big><big><big>KIROLABS ");
          client.print("ARDUINO WEBSERVER &nbsp;2.0</big></big></big></big></big></div>");
          client.print("<div align='center'><big>created ");
          client.print("2012 by Robert Kitzhofer</big></div>");
          client.println("
");
          client.println("
");                                          //print analog inputs
          client.print("<big>***   ANALOG INPUTS   ***</big>");
          client.println(F("<table border='2'>"));

          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("<td>analog value ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(F(" </td><td>"));
            client.print(sensorReading);
            client.println("</td>");
                
          }
          
            client.println(F("</table>"));
            client.println("
");
            client.println("
");                                  //print digital inputs 2,3,5,
            client.println("
");                                  //because 0,1 are for the serial interface
            client.print("<big>***   DIGITAL INPUTS   ***</big>");  //4 is for the sd card, 7 is handshake between
            client.println(F("<table border='2'>"));                    //wifi and arduino an also 10-13 are in use
                                                                        // so port 6,8,9 are outputs, 3 in, 3 out
    pinMode(2, INPUT);
    digitalWrite(2, HIGH); // turn on pull-ups

    client.print(F("<td>digital input "));
    client.print(2);
    client.print(F(" </td><td>"));

   if(digitalRead(2) == LOW)
      client.print("LOW");

    else
      client.print("HIGH");
      client.println("</td>"); 
  
  
   pinMode(3, INPUT);
    digitalWrite(3, HIGH); // turn on pull-ups
  
    client.print(F("<td>digital input "));
    client.print(3);
    client.print(F(" </td><td>"));

   if(digitalRead(3) == LOW)
      client.print("LOW");
  1. Hälfte vom Code
 else
      client.print("HIGH");
      client.println("</td>");
  
   pinMode(5, INPUT);
    digitalWrite(5, HIGH); // turn on pull-ups
    client.print(F("<td>digital input "));
    client.print(5);
    client.print(F(" </td><td>"));

   if(digitalRead(5) == LOW)
      client.print("LOW");
  
    else
      client.print("HIGH");
      client.println("</td><td>");
      client.print("<form action='../'>");
      client.print("<input type=submit value='PAGE RELOAD' style='cursor: hand'>");
      client.print("</form>");
      client.println("</td>");
      client.println(F("</table>"));
      client.println("
");
      client.println("
");
      client.println("
");
      client.print("<big>***   DIGITAL OUTPUTS   ***</big>");
      client.println(F("<table border='2'>"));  

                                                                  // show output pins 6,8,9
                                                                  // note pins 4,7,10-13 are used by the WiFi shield 
 pinMode(6, OUTPUT);
    client.print(F("<td>digital output "));
    client.print(6);
    client.print(F(" </td><td>"));

 
      client.print("<form action='../toogeln6'>");
      client.print("<input type=submit value='TOGGLE 6' style='cursor: hand'>");
      client.print("</form>");
 
 
    client.print(F(" </td><td>"));

    if(digitalRead(6) == LOW)
      client.print("LOW");

    else
      client.print("HIGH");
      client.println(F("</td>"));
 
 pinMode(8, OUTPUT);
  
      client.print(F("<td>digital output "));
      client.print(8);
      client.print(F(" </td><td>"));
  
client.print("<form action='../toogeln8'>");
      client.print("<input type=submit value='TOGGLE 8' style='cursor: hand'>");
      client.print("</form>");
      client.print(F(" </td><td>"));

    if(digitalRead(8) == LOW)
      client.print("LOW");
     
    else
      client.print("HIGH");
      client.println(F("</td>"));
  
  pinMode(9, OUTPUT);
  
      client.print(F("<td>digital output "));
      client.print(9);
      client.print(F(" </td><td>"));
 
 client.print("<form action='../toogeln9'>");
      client.print("<input type=submit value='TOGGLE 9' style='cursor: hand'>");
      client.print("</form>");
      client.print(F(" </td><td>"));

    if(digitalRead(9) == LOW)
      client.print("LOW");
    
        else
    
      client.print("HIGH");
      client.println(F("</td>"));
      client.println(F("</table>"));
      client.println("</body></html>");
           break;
        }
        if (c == '\n') {
                                                // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
                                                // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
                                                // give the web browser time to receive the data
    delay(500);                                 //find the right balance
                                                // close the connection:
      client.stop();
      Serial.println("client disonnected");
  }
}


void printWifiStatus() {
                                        // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

                                        // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

                                        // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}