Freedom II : La rivoluzionaria scheda di sviluppo per microcontrollori PIC a 40 pin

freedom2_00 Sul fronte delle demoboard (le schede di sviluppo con le quali fare esperimenti ed imparare la programmazione) è arrivata una scheda davvero ben fatta, semplice e soprattutto ricca di periferiche con le quali fare tutti i nostri esperimenti!

La scheda è stata ideata, creata e sviluppata da Mauro Laurenti (http://www.laurtec.it). Non si tratta di un prodotto commerciale, bansì di una scheda amatoriale curata nei minimi dettagli come solo una persona appassionata può fare.

La costruzione è ai massimi livelli: doppia faccia con serigrafie, una disposizione dei componenti ad altissimo livello che la rendono anche a livello estetico un prodotto davvero valido e di molto superiore a tantissimi prodotti commerciali.  Sto spremendo questa scheda da giorni e non finisco di stupirmi della sua versatilità e flessibilità: non devo collegarci niente! Le periferiche che mi servono sono già tutte a bordo, posso selezionarle/deselezionarle agendo su alcuni jumper e se ancora ho bisogno di qualcosa che non c’è, vi è un ottimo connettore di espansione a 40 poli tramite il quale posso collegarci altre schede o altre periferiche! Magnifico!

Mauro fornisce il PCB, se avete bisogno dei componenti da montarci su, contattatelo e mettetevi d’accordo con lui. Ulteriori informazioni possono essere reperite sul suo sito, nella pagina ufficiale del progetto.

Analizziamo la Freedom II in dettaglio e vediamo cosa ci offre.

Connettore ICSP

freedom2_icsp

Dal momento che il pickit2 e i programmatori ICD della Microchip oramai fanno da padrone, non poteva mancare il connettore a 6 poli per permetterci la programmazione in-circuit.

Ovviamente si può usare tale connettore anche per fornire alimentazione alla scheda tramite l’apposita funzione, selezionabile via software, del pickit2.

Per un utilizzo più agevole, montate un connettore a 90°, in maniera tale che il programmatore non interferisca con il display lcd.

Connettori di alimentazione

freedom2_alimentazione

La freedom II monta due connettori di alimentazione: un connettore wago a vite, per poter alimentare la scheda con dei fili provenienti da un normale alimentatore da laboratorio, e un connettore per poter utilizzare i classici alimentatori da parete con jack standard. A bordo è presente un regolatore di tensione 7805 e condensatori di filtro per ottenere la giusta tensione di alimentazione.

Display LCD

freedom2_lcd Sulla freedom 2 vi è la possibilità di montare un display lcd hd44780 compatibile con piedinatura standard. Potete scegliere voi il connettore da saldarvi sopra. Avendo dei display con connettori maschio a pettine, personalmente ho montato uno strip femmina.Nel caso il vostro display non avesse la piedinatura standard (fate riferimento a questo nostro articolo) o vorreste poter montare un altro tipo di display, è possibile montare un secondo tipo di connettore, denominato EX2, con il quale potete decidere voi quali linee della porta D devono arrivare al vostro display.

Il display fa uso della porta D, condivisa con i led. Viene sfruttata anche la linea RW per poter gestire il display  in modalità lettura oltre che in scrittura. Anche la retroilluminazione viene gestita via software: i led per il backlight, difatti, vengono pilotati da un transistor comandato dalla porta RC1. E’ presente inoltre il trimmer per la regolazione del contrasto il quale può essere girato anche dal lato saldature senza la necessità di dover staccare il display.

La funzione del display può essere disattivata agendo su un jumper.

Cicalino

freedom2_buzzer Possiamo montare un cicalino autooscillante o un cicalino senza elettronica. Verrà comandato dalla porta RC0. E’ disinseribile tramite jumper.

Led

freedom2_led I led non potevano mancare! Ne sono presenti ben 8. Condividono la porta D con il display e possono essere disattivati agendo su un jumper.Se si utilizza il display possono essere lasciati comunque accesi e rifletteranno lo stato delle linee dati del display.

Pulsanti

freedom2_pulsanti Possiamo montare 4 pulsanti, che saranno collegati alle porte RB4/RB7. La scelta di collegare i pulsanti a tali porte non è casuale: possiamo difatti monitorare l’interrupt sul cambio di stato di tali porte. Ai pulsanti non sono collegate le resistenze di pull-up, per cui se decidiamo di utilizzare tali pulsanti, non dobbiamo dimenticare di attivare le resistenze di pull-up interne del picmicro. Altra nota importantissima: se scegliamo di alimentare la scheda tramite il pickit, i pulsanti 4 e 3 risulteranno sempre premuti in quanto si trovano sulle linee RB6 e RB7 utilizzate dal programmatore, in tal caso è necessario utilizzare un alimentatore esterno.

Trimmer per simulazione ingresso analogico

freedom2_trimmer Abbiamo a disposizione un trimmer affianco ai pulsanti, collegato alla porta RA1/AN1. Molto utile per simulare una tensione in ingresso. Disinseribile.

Sonda di temperatura LM35

freedom2_lm35 Possiamo montare una classica sonda di temperatura LM35 che potremo leggere sulla porta RA2/AN2. Disinseribile.

Sensore di luminosità

freedom2_ldr Molto utile la possibilità di montare anche una LDR (Light Dependant Resistor). La possiamo sfruttare, ad esempio, per attivare la retroilluminazione del display in caso di oscurità o per mille altre applicazioni.E’ collegata alla porta RA0/AN0. Disinseribile.

Comunicazione RS232 / USB / CAN

freedom2_comunicazione Oltre all’I2C (che illustrerò dopo) abbiamo la possibilità di far comunicare il pic con l’esterno attraverso altri sistemi. In questa parte della scheda troviamo difatti un connettore USB, un connettore RS232 e un connettore a vite per la comunicazione CAN.L’ USB è disponibile in dipendenza dal pic utilizzato. Il PIC16F877 non ha l’usb e quindi non può essere sfruttata tale funzionalità, presente invece sul 18F4550.

La porta seriale RS232 è disponibile per tutti i tipi di pic e fa affidamento sull’arcinoto MAX232. (vedi lezione 10)

La comunicazione CAN, anche se poco sfruttata in ambito amatoriale, è diventata uno standard in campo automotivo grazie al suo elevato grado di sicurezza. A differenza dell’ USB e della RS232, sulla linea CAN possono essere montati più dispositivi in grado di comunicare tra loro ed inoltre la comunicazione raggiunge notevoli distanze senza essere influenzata da disturbi. Oltre al campo automotivo, grazie alle sue caratteristiche, numerose applicazioni domotiche ed industriali fanno uso di tale protocollo, nonchè il progetto del robot umanoide Artorius di Mauro Laurenti. La comunicazione CAN si appoggia all’integrato della Microchip MCP2551.

Per quanto riguarda la comunicazione USB, sulla scheda è  presente  un jumper per attivare tale modalità di comunicazione  nonchè un jumper per attivare l’autorilevamento del cavo usb collegato.

Comunicazione I2C : EEprom e Real Time Clock/Calendar

freedom2_i2c Sulla scheda trovano posto altri due integrati : una Eeprom e un RTC (Real Time Clock/Calendar)  che sfruttano la comunicazione I2C. Il protocollo I2C è un protocollo di tipo seriale, già integrato sui pic aventi il modulo MSSP (come il 16F877 e il 18F4550) e che permette a più dispositivi di appoggiarsi allo stesso bus. Niente paura: anche se il vostro pic non ha tale modulo a bordo, la comunicazione I2C può essere fatta comunque emulandola via software. Possiamo quindi montare una eeprom del tipo 24LCxx o 24Cxx utile per memorizzare dei dati e richiamarli anche dopo che l’alimentazione è stata tolta.E’ presente un jumper per attivare tale modalità di comunicazione. Nota: i pic aventi la comunicazione USB, presentano i pin per la comunicazione I2C in posizione differente da quella standard. Il jumper permette di selezionare difatti su quali pin è presente l’I2C.

Per l’RTC Mauro ha scelto il PCF8563 prodotto dalla Philips, che ha a dispozione anche una funzione sveglia.

In realtà, avendo io in mio possesso un RTC prodotto dalla Dallas, il DS1307, non ho dovuto  effettuare nessuna modifica per poterlo utilizzare: la piedinatura è identica, l’unica differenza sta nel pin che sul PCF8563 è utilizzato per segnalare l’interrupt generato dalla sveglia, mentre sul DS1307 viene utilizzato per la batteria di backup (che serve a far continuare a funzionare l’orologio anche in mancanza di alimentazione). Vedremo in una prossima lezione del corso di programmazione come poter utilizzare su questa scheda il DS1307 senza fare modifiche, sfruttando anche la funzione di backup tramite batteria tampone.

Connettore di espansione

freedom2_connettore_espansione Ancora non vi basta tutto questo? Per i più esigenti abbiamo anche un connettore di espansione a 40 pin, sui quali sono riportati tutti gli I/O del picmicro e l’alimentazione.E’ possibile montare uno strip femmina da 20×2 in maniera tale da potervi collegare direttamente dei fili senza fatica. Io ho scelto invece di montarvi uno strip maschio da 20×2 per poter utilizzare tale connettore con i comuni cavi flat IDE dei computer utilizzati per il collegamento degli hard disk e dei lettori cdrom.

Affianco ad ogni pin è serigrafata la funzione che svolge.

Conclusioni

Ovviamente in questa mia breve disquisizione ho tralasciato tante altre caratteristiche della scheda. Le istruzioni per il montaggio e l’utilizzo le trovate sul sito di Mauro nella pagina dedicata a questo stupendo progetto. Per poter avere tale scheda (che ripeto: non è un prodotto commerciale) è necessario fare una donazione di supporto e contattare Mauro all’indirizzo fornito sul suo sito. Da parte mia posso darvi soltanto alcuni piccoli consigli:

1 – Fatene un buon uso e condividete le cose che imparate con essa: lo spirito e il lavoro che ci sono dietro questa scheda rappresentano un sentimento molto elevato, che può capire soltanto chi lavora con passione a questi argomenti e contribuisce a diffondere il sapere in via gratuita. La vostra donazione rappresenterà quindi un gesto di sincero apprezzamento e di supporto verso questi progetti e verso tutto ciò che li mantiene in piedi. Tenete conto che si tratta di una scheda professionale che ha dei costi.

2 – Trattandosi di una scheda a doppia faccia, ci sono moltissimi fori metallizati passanti per collegare una faccia con l’altra. Alcuni di questi fori si trovano molto vicini a piazzole di saldatura dei componenti, per cui se non siete bravi ad usare il saldatore e/o non utilizzate un saldatore con una punta molto sottile e/o non utilizzate  uno stagno sottile (questa ultima condizione non è necessaria se siete bravi), difficilmente riuscirete ad ottenere un buon lavoro. La scheda funziona benissimo e da grandissime soddisfazioni.

3 – Prima di collegare il display LCD, verificate che la piedinatura del display in vostro possesso sia quella standard, così come indicato nella lezione 7 del nostro corso di programmazione dei picmicro in C. Personalmente ho un display che ha una piedinatura invertita ed è uguale esteticamente ad un altro che ha la piedinatura standard, per cui, tratto in inganno, ho commesso l’errore di montarlo normalmente e dargli tensione. Sono stato fortunato: il display funziona ancora perfettamente pure se l’alimentazione gli è arrivata al contrario! Ma la prossima volta non potrei esserlo.

Tenete inoltre presente che questa scheda, facilitando di molto lo sviluppo, sarà utilizzata nelle prossime puntate del corso di programmazione dei picmicro in C al posto della versione precedente (Freedom I) e ne apprezzerete anche voi i vantaggi. Io ne sono entusiasta e non posso trattenermi dall’esporre la mia stima e ammirazione verso Mauro.

Giusto per poter cominciare vi lascio qui due semplici programmini che in realtà non fanno nulla di particolare: avremo modo di approfondire le potenzialità di questa scheda durante il corso di programmazione picmicro in C.

[download#93]

(uno realizza il classico effetto supercar e l’altro accende/spegne i led alla pressione dei pulsanti facendo suonare il cicalino)

Fotografie

Posto qui alcune foto della scheda che ho montato per farvi rendere conto della realizzazione impeccabile di questo progetto. Come vedete ho montato un PIC16F877, ma presto passerò al PIC18F4550 per incominciare ad utilizzare l’USB. Dal momento che tra i miei utenti ci sono persone molto attente, ci tengo a fare alcune precisazioni per chiarire dei dubbi e rispondere a domande che potrebbero derivare dal guardare tali foto:

  • Non ho montato il transceiver CAN, per cui c’è uno zoccolo ad 8 pin vuoto.
  • Non ho montato il regolatore di tensione 7805 e ho cortocircuitato le piazzole destinate ad accogliere ingresso e uscita del regolatore. Ho fatto così perchè o utilizzo l’alimentazione fornita dal pickit2 o utilizzo un alimentatore da parete a 5 volt. Se utilizzate un alimentatore con tensione superiore montate il 7805 se non volete che vi si frigga tutto.
  • I distanziali usati per tenere sollevata la scheda sono quelli che si trovano normalmente nei pc per il montaggio della scheda madre.
  • La scheda che arriverà a voi sarà leggermente diversa da questa mia, che è la versione beta: sulla vostra vi saranno infatti delle resistenze affianco ai pulsanti e un gruppo di resistenze sotto all’lcd. Tali resistenze sono state aggiunte per aumentare la sicurezza.
  • Ho utilizzato dei jumper colorati per capire al volo quali funzioni attivare e disattivare a seconda di ciò che voglio fare. Ovviamente questo non è necessario dal momento che la funzione di ogni jumper è serigrafata sulla scheda e basta sapere che mettendo un jumper verso sinistra si attiva la funzione corrispondente, mettendolo verso destra la funzione viene disattivata.
  • Ho montato l’LDR a 90° verso l’esterno per evitare che venisse coperta dall’uso di LCD più grandi. Ho difatti un LCD da 4×20 che copre un’area molto grande. Per tale motivo è necessario anche utilizzare il connettore ICSP a 90°.
  • Se avete di intenzione di utilizzare fisso l’LCD da 16×2, tenete presente che sul pcb sono presenti 4 fori in corrispondenza dei fori dell’LCD in maniera da poterlo fissare più saldamente mediante 4 distanziatori a vite. Quindi come vedete è stato pensato proprio a tutto: cura e attenzione maniacali contraddistinguono questo prodotto.

Buona visione

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)