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
  • Quartz de 25 MHz
  • 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 :

  • Implementarea mea consta in construirea pe marginea laboratoarului 5 (ENC28J60) si respectiv laboratorului 1 (LCD) a unor functii ce permit crearea de pachet ICMP si analizarea continutului raspunsului

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

Sursele vor fi publice sub licenta GNU (free personal use).

pingtester-v1.zip

Bibliografie/Resurse

pm/prj2010/rtataroiu/pingtester.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0