Un’altra Variante di TZX/CASDuino

Scritto il 18 gennaio 2020 da

Ci sono diverse implementazioni del famoso emulatore di cassette audio TZXDuino / CASDuino per i computer Sinclair ed MSX, alcune richiedono “shield” dedicati, altre un notevole impiego di breadboard e fili volanti, più o meno semplici da realizzare. Quella che vi propongo oggi utilizza due shield facilmente reperibili e poco costosi e alcuni componenti esterni necessari per il collegamento con il computer. E’ necessaria solo una minima dimestichezza con il saldatore per realizzare i pochi collegamenti richiesti.

tzx-duino-img0-small

Componenti

Oltre alla scheda Arduino, questo progetto richiede uno shield Data Logger e uno shield LCD Keypad, entrambi facilmente reperibili su e-Bay o altri negozi online a pochi euro. Per il collegamento al computer, un condensatore elettrolitico da 10uF, una presa jack stereo da 3.5mm e una presa jack mono da 2.5mm.

tzx-duino-img1-thumb

tzx-duino-img2a-thumb

tzx-duino-img3a-thumb

Lo shield Data Logger verrà utilizzato per accedere alla scheda SD contenente i programmi e i giochi da caricare sul computer e per ospitare, nell’area di prototipazione “millefori”, un condensatore elettrolitico come filtro per l’uscita audio analogica e le due prese jack da 3.5 e 2.5 mm per collegare i cavetti per il registratore a cassette forniti con i computer.

Lo shield LCD Keypad, come il nome suggerisce, mette a disposizione un display LCD a 16×2 caratteri di tipo parallelo e una pulsantiera che utilizzeremo per selezionare i file da riprodurre e avviare o fermare la riproduzione. La particolarità di questo shield è che i pulsanti sono collegati ad un unico ingresso analogico di Arduino e quindi necessita di uno sketch particolare per sapere quale pulsante è stato premuto. In pratica, ad ogni pulsante corrisponde un livello di tensione diverso da 0 a 5 volt quindi occorre leggere il livello dall’ingresso analogico e determinare, in base al valore, quale pulsante è stato premuto.

int _BTN_SELECT[]  =  {720, 760};
int _BTN_LEFT[]    =  {480, 520};
int _BTN_RIGTH[]   =  {0, 20};
int _BTN_UP[]      =  {120, 160};
int _BTN_DOWN[]    =  {300, 350};

int ctrlButton()
{
  int button = analogRead(A0);

  if ( _BTN_SELECT[0] <= button && button <= _BTN_SELECT[1] ) {
    return btnPlay;
  }
  if ( _BTN_LEFT[0] <= button && button <= _BTN_LEFT[1] ) {
    return btnStop;
  }
  if ( _BTN_RIGTH[0] <= button && button <= _BTN_RIGTH[1] ) {
    return btnRoot;
  }
  if ( _BTN_UP[0] <= button && button <= _BTN_UP[1] ) {
    return btnUp;
  }
  if ( _BTN_DOWN[0] <= button && button <= _BTN_DOWN[1] ) {
    return btnDown;
  }

  return 0;
}

In questo esempio, leggiamo il valore dall’ingresso analogico A0 e confrontiamo il valore ritornato con una serie di valori preimpostati per determinare quale pulsante è stato premuto.

Gli sketch allegati comprendono già queste modifiche e non occorre che le facciate voi.

Osservando la foto dello shield noterete che manca il connettore del pin 10.

tzx-duino-img3-b-detail

Questo pin è utilizzato sia dallo shield Data Logger come chip select della scheda SD che dallo shield LCD Keypad per spegnere la retroilluminazione del display. L’ho tolto per evitare il fastidioso lampeggio del display ogni volta che lo sketch accede alla scheda SD, visto che comunque non mi serve spegnere il display.

Collegamenti

Disponiamo il condensatore elettrolitico e le due prese jack sull’area “millefori” dello shield Data Logger in modo che le due prese siano facilmente accessibili dal lato destro, come visibile in figura e nelle foto allegate (purtroppo non ho trovato una rappresentazione migliore per i collegamenti).

TZXDuino_bb

Con alcuni spezzoni di filo di rame isolato, colleghiamo il pin 3 di Arduino (il quarto da destra) al terminale positivo del condensatore elettrolitico, il terminale negativo al piedino corrispondente alla punta (tip) del connettore jack, il terminale corrispondente al corpo (sleeve) del connettore jack ad uno dei pin GND di Arduino. Non collegate gli altri pin altrimenti inserendo uno spinotto jack mono, come quelli forniti con gli home computers, verranno cortocircuitati a massa causando problemi.

In modo simile, colleghiamo il pin 2 di Arduino (il terzo da destra) al terminale tip del jack da 2.5mm e il terminale sleeve ad uno dei pin GND di Arduino. Questo permetterà ai computer MSX di comandare la riproduzione dei file come si trattasse di un vero registratore a cassette.

Terminato il montaggio dei componenti, possiamo assemblare l’apparecchio montando lo shield Data Logger sopra la scheda Arduino, quindi lo shield LCD Keypad sopra lo shield Data Logger.

Caricamento dello Sketch e utilizzo pratico

Collegate la scheda Arduino al computer tramite un cavo USB per poter effettuare la programmazione dello sketch. Lanciate sul vostro computer l’ambiente di sviluppo di Arduino, aprite uno degli sketch allegati e caricatelo sulla scheda. Se tutto va bene, dovrebbe accendersi il display LCD e visualizzare il messaggio ‘No SD Card’, questo è normale se non avete inserito una scheda SD.

A questo punto potete copiare i programmi o i giochi che volete utilizzare su una scheda SD e inserirla nell’alloggiamento dello shield Data Logger. Premendo il pulsante di reset dovrebbe apparire un messaggio con la versione dello sketch caricato e il contenuto della scheda. Assicuratevi che la scheda SD sia formattata in FAT16 o FAT32 altrimenti lo sketch non sarà in grado di leggerne il contenuto. Non è necessario utilizzare una scheda dedicata ma ovviamente meno file “estranei” ci sono, più sarà facile scorrere il contenuto per trovare quello che ci interessa.

Ora potete collegare l’apparecchio al vostro home computer.

Per i computer Sinclair

  • Caricare lo sketch TZXDuino
  • Collegare un cavetto audio dalla presa EAR del computer alla presa jack da 3.5 mm
    La presa jack da 2.5 mm non viene utilizzata con questi computer

Per i computer MSX

  • Caricare lo sketch CASDuino
  • Collegare lo spinotto bianco (audio in) alla presa jack da 3.5 mm
  • Collegare lo spinotto nero (remote) alla presa jack da 2.5 mm

In alternativa, se possedete entrambi i sistemi, è possibile caricare il firmware MaxDuino. Si tratta di una versione unificata dei firmware CAS e TZX e può essere utilizzato con entrambi i sistemi Sinclair ed MSX.

I tasti UP e DOWN permettono di scorrere l’elenco dei file presenti sulla scheda SD, il tasto SELECT permette di entrare in una sotto-directory o avviare la riproduzione di un file, il tasto LEFT permette di passare alla directory precedente o mettere in pausa e riprendere la riproduzione, il tasto LEFT ferma la riproduzione. Il tasto RIGHT permette di accedere al menu di configurazione dello sketch.

Selezionate il programma o il gioco che volete caricare, date il comando di caricamento dei file da nastro relativo al computer che state utilizzando, ad esempio LOAD “” per i computer Sinclair, oppure RUN”CAS:” per i computer MSX, premete il tasto SELECT e… attendete il caricamento. Esattamente come avveniva 30 e passa anni or sono occorre aspettare un po’ prima di veder comparire le schermate del gioco prescelto. Il vantaggio è che ora i programmi verranno sempre caricati correttamente.

Una volta verificato il corretto funzionamento, potete scollegare l’apparecchio dal PC ed alimentarlo con una comune batteria da 9 volt, ottenendo così una postazione indipendente del tutto simile a quella che si aveva una volta, con il nostro fedele home computer affiancato dal registratore a cassette.

Galleria

tzx-duino-img0ArduinoData Logger
tzx-duino-img3atzx-duino-img4tzx-duino-img5

Files

Links