Proiectual are ca scop testarea unui cablu UTP din punct de vedere al functionalitatii si al tipului.
Cablurile UTP adica cele pe care fiecare dintre noi le foloseste intre calculator si router, switch sau priza de retea sunt de trei tipuri si sunt formate din 8 fire colorate diferit.
In imaginea de sus este prezentata diagrama pinilor (pin-out diagram) pentru cele doua tipuri de cabluri UTP normal (straight-through cable) care se foloseste la conectarea calculatorului la router/switch si in dreapta diagrama pinilor pentru cablul cross-over, cablu ce se foloseste la conectarea directa a doua PC-uri sau doua switch-uri. Mai jos in imagine sunt prezentate cele doua standarde de culori EIA/TIA 568A si EIA/TIA 568B.
Pinii 4, 5, 7 si 8 (perechile albastru si brun/maro inchis) nu sunt folosite in ambele standarde si nu sunt necesare in realizarea unei conexiuni 100BASE-TX duplex.
Cele mai utilizate testere de cabluri folosesc LED-uri pentru a evidentia corespondenta firelor. Am pornit de la aceasta idee si am adaugat un display LCD care afiseaza informatii pe durata testului (corespondenta dintre cabluri, daca aceasta exista), iar la final este afisat un mesaj in cazul in care configuratia este corecta si nu exista intreruperi pe cablu.
Principiul de functionare: De la un capat al cablului se trimite cate un semnal pe fiecare din cele 8 fire cere-l compun, iar la celalalt capat semnalele vor fi receptionate. Daca nu ajung toate la destinatie atunci se va afisa un mesaj pentru a indica o configuratie incorecta. Daca ajung toate semnalele atunci vom verifica ordinea acestora si vom afisa mesajul corespunzator tipului de cablu testat (Straight, Crossover, Rollover). In cazul in care nu sunt respectate aceste standarde se va afisa mesaj pentru a indica faptul ca avem un cablu mufat incorect. De asemenea corespondenta intre cabluri este evidentiata si prin intremediul LED-urilor (atat sender-ul cat si receiver-ul au cate un LED pentru fiecare fir). In momentul in care se trimite semnal pe un fir, se va aprinde LED-ul corespunzator acestuia, Daca semnalul ajunge pana la destinatie atunci va fi aprins LED-ul corespunzator firului pe care a venit semnalul.
Exemple teoretice de folosire:
1. LED-urile se aprind succesiv la acelasi interval de timp = Cablul este bun si mufele sunt corect sertizate.
2. LED-urile se aprind succesiv mai putin LED-ul 3 = Firul 3 intrerupt sau nu este bine sertizat.
3. LED-urile se aprind succesiv dar int-o ordine aleatoare = Ordinea corecta nu este respectata.
4. LED-urile se aprind succesiv dar LED-urile 3 si 5 se aprind ambele atat in pozitia 3 cat si in pozitia 5 , restul functioneaza normal = Firele 3 si 5 sunt in scurtcircuit.
Ultimul exemplu arata un scurt intre firele 3 si 5.LED-urile 3 si 5 se aprind simultan.In realitate ele vor lumina cu o intensitate mai mica,deoarece tensiunea primita pe fire este injumatatita.
Proiectul utilizeaza placuta realizata in prima parte a proiectului, la care se adauga o extensie. Pe aceasta din urma avem un ecran LCD DEM16216SGH, 16 LED-uri 3mm (8 pentru sender, 8 pentru receiver) pentru a exemplifica trimiterea si receptia semnalelor,16 rezistente (am folosit rezistente SMD), doua mufe RJ-45. Portul D este utilizat pentru a controla LCD-ul, portul A pentru trimitera de semnale, iar portul C pentru receptia semnalelor.
Piese folosite
1. 2 mufe RJ-45 2. 16 LED-uri 3. 16 rezistente 1K (SMD) 4. LCD DEM16216SGH
Proiectul in etapa final indeplineste toate functionalitatile propuse. Observam in imaginea de jos placuta de test ce contine proiectul (tester de cablu UTP) si o matrice de leduri 8×8 pe care am implemetat jocul snake;
Starea initiala inainte de a insera cablul._ _ _ _ _ _ Cablu inserat.
Detalii despre implementare:
Programul va avea 2 module:
Pentru comunicrea cu LCD-ul am folosit API-ul definit in laboratorul de PM:
/************************************************************************ * DEFINE-uri pentru parametrizarea modulului LCD ************************************************************************/ #define LcdDATA_DDR DDRD // Portul pe care conectam firele de date la LCD-ul #define LcdDATA_PORT PORTD #define LcdDATA_PIN PIND #define LcdCMD_DDR DDRD // Portul pe care conectam firele de comenzi la LCD #define LcdCMD_PORT PORTD #define LcdCMD_PIN PIND #define LcdD4 PD4 // Pin-ul pentru firul de date D4 de pe LCD #define LcdD5 PD3 // Pin-ul pentru firul de date D5 de pe LCD #define LcdD6 PD2 // Pin-ul pentru firul de date D6 de pe LCD #define LcdD7 PD1 // Pin-ul pentru firul de date D7 de pe LCD #define LcdRS PD7 // Pinul pentru selectare operatie (LCD) #define LcdRW PD6 // Pinul pentru Read/ Write (LCD) #define LcdE PD5 // Pinul de Enable (LCD) #define LCD_INSTR_4wire 0x28 // 4 fire date, font 5x8 #define LCD_INSTR_display 0x0C // Display On, Cursor On, Blinking On ( 1 Display Cursor Blink ) #define LCD_INSTR_clearDisplay 0x01 // Clear Display #define LCD_INSTR_returnHome 0x02 // Return Cursor and LCD to Home Position #define LCD_INSTR_nextLine 0xC0 // Return Cursor and LCD to Home Position #define LCD_INSTR_gotoCGRAM 0x40 // go to Character Generator RAM /************* * API LCD * *************/ void LCD_init(); // Initializare modul LCD.Trebuie apelata inainte de a se face orice operatie cu LCD-ul void LCD_writeInstruction(unsigned char _instruction); // Trimite o instructiune catre lcd (vezi datasheet) void LCD_writeData(unsigned char _data); // Trimite date catre LCD pentru afisare void LCD_write(unsigned char _byte); // trimite un bute catre LCD la modul general (nu conteaza daca e instructiune sau date) void LCD_waitNotBusy(); // Asteptam pana cand lcd-ul devine disponibil pt o noua comanda void LCD_waitInstructions(unsigned char _instructions); // Asteapta un numar de cicli de ceas. void LCD_print(char* _msg); // Afiseaza imformatia pe LCD (doar 1 linie, primele 16 caractere) void LCD_print2(char* _msg1, char* _msg2); // Afisare pe 2 lini pe LCD void LCD_printDecimal2u(unsigned int _n); // Afisare numar in baza 10 pe LCD void LCD_printHexa(unsigned int _n); // Afisare numar in baza 16 pe LCD
Proiectul a fost de o dificultate redusa ,atat software cat si hardware,ceea ce mi-a piermis sa mai implementez un mic proiect pana la finalul etapei a treia.Am implmentat jocul “snake” pe o matrice de leduri 8×8.
O alta realizare interesanta a proiectului este folosirea rezistentelor SMD (mult mai mici si mai usor de lipit,aducand un plus laturii estetice).