Introducere
Proiectul meu denumit PingTester realizeaza urmatoarele :
realizeaza o cerere de ARP pentru a determina adresa MAC a urmatorului hop / statiei destinatie la care se cunoaste adresa IP implementata deocamdata static
trimite un pachet de ICMP request (echo request) la adresa IP specificata
asteapta primirea pachetului de ICMP reply (echo reply)
verifica codul din pachet pentru a determina daca este Ping Successfull, Request Timeout sau Destination Unreachable
afiseaza pe LCD un mesaj corespunzator pentru a informa utilizatorul de rezultat
Scopul lui este de a verifica de oriunde exista o conexiune la Internet ca o adresa IP poate fi accesata fara a mai fi nevoie de un PC sau un dispozitiv de retea.
Ideea de la care a aparut acest proiect a fost cand am observat ca daca doresc testarea capacitatii unui server de a raspunde la cereri (si aici nu ma refer doar la portul 80), implementarea unui script pentru un PC este ieftina si rapida, dar sunt unele situatii cand nu ai nevoie de un PC pentru a testa acest lucru ci un dispozitiv de sine statator.
Acest proiect poate fi foarte util unui administrator de retea care nu mai trebuie sa se deplaseze cu un laptop ci cu un asemenea dispozitiv care poate capata dimensiuni mult mai mici daca se folosesc placute imprimate + componente SMD.
Descriere generală
ATMega16 - realizeaza logica pentru tipul de pachet
ENC28J60 - realizeaza componenta de realizare a pachetelor/cadrelor corespunzatoare cu stadardul ETHERNET (802.3)
Interfatarea cu RJ45 - realizeaza conexiunea cu mediul fizic
Display LCD - realizeaza interfatarea cu utiizatorul
Hardware Design
Lista de piese folosite :
ENC28J60
-
rezistente : 10K, 2K7, 470, 4 x 51, 2 x 330 [Ohmi]
capacitati : 2 x 15 pF, 10 uF, 22 uF, 330 pF, 10 nF
LCD (16 pini)
LED (rosu)
“Magjack” - Interfata cu RJ45
LM78033 (LM7805/BA033T/2 Diode)
barete + papuci + cablu UTP + fludor → conectori
placuta
Software Design
Detalii de implementare :
Mediul de dezvoltare : WinAVR
Compilare : WinAVR
Incarcare pe placuta : avrusbboot-ret.2008-03-4
librarii/cod extern folosit : enc28j60.c, ip_arp_udp_tcp.c
Mod de implementare :
Functii adaugate :
void make_arp_request (uint8_t* destip);
unsigned char ping_reply (uint8_t* buf);
uint8_t* arp_request_mac (uint8_t* buf);
void make_ping_request(uint8_t* destip, uint8_t* destmac);
Main :
Se realizeaza initializarile (ENC28J60+LCD)
Se realizeaza trimiterea unei cerei de ARP pentru IP static declarat (ex 216.239.59.104)
procesarea cererii prin salvarea adresei MAC
crearea unui pachet ICMP request
asteptarea pana la primirea pachetului de ICMP raspuns si analizarea tipului de raspuns
afisarea pe LCD a unui mesaj corespunzator
Rezultate Obţinute
Deocamdata mai am de lucru - stay tunned
Concluzii
Firul de UTP se indoaie uneori de se rupe.
Daca aveti de realizat mai multe conexiuni cu papuci cumparati direct deja facute daca gasiti (eu nu am mai gasit din pacate).
Mergeti din timp si va cumparati componente - in ultimele saptamani gasiti mai greu ce aveti nevoie.
Daca nu faceti placuta imprimata - verificati fiecare lipitura cu un multimetru.
Verificati tensiunea de alimentare la ENC28J60 (3,3V) - nu conectati integratul pana nu verificati ca este tensiunea corespunzatoare.
LCD-ul poate fi foarte folositor la un debugging al codului prin simpla afisare a unui mesaj “custom” intr-o anumita secventa de cod.
Download
Bibliografie/Resurse