Below is some quick test code for arduino #1 you should be able to change to connect to arduino #2. This is still setup to connect to my web server for testing. note this code ip address end is 103 instead of 102 to keep the ip address different. The final idea is to send an o from the serial monitor to have arduino #1 send an "on" GET request to arduino #2 to turn its LED on. Send f to do the same to turn the LED off. As is, a g, o, or f sent from the serial monitor will all download the same text from my web server for testing.
//zoomkat 3-05-13, combined client and server
//simple button GET with iframe code
//for use with IDE 1.0
//open serial monitor and send an g to test client and
//see what the arduino client/server receives
//web page buttons make pin 5 high/low
//use the \ slash to escape the " in the html
//address will look like http://192.168.1.103:84 when submited
//for use with W5100 based ethernet shields
//note that the below bug fix may be required
// http://code.google.com/p/arduino/issues/detail?id=605
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
IPAddress ip(192,168,1,103); // arduino #1 ip address
IPAddress gateway(192,168,1,1); // internet access via router
IPAddress subnet(255,255,255,0); //subnet mask
IPAddress myserver(208,104,2,86); // zoomkat web page
//IPAddress myserver(192,168,1,102); // arduino #2 ip address
EthernetServer server(84); //server port
EthernetClient client;
String readString;
//char serverName[] = "web.comporium.net"; // zoomkat's test web page server
byte inChar;
//////////////////////
void setup(){
pinMode(5, OUTPUT); //pin 5 selected to control
Ethernet.begin(mac,ip,gateway,gateway,subnet);
server.begin();
Serial.begin(9600);
Serial.println("server/client 1.0 test 12/08/11"); // keep track of what is loaded
Serial.println("Send an g, o, or f, in serial monitor to test client"); // what to do to test client
}
void loop(){
// check for serial input
if (Serial.available() > 0)
{
//byte inChar;
inChar = Serial.read();
if(inChar == 'g' || inChar == 'o' || inChar == 'f')
{
sendGET(); // call sendGET function
}
}
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
//now output HTML data header
if(readString.indexOf('?') >=0) { //don't send new page
client.println("HTTP/1.1 204 Zoomkat");
client.println();
client.println();
}
else {
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 1.0 button</H1>");
client.println("<a href=\"/?on\" target=\"inlineframe\">ON</a>");
client.println("<a href=\"/?off\" target=\"inlineframe\">OFF</a>");
//client.println("<IFRAME name=inlineframe src=\"res://D:/WINDOWS/dnserror.htm\" width=1 height=1\">");
client.println("<IFRAME name=inlineframe style=\"display:none\" >");
client.println("</IFRAME>");
client.println("</BODY>");
client.println("</HTML>");
}
delay(1);
//stopping client
client.stop();
///////////////////// control arduino pin
if(readString.indexOf("on") >0)//checks for on
{
digitalWrite(5, HIGH); // set pin 5 high
Serial.println("Led On");
}
if(readString.indexOf("off") >0)//checks for off
{
digitalWrite(5, LOW); // set pin 5 low
Serial.println("Led Off");
}
//clearing string for next read
readString="";
}
}
}
}
}
//////////////////////////
void sendGET() //client function to send/receive GET request data.
{
//if (client.connect(myserver, 84)) { //arduino #2 on port 84
if (client.connect(myserver, 80)) {
Serial.println("connected");
if(inChar == 'g') client.println("GET /~shb/arduino.txt HTTP/1.0");
if(inChar == 'o') client.println("GET /~shb/arduino.txt HTTP/1.0");
if(inChar == 'f') client.println("GET /~shb/arduino.txt HTTP/1.0");
//GET request to arduino #2
//if(inChar == 'o') client.println("GET /?on HTTP/1.0"); //LED on
//if(inChar == 'f') client.println("GET /?off HTTP/1.0"); //LED off
client.println();
}
else {
Serial.println("connection failed");
Serial.println();
}
while(client.connected() && !client.available()) delay(1); //waits for data
while (client.connected() || client.available()) { //connected or data available
char c = client.read();
Serial.print(c);
}
Serial.println();
Serial.println("disconnecting.");
Serial.println("==================");
Serial.println();
client.stop();
}