PRO MIDI 1284P Developer’s board: sviluppiamo e testiamo applicazioni

Recentemente vi abbiamo introdotto e descritto una nuova scheda di prototipazione chiamata PRO midi 1284, basata su un microcontrollore ATmega1284P; dopo questa presentazione, fatta in questo post, iniziamo a lavorare con essa e vi spieghiamo come interfacciarla in modo pratico e immediato al mondo esterno, almeno sul piano hardware.

Allo scopo, in questo articolo vi proporremo quella che, nell’ottica della piattaforma di sviluppo, ne è il naturale complemento, ossia una scheda nata per consentire e facilitare, lo studio, lo sviluppo ed il debug di applicazioni basate su di essa. La scheda in questione è la PRO midi 1284P Developer’s Board.

Tale scheda prevede un alloggiamento per la “PRO midi 1284P” e tutta una serie di connettori per collegare oppure ospitare vari dispositivi elettronici (anche sotto forma di breakout board) che permettono di sviluppare applicazioni che sfruttano le varie risorse del Atmega1284P, quali porte analogiche, porte digitali, porte seriali, bus I²C, bus SPI, ecc., ecc.

Non solo, per chi vuole sviluppare in ambiente MPLAB X ed effettuare sia il caricamento del codice che il vero e proprio debug, è anche previsto un connettore JTAG dove collegare l’economico programmatore/debugger SNAP di Microchip; a riguardo vi facciamo notare che la scheda, acquistabile direttamente tra i prodotti disponibili a lato articolo, si trova già montata ma con i due LED LD1 e LD2 non saldati, ma presenti nella confezione.

Chi non è interessato ad utilizzare l’ambiente di sviluppo MPLAB X ed il programmatore/debugger JTAG, ma intende utilizzare l’ambiente Arduino e la programmazione via seriale attraverso il bootloader, può tranquillamente saldare tali LED (rispettando la polarità, catodo a sinistra, anodo a destra, guardando la scheda con il connettore di alimentazione a sinistra).

Chi invece vuole usare il la programmazione ed il debug via JTAG, sarebbe meglio che evitasse di saldare tali LED, poiché essi corrispondono ai piedini TCK e TMS del detto connettore JTAG e potrebbero interferire con il corretto funzionamento.
Cominciamo pertanto con l’esaminare lo schema circuitale di detta scheda.

Elenco Componenti

R1, R2, R3, R4: 4,7 kohm
R5: Trimmer 10 kohm MV
R6, R7: 1 kohm
R8, R9, R10, R11, R12: 470 ohm

C1, C7, C9: 100 µF 35 VL elettrolitico
C2, C5, C6, C8: 100 nF ceramicoC3, C4: 100 nF 100 VL poliestere
LD1: LED 5 mm verde (vedi testo)
LD2 LED 5 mm giallo (vedi testo)
LD3 LED 5 mm rosso
LD4 LED 5 mm verde
P1, P2.: Microswitch
Q1, Q2: BS170
BMP180: Modulo BMP180
OLED1: Display OLED 0,96” I2C
LCD:Display LCD I2C
DS3231: Modulo RTC DS3231
SERVO: Servomotore 6V
NEOPIXEL: LED WS2812B
APA102: LED APA102
D1: 1N4007
U1: 7805
U2: MCP1702-3302E/TO
Elenco Componenti:
Varie:
- Strip femmina 3 vie (1 pz.)
- Strip femmina 4 vie (7 pz.)
- Strip femmina 5 vie (1 pz.)
- Strip femmina 6 vie (2 pz.)
- Strip femmina 7 vie (1 pz.)
- Strip femmina 20 vie (2 pz.)
- Strip Arduino 8 vie (5 pz.)
- Strip Arduino 10 vie (1 pz.)
- Strip Arduino 2x18 vie (1 pz.)
- Plug alimentazione
- Circuito stampato S1393 (102x73 mm)

Schema elettrico

Nella parte in alto è ben visibile la sezione di alimentazione con l’ingresso (Jack nero, in alto a sinistra della scheda), dove è possibile applicare una tensione da 7V CC a 12V CC, connesso prima ad un regolatore di tensione a 5V ed in seguito ad un regolatore di tensione a 3,3V. Tali due regolatori di tensione forniscono le due rispettive tensioni a tutta la scheda.

Notate che siccome alla scheda possono essere collegati vari dispositivi e gli assorbimenti possono essere di una certa entità, è d’obbligo applicare le seguenti limitazioni pena possibili danneggiamenti di alcuni componenti.

