Andreaberri
Published © GPL3+

Cable Tester RJ45 (Ethernet)

Check internal connections RJ45 cable, standard cable, crossover cable, and special cables.

BeginnerFull instructions provided4 hours20,033
Cable Tester RJ45 (Ethernet)

Things used in this project

Story

Read more

Schematics

Schematics

Schematic Tester cable

Code

Cable Tester Code

Arduino
/*

  Tester per cavi ethernet

  Andrea Berri

  2016

 */

//Librerie


 #include <LiquidCrystal.h>

// inizializzo e assegno porte LCD

LiquidCrystal lcd( 4, 5, 6, 7, 8, 9);

// abilito pin per pilotare IC74HC595

int latchPin = 12;  

int clockPin = 11;  

int dataPin = 13; 

byte pinOut = 0;    // da modificare

int uscita = 0;  // da modificare

int Lo1 = 0;

int Lo2 = 0;

int Lo3 = 0;

int Lo4 = 0;

int Lo5 = 0;

int Lo6 = 0;

int Lo7 = 0;

int Lo8 = 0;

int cavo = 0;

int eth1 = 0;

int eth2 = 0;

int eth3 = 0;

int eth4 = 0;

int eth5 = 0;

int eth6 = 0;

int eth7 = 0;

int eth8 = 0;

int testeth1 = 0;

int verifi1 = 0;


 
 //Assegno variabili alle porte

int ethIn1 = 14;

int ethIn2 = 15;

int ethIn3 = 16;

int ethIn4 = 17;

int ethIn5 = 18;

int ethIn6 = 19;

int ethIn7 = 2;

int ethIn8 = 3;


 
 void setup() {

    lcd.begin(16,2);

    lcd.setCursor(0,0);

    lcd.print("Progetto Tester");

    lcd.setCursor(4,1);

    lcd.print("Ethernet");

    delay(3000);

    lcd.clear();

    Serial.begin(9600);

  

  //configuro uscita IC

    pinMode(latchPin, OUTPUT);

    pinMode(dataPin, OUTPUT);

    pinMode(clockPin, OUTPUT);


     pinOut = 0;


   //Assegno gli stati alle porte


  pinMode(ethIn1, INPUT);

  pinMode(ethIn2, INPUT);

  pinMode(ethIn3, INPUT);

  pinMode(ethIn4, INPUT);

  pinMode(ethIn5, INPUT);

  pinMode(ethIn6, INPUT);

  pinMode(ethIn7, INPUT);

  pinMode(ethIn8, INPUT);

  


 }


 void loop() {


    Serial.print("---------------INIZIO----------------"); 

    cavo = 0;

    Lo1 = 0;

    Lo2 = 0;

    Lo3 = 0;

    Lo4 = 0;

    Lo5 = 0;

    Lo6 = 0;

    Lo7 = 0;

    Lo8 = 0;

    lcd.clear();

    lcd.print("Processo: ");

    lcd.setCursor(0,1);

    //inserisco ciclo

    for (int uscita=0; uscita<= 7; uscita++){

       

    Serial.println();

    Serial.print("Pin uscita: ");

    Serial.print(uscita);

    

    //lcd.begin(16, 2);

    lcd.print(uscita + 1);

    pinOut = 0;


    bitSet(pinOut, uscita);

    digitalWrite(latchPin, LOW);

    shiftOut(dataPin, clockPin, LSBFIRST, pinOut);

    digitalWrite(latchPin, HIGH);

    


   //leggo stato entrata ethIn1

  int eth1 = digitalRead(ethIn1);

  int eth2 = digitalRead(ethIn2);

  int eth3 = digitalRead(ethIn3);

  int eth4 = digitalRead(ethIn4);

  int eth5 = digitalRead(ethIn5);

  int eth6 = digitalRead(ethIn6);

  int eth7 = digitalRead(ethIn7);

  int eth8 = digitalRead(ethIn8);

  int testeth1 = analogRead(ethIn1);

  

    //inserisco verifica


     if (uscita == 0 && eth1 == 1)

    {

      Lo1 = 1;

    }

    else

    {

      if (uscita == 0 && eth3 == 1) // se incrociato cambia valore

      {Lo1 = 256 ;

      }

    }

       

        

        if (uscita == 1 && eth2 == 1)

    {

      Lo2 = 2 ;

    }

    else

    {

            if (uscita == 1 && eth6 == 1) // se incrociato cambia valore

      {Lo2 = 512 ;

      }

    }

      

      

      if (uscita == 2 && eth3 == 1)

    {

      Lo3 = 4 ;

    }

    else

    {

            if (uscita == 2 && eth1 == 1) // se incrociato cambia valore

      {Lo4 = 1024 ;

      }

    }

        

        

        if (uscita == 3 && eth4 == 1)

    {

      Lo4 = 8 ;

    }

    else

    {

      

    }

        

        

        if (uscita == 4 && eth5 == 1)

    {

      Lo5 = 16; 

    }

    else

    {

      

    }

        

        

        if (uscita == 5 && eth6 == 1)

    {

      Lo6 = 32; 

    }

    else

    {

            if (uscita == 5 && eth2 == 1) // se incrociato cambia valore

      {Lo6 = 2024 ;

      }

    }

      

      

      if (uscita == 6 && eth7 == 1)

    {

      Lo7 = 64; 

    }

    else

    {

      

    }

        

        

        if (uscita == 7 && eth8 == 1)

    {

      Lo8 = 128; 

    }

    else

    {

      

    }

      Serial.println();

      Serial.print("Stato lettura porte: ");

      Serial.print(eth1);    

      Serial.print(eth2);   

      Serial.print(eth3);

      Serial.print(eth4);

      Serial.print(eth5);

      Serial.print(eth6);

      Serial.print(eth7);

      Serial.print(eth8);

      

      

      cavo = Lo1 + Lo2 + Lo3 + Lo4 + Lo5 + Lo6 + Lo7 + Lo8 ;

      Serial.println();

      Serial.print("Somma valori riscontrati: ");

      Serial.print(cavo);

   }

      

      

      

    

      

      

      if ( cavo == 255 )

      {

        lcd.clear();

        lcd.print("cavo dritto   ok");

        delay(2000);

        

      }

        else

    {

            if (cavo == 3008 )

              {

               lcd.clear();

                lcd.print("cavo inc.  ok");

                delay(2000);

              }

              else

              {

              lcd.clear();

              lcd.print("Cavo diverso");

              lcd.setCursor(0,1);

              lcd.print("o difettoso");

              

              delay(1000);

              lcd.clear();

              if ( cavo == 2496 )

              {

                lcd.print("Pin 2 / 6 ");

                delay(2000);

              }

              else

              {

                  

              }


               }

              }

              // insserisco sistema verifica pin per eventuale errore

              //inserisco ciclo


               

              lcd.print("Inizio verifica");

              delay(1000);

              lcd.clear();

              lcd.print("out: ");

              lcd.setCursor(0,1);

              lcd.print("in : ");

             uscita = 0;

    for (int uscita=0; uscita<= 7; uscita++){

    delay(250);

   

    

    pinOut = 0;

    bitSet(pinOut, uscita);

    digitalWrite(latchPin, LOW);

    shiftOut(dataPin, clockPin, LSBFIRST, pinOut);

    digitalWrite(latchPin, HIGH);

  //leggo stato entrata ethIn1

  int eth1 = digitalRead(ethIn1);

  int eth2 = digitalRead(ethIn2);

  int eth3 = digitalRead(ethIn3);

  int eth4 = digitalRead(ethIn4);

  int eth5 = digitalRead(ethIn5);

  int eth6 = digitalRead(ethIn6);

  int eth7 = digitalRead(ethIn7);

  int eth8 = digitalRead(ethIn8);


   //invio info al seriale stato porte

        Serial.println();

      Serial.print("Stato lettura porte verifica finale: ");

      Serial.print(eth1);    

      Serial.print(eth2);   

      Serial.print(eth3);

      Serial.print(eth4);

      Serial.print(eth5);

      Serial.print(eth6);

      Serial.print(eth7);

      Serial.print(eth8);

  

    //inserisco verifica porta1


     if (eth1 == 1)

    {

      verifi1 = 1;

    }

    else

    {

          if (eth2 == 1) 

          {verifi1 = 2;

          }

          else

          {

              if (eth3 == 1) 

              {verifi1 = 3;

              }

              else

              {

                  if (eth4 == 1) 

                   {verifi1 = 4;

                   }

                   else

                   {

                        if (eth5 == 1) 

                        {verifi1 = 5;

                        }

                        else

                        {

                            if (eth6 == 1) 

                            {verifi1 = 6;

                             }

                             else

                             {

                                  if (eth7 == 1) 

                                   {verifi1 = 7;

                                   }

                                   else

                                   {

                                        if (eth8 == 1) 

                                        {verifi1 = 8;

                                        }

                                        else

                                        {

                                        }

                                    }

                               }

                           }

                       }

                     }

                   }                               

                  }

       

              

              

              //lcd.print("Errore: ");

              

              lcd.setCursor(uscita+5,0);

              

              lcd.print(uscita+1);

              lcd.setCursor(uscita+5,1);

              

              lcd.print(verifi1);

              //delay(250);

              verifi1 = 0;

              //fine verifica errori

              }

               delay(2000);

             // }

              //}

    //}

}

Credits

Andreaberri

Andreaberri

1 project • 9 followers

Comments