Un laptop autocostruito con ATmega2560: multitasking reale su 8 KB di RAM

Un ATmega2560 con 8 KB di RAM può reggere un ambiente desktop multitasking, con giochi, gestione file e riproduzione video. È quello che ha dimostrato Vladimir costruendo un laptop autocostruito intorno a una scheda compatibile Arduino con ATmega2560, la Mega 2560 Pro Mini. Il dispositivo misura 12x11x3,4 cm e racchiude tastiera QWERTY, display monocromatico da 128×64, audio, microSD, RTC e batteria 18650 in una scocca stampata in 3D. Il firmware gira su FreeRTOS e offre multitasking reale, con commutazione fra le attività tramite Alt-Tab. Quindi un video avviato continua a riprodurre l’audio mentre si gioca a Sokoban.

L’architettura a attività indipendenti è il punto centrale del progetto. Le applicazioni ricevono eventi e disegnano tramite il motore UI, mentre la shell si occupa di registrazione, stack, commutazione ed eventi. Di conseguenza aggiungere una nuova applicazione non richiede di toccare le altre. Una nuova attività è una classe con setup e loop più un paio di metodi per menu e icona.

Il motore UI e le applicazioni su FreeRTOS

Il motore di interfaccia gestisce form, pulsanti, caselle di controllo, liste, campi di input e dialoghi. Si occupa delle pressioni dei tasti, della tabulazione, del ridisegno e degli eventi inviati all’attivita’ proprietaria. Sopra ci girano le applicazioni già pronte:

  • file manager
  • video player
  • music player
  • orologio
  • calcolatrice
  • Sokoban
  • Snake
  • Game of Life
  • editor di testo

Il display ST7920 è pilotato in modalità parallela con un driver scritto su misura e un buffer video da 1 KB in SRAM. Le funzioni grafiche vanno dal singolo pixel al testo fino alle immagini XBM. Il microcontrollore AVR lavora a 16 MHz e tutto gira su 8 KB di RAM, metà dei quali già occupati da variabili globali. Perciò ogni byte del buffer conta.

Tastiera 8×8, antirimbalzo e decodificatore 4-a-16

La tastiera conta 64 tasti in totale, disposti in una matrice 8×8 che richiede due porte a 8 bit del microcontrollore. I tasti erano sistemati in un rettangolo 11×6. La scansione avviene colonna per colonna a centinaia di hertz, con antirimbalzo software. In una revisione è stato aggiunto un diodo per ogni tasto e la selezione delle colonne è passata a un decodificatore 4-a-16. In questo modo bastano quattro pin per scegliere una colonna e la tastiera può espandersi a 16 colonne.

Le righe della matrice sono attualmente 6, ma leggendo un’intera porta del microcontrollore si possono portare a 8. Le etichette dei tasti sono state stampate con un ugello da 0,25 mm. Per rifare il progetto servono una scheda di sviluppo con ATmega2560, un lettore di schede microSD con interfaccia SPI per i file e una batteria Li-ion 18650 per l’autonomia.

Video a 24 fps e formato XBM più MP3 in un solo file

Il video player usa un formato personalizzato con flusso XBM e MP3 in un unico file. Così il player gestisce comodamente video a 24 fps con audio, senza tenere in RAM più di quanto serve. Il resto della scheda è occupato da RTC e batteria 18650, che rendono il dispositivo autonomo. La scocca è stata lavorata con una CNC3018 e stampata in 3D, mentre gli schemi sono stati disegnati in EasyEDA.

Chi vuole rifare il progetto trova sulla pagina del progetto su Hackaday.io firmata da Vladimir il racconto del lavoro e le informazioni per ricostruirlo.


Fonte: https://hackaday.io/project/206744-avr-laptop

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Menu