1. Non alimentare la scheda “PRO midi 1284P Developer’s Board” tramite l’adattatore USB <-> seriale presente sulla “PRO midi 1284P”, ma solo tramite l’apposito Jack nero. Questo significa che, se si usa l’IDE di Arduino per programmare la MCU e ci si interfaccia via seriale con un adattatore, occorre collegare tutti i pin, escluso il pin del +Vcc (quindi si devono collegare: GND, TX, RX e RST/DTR, ma non +Vcc).
2. Limitare l’assorbimento totale (+5V assieme al +3,3V) al massimo di 1.000 mA. Assorbimenti superiori possono provocare il surriscaldamento del regolatore a 5V con conseguenti possibili danneggiamenti.
3. L’alimentazione che arriva alla MCU è +5V, quindi tutti gli I/O diretti del Atmega1284P saranno con tale tensione. Sulla scheda sono già previsti alcuni connettori che dispongono di traslatori di livello da 5V a 3,3V (ad esempio per i pin del I²C).

Subito sotto la sezione di alimentazione, sul lato sinistro, sono ben visibili due MOSFET (Q1 e Q2) che hanno il compito di fare da traslatori di livello, tra i +5V ed i +3,3V, per i segnali che vanno verso il bus I²C e verso alcuni connettori già predisposti per uso specifico, come quello per collegare una breadboard con un sensore BMP180 (temperatura, umidità e pressione atmosferica) o quelli per collegare un display OLED da 0,96” (esistono due versioni del display OLED da 0,96” ed una ha i pin di alimentazione invertiti rispetto all’altra, quindi dovete prestare molta attenzione in quale connettore inserire il display).

Un ulteriore connettore, permette la connessione di altri dispositivi I²C funzionanti a 3,3V, difatti rende disponibili, il pin di GND, il pin di +3,3V ed i due pin SCL ed SDA collegati ai MOSFET traslatori di livello.

Notate che resistenze di pull-up per il bus I²C sono già presenti sulla scheda e risultano connesse ai pin SDA ed SCL della MCU (pin 16 e 17 della scheda “PRO midi 1284P”).
Proseguendo verso il basso, sempre sul lato sinistro dello schema, si trovamo alcuni altri connettori. Due di essi permettono il collegamento di dispositivi I²C operanti a 5V, mentre l’ultimo in basso è predisposto per l’inserimento di una breadboard con il modulo RTC DS3231.

Al centro dello schema si trova la MCU (microcontrollore ATmega1284P) che è montata sulla scheda PRO midi 1284P e che deve essere inserita nell’apposito spazio ad essa riservato sulla PRO midi 1284P Developer’s Board.

Continuando ad esaminare lo schema della scheda, sul lato destro della MCU, procedendo dall’alto verso il basso, troviamo un connettore marcato NEOPIXEL, sul quale connettore sono presenti le alimentazioni, +5V e GND, oltre al pin D0 da utilizzare per il collegamento di una striscia di LED WS2812 o simili, chiamati NeoPixel.

Troviamo anche un connettore siglato ANALOG che rende disponibili gli ingressi analogici A1, A2 ed A3 oltre a fornire i +5V ed il GND; questo può essere utilizzato per collegare sensori che forniscono in uscita un segnale analogico compreso tra i 0V ed i +5V.

Nello schema elettrico abbiamo, poi, un connettore contrassegnato APA102; esso rende accessibile la linea di alimentazione (+5V e GND), oltre ai due pin D7 e D5 utilizzabili per comandare una striscia di LED APA102 sia con la gestione totalmente software dei due segnali necessari (Clock e Data), sia demandando tale gestione alla libreria SPI con cui questi LED sono controllabili ad alta velocità.

Procediamo con l’analisi arrivando al trimmer R5, connesso da un lato ai +5V e dall’altro a GND, con il cursore collegato all’ingresso analogico A0. Tale trimmer può essere utilizzato per apprendere il funzionamento di una porta analogica, difatti, al ruotare del cursore da destra a sinistra, il valore ritornato dalla funzione analogRead(A0) di Arduino, varierà da 0 a 1023 in modo proporzionale al valore di tensione presente sul suddetto pin A0.

 

Un connettore marcato “SPI” che rende disponibili i pin MOSI (D5), SCK (D7), MISO (D6) ed SS (D4), oltre ai soliti +5V e GND, per connettere oggetti che colloquiano con il microcontrollore attraverso il bus SPI. Se non si utilizza il bus SPI, alcuni di questi pin possono essere utilizzati con la libreria “Servo” per l’azionamento di servomotori. In quest’ultimo caso vi consigliamo di consultare la Tabella 1, che riporta la corrispondenza fra i timer interni e i relativi contatti della scheda.

Tab. 1

Il circuito dispone di due pulsanti denominati P1 e P2, completi di rete R/C di “debouncing”, connessi rispettivamente agli ingressi digitali D15 e D14; per il loro utilizzo tenete presente che tali pulsanti chiudono verso massa (valore LOW di Arduino).

Per poterli utilizzare andranno definiti nel programma come ingressi con resistore di pull-up attivo, o, ricorrendo alla sintassi di Arduino, occorrerà effettuare la: pinMode(pin, INPUT_PULLUP) così che, a pulsante non premuto, l’ingresso avrà valore alto (HIGH), mentre a pulsante premuto, esso avrà valore basso (LOW).

Subito sotto tali pulsanti, nello schema, troviamo il Connettore JTAG. L’uso o meno di tale connettore è funzione dell’ambiente di sviluppo che si intende utilizzare.
Per chi lavorerà in ambiente puramente Arduino, con l’utilizzo del IDE e la programmazione via porta seriale, attraverso l’uso del convertitore esterno USB <-> Seriale, e del “bootloader” presente nella “PRO midi 1284P”, tale connettore JTAG servirà solo per avere a disposizione i pin D18, D19, D20 e D21 oltre al pin di RESET ed alle alimentazione, +5V e GND.

Per chi invece lavorerà in ambiente MPLAB X di Microchip, tale connettore JTAG renderà disponibili tutti i segnali per l’utilizzo di un programmatore/debugger come SNAP, ovvero, oltre alle alimentazioni +5V e GND, anche i segnali di TCK, TDI, TMS e RESET. Da notare che il connettore sulla scheda è direttamente collegabile al suddetto programmatore SNAP, con un cavo dritto a 7 conduttori dato che la posizione dei pin è la stessa del connettore del programmatore.

Infine, in fondo al circuito sotto il connettore JTAG, troviamo quattro diodi luminosi, identificati dalle sigle LD1, LD2, LD3 ed LD4. Come già detto in precedenza, sulla scheda si troveranno già saldati solo i due LED LD3 e LD4, mentre i rimanenti due LED, LD1 ed LD2, verranno forniti non saldati. Sarà l’utente finale a scegliere se lasciare sulla scheda solo due LED o montarli tutti e quattro, in funzione dell’utilizzo o meno del programmatore/debugger JTAG. Al fine di facilitare la programmazione a basso livello, riportiamo nella Tabella 2 la corrispondenza di alcuni dei pin utilizzati nella PRO midi 1284P Developer’s Board.

Tab. 2

La Fig. 2 mostra la disposizione dei connettori descritti. La serigrafia sulla scheda indica chiaramente il significato di ogni singolo pin. Come risulta evidente dalla disponibilità di connettori sia di uso generico

Fig. 2

(SPI, I÷C, ANALOG, ecc.) che specifici (Display OLED, RTC DS3231, modulo BMP180, ecc.) la scheda PRO midi 1284P Developer’s Board consente di utilizzare tutte le risorse dell’Atmega1284P e di apprendere l’uso e la programmazione di esse permettendo la sperimentazione sull’uso di varie componenti hardware aggiuntive.

Fig. 3

La Fig. 3 mostra la scheda di sviluppo con la PRO midi 1284 e un modulo RTC installato; invece nella Fig. 4 vedete la board applicata ad una Arduino Mega (in virtù della presenza degli strip sulla parte inferiore, che combaciano con gli header Arduino Mega), giusto per darvi un’idea della versatilità del sistema di sviluppo che essa forma con la ProMidi 1284P.

Fig. 4

Realizzazione pratica

Bene, esaurita la descrizione dello schema elettrico possiamo passare alla fase pratica e quindi a qualche suggerimento riguardante la costruzione della scheda: il circuito stampato è a doppia ramatura e potete realizzarlo per fotoincisione a partire dalle tracce lato rame.

Per quanto riguarda il montaggio dei componenti, saldate per primi quelli a basso profilo (resistenze, condensatori non polarizzati, strip femmina, microswitch, quindi passate ai transistor, alla presa jack di alimentazione, al trimmer e all’elettrolitico.

Il regolatore integrato 7805 va montato sdraiato sul PCB dopo averne piegato i terminali ad angolo retto. Per non sbagliare l’orientamento dei componenti polarizzati seguite il piano di montaggio visibile in queste pagine. Infine, se pensate al montaggio su Arduino Mega (utilizzando la sola shield SENZA installare la scheda ProMidi 1284P) montate dal lato saldature i relativi pin-strip.

 

Download

File Gerber per la realizzazione del PCB della DemoBoard (richiede login)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu