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