[Einsteiger] Nachbau eines Projektes, doch Wifi statt Ethernet Shield?

Hallo,

um Arduino kennen zu lernen, würde ich gerne ein ganz einfaches Projekt nachbauen. Es geht darum, das Klingeln an der Haustüre als Push-Benachrichtigung zu senden.

Das Projekt ist hier beschrieben: Make: Projects

Nun habe ich mir ein Arduino Uno Board sowie ein Wifi-Shield bestellt, da ich an der Haustüre kein Netzwerkkabel haben möchte.

Die Frage wäre nun, wie kann ich statt des Ethernet-Shields ein Wifi-Shield verwenden? Ist das sehr kompliziert?

Danke im Voraus!

Viele Grüße, MZwei

////
//
// General code from http://www.pushingbox.com for Arduino + Ethernet Shield (official)
//
////

#include <SPI.h>
#include <Ethernet.h>

  /////////////////
 // MODIFY HERE //
/////////////////
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x19 };   // Be sure this address is unique in your network

//Your secret DevID from PushingBox.com. You can use multiple DevID  on multiple Pin if you want
#define DEVID1 "**********"        //Scenario : "The mailbox is open"

//Numeric Pin where you connect your switch
#define pinDevid1 3  // Example : the mailbox switch is connect to the Pin 3

// Debug mode
#define DEBUG true
  ///////
 //End//
///////

char serverName[] = "api.pushingbox.com";
boolean pinDevid1State = false;

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
  Serial.begin(9600);
  pinMode(pinDevid1, INPUT);
  
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    while(true);
  }
  else{
    Serial.println("Ethernet ready");
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
}

void loop()
{
      ////
      // Listening for the pinDevid1 state
      ////
      if (digitalRead(pinDevid1) == HIGH && pinDevid1State == false) // switch on pinDevid1 is ON 
      {
        if(DEBUG){Serial.println("pinDevid1 is HIGH");}
        pinDevid1State = true;
        //Sending request to PushingBox when the pin is HIGHT
        sendToPushingBox(DEVID1);
      }
       if (digitalRead(pinDevid1) == LOW && pinDevid1State == true) // switch on pinDevid1 is OFF
      {
        if(DEBUG){Serial.println("pinDevid1 is LOW");}
        pinDevid1State = false;
        //Sending request to PushingBox when the pin is LOW
        //sendToPushingBox(DEVID1);
      }
}


//Function for sending the request to PushingBox
void sendToPushingBox(String devid){
    if(DEBUG){Serial.println("connecting...");}

  if (client.connect(serverName, 80)) {
    if(DEBUG){Serial.println("connected");}

    if(DEBUG){Serial.println("sendind request");}
    client.print("GET /pushingbox?devid=");
    client.print(devid);
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(serverName);
    client.println("User-Agent: Arduino");
    client.println();
  } 
  else {
    if(DEBUG){Serial.println("connection failed");}
  }
  
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if(DEBUG){
    if (client.available()) {
    char c = client.read();
    Serial.print(c);
    }
  }

    if(DEBUG){Serial.println();}
    if(DEBUG){Serial.println("disconnecting.");}
    client.stop();
}

Sonderlich kompliziert sollte das nicht werden. Am besten gehst Du schrittweise vor.
Als erstes solltest Du das WiFi-Shield in Deinem WLAN zum laufen bringen, dafür gibt es sicher eine passende Lib und Beispiel-Sketche.
Wenn das geklappt hat, kannst Du dann den Code der Bush-Box um die WLAN-Lib erweitern und den Teil des Codes anpassen, damit Du statt "Ethernet.begin(mac)" und alles was da dran hängt, den WLAN-Code verwenden kannst.

Uiui* Das hört sich, für mich als Einsteiger, sehr aufwändig an.

Dann werde ich zuerst mal nach der passenden Lib und Beispiel-Sketches suchen.

So aufwändig ist es nicht, und das Forum hier ist ja auch noch da. Welches WiFi Shield hast du denn zur Verfügung? (am besten mit Link zum Anbieter oder Shop)

Ich hatte mich für dieses WiFi-Shield entschieden und hoffe, dass es das richtige ist:

http://www.watterott.com/de/Arduino-RedFly-Shield

Dort ist auch ein Link zu einer passenden Lib sowie Examples:

Das ist doch ein guter Anfang. Es gibt eine Lib und Beispiel-Sketche mit denen Du die ersten Schritte machen kannst.
Als Ausgangspunkt für Deine Klingelsteuerung kannst Du dann später z.B. prima das WebClient.ino Example verwenden. Denn am Ende macht das "Klingel-Push" Programm auch nichts anderes als einen Webserver "anfunken". Du musst dann nur die Funktion "void sendToPushingBox" aus Deinem Klingel-Sketch in den WebClient Sketch vom RedFly übernehmen und anpassen.
Mario.