Go Down

Topic: arduino ethernet shield ping drop or unreachble (Read 551 times) previous topic - next topic

ispl

Hi,

i am getting problem in my project when i send command to arduino via ethernet shield to trigger relay.

normaly it works fine but some time when i send command then i got error of ping drop .

or else its totaly got unreachble from pinging.


component:

1.Arduino Uno R3 ATmega328P ATMEGA16U2 Compatible with USB Cable
2.Ethernet W5100 Shield Network Expansion Board W/
3. 2 CHANNEL 5V RELAY BOARD MODULE RELAY EXPANSION BOARD

#include <SPI.h>                                             // needed for Arduino versions later than 0018
#include <Ethernet.h>                                        // Ethernet board connected - Uses A0, A1, (D2 or D4), D10, D11, D12, D13
#include <EthernetUdp.h>                                     // UDP library from: bjoern@cs.stanford.edu 12/30/2008


byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xE0 }; // <------- PUT YOUR MAC Address Here
byte ip[] = { 10, 195, 82, 251 }; //                    <------- PUT YOUR IP Address Here
unsigned int localPort = 8888;                               // Local IP port to listen on
byte gateway[] = { 10, 195, 82, 1 }; //               <------- PUT YOUR ROUTERS IP Address to which your shield is connected Here
byte subnet[] = { 255, 255, 255, 0 }; //                <------- It will be as it is in most of the cases
EthernetServer server(80); //                           <------- It's Defaulf Server Port for Ethernet Shield  

char packetBuffer[UDP_TX_PACKET_MAX_SIZE];                   // buffer to hold incoming packet
EthernetUDP Udp;                                             // An EthernetUDP instance to let us send and receive packets over UDP

int PinA = 3;                     // Switch Pin 5
int PinB = 4;
int PinC = 5; // Switch Pin 6

void setup() {                                               // run setup only once on boot

Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Udp.begin(localPort);                                      // Start UDP Connection

pinMode(PinA, OUTPUT);                                     // attach the pin
pinMode(PinB, OUTPUT);
pinMode(PinC, OUTPUT);      // attach the pin
digitalWrite(PinA, LOW);
digitalWrite(PinB, HIGH);
digitalWrite(PinC, HIGH);

          }                                               // end of setup

void loop()                                                  // Start Running System
{
int packetSize = Udp.parsePacket();                        // if there's data available, read a packet
if(packetSize)
{
int read = Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);  // read the packet into packetBufffer
 packetBuffer[read] = 0;
 char ch = packetBuffer[0];

switch(ch)
{
case '0':                                                   // if 0 is sent via udp then do this -->>
digitalWrite(PinA, LOW);                                   // Turn PinA Off
break;                                                      // end of case 0
case '1':                                                   // if 1 is sent via udp then do this -->>
digitalWrite(PinA, HIGH);                                  // Turn PinA On
break;                                                      // end of case 1
case '2':                                                   // if 2 is sent via udp then do this -->>
digitalWrite(PinB, LOW);                                   // Turn PinB Off
break;                                                      // end of case 2
case '3':                                                   // if 3 is sent via udp then do this -->>
digitalWrite(PinB, HIGH);                                  // Turn PinB On
break;                                                      // end of case 3
case '4':                                                   // if 3 is sent via udp then do this -->>
digitalWrite(PinC, LOW);                                  // Turn PinB On
break;                                                      // end of case 3
case '5':                                                   // if 3 is sent via udp then do this -->>
digitalWrite(PinC, HIGH);                                  // Turn PinB On
break;                                                      // end of case 3


default :                                                   // if recived info via udp and not found in the case do this -->>
 
break;                                                      // end of case not found
}
}

delay(15);                                                 // waits 15ms for udp input wait ...
}                                                            // end system run, but now loop and start system run again

vlczak

Hello ispl,

Have you ever resolved this?

I run into the very same issue when my Arduino stops responding to PING after some of the relay switches.

Appreciate your answer

Go Up