Главная страница

ЛР_5.Простой тестер кабелей RJ45. Простой тестер кабелей rj45


Скачать 334.26 Kb.
НазваниеПростой тестер кабелей rj45
Дата18.09.2022
Размер334.26 Kb.
Формат файлаdocx
Имя файлаЛР_5.Простой тестер кабелей RJ45.docx
ТипДокументы
#683573

Простой тестер кабелей RJ45


При прокладке проводных сетей Ethernet зачастую необходимо быть уверенным в целостности кабеля и иметь возможность проверить эту целостность в случае потери связи и прочих нештатных ситуациях.


Сегодня можно купить специальные тестеры для проверки кабелей RJ45, а можно и сделать самому, что выйдет значительно дешевле. Кроме того, благодаря развитию и популяризации платформы Arduino сделать тестер на базе Arduino не составляет проблем.

Принцип работы такого проверочного устройства на Arduino довольно прост. На один конец кабеля посылаются сигналы с одних линий ввода/вывода Arduino, которые затем со второго конца кабеля считываются другими линиями ввода/вывода Arduino. Если отправленные и принятые данные совпадают, то это означает, что кабель целый, в противном случае кабель поврежден и нуждается в замене. Основная проблема в данном случае заключается в том, что у Arduino нет такого количества линий ввода/вывода, чтобы отправить сигналы на восемь контактов одного конца и принять сигналы с восьми контактов другого конца. Поэтому здесь необходимо использовать микросхему расширения выводов SN74HC595. Схема подключения представлена на изображении ниже.


Код работы (скетч для Arduino) тестера Ethernet кабелей RJ45 приведен ниже.
#include
LiquidCrystal lcd( 4, 5, 6, 7, 8, 9);
int latchPin = 12;
int clockPin = 11;
int dataPin = 13;
byte pinOut = 0
int uscita = 0;
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;

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("Cable Tester");
lcd.setCursor(4,1);
lcd.print("Ethernet");
delay(3000);
lcd.clear();
Serial.begin(9600);

pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);

pinOut = 0;

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("----------Initialization-------------");
cavo = 0;
Lo1 = 0;
Lo2 = 0;
Lo3 = 0;
Lo4 = 0;
Lo5 = 0;
Lo6 = 0;
Lo7 = 0;
Lo8 = 0;
lcd.clear();
lcd.print("Process: ");
lcd.setCursor(0,1);
for (int uscita=0; uscita<= 7; uscita++){

Serial.println();
Serial.print("Pin: ");
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);

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

if (uscita == 0 && eth1 == 1)
{
Lo1 = 1;
}
else
{
if (uscita == 0 && eth3 == 1)
{Lo1 = 256 ;
}
}

if (uscita == 1 && eth2 == 1)
{
Lo2 = 2 ;
}
else
{
if (uscita == 1 && eth6 == 1)
{Lo2 = 512 ;
}
}


if (uscita == 2 && eth3 == 1)
{
Lo3 = 4 ;
}
else
{
if (uscita == 2 && eth1 == 1)
{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)
{Lo6 = 2024 ;
}
}

if (uscita == 6 && eth7 == 1)
{
Lo7 = 64;
}
else
{

}


if (uscita == 7 && eth8 == 1)
{
Lo8 = 128;
}
else
{

}
Serial.println();
Serial.print("Status of ports: ");
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("Founded value of sum: ");
Serial.print(cavo);
}






if ( cavo == 255 )
{
lcd.clear();
lcd.print("Quality of cable is ok");
delay(2000);

}
else
{
if (cavo == 3008 )
{
lcd.clear();
lcd.print("cable is ok");
delay(2000);
}
else
{
lcd.clear();
lcd.print("cable is not ok");
lcd.setCursor(0,1);
lcd.print("there is defect");

delay(1000);
lcd.clear();
if ( cavo == 2496 )
{
lcd.print("Pin 2 / 6 ");
delay(2000);
}
else
{

}

}
}

lcd.print("Begin checking");
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);

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

Serial.println();
Serial.print("Resulting status of ports: ");
Serial.print(eth1);
Serial.print(eth2);
Serial.print(eth3);
Serial.print(eth4);
Serial.print(eth5);
Serial.print(eth6);
Serial.print(eth7);
Serial.print(eth8);

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.setCursor(uscita+5,0);

lcd.print(uscita+1);
lcd.setCursor(uscita+5,1);

lcd.print(verifi1);
//delay(250);
verifi1 = 0;
}
delay(2000);
// }
//}
//}
}


написать администратору сайта