Sommario:

Computer palmare BASIC: 6 passaggi (con immagini)
Computer palmare BASIC: 6 passaggi (con immagini)

Video: Computer palmare BASIC: 6 passaggi (con immagini)

Video: Computer palmare BASIC: 6 passaggi (con immagini)
Video: COME VELOCIZZARE UN VECCHIO PC CASSONE con POCHI EURO! 2024, Novembre
Anonim
Computer portatile BASIC
Computer portatile BASIC
Computer portatile BASIC
Computer portatile BASIC

Questo Instructable descrive il mio processo di costruzione di un piccolo computer palmare con BASIC. Il computer è costruito attorno al chip AVR ATmega 1284P, che ha anche ispirato il nome sciocco per il computer (HAL 1284).

Questa build è PESANTEMENTE ispirata al fantastico progetto trovato qui e al badge SuperCON BASIC.

Il computer esegue una versione modificata di TinyBasic, sebbene gran parte del software sia basato sul progetto di dan14. Ovviamente puoi seguire questo Instructable, o ancora meglio, migliorarlo poiché ho commesso alcuni errori.

Per questo progetto ho anche creato un manuale. Menziona alcuni bug e specifiche per il monitor scelto ma, soprattutto, ha l'elenco delle operazioni BASIC.

Dopo che questo è stato pubblicato, ho realizzato un video che mostra il progetto.

Passaggio 1: parti che ho usato

Parti che ho usato
Parti che ho usato
Parti che ho usato
Parti che ho usato
Parti che ho usato
Parti che ho usato

Per l'IC principale:

  • ATmega 1284P
  • Cristallo da 16 MHz
  • Condensatore ceramico 2x 22pf
  • Resistenza da 10KΩ (per reset pull up)
  • Pulsante a 4 pin (per reset)
  • Reistor da 470Ω (per video composito)
  • Resistore da 1kΩ (per la sincronizzazione del video composito)
  • Ponticello a 3 pin (per segnale video)
  • Cicalino passivo

Per il controllo della tastiera:

  • ATmega 328P (come quelli usati nell'Arduino Uno)
  • Cristallo da 16 MHz
  • Condensatore ceramico 2x 22pf
  • Resistenza 12x 10KΩ (per reset pull up e pulsanti)
  • 51x pulsante a 4 pin (per la tastiera effettiva)

Per potenza:

  • Regolatore di tensione L7805
  • LED da 3 mm
  • Resistenza da 220Ω (per LED)
  • Condensatore elettrolitico 2x 0,1µF
  • Condensatore elettrolitico da 0,22 µF (potresti sostituire questo 0,22 e uno 0,1 con uno 0,33. Mi è stato anche detto che i valori non contano molto, ma non sono bravo con i condensatori)
  • 2x ponticello a 2 pin (per ingresso alimentazione e per interruttore principale)

GPIO (forse aggiungere un altro paio di motivi):

  • Ponticello a 7 pin
  • 2x ponticelli a 8 pin
  • Ponticello a 2 pin (per 5V e GND)
  • Ponticello a 3-4 pin (per comunicazione seriale)

Non PCB:

  • Display LCD da 4" con video composito (il mio aveva una tensione di ingresso tra 7-30V)
  • Supporto per display stampato in 3D
  • Una sorta di interruttore

Passaggio 2: il circuito

Il circuito
Il circuito

Il circuito non è molto carino e gran parte della principale regione IC è ispirata a dan14. Detto questo, è un Arduino piuttosto semplice su un circuito Breadboard. La tastiera è una semplice griglia ed è controllata dall'ATmega328. I due chip AVR comunicano tramite i pin seriali UART.

Sia un'immagine che i miei file Eagle sono allegati e, si spera, saranno sufficienti per ricreare il circuito. In caso contrario, non esitare a informarmi e aggiornerò Instructable.

Passaggio 3: il PCB

Il PCB
Il PCB
Il PCB
Il PCB

Il PCB è a 2 strati e creato utilizzando Auto Route (Oh, che stronzo!). Ha pulsanti e LED indicatore di alimentazione nella parte anteriore e il resto sul retro. Ho fatto realizzare il mio PCB con PCB JCL e hanno fatto un ottimo lavoro con esso. I file necessari per ricreare il PCB dovrebbero essere nei file Eagle di prima.

Ti suggerirei di riprogettare il PCB, poiché ho alcune cose che mi piacerebbe fare diversamente. Se ti piace il mio design, ho ancora (al momento della scrittura) quattro schede inutilizzate che sono più che disposto a vendere.

La scheda ha quattro fori che ho usato per montare il display LCD.

Passaggio 4: caricamento del codice

Caricamento del codice
Caricamento del codice
Caricamento del codice
Caricamento del codice
Caricamento del codice
Caricamento del codice

Ovviamente sia il 1284 che il 328 hanno bisogno di codice e il codice che ho usato può essere trovato qui: https://github.com/PlainOldAnders/HAL1284 sotto ArduinoSrc/src. Ho semplicemente usato l'IDE Arduino per modificare e caricare il codice, ma prima di poterlo fare, dovrai masterizzare i bootloader sui circuiti integrati:

ATMega328:

Questo è facile, nel senso che c'è molto supporto là fuori su come masterizzare un bootloader e caricare il codice su questo IC. Di solito seguo questa guida, soprattutto perché continuo a dimenticare le specifiche.

Il codice per il 328 (sotto ArduinoSrc/keypad) è abbastanza semplice. Si basa totalmente sulla libreria Adafruit_Keypad-master. Nel caso in cui qualcosa cambi sulla lib, ho incluso la versione che ho usato nella mia pagina github sotto ArduinoSrc/lib.

ATmega1284:

Questo è stato un po' difficile per me quando ho ricevuto l'IC per la prima volta. Ho iniziato ottenendo il bootloader da qui e ho seguito la guida all'installazione. Per masterizzare il bootloader, ho semplicemente fatto la stessa cosa del 328 e ho ricevuto aiuto da qui. Per entrambi gli IC ho appena usato un Arduino Uno sia per masterizzare il bootloader che per caricare il codice (IC rimosso da Arduino Uno durante il caricamento).

Il codice (sotto ArduinoSrc/HAL1284Basic) è troppo complicato per me ma sono riuscito a modificare alcune parti del codice:

Ho aggiunto un paio di comandi (quelli contrassegnati con [A] nel manual.pdf), e ho anche modificato altri comandi:

Tono: il comando tono utilizzava la funzione tono di Arduino in precedenza, ma quando si utilizzava la libreria TVout, il cicalino non funzionava correttamente. L'ho cambiato per usare la funzione tono di TVout, ma questo significa che il pin del tono DEVE essere il pin 15 (per l'atmega1284)

Comunicazione seriale: poiché la tastiera è fai da te, utilizza la comunicazione seriale per leggere i caratteri. Poiché qui viene utilizzato l'atmega1284, sono disponibili due linee di comunicazione seriale e quando "sercom" è abilitato, il codice consente anche la scrittura tramite la porta seriale (da un computer o altro).

Risoluzione: il monitor utilizzato per questo progetto è piuttosto stupido ed è necessaria una piccola risoluzione, altrimenti l'immagine sfarfalla. Se viene utilizzato un monitor migliore, suggerirei di modificare la risoluzione nella funzione di configurazione.

Passaggio 5: assemblaggio

Assemblea
Assemblea
Assemblea
Assemblea
Assemblea
Assemblea

Con il codice caricato e il PCB e le parti pronte, è giunto il momento dell'assemblaggio. Tutte le parti che ho usato erano attraverso il foro, quindi la saldatura non era troppo difficile (al contrario dei tosti-SMD-saldatori-fellas là fuori). Il monitor è stato fissato ai quattro fori nel PCB con un supporto stampato in 3D. Se viene utilizzato un altro monitor, si spera che i quattro fori possano essere utilizzati per il montaggio di questo.

Il supporto per monitor qui utilizzato è inoltre predisposto per alloggiare un interruttore a levetta (collegato al ponticello "switch" sul PCB) e i tre pulsanti di controllo per il monitor. Il supporto è fissato con bulloni M3 in plastica e distanziali.

Per la presa di alimentazione ho usato un connettore PCB JST, anche se un jack cilindrico liscio sarebbe stato un po' più fluido. Per alimentare la scheda, sono passato da un alimentatore a 12V o tre batterie 18650 in serie. Un cowboy più liscio di me potrebbe probabilmente progettare un portabatteria elegante per la tavola.

Passaggio 6: bug e lavoro futuro

Tasti freccia: i tasti freccia sono stati inseriti accidentalmente e non hanno molte funzioni. Questo rende difficile la navigazione

File I/O: esistono capacità di File I/O ma queste non sono implementate. Per combattere questo problema, il software HAL1284Com è in grado di caricare file sulla scheda. È anche possibile caricare su EEPROM.

PEEK/POKE: PEEK e POKE non sono stati testati e non sono sicuro di quali siano gli indirizzi.

Break: Break (Esc) a volte ha pasticciato con l'intero codice, quando si trovava in loop infiniti.

Pin 7: il pin 7 PWM può essere difficile quando si tenta di DWRITE High o AWRITE 255. Funziona bene con AWRITE 254.

Idiota: sarebbe l'ideale poter caricare anche tramite UART1, ma il caricamento è possibile solo tramite UART0, quindi il caricamento dovrà essere effettuato estraendo l'IC principale. Lo schermo e il regolatore di tensione 5 diventano un po' troppo caldi quando sono in funzione per molto tempo.

Consigliato: