Home
Accesso / Registrazione
 di 

FTPmicro Tutorial

FTPmicro embedded web server

FTPmicro è un web-server grande quanto un package DIP40, realizzato grazie ad un PIC18F67J60. Tale microcontrollore è un PIC ad 8-bit di fascia alta che integra, nel suo piccolo package, un controller ethernet 10BaseT.

Nonostante le ridotte dimensioni, la scheda ha caratteristiche davvero interessanti, infatti dispone di uno slot per schede di memoria microSD, un sensore di temperatura TC1047, e numerosi pin di I/O digitali ed analogici. Ma ancora più importante è il software che può essere eseguito su questo dispositivo; in particolare, utilizzando lo stack TCP/IP di Microchip, adattato a questo particolare hardware, è possibile avere in pochi minuti un server HTTP ed UDP con client DHCP. FTPMicro non richiede alcun componente esterno per il suo funzionamento: è sufficiente caricare il software nel PIC ed alimentare la scheda a circa 5V. E' poi presente un comodo connettore per il programmatore/debugger ICD2 di Microchip. Grazie alla presenza della memoria SD, si possono immagazzinare un gran numero di file che saranno disponibili al server HTTP. Così si può creare un completo sito web, composto sia da parti statiche (HTML, CSS, JavaScript, ecc.) che da parti dinamiche (CGI).Leggendo dati in tempo reale ed inviando comandi, è possibile controllare qualunque hardware.

La Memoria SD
Nella scheda di memoria microSD, può essere immagazzinato qualunque tipo di file direttamente da computer; infatti viene utilizzato il FileSystem FAT16 quindi perfettamente compatibile con i Sistemi Operativi più comuni.

Dunque, affinchè FTPmicro sia in grado di leggere la scheda, è necessario formattarla con questo FileSystem.
Inoltre, il software supporta soltanto i nomi corti per i file, ovvero al massimo 8 caratteri per il nome, e 3 caratteri per l'estenzione. Nomi più lunghi sono supportati, ma il limite è imposto dalla seguente define dichiarata nel file FAT16.h:

#define MAX_FILENAME_LEN( 32)

La scheda può essere inserita e rimossa dal sistema anche durante il funzionamento, infatti è supportato l'hot-plug.

Configurazione

La scelta dell'indirizzo IP dipende dalla rete in cui si trova il dispositivo, perciò può essere facilmente modificato nel file StackTsk.h, modificando le sequenti define:

// esempio: 10.0.0.6
#define MY_DEFAULT_IP_ADDR_BYTE1 (10)
#define MY_DEFAULT_IP_ADDR_BYTE2 (0)
#define MY_DEFAULT_IP_ADDR_BYTE3 (0)
#define MY_DEFAULT_IP_ADDR_BYTE4 (6)

Allo stesso modo è anche possibile cambiare l'indirizzo MAC:

// esempio: 00:04:A3:00:00:00
#define MY_DEFAULT_MAC_BYTE1 (0x00)
#define MY_DEFAULT_MAC_BYTE2 (0x04)
#define MY_DEFAULT_MAC_BYTE3 (0xA3)
#define MY_DEFAULT_MAC_BYTE4 (0x00)
#define MY_DEFAULT_MAC_BYTE5 (0x00)
#define MY_DEFAULT_MAC_BYTE6 (0x00)

L'indirizzo IP non deve necessariamente essere statico, ma può essere assegnato automaticamente dal server DHCP. Per fare ciò bisogna abilitare il client DHCP scommentando la riga

//#define STACK_USE_DHCP

sempre nel file StackTsk.h.

Nell'esempio proposto, i LED del modulo Ethernet sono utilizzati come LED generici; per fare ciò il bit di configurazione ETHLED è stato settato ad OFF; quindi, per ripristinare il normale utilizzo di tali LED, modificare la configurazione ad ON.

#pragma config XINST=OFF, WDT=OFF, FOSC2=ON, FOSC=HSPLL, ETHLED=ON

A questo punto è possibile ricompilare il firmware e caricarlo nel PIC.

Il Server HTTP

Grazie al server HTTP, è possibile comunicare con la scheda semplicemente con un web-browser, da qualunque sistema operativo.
Il server è in grado di prelevare un file direttamente dalla memoria SD ed inviarlo a destinazione.
Inoltre una richiesta può interagire con il software (e quindi con l'hardware) essenzialmente in due modi: in "lettura", richiedendo dati tramite una pagina CGI, ed in "scrittura" ovvero inviando dei comandi.
Una pagina CGI (Common Gateway Interface) non è altro che una pagina html, che però può contenere il carattere di escape % seguito da un numero decimale a due cifre; tale numero identifica una variabile che sarà richiesta al programma.

In particolare viene invocata la funzione HTTPGetVar che si trova nel file MainDemo.c:

WORD HTTPGetVar(BYTE var, WORD ref, BYTE* val)

il primo parametro identifica la varibile di cui si richiede il valore;
il secondo è un indice, utilizzato per varibili composte da più byte;
l'ultimo parametro punta alla locazione dove scriveremo il valore della variabile (più precisamente scriveremo il byte ref-esimo).
Il valore di ritorno sarà HTTP_END_OF_VAR se abbiamo inviato tutti i byte della varibile var, altrimenti sarà l'indice del prossimo byte da inviare, ovvero ref+1.

Vediamo un breve esempio:

<b>Variabile 1</b>: %01 <br>

<b>Varibile 2</b>: <em>%02</em>

In questo file CGI sono presenti due variabili, quindi verrà chiamata HTTPGetVar, con var pari a 1, la quale restituirà attraverso val, ad esempio il carattere 'A'. Successivamente viene richiamata HTTPGetVar, ma con var uguale a 2; stavolta supponiamo che il dato sia una stringa, perciò tale funzione verrà chiamata più volte fin quando non si giungerà al termine della stringa (ad esempio "Ciao").
A questo punto il server può inviare la risposta a chi ha richiesto la pagina, che riceverà:

<b>Variabile 1</b>: A <br>

<b>Varibile 2</b>: <em>Ciao</em>

Se alla pagina richiesta aggiungiamo dei parametri sarà possibile far eseguire delle azioni al software.
Una richiesta con parametri ha questo aspetto:

Tale richiesta viene automaticamente analizzata dal server HTTP e passata al metodo HTTPExecCmd, sottoforma di array di stringhe.
Il metodo HTTPExecCmd è così definito:

void HTTPExecCmd(BYTE** argv, BYTE argc)

Quindi nell'esempio fatto prima, argv sarà:

argv[0] = pagina.htm
argv[1] = param1
argv[2] = val1
argv[3] = param2
argv[4] = val2

mentre argc (numero di elementi) varrà 5. In questo modo, scrivendo del codice opportuno all'interno di tale metodo,
il PIC può eseguire diverse funzioni a seconda dei parametri ricevuti.
Inoltre al termine del metodo, argv[0] deve contenere il nome della pagina da restituire, che può essere quella richiesta (ad es. pagina.htm) oppure un'altra.

FTPmicro Tutorial. Esempio pratico
FTPmicro Tutorial. Fat16c
FTPmicro Tutorial. SDC
FTPmicro Tutorial. SMTP
FTPmicro Tutorial - Esempio: Notizie ANSA su LCD

Tutta la documentazione su FTPmicro è disponibile a questa pagina FTPmicro per Utenti Premium.
Potete realizzarlo da soli (fai-da-te) scaricando tutti i codici sorgenti (Schema elettrico realizzato con Orcad, lista parti, circuito stampato realizzato con Orcad, file gerber, codice sorgente assembler realizzato su piattaforma Microchip).

Il progetto montato e collaudato è disponibile sul nostro store --> FTPmicro

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Giovanni123

vorrei acquistare

Ciao
voglio acquistare questo dispositivo, prima pero ho alcune domande da farti.
Io ho bisogno di controllare tramite ethernet da remoto due servo motori attraverso dei digital output.
Questo dispositivo mi consente di farlo?, o meglio ha la possibilità?

Io dovrei creare una mia applicazione server a cui mi connetto con un client unix da remoto, è Possibile?? Penso di si, dal momento che il protocollo è lo stesso.
In seguito vorrei farti qualche domanda piu specifica sui sorgenti, perchè io ho solo scritto applicativi di server unix, dunque cercherei una similutudine con alcune funzioni.

spero in una risposta.
ciao e grazie

PS posso avere la tua email ??

ritratto di Emanuele

embedded webserver ftpmicro

Ciao,
si, con ftpmicro puoi controllare in remoto anche dei servomotori, in quanto hai il controllo sulle uscite del micro e puoi anche accedere alla periferica pwm, quindi variare la velocità dei motori da remoto.

L'hardware è pronto (ftpmicro) devi solo inserire la parte di potenza motor driver.
Per il software, è disponibile lo stack tcp/ip per il collegamento remoto e come esempio una pagina web dove puoi accendere e spengere dei led.... dovresti modificare sia la pagina web (magari mettendo uno slide per il controllo velocità) ed il firmware per ftpmicro, agganciando la periferica pwm.

Un saluto
Emanuele

La mia email è
emcelettronica@gmail.com
ma preferisco sempre rispondere nei commenti (quando possibile) per rendere pubbliche le risposte, magari sono di aiuto anche ad altri.

ritratto di Giovanni123

FTPmicro tips

ciao
come ti dicevo nell'email puoi consigliarmi un programmatore anche un MPlab con un minimo di debug ( esempio: possibilità di accendere alcuni led in qualsiasi parte del codice per verificare se entra in degli if o porzioni di codice annidato, o per gestire eccezioni hardware).
Inoltre sai se è possibile acquistare FTPmicro di seconda mano da qualcuno che conosci, perchè il suo prezzo è circa 70 Euro, ma tra spedizione ed iva mi costerà solo questo circa 110 Euro.

grazie

ritratto di Emanuele

ftpmicro e debug

Ciao,
per sviluppare con ftpmicro ci vuole MPLAB (gratuito da Microchip) e un debugger tipo ICD2 o ICD3 (costano sotto i 200euro da Farnell).
L'ftpmicro già è predisposto con il connettore per debuggare.
Il software da quale partire (stack e applicativo base)invece è disponibile qui sul sito.

Per quanto riguarda i costi:
hai visto il nostro Academics (Università)?
http://it.emcelettronica.com/universit%C3%A0-regolamento-studenti

Puoi accumulare punti spendibili sul Catalogo Farnell oppure anche sul nostro store (dove è presente ftpmicro)

Un saluto
Emanuele

ritratto di Giovanni123

FTPmicro tips

scusami ma 200 euro mi sembrano troppi.
Dal sito della microchip ho notato il Pickit2 pero ancora non ho capito se va bene per il PIC18F67J60 che è montato su FTPmicro.Anche perchè è alimentato direttamente dalla USB, e non so se basta.
Per quanto riguarda invece il connettore I2C mi hanno consigliato di acquistare un adattatore. Non so se m'hanno detto bene, infatti chiedo a te che sei piu esperto dell'FTPmicro.
Non vorrei spendere 200 Euro, ma neanche comprare una cosa che non funzioni.
Su questo sito che mi hai consigliato si deve accumulare punti, cosa che io non ho, e inoltre non penso di poterli avere subito, anche perche nn ho creato niente.

Dubbio: il connettore per debuggare di cui parli è l'ICSP ??

ritratto di Giovanni123

ICD2

guarda cosa ho scoperto su ebay, se per favore lo puoi controllare. Se mi dici che va bene per l'FTPmicro lo compro perchè il prezzo veramente competitivo

Debugger-Programmatore-ICD1-ICD2-MPLAB-ICD-Cavo-RS-232

ritratto di lfelicetti

Programmatore

A quanto ho capito, serve anche la licenza cel C18 per programmare l'ftp micro, distribuita da microchip, vero? oppure sbaglio?

ritratto di jesest

Schema

Grazie per il tutorial.
Ho acquistato una scheda ftpmicro pensando di ricevere della
documentazione in allegato, ma a parte questo tutorial
non trovo altra documentazione ed il sito ftpmicro.com
non è raggiungibile.
Potresti aiutarmi?
Avrei bisogno dello schema della scheda.
Inoltre come accedo alla programmazione?

Grazie

ritratto di Emanuele

Schema elettrico in alta

Schema elettrico in alta risoluzione e tutta la documentazione è stata inviata

ritratto di Samby

Ciao, potresti inviare lo

Ciao, potresti inviare lo schema elettrico anche a me?
Grazie...

ritratto di lfelicetti

posso averla anche io, oppure

posso averla anche io, oppure è identica a quella presente in sezione download?

ritratto di Emanuele

E' tutto in download

E' tutto in download

ritratto di lucagiuliodori

Richiesta documentazione

Ciao,

ho una scheda FTPmicro ma non riesco a reperire la documentazione necessaria (Schema elettrico, lista parti, layout, codice sorgente, ...), o meglio quando premo sul link indicato (http://it.emcelettronica.com/internet-delle-cose-webserver-embedded-open-source-appena-8-cm) mi dice che il contenuto è esclusivo per gli abbonati platinum.

Non essendo abbonato platinum, come posso ottenere tutta la documentazione?

Grazie in anticipo!

ritratto di Emanuele

Ti ho risposto su FB

Ti ho risposto su FB :)

ritratto di claxz70

Progetto misauazione di carici elettrici

Buongiorno,

Mi consigliate qualche risorsa, online o libro, per come funziona / si programmano i PIC e magari gli Arduino? Premetto che non ho approfondito ancora molro le differenze fra loro. Mi pare però di capire che i primi siano più economini sebbene meno potenti, ma adattissimi per piccoli progetti embedded.

Una ventina di anni fa avevo realizzato qualche circutito poi non ho più avuto il tempo di dedicarmici.
Sono un programmatore e conosco vari linguaggi, sebbene alcuni non li uso da tanto tempo. Sono programmabili in un linguaggio simil C per caso ?

Oltre alla parte didattica di cosa altro avrei bisogno per iniziare a sperimentare ?

Grazie mille
Anticipatamente

Claudio

ritratto di claxz70

Progetto di misurazione di carichi elettrici

Ops mi accorgo di aver messo questo titolo nel post sbagliato prima!

Questo è quello giusto :)

Qualcuno ha usato FTPmicro per la misurazione dei carichi ? So che sul mercato ce ne sono un sacco ma a parte il fatto che sono in genere limitati a poche linee hanno un paio di difetti cumuni: la scarsa pecisione in quanto nessuno di loro misura la tensione ma te la fanno inserire fissa, mentre, almeno da me varia fra i 234 ed i 249 V, e poi per evere i dati online vendono costosi abbonamenti (20/30€/anno sono troppi per una cosa del genere)

A proposito quante linee analogiche ha questa scheda ?

Grazie mille

Buona giornata
Claudio

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 6 utenti e 55 visitatori collegati.

Ultimi Commenti