I am in the beginning stages of creating a project to control my irrigation sprinklers via smartphone. I have connect a sainsmart solidstate relay board and wrote a test program to turn the solenoids on and off. So far so good.
I purchased a ethernet shield and am merely tring to assign an IP address to it. However, I keep getting 0.0.0.0 as the IP address.
========================================================CODE======================================================== #include <SPI.h> #include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 252);
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
Serial.println("IP Address: ");
Serial.println(ip);
Serial.println("Ethernet Begin");
Ethernet.begin(mac,ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop()
{
}
======================================================Results================================================
IP Address:
192.168.0.252
Ethernet Begin
server is at 0.0.0.0
//zoomkat 4-05-12
//web LED code
//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 ')
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
//turns pin 5 on/off
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // arduino server ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router gateway
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //arduino server port
String readString;
//////////////////////
void setup(){
pinMode(5, OUTPUT); //pin selected to control
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
//enable serial data print
Serial.begin(9600);
Serial.println("servertest1"); // 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); //print what server receives to serial monitor
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString);
//now output HTML data header
client.println("HTTP/1.1 200 OK");
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>HTML form GET example</H1>");
client.println("<FORM ACTION=\"http://192.168.1.102:84\" method=get >");
client.println("Pin 5 \"on\" or \"off\": <INPUT TYPE=TEXT NAME=\"LED\" VALUE=\"\" SIZE=\"25\" MAXLENGTH=\"50\">
");
client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\"Change Pin 5!\">");
client.println("</FORM>");
client.println("
");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
/////////////////////
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="";
}
}
}
}
}
I was told the ethernet port was shortin gout too but i put layers of electrical tape trying to see if it would help and i guess it did. Then i was told to check if the 4 pins on the back of the arduino were fully connected and i pressume they are but i still get "server is at 0.0.0.0"?
Gamerdude2956:
I was told the ethernet port was shortin gout too but i put layers of electrical tape trying to see if it would help and i guess it did. Then i was told to check if the 4 pins on the back of the arduino were fully connected and i pressume they are but i still get "server is at 0.0.0.0"?
Assuming your arduino shield is a w5100 one and is connected to a router, you could try the below to see if your router will assign it an IP address.
//open serial monitor to see assigned IP address
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
void setup()
{
Serial.begin(9600);
// disable SD SPI if memory card in the uSD slot
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
Serial.println("Starting w5100...");
if(!Ethernet.begin(mac)) Serial.println("failed");
else Serial.println(Ethernet.localIP());
}
void loop() {
}
Are you waiting to see if that times out? It may take a couple minutes for the dhcp request to fail.
Here is my test to check the SPI bus and the w5100. If this displays 0.0.0.0, or anything besides 192.168.2.2, the you have a problem with the SPI bus or the w5100.
I saw your post in Programming also. This part of zoomkat's code is incorrect. The dns server parameter is missing. I use the gateway ip if the code does not use dns.
// change this
Ethernet.begin(mac, ip, gateway, subnet);
// to this
Ethernet.begin(mac, ip, gateway, gateway, subnet);