
INTRODUZIONE
L'intento di questa serie di articoli è quella di realizzare un interfaccia Ethernet per microcontrollori PIC, sfruttando il controller ENC28J60 di Microchip.
Cio comprende non soltanto la parte Hardware, ma anche (e soprattutto) quella Software: infatti questi articoli non vertono sull'utilizzo dello stack TCP/IP ufficiale, ma piuttosto sulla creazione di un software "custom" a fini non solo puramente didattici.
Software
Il software di Microchip comprende molte caratteristiche interessanti, ma possiede comunque alcune limitazioni e non è semplicissimo da utilizzare.
Anche la mikroelektronika ha realizzato una piccola libreria per l'uso del controller (si trova con il compilatore mikroC), ma non supportando la frammentazione dei pacchetti (e non essendo possibile modificarla), non si addice molto alla realizzazione di un server HTTP e di qualunque applicazione che preveda uno scambio dati abbastanza consistente (il limite è circa 1.4KB).
Realizzare un proprio stack è un ottimo modo per conoscere i meccanismi che permettono il funzionamento delle reti, ma principalmente agevola l'implementazione di protocolli e funzionalità non previsti in altri stack.
Hardware
Verrà illustrato l'hardware necessario al funzionamento del controller e vedremo quali sono le funzioni e come si configura l'ENC28J60.
Il modello ISO/OSI
Il modello OSI (Open System Interconnection) è stato ideato nel 1978 dall'ISO (International Organization Standardization) al fine di creare uno standard per le comunicazioni tra calcolatori.
Esso è costituito da una pila (stack) di 7 livelli (5 nella versione semplificata); ad ogni livello corrisponde un protocollo, per mezzo del quale due medesimi livelli di sistemi diversi possono comunicare; questo avviene virtualmente in modo diretto ovvero ignorando gli altri livelli.
All'interno dello stesso sistema, ogni livello può comunicare solo con i livelli adiacenti, per mezzo di un'interfaccia.

I livelli del modello semplificato
- Livello 1 : fisico. Si occupa di trasmettere dati nel mezzo fisico (cavo, aria, fibra ottica, ecc.)
- Livello 2 : Datalink. Prepara i dati per essere inviati al mezzo fisico.
- Livello 3 : Rete. Serve per "instradare" i pacchetti nella rete, inoltre aggiunge un distacco dal livello fisico.
- Livello 4 : Trasporto. Assicura la corretta ricezione dei dati, si occupa delle ritrasmissioni in caso di errori e permette di instaurare connessioni.
- Livello 5 : Applicazione. E' l'ultimo livello della pila e come suggerisce il nome è dove risiedono i vari servizi (HTTP, FTP, E-mail, ecc.).
Incapsulamento
In un pacchetto di rete, i dati dei vari livelli sono incapsulati uno nell'altro, come in una matriosca.
Cio significa che:
- in fase di trasmissione ogni livello invia i propri dati al livello inferiore che aggiunge la propria intestazione (e coda) e poi a sua volta lo invia a livello sottostante fino ad arrivare al mezzo fisico;
- in fase di ricezione ogni livello esamina la sua intestazione e passa i dati al livello superiore

Da notare che la comunicazione non riguarda necessariamente l'ultimo livello, ma avviene sempre tra due livelli uguali.
Questa modularizzazione permette, ad esempio, di trasportare i medesimi dati su supporti fisici diversi: basta pensare alle reti Ethernet e WiFi che trasportano entrambe pachetti TCP/IP, ma su mezzi diversi (cavo ed aria).
Leggi anche:
Ethernet 2/7
Ethernet 3/7
Ethernet 4/7

no comments
Strano Antonio
Ciao
Vorrei fare un’applicazione per controllare da remoto via ethernet due servo motori, ho bisogno del tuo progetto.
Quello che non capisco è, il controllore ENC28J60 resta in ascolto nella rete? Cioè si comporta effettivamente come un server che accetta comandi ?, o quello che tu hai implementato sono semplicemente le funzioni di basso livello che gestiscono le read le write la listen e la bind ( like unix ). Se manca l’applicativo, questo si puo sepmicemente fare nel PIC usando le librerie da te fatte??
grazie
spero in una risposta
L’idea è: arduino con supporto ethernet e microstampante collegata alla porta seriale o alla porta tll.
evento un pulsante che viene schiacciato.
il sistema si collega a un server effettua una query
e invia il risultato a arduino che lo stampa sulla microstampante.
qualcuno ha già fatto un progetto del genere?
qualcuno vuole unirsi a me per fare questo progetto?
si accetto consigli..
grazie 🙂 🙂 🙂
Salve Giuseppe,
ti suggerisco di postare la richiesta nel Forum. C’è l’apposita sezione
http://it.emcelettronica.com/forum/collaborazioni-opportunit%C3%A0/nuove-idee-o-progetti-da-sviluppare
Avrà sicuramente piu visibilità 😉