Rabu , 23 Agustus 2017

Cara Membuat Cable Tester RJ45 (Ethernet) Menggunakan Arduino

ZONADUINO- Baik sobat sesuai judul diatas, yaitu “Cara Membuat Cable Tester RJ45 (Ethernet)”. Admin membagikan Project ini kepada sobat sekalian, dan sebelum membahas lebih dalam silahkan cermati baik-baik cara kerja dari Project ini.

Ide ini lahir tatkala kita mau memeriksa kabel UTP RJ45 untuk jaringan, untuk itu admin membagikan Project sederhana ini kepada seluruh pecinta dunia Mikro terlebih lagi pecinta Arduino. Memang alat ini dipasaran juga ada tapi jika kita bisa membuatnya sendiri akan menambah dan melatih kreatifitas kita bukan?

 

Dalam penggunaan IC SN74HC595 terintegrasi kecil ini bertujuan untuk memperbanyak output Arduino Uno untuk pin-pin pada RJ45.

Alat dan Bahan :

  1. Resistor 10k ohm × 16
  2. IC sn74hc595n × 1
  3. Arduino UNO & Genuino UNO × 1

Skema :

 

/*

  Tester per cavi ethernet


 */

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

             // }

              //}

    //}

}

About syafrie

Seorang pemungut ilmu yang tak mau ketinggalan dengan dunia IT yang kemudian ditulis ulang dalam bentuk tulisan-tulisan ngawur yang ga jelas.

Tinggalkan Balasan

Alamat surel Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *