Table of Contents

RJ45 Tester

Introducere

Ideea de la care am pornit

Vă amintiți primul laborator de RL?

Acolo am învățat cum să realizăm un cablu UTP pentru rețele Ethernet, Procesul poarta numele de sertizare. După realizarea cablului, acesta trebuie verificat ca functioneaza corect - adică dacă are continuitate.

Testarea se face folosind un dispozitiv dedicat.

De aici a pornit ideea proiectului meu: realizarea propriului meu tester RJ45, caruia i-am adus o serie de îmbunătățiri.

Care este scopul proiectului?

Dispozitivul proiectat permite testarea cablurilor de rețea de tip RJ45, oferind feedback vizual și auditiv privind corectitudinea conexiunilor dintre pini.

Prin simpla apăsare a unui buton, utilizatorul poate selecta tipul de cablu testat:

  1. Straight-through - pentru conectarea dispozitivelor aflate pe layere diferite (ex: PC – switch)
  2. Crossover - pentru conectarea dispozitivelor de același layer (ex: PC – PC)
  3. Rollover (numit si cablu de consola) - pentru a conecta un dispozitiv la un echipament de retea si pentru a avea acces direct la CLI

După selectare, pe ecranul principal (128×160 SPI) este afișată o imagine cu ordinea corectă a firelor pentru tipul respectiv de cablu.

Ce face?

Testarea efectivă presupune 2 verificări:

  1. Se vor trimite semnale, secvențial, iterând pinii sender-ului unul câte unul, cu mici pauze între transmisii,
  2. urmând un test final în care se vor activa simultan toți pinii sender-ului

Testarea poate fi oprită forțat, în orice moment, prin apăsarea unui buton.

În timp ce display-ul pe SPI (de rezoluție mai mare) afișează ordinea firelor în mufa RJ-45, LCD-ul cu modul I2C va scrie pe ecran tipul de cablu straight-through\crossover\rollover și indexul pinului de pe sender de pe care se trimit semnale (ex: Testing pin 1…8), sau mesajul Testing all pins.

De ce este util?

Consider că folosirea ecranelor face diferența dintre un tester RJ-45 obișnuit și acest dispozitiv.

Practic, este un instrument „2 în 1”: tester + ghid de conectare.

Sper ca dispozitivul pe care îl proiectez (îmi propun să îi fac și un PCB compact) să ajungă în mâinile laboranților de RL/CCNA1. Acolo își va atinge adevăratul potențial.

Descriere Generala

Schema bloc:

rj45-tester-schema-bloc.jpg

Hardware Design

Lista Componente

Componenta Pret
Arduino Nano V3.0 ~40 lei
2x RJ45 Adapter Board + Breakout Board + Pin Header (de pe AliExpress 😊) ~8 lei fiecare
1x 74HC595 8-bit Shift Register (1 pin intrare, 8 pini iesire) 4 lei
1x 74HC165 8-bit Shift Register (1 pin iesire, 8 pini intrare) 8 lei
LCD 16x02 cu interfata I2C ~16 lei
Modul LCD SPI 160x128 ~44 lei
16x LED Verde 3mm cu Lentile Difuze 0,40 lei fiecare
16x Rezistente 220 Ω (pt LED-uri)
Buzzer Pasiv 1 leu
3x Buton cu Capac Rotund 2 lei fiecare
3x Rezistente (de PULL-UP) de 10 kΩ (pt butoane)
3x Condensatoare ceramice de 47nF (pt butoane) 0,50 lei fiecare
3x Breadboard 830 puncte 20 lei fiecare
Set fire Plusivo cu izolatie PVC (Fir unifilar) - 22 AWG 45 lei
Jumpere tata-tata
Jumpere mama-tata

Set fire PVC:

  • Size matters: cele de 22 AWG se conecteaza cel mai bine in breadboard
  • Calalalt tip de fire (silicon - multifilar): sunt bune de lipit, dar in niciun caz nu se pot infige intr-un breadboard

Schema electrica

rj45-schematics.jpg

Pin configurations

Arduino

Pin Arduino Corespondent
D2 Butonul albastru (BTN1)
D3 Butonul rosu (BTN2)
D4 Butonul alb (BTN3)
D5 Buzzer pasiv
D6 Data OUT 74HC595 (SER)
D7 Latch 74HC595 (RCLK)
D8 Clock 74HC595 (SRCLK)
D9 RS-Display
D10 CS-Diplsay
D11 (SPI) MOSI
D12 (SPI) MISO
D13 (SPI) SCK
D14 (etichetat A0) Data IN 74HC165
D15 (etichetat A1) PL 74HC165
D16 (etichetat A2) CLK 74HC165
A4 (I2C) SDA
A5 (I2C) SCL

160x128 Display (pe SPI)

spi_128x160_display.jpeg

Denumire pin Descriere
Vcc
GND Ground
NC Not Connected (nu se conecteaza la nimic)
CLK Clock
SDA este pinul de MOSI (foarte confuz ca au scris SDA in loc de MOSI)
RS Register Select
RST Reset
CS Chip Select

Pinul RS (Register Select) este cunoscut si sub numele de DC (Data Command).

Acest pin indica daca datele trimise pe SPI sunt:

  • comenzi (e.g.: seteaza pozitia cursorului)
  • date (e.g. afiseaza pixeli pe ecran)

Pinul are urmaoare functionalitate:

  • Daca RS/DC = 0 → comanda
  • Daca RS/DC = 1 → date

Pin Display SPI Corespondent
Vcc 5V
GND GND
NC nu se conecteaza la nimic
CLK Arduino D13 (SPI SCK)
SDA Arduino D11 (SPI MOSI)
RS Arduino D9
RST Arduino RESET
CS Arduino D10

74HC595 shift register

Shift register-ul 74HC595 are o singura intrare si 8 iesiri paralele.

Index pin 74HC595 Denumire pin 74HC595 Corespondent
15 QA LED 1 (cel mai de sus) & pin 1 socket RJ-45 sender
1 QB LED 2 (al doilea cel mai de sus) & pin 2 socket RJ-45 sender
2 QC LED 3 & pin 3 socket RJ-45 sender
3 QD LED 4 & pin 4 socket RJ-45 sender
4 QE LED 5 & pin 5 socket RJ-45 sender
5 QF LED 6 & pin 6 socket RJ-45 sender
6 QG LED 7 & pin 7 socket RJ-45 sender
7 QH LED 8 & pin 8 socket RJ-45 sender
8 GND GND
9 !QH nu este conectat
10 !SRCLR 5V
11 SRCLK Arduino D8
12 RCLK Arduino D7
13 !OE GND
14 SER Arduino D6
16 Vcc 5V

LED-ul la care fac referire aici sunt cele din partea stanga, asociata sender-ului.

74HC165 shift register

Shift register-ul 74HC165 are o singura iesire si 8 intrari paralele.

Index pin 74HC165 Denumire pin 74HC165 Corespondent
7 !QH nu este conectat
9 QH Arduino D14 (etichetat A0)
1 SH/!LD Arduino D15 (etichetat A1)
2 CLK Arduino D16 (etichetat A2)
8 GND GND
16 Vcc 5V
10 SER GND
15 CLK INH GND
11 A (out1) LED 1 (cel mai de sus) & pin 1 socket RJ-45 receiver
12 B (out1) LED 2 (al doilea cel mai de sus) & pin 2 socket RJ-45 receiver
13 C (out1) LED 3 & pin 2 socket RJ-45 receiver
14 D (out1) LED 4 & pin 3 socket RJ-45 receiver
3 E (out1) LED 5 & pin 4 socket RJ-45 receiver
4 F (out1) LED 6 & pin 5 socket RJ-45 receiver
5 G (out1) LED 7 & pin 6 socket RJ-45 receiver
6 H (out1) LED 8 & pin 7 socket RJ-45 receiver

LED-ul la care fac referire aici sunt cele din partea dreapta, asociata receiver-ului.

Debounce butoane: Filtru trece-jos

Pentru a trata debounce-ul butoanelor exclusiv din hardware, m-am gandit sa introduc in circuit un filtru trece-jos, punand cate un condensator ceramic in paralel cu fiecare buton.

Constanta de timp τ:

τ = R*C =10kΩ*47nF = 10^4 + 47*10^(-9) = 47*10^(-5) = 470us

5*τ=5*470μs≈2.35ms

Astfel, schimbarile mai rapide de 2.35 ms ale butoanelor vor fi ignorate (la nivel hardware) de aceste filtre.

Chiar si asa, eu tot am lasat in cod un mic delay (unul mult mai mare decat ce poate circuitul construit de mine sa filtreze).

Progresul fizic, pe etape

rj45-hw-stage-1.jpeg rj45-hw-stage-2.jpeg rj45-hw-stage-3.jpeg

Software Design

Biblioteci folosite:

Repo GitHub: <https://github.com/TrifanBogdan24/RJ45-tester> - codul sursa se gaseste in folderul src/.

Am asociat fiecarui buton cate o intrerupere:

Descrierile functiilor:

NOTA: flag-ul pressedBTN2 este tratat in interiorul algoritmului de testare (in functia test_individual_rj45_pins())

Repo GitHub: https://github.com/TrifanBogdan24/RJ45-tester

link YouTube:

Concluzii