UNIVERSITÀ DEGLI STUDI DI FIRENZE

Transcript

UNIVERSITÀ DEGLI STUDI DI FIRENZE
UNIVERSITÀ DEGLI STUDI DI FIRENZE
DIPARTIMENTO DI ELETTRONICA E TELECOMUNICAZIONI
I moduli Rabbit, sono delle schede già montate, di dimensioni molto contenute su cui è alloggiata tutta la circuiteria
necessaria ad un completo sistema a microprocessore. Tra l'ampia gamma di modelli e versioni disponibili,
presentiamo in questa pagina, i versatili moduli RCM2200 che rappresentano il modello più economico della gamma
tra quelli dotati di connessione Ethernet.
Esistono anche moduli più potenti dotati di CPU a 16 bit a clock più elevato e moduli più economici, più piccoli e privi di
connessione Ethernet. Per avere una idea completa della gamma di moduli disponibili potete leggere i seguenti articoli:
•
Guida alla scelta dei Rabbit Core Modules
I Core Module Rabbit sono molti e non sempre le differenze tra un modello l'altro sono evidenti. Con l'arrivo
della nuova serie 3000 la scelta è aumentata ancora; cerchiamo quindi di fare un po' di chiarezza
RCM2200 caratteristiche tecniche in breve:
Modulo Rabbit RCM22200
•
Un Microprocessore Rabbit 2000™ a 8 bit con clock interno a 22.1 MHz
•
Una Memoria Flash da 256Kbyte
•
Una Memoria Ram da 128Kbyte
•
Una porta Ethernet 10Base-T da 10Mbit
•
26 linee di I/O di uso generale
•
4 porte seriali asincrone con baud rate sino a 345.600 bps
•
Un orologio Real-Time con datario
•
5 timer a 8 bit
•
1 timer a 10 bit
•
Un Watchdog timer
I moduli sono dotati, dal lato saldature, di due serie di connettori per poter essere ospitati direttamente sul circuito
stampato della nostra applicazione in modo da poterla dotare di funzionalità di controllo e comunicazione avanzate
senza dover affrontare la complessità di progettazione hardware e software che queste funzionalità richiedono.
Per realizzare i nostri progetti dovremo semplicemente occuparci di realizzare l'interfaccia elettrica tra il mondo
esterno ed il modulo Rabbit e sviluppare in linguaggio C il programma adatto alla sua gestione senza preoccuparci
dello sviluppo di una serie di dettagli hardware e software già risolti ed implementati sui moduli Rabbit quali:
•
Le connessioni tra il microprocessore e le memorie per il programma ed i dati
•
La circuiteria di clock
•
La circuiteria per la connessione alla rete Ethernet
•
La programmazione sul campo del microprocessore con il software della nostra applicazione
•
La gestione dei protocolli di comunicazione, delle linee di I/O, delle porte seriali e tutta una serie di funzioni
software già disponibili con le librerie in dotazione (complete di source).
L'ambiente di sviluppo Dynamic C SE
I moduli RCM2200 sono dotati di un ottimo ambiente di sviluppo integrato, disponibile solo per sistemi operativi
Windows dalla versione 95 alla XP, ed una incredibile varietà di librerie di funzioni e applicazioni d'esempio.
Funzioni integrate del Dynamic C SE:
•
Editor ASCII
•
Compilatore C
•
Debugger
Via di S. Marta, 3 - 50139 FIRENZE - tel. 055.47.96.393 fax 055.49.45.69 web: www.det.unifi.it
UNIVERSITÀ DEGLI STUDI DI FIRENZE
DIPARTIMENTO DI ELETTRONICA E TELECOMUNICAZIONI
•
Loader (per scaricare il codice compilato sul modulo Rabbit)
•
Documentazione in linea (solo in inglese)
Librerie di funzioni per la gestione dei protocolli TCP/IP
•
HTTP client e server
•
FTP client e server
•
TELNET client e server
•
POP client
•
SMTP client
Una descrizione dettagliata dell'ambiente di sviluppo Dynamic C SE per i moduli Rabbit RCM2200 è disponibile su
questo link:
•
RCM2200 Development Kit
Il RabbitCore RCM2200 Development Kit è il kit base per poter sviluppare firmware in C ed assembler su
moduli Rabbit RCM2200
Ogni versione SE del Dynamic C fornita con i kit di sviluppo dei vari modelli di moduli Rabbit è specifica per il modello
scelto e, salvo alcuni casi, non è utilizzabile su moduli Rabbit diversi.
Per poter avere un unico ambiente su cui sviluppare indipendentemente dal modulo scelto è richiesto il Dynamic C
versione PREMIERE.
Applicazioni per le quali è consigliato l'uso dei Rabbit
I Core Modules Rabbit RCM2200 sono adatti per tutte quelle applicazioni di complessità intermedia in cui un semplice
microcontroller (quale ad esempio un PICmicro) può risultare insufficiente per via della sua memoria troppo limitata,
delle funzioni troppo elementari e dove, al contrario, un Personal Computer risulterebbe decisamente eccessivo per via
delle sue dimensioni, il consumo di corrente, il costo, ecc.ecc.
Nei core modules Rabbit coesistono caratteristiche tipiche dei microcontroller quali la memoria flash, l'assenza di parti
meccaniche in movimento, le dimensioni ridotte, il basso assorbimento, le linee di I/O TTL, ecc. e caratteristiche
tipiche dei Personal Computer moderni quali la connessione di Rete, la gestione dei protocolli TCP/IP, il file system (la
capacità di memorizzare informazioni sotto forma di file), l'ambiente di programmazione IDE in linguaggio C, il
multitasking, ecc.
I Rabbit sono facili da programmare ed alla portata non solo degli appassionati di elettronica ma anche degli
sviluppatori di software su PC. L'uso del linguaggio C e la disponibilità di una nutrita serie di librerie, permettono lo
sviluppo di applicazioni con rapidità nascondendo molti dettagli di implementazione a basso livello.
Alcune idee per indirizzare la scelta
Il primo passo da compiere per la scelta del modulo adatto al nostro progetto è domandarci se abbiamo bisogno (o
avremo bisogno in un secondo momento) dell'interfaccia ethernet.
Nel caso un cui volessimo utilizzarla da subito la scelta migliore potrebbe essere la classe RCM22x0 o la classe
RCM30x0. Infatti questi modelli, oltre ad avere versioni con il connettore ethernet ed i led a bordo, hanno anche
versioni che ci permettono di montare un nostro plug RJ-45 esterno; la flessibilità è quindi assicurata, consentendoci la
scelta anche in un secondo momento, a progetto realizzato.
Nel caso in cui invece la ethernet non ci sia indispensabile la scelta dovrebbe cadere senza dubbio sui modelli
RCM2300 o RCM31x0; infatti in entrambi questi casi abbiamo la possibilità, grazie alla compatibilità pin to pin con altri
modelli dotati di ethernet, di migrare verso una applicazione che faccia uso della rete solamente sostituendo il Core
Module.
Un altro importante passo è la scelta di una architettura basata su Rabbit 2000 o su 3000. In questo caso i fattori che
influenzano le nostre decisioni dovrebbero essere legati alle periferiche di cui si ha necessità ed alle prestazioni che si
intendono raggiungere.
Nel caso in cui le prestazioni di un Core della serie 2000 ci bastino, il fattore di integrazione che vogliamo raggiungere
nel nostro progetto diviene fondamentale: tutti i Core Module della serie 2000 sono infatti più contenuti nelle
dimensioni rispetto ai loro omologhi della classe 3000.
Comunque una varietà di scelta così articolata e completa come quella proposta da Rabbit lascia alla sensibilità del
progettista ampio margine per poter tarare il proprio hardware sulle reali esigenze, consentendogli di ottenere il
massimo con una spesa molto contenuta.
Via di S. Marta, 3 - 50139 FIRENZE - tel. 055.47.96.393 fax 055.49.45.69 web: www.det.unifi.it
UNIVERSITÀ DEGLI STUDI DI FIRENZE
DIPARTIMENTO DI ELETTRONICA E TELECOMUNICAZIONI
RCM22x0
All'interno di questa classe si trovano le versioni RCM2200, RCM2210 ed RCM2250
Questi modelli, molto simili tra loro, sono sicuramente tra i più interessanti della serie, per le ridotte dimensioni e la
dotazione hardware veramente notevole. Comprendono infatti, su una scheda di 4x6 cm, 26 porte di I/O, 4 seriali, una
porta ethernet, un RTC, linee di espansione (4 indirizzi, 8 dati ed un I/O Read-Write), timer e watchdog. La differenza
tra i modelli 2200 e 2210 consiste nel fatto che il primo ha il connettore ethernet ed i led di attività (LNK e ACT)
montati a bordo, mentre il secondo ha solamente i segnali ethernet portati sui piedini, consentendoci di montare un
nostro connettore e dei led esterni.
Il modello RCM2250 è sostanzialmente identico al 2200 ma ha un superiore quantitativo di memoria sia Flash che
SDRAM (512K per entrambe).
Controllo remoto via Web con il Rabbit
In questo articolo è descritta una delle applicazioni più interessanti che possono essere realizzate con i moduli
RCM2200 di rabbit Semiconductor: il controllo remoto di un apparato utilizzando la rete Internet.
In questo progetto di esempio il nostro apparato remoto saranno i due led presenti sulla scheda SX01 (Demo board
SX01 per Rabbit RCM2200), ma l'applicazione è identica anche nel caso in cui volessimo pilotare un contatto a rele o
un interruttore elettronico collegato ad un apparato qualsiasi: l'impianto luci di casa, la caldaia del riscaldamento,
l'attivazione dell'allarme antifurto.
Descrizione generale
L'hardware che utilizzeremo è veramente minimale: occorrono solamente un modulo Rabbit RCM2200 (vedi:
Introduzione ai core modules RCM2200 della Rabbit Semiconductor), la scheda SX01 ed un cavo di rete. Se si dispone
di una rete locale (LAN) si può collegare il modulo Rabbit tramite un cavo di rete dritto ad uno dei punti di accesso alla
rete stessa, ed assegnargli un indirizzo IP (vedremo nel seguito come) compatibile.
Se invece non si dispone di una rete, si può effettuare la prova collegando direttamente il modulo Rabbit ad un PC
dotato di scheda di rete, utilizzando un cavo incrociato (cross cable).
La sostanziale differenza, rispetto ad altre soluzioni, del progetto presentato è l'estrema semplicità con cui è possibile
ottenere il risultato voluto; infatti il modulo rabbit RCM2200 è dotato di linee di I/O per pilotare i LED,
dell'implementazione dello stack TCP/IP per pubblicare le pagine (server WEB), e di una memoria FLASH per ospitare
quest'ultime. Da parte nostra saranno necessarie solo pochissime righe di codice!
Il semplice codice sorgente da compilare sul modulo Rabbit è scaricabile da questo link: LED_WEB.C
Il sorgente nelle prime righe contiene i parametri di configurazione, che devono essere adattati alle proprie esigenze.
In particolare l'indirizzo IP del modulo RCM2200 va impostato per adattarsi alla rete su cui lo si sta collegando.
Nel caso di collegamento con cavo cross ad un singolo PC è possibile scegliere due indirizzi IP qualsiasi (ad es.
192.168.0.1 per il PC e 192.168.0.2 per il Rabbit).
Nel caso invece in cui si stia collegando l'apparato su una LAN esistente occorre conformarsi alla classe di indirizzi in
uso sulla LAN stessa.
I parametri che controllano queste configurazioni sono:
#define MY_IP_ADDRESS
#define MY_NETMASK
"192.168.0.102"
"255.255.255.0"
// Indirizzo IP del modulo
// Netmask del modulo
Gli altri parametri presenti nel sorgente possono essere tranquillamente lasciati ai loro valori di default.
Via di S. Marta, 3 - 50139 FIRENZE - tel. 055.47.96.393 fax 055.49.45.69 web: www.det.unifi.it