Nella prima parte dell'articolo abbiamo visto quale è stata l'idea alla base di questo progetto, l'architettura software e i principi di funzionamento. In questa parte ci dedicheremo alla componente hardware, la scheda Arduino Nano Every, il display TFT, lo schema elettrico e il relativo assemblaggio. Inoltre, vedremo quali librerie sono necessarie e come installarle nell'ambiente di sviluppo di Arduino.
Un “Nano Computer”
Come anticipato, negli anni 80-90 dello scorso secolo, prima dell'avvento dei personal computer, ebbero grande diffusione gli "Home Computer", si trattava di semplici elaboratori (microcomputer) basati su microprocessori a 8 bit. Meccanicamente, erano costituiti da una voluminosa tastiera alloggiata in un contenitore dove trovava posto tutta la circuiteria (Figura 1), possedevano delle porte di uscita per i collegamenti al monitor/televisore e a poche altre periferiche (stampante, joystick e registratore a cassette). Il sistema operativo era costituito sostanzialmente di un interprete BASIC con integrata una SHELL a riga di comando. Nella nostra replica moderna, ci siamo spinti oltre, la tastiera è stata integrata nel display! Quest'ultima é fruibile tramite pennino touch, rendendo così il sistema complessivamente compatto e facile da utilizzare. In sostanza, il nostro "Nano Computer" è composto da soli due componenti, la scheda Arduino Nano Every (Figura 2) e un display digitale da 2,8 pollici corredato di touch screen e di alloggiamento per una memoria SD esterna (Figura 3) dove verranno memorizzati i programmi. Per chiarezza c’è da sottolineare che questa architettura è completamente diversa rispetto a quella adottata dagli home computer. In particolare, nel VIC20, non si usava, ovviamente, un microcontrollore ma tutto era basato sulla CPU 6502, l’interprete risiedeva in una ROM dedicata e la RAM complessivamente era di 5,5Kb di cui circa 2Kb erano destinati alla gestione della componente video, rimanevano così i circa 3,5Kb a disposizione dei programmi. In questo progetto l’interprete e il programma che dovrà essere eseguito condividono lo stesso spazio di memoria RAM.
L'hardware
Come anticipato nella prima parte dell'articolo, la scelta di usare Arduino Nano Every come scheda di riferimento é nata con l'intento di replicare su un'architettura a 8 bit "moderna", qualcosa di simile, con tutte le ovvie distinzioni, agli home computer degli anni 80-90 del secolo scorso. La scheda Arduino Nano Every basata sul processore ATMega4809, mette a disposizione 48Kb di memoria flash e 6Kb di memoria RAM con un clock di 20MHz. Opera a 5V e può essere alimentata con una tensione tra 6 e 21V. Come tutte le schede Nano ha un totale di 15+15 pin e annovera 14 pin I/O digitali, 8 pin analogici, 6 pin PWM. Può comunicare con il mondo esterno tramite le seguenti interfacce: USB, SPI, UART, I2C. Per poterla programmare nell'apposito IDE di Arduino (ver. 1.8.19) occorre prima aggiornare la lista delle schede su cui può lavorare l'ambiente di sviluppo. Per fare questo, va scaricato "Arduino megaAVR Boards" (Figura 4) usando il menu gestione schede, selezionando successivamente la scheda "Arduino Nano Every" (Figura 5).
Per quanto riguarda il display, si tratta di uno schermo dalle dimensioni contenute (2.8 pollici) integrato con un touch screen resistivo e dotato di un alloggiamento per l'inserimento di una schedina di memoria SD. Ha una risoluzione 320x240 pixel e può gestire fino a 65.000 colori. Il controllo del display avviene tramite interfaccia SPI e l'ampiezza massima dei livelli logici di controllo ammissibile é di 3.3 Volt. In sintesi, si tratta di un dispositivo abbastanza robusto, economico e facilmente collegabile ad Arduino Nano Every.
Schema Elettrico
In Figura 6 è visibile lo schema elettrico del progetto, come detto si tratta di un circuito piuttosto semplice, volendo è possibile assemblare tutto su una breadboard o su una piastra mille fori, ma naturalmente l'uso di un apposito circuito stampato rende la costruzione molto più semplice (Figura 7). Da notare che l'interfacciamento tramite SPI tra i due componenti, ovvero scheda Arduino Nano Every e display TFT è ottenuto attraverso dei partitori di tensione composti dalle resistenze R1..R16. Tali partitori hanno il compito di adattare i valori di tensione delle porte di controllo dell'Arduino, pari a circa 5volt, ai 3.3 Volt massimi supportati dagli ingressi del display. Le porte non utilizzate per l'interfacciamento sono accessibili tramite i comandi dell'interprete NanoBASIC.
Per quanto riguarda il montaggio del display su circuito stampato, visto che la scheda Arduino Nano è posta sotto a quest'ultimo, occorre utilizzare dei connettori "header female" di altezza doppia rispetto a quelli utilizzati per il collocamento della scheda (a meno che non si voglia saldare la scheda direttamente sul circuito stampato).
Elenco componenti |
|
Arduino Nano Every | https://docs.arduino.cc/hardware/nano-every |
TFT 2.8" ILI9341 con touch XPT2024 | http://www.lcdwiki.com/2.8inch_SPI_Module_ILI9341_SKU:MSP2807 |
R1..R8 | 1.5Kohm 1/4w |
R9..R16 | 2.7Kohm 1/4w |
Connettori | vedi testo |
Scheda di memory SD | qualsiasi scheda SDHC |
L'Interfaccia SPI
Spendiamo qualche parola per descrivere il funzionamento dell'interfaccia SPI. L'acronimo sta per Serial Peripheral Interface, sviluppata dalla Motorola a cavallo degli anni 80-90 dello scorso secolo, è un'interfaccia seriale sincrona studiata per comunicazioni su distanze brevi tra dispositivi. La comunicazione si basa sul modello Master/Slave e avviene utilizzando un massimo di quattro linee di segnale. L'implementazione di questa interfaccia è abbastanza semplice, si basa sostanzialmente sull'utilizzo di un registro a scorrimento sia sulla periferica Master che Slave, lo schema di principio è quello di Figura 8. La dimensione del registro è tipicamente di 8bit (un byte) ma potrebbe variare a seconda del microcontrollore. Il processo di comunicazione di un byte funziona nel seguente modo: il Master attiva la linea CS (chip select o SS - slave select -) relativa alla periferica con cui vuole comunicare e successivamente fornisce il clock alla frequenza con cui avverrà la trasmissione. Tramite la linea MOSI i bit interni al registro a scorrimento del Master vengono traslati a partire dal bit più significativo ed inserirti nel registro dello Slave, il quale viceversa svuota il proprio registro inviando il bit più significativo attraverso la linea MISO. La comunicazione ha temine quando viene trasmesso l'ultimo bit (l’ottavo).
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1549 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.