Project tutorial
Cable Tester RJ45 (Ethernet)

Cable Tester RJ45 (Ethernet) © GPL3+

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

  • 5,586 views
  • 0 comments
  • 7 respects

Components and supplies

Apps and online services

About this project

Idea was born to need to control a non-standard Ethernet cable.

How to check the internal links?

In practical use for a small integrated SN74HC595 to have more outputs Arduino Uno.

Sending sequence on 5V 8 Pin RJ45 Pin and I check on what the voltage is read.

Example:

Output = Pin1 Pin 1 (for all 8-pin) standard cable Result functioning.

Output Pin1 = Pin 6 ...... Result defective cable or different, the result show on the dial.

Versione italiana:

Idea nata per esigenza di controllare un cavo Ethernet non standard.

Come fare a verificare i collegamenti interni ?

In pratica utilizzo un piccolo integrato SN74HC595 per avere a disposizione maggiori uscite da Arduino Uno.

Invio in sequenza 5V sui 8 Pin RJ45 e verifico su quale Pin la tensione viene letta.

Esempio:

Uscita Pin1 = Pin 1 ( per tutti i 8 pin ) Risultato cavo normale funzionante.

Uscita Pin1 = Pin 6 ...... Risultato cavo difettoso o diverso, mostro sul quadrante il risultato.

Code

Cable Tester CodeArduino
/*

  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);

             // }

              //}

    //}

}

Schematics

Schematics
Djw7alrv6cfdktfvp6io
Schematic Tester cable
kMJuLNAVK2I3A3VEeJUb.fzz

Comments

Similar projects you might like

Arduino Bluetooth Basic Tutorial

by Mayoogh Girish

  • 454,798 views
  • 42 comments
  • 238 respects

Home Automation Using Raspberry Pi 2 And Windows 10 IoT

Project tutorial by Anurag S. Vasanwala

  • 285,661 views
  • 95 comments
  • 672 respects

Security Access Using RFID Reader

by Aritro Mukherjee

  • 231,200 views
  • 38 comments
  • 241 respects

OpenCat

Project in progress by Team Petoi

  • 196,494 views
  • 154 comments
  • 1,366 respects
Add projectSign up / Login