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.
https://www.youtube.com/watch?v=6MR6qU3fXBc
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 :
- Resistor 10k ohm × 16
- IC sn74hc595n × 1
- 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);
// }
//}
//}
}