Scheda multifunzione con processore PIC18
Questo è un progetto che in realtà non ha nulla a che fare con l'hi-fi o con il vintage. Ho comunque deciso di pubblicarlo ugualmente perchè una scheda come questa può essere utilizzata in un'infinità di applicazioni, e a qualcuno potrebbe venire una buona idea.
Il dispositivo realizzato è una scheda a microcontrollore per applicazioni generali, dotata di un buon set di interfacce per la comunicazione con l'esterno e facilmente modificabile con l'aggiunta di periferiche di qualsiasi tipo (controllo motori, display grafico, etc...) per varie applicazioni.
La famiglia di controllori utilizzata è la PIC18, scelta per l'ampia disponibilità di processori a partire da potenza e memoria minime fino a valori ragguardevoli (100 pin e oltre, 128-256K di memoria interna, etc...) per ogni applicazione. In aggiunta, il codice sorgente e le librerie utilizzate sono convertibili senza troppa fatica alla famiglia PIC32, che offre processori di potenza decisamente elevata (200MHz, 2MB flash, 256KB di RAM interna) per impieghi che necessitano di grande capacità di calcolo.
La scheda protoripo è stata fatta utilizzando esclusivamente componenti a montaggio tradizionale, in modo da poter fare artigianalmente il circuito stampato con una basetta a doppia faccia presensibilizzata e fotoincisione. Il risultato, a parte la necessità di ritoccare qualche pista, è stato molto buono e la scheda è stata montata in breve tempo. Ovviamente, trattandosi di un prototipo non SMD, le dimensioni sono notevoli e nel caso di un prodotto definitivo passando a tecnologie più moderne si potranno ridurre notevolmente.
Primo prototipo scheda PIC con terminale LCD
La scheda dispone di una porta seriale RS232, una seconda porta seriale configurabile come RS232 o RS485, una porta Ethernet 10Mb, una porta per display LCD a caratteri (in questo caso 20x4), 24 ingressi isolati con fotoaccoppiatore e 24 uscite a collettore aperto in grado di pilotare carichi fino a 200mA (relè, ad esempio). Il processore utilizzato ha 64KB di memoria flash per programmi e dati statici e 4KB di memoria RAM, inoltre tramite una porta I2C è disponibile una ulteriore memoria EEPROM da 128KB. Un chip RTC (Real-time clock) con batteria tampone offre un orologio-calendario che mantiene data e ora anche senza alimentazione.
Particolare della scheda:: porte seriali, controller Ethernet e processore. Si vede anche la batteria tampone per l'orologio montata in verticale.
Come accennato sopra, si tratta di un progetto totalmente "aperto" e configurabile a piacere: è qundi possibile modificarlo aggiungendo o togliendo periferiche e interfacce, utilizzando diversamente i vari pin del processore (ingressi analogici, uscita ADC, porte SPI, etc...) o con un processore della stessa famiglia ma di potenza e capacità di memoria diverse. Ecco qui due esempi di modifica del progetto originario: il primo è una scheda sostanzialmente identica ma con solo 8 ingressi e 8 uscite; il secondo è il prototipo di un lavoro commissionato in cui non occorrono porte seriali o numerosi I/O, ma servono due relè a stato solido in grado di comandare dei carichi a 220V e alimentazione autonoma.
Scheda PIC ridotta, per esperimenti
Prototipo su commissione con sola interfaccia di rete e controllo carichi 220V
Un'applicazione "personale" già in essere derivata da questo progetto è una scheda di controllo per un piccolo plastico ferroviario in scala Z in corso di realizzazione. In questo particolare caso è assente l'interfaccia di rete e si ha una sola seriale presente attraverso la quale si inviano i comandi dalla consolle, mentre gli I/O sono dotati di relè per gestire l'alimentazione delle varie sezioni del tracciato.
Controller plastico trenini in scala Z-disposizione componenti sul PCB
La scheda "vive" grazie a un kernel software che permette una facile gestione delle periferiche e delle varie interfacce di comunicazione, oltre a fornire un piccolo ma efficace web server per caricare nella memoria del processore anche un mini-sito web da cui ad esempio configurare o controllare l'applicazione definitva. Qu sotto la pagina di configurazione predefinita per l'interfaccia di rete:
Pagina di configurazione della scheda su Internet Explorer
Trattandosi di un progetto legato al lavoro, si comprenderà - spero - perchè non pubblico schemi elettrici nè tanto meno il codice sorgente del kernel o del programma demo che permette di testare tutte le varie funzionalità dell'oggetto. SE comunque qualcuno leggendo dovesse pensare che un prodotto simile o derivabile da questo (in generale, una qualsiasi scheda a microcontrollore con capacità di comunicazione e potenza di calcolo variabile da pochi MIPS fino a un centinaio) può essergli utile per qualche applicazione, scriva pure e ne parliamo.