Beginner Project - Controlling Servo's via Ethernet

Hello all! This is my first post on the forum. I look forward to collaborating with you all. I have done some basic Arduino development in the past. However, I am now ready to undertake some more serious development. The project I have in mind relies on using the Arduino Ethernet Shield to assist in control of Servo's and Motor's via a telnet, or web interface.

Does anyone else have experience with controlling devices via Arduino Ethernet? I have looked through Google, but have not found a good resource to start from. I would greatly appreciate anyone providing input, or pushing me in the right direction.

I would like to eventually be able to control two servo's, and two gear motors (via H-Bridge) over a web interface. If possible, I would also like to print output from a sonar sensor to the same web interface.

Thanks for all the help!

One of the examples that ships with Bitlash is a programmable telnet/web server that might be worth a look. You can see the code online here:

https://github.com/billroy/bitlash/blob/master/examples/BitlashWebServer/BitlashWebServer.ino

and you'll find it in the examples/ directory if you install Bitlash.

Good luck with your project.

-br http://bitlash.net

Corndork2: Does anyone else have experience with controlling devices via Arduino Ethernet? I have looked through Google, but have not found a good resource to start from. I would greatly appreciate anyone providing input, or pushing me in the right direction.

Really? Controlling things (usually LEDs) through the internet is probably the most common project you find when it comes to an Arduino with Ethernet capabilities.

Simple web server test code that includes a servo.

//zoomkat 4-1-12
//simple button GET for servo and pin 5
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html, or use ' instead of " 
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields

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

#include <Servo.h> 
Servo myservo;  // create servo object to control a servo 

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

String readString; 

//////////////////////

void setup(){

  pinMode(5, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, gateway, subnet);
  server.begin();

  myservo.write(90); //set initial servo position if desired
  myservo.attach(7);  //the pin for the servo control
  //enable serial data print 
  Serial.begin(9600); 
  Serial.println("server servo/pin 5 test 1.0"); // so I can keep track of what is loaded
}

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string 
          readString += c; 
          //Serial.print(c);
        } 

        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString); //print to serial monitor for debuging 

          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>Zoomkat's simple Arduino button</H1>");
          
          client.println("<a href=\"/?on\">ON</a>"); 
          client.println("<a href=\"/?off\">OFF</a>"); 

          client.println("</BODY>");
          client.println("</HTML>");
 
          delay(1);
          //stopping client
          client.stop();

          ///////////////////// control arduino pin
          if(readString.indexOf("on") >0)//checks for on
          {
            myservo.write(40);
            digitalWrite(5, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            myservo.write(140);
            digitalWrite(5, LOW);    // set pin 4 low
            Serial.println("Led Off");
          }
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}