Visualizzazione post con etichetta Linux. Mostra tutti i post
Visualizzazione post con etichetta Linux. Mostra tutti i post

martedì 18 marzo 2014

AriaG25 - SoM Linux Embedded - Parte 1

Ritorno a parlare dei sistemi Linux Embedded, dopo una (lunga) pausa dal "lavoro" di blogger. Oggi descriverò le attività hardware necessarie per mettere in funzione la scheda AriaG25 (meglio sarebbe dire il System-On-Module) progettata e realizzata dall'azienda italiana ACME SYSTEMS (link per visitare la pagina del prodotto). Nota per chi mi segue da tempo: ne avevo già parlato qui.

Prototipo con filature wire-wrap tra i componenti

Partiamo dall'elenco dei componenti necessari, precisando che la gran parte di essi è disponibile sul sito dell'Azienda e che possono essere acquistati agevolmente anche on-line. Solo la board "millefori", gli header ed il filo wire-wrap erano già presenti nel mio laboratorio (occorre procurarli da terze parti).

Componenti richiesti:
  • AriaG25 - SoM ARM926 @ 400MHz con 128 o 256 Mb RAM
  • PS3V3 - Convertitore 3.3V con connettore MiniUSB
  • Alimentatore Wall-Mount 5V con connettore MiniUSB tipo B
  • DPI - Interfaccia MiniUSB-Seriale TTL
  • Cavo USB tipo A - MiniUSB tipo B (Codice Farnell 1702767)
  • Card MicroSD con software precaricato
  • Adattatore card da SD/MMC a MicroSD
  • Connettori USB Host (fino a un massimo di tre)
  • Connettore RJ45 per Ethernet con trasformatori
  • Scheda di prototipazione millefori
  • Header a passo 2.54 mm

Tutte le connessioni sono state effettuate mediante filo wire-wrap 30AWG, avendo cura di effettuare le micro saldature con uno stilo a punta fine, lega saldante lead-free ...e tanta, tanta pazienza ;)

Pinout del modulo AriaG25

Gli schemi per le principali connessioni (Alimentazione, Ethernet, USB, ecc.) sono disponibili sul sito del produttore al seguente link. Per comodità ne riporto una sintesi nelle immagini seguenti:


Alimentazione 5V in 3.3V out

Connessioni SD Card (o adattatore per MicroSD)

Convertitore USB-Seriale TTL

Ethernet eth0

Connettori porte USB

Al termine della fase di fissaggio (con collante acrilico, biadesivo e resina epossidica) e saldatura dei moduli e dei connettori, inserire la card MicroSD (...quella con l'immagine di boot del sistema operativo già configurata e programmata) nell'adattatore e applicare l'alimentazione 5V tramite USB o alimentatore dedicato. Se tutte le connessioni sono state correttamente effettuate il nostro sistema Linux Embedded eseguirà il boot e sarà pronto per il login dopo pochi secondi:

PuTTY è un applicativo per comunicazioni Seriali e IP

Ora è possibile iniziare a sperimentare le proprie applicazioni Linux. Nei prossimi post Vi riporterò le mie esperienze con AriaG25.
Non mi resta che augurarvi buon divertimento e a presto!


sabato 2 marzo 2013

Facciamo il punto

Talvolta, guardando le statistiche messe a disposizione dalla piattaforma Google Blogger, mi capita di osservare come alcuni articoli vengano letti dall'India, dalla Russia, dal Sud e Nord America, e in tutti i paesi dell'Europa. Il blog è in lingua italiana, quindi mi scuso con i lettori stranieri che devono usare Translator (http://translate.google.com/). Sono certo, tuttavia, che alcuni spunti siano fruibili indipendentemente dalla lingua nativa e, in fin dei conti, il codice ANSI C o VHDL, non ha una specifica nazionalità!


Oggi desidero ripercorrere sinteticamente il lavoro svolto fin qui, segnalandovi il contenuto dei progetti fondamentali che sono stati presentati durante questa prima fase (Nota: per ciascun progetto trovate anche un video estratto dal mio canale YouTube http://www.youtube.com/user/liberaelettronica):

* - * - *

1) Microcontrollore Low End





2) Sistema Linux per il controllo dell'Assetto e della Posizione





3) Processore di Immagini con Sensore Video CMOS





4) Esperimenti con database SRTM (Shuttle Radar Topography Mission)




Ripensando a tutto il lavoro svolto, rivivo anche i momenti di entusiasmo e fatica, ma sono contento di esserne l'autore, poiché scrivo sia per sistematizzare le mie ricerche personali, sia per condividere con voi queste esperienze :)
Vi ricordo che i codici sorgenti, gli schemi a blocchi e gli schemi elettrici, sono liberamente disponibili per tutti coloro che vorranno contribuire a migliorare, estendere o produrre, quanto fin qui sviluppato.

A presto, Ciro.



sabato 28 gennaio 2012

YALC - Episode 2

Facciamo ancora un altro piccolo passo in avanti nella realizzazione del nostro Computer Linux  Embedded Open Source - YALC - con la realizzazione dell'interfaccia tra la scheda Portux G20 ed il modulo display intelligente (...nel senso che è dotato di una CPU ARM Cortex-M3 indipendente).


Proveremo una semplice interfaccia bidirezionale basata sui segnali GPIO presenti sul connettore di espansione della scheda Linux.

Dopo aver cablato non più di 6 fili (4 bit DATI + STROBE e ACK) possiamo dare spazio alla nostra creatività grafica :) visualizzando immagini Bitmap o Vettoriali, e disegnando sul display come fosse una piccola lavagna da 3.5 Inch.

Bene, guardiamo insieme il video che ho realizzato per Voi...


Nell'immagine che segue, trovate lo schema dettagliato delle interconnessioni ed il Timing dell'interfaccia TFT-GPIO ...è davvero semplice e potete adattarla a qualsiasi tipo di microcontrollore, anche PIC o Arduino, ma attenzione alla capacità computazionale e alla disponibilità di memoria!

(fare click per ingrandire)

Qui Pianeta Terra, a presto!



mercoledì 11 gennaio 2012

YALC - Episode 1

Parliamo oggi del contenitore meccanico e delle relative lavorazioni, e diamo subito uno sguardo al risultato finale, così come atteso.

(Computer YALC modulare ...non male, vero?)

Nella figura seguente Vi riporto le quote per la lavorazione del pannello frontale. Occorre un minimo di artigianalità per effettuare questa fase ...oppure una macchina a Controllo Numerico!

(fare click per ingrandire)

 Non avete una macchina a Controllo Numerico? Neppure io ...e allora fate così!

(Lavorazione del pannello frontale.
Prima forare lungo il perimetro del cut-out,
poi limare ...vigorosamente!)

Dopo aver montato i componenti che ho descritto qui, il risultato dovrebbe essere il seguente:


Se ci sono problemi, contattatemi nei commenti o su Facebook.

Qui Pianeta Terra, a presto.

lunedì 2 gennaio 2012

Yet Another Linux Computer

Lo chiameremo così: YALC.
Sarà il nostro primo progetto del 2012! YALC è l'acronimo di ...l'Ennesimo Computer Linux, che in inglese suona meglio:

Yet Another Linux Computer

Ho cercato qualche cosa di simile su LinuxDevices (http://www.linuxfordevices.com), ma, sembrerebbe, che un nuovo Computer Multimediale Embedded-Linux modulare, con le caratteristiche che sto per illustrarvi, risulti ancora poco diffuso, se non del tutto assente.

(Single Board Linux Computer - PortuxG20)

Da cosa sarà composto YALC?
Ecco ...prima le immagini, poi le parole...

(Contenitore a norme IEC-297 da 21HP)

(Modulo di Espansione con FPGA)

(Modulo Display 3,5'' TFT con Touch Screen)

(Interfaccia Video Decoder per Telecamera CVBS)

E' bene premettere che sarà un Computer Open Source, quindi tutte le informazioni in mio possesso saranno condivise in rete. Tutto il software sarà accessibile, così come sarà scritta una guida passo-passo per la sua realizzazione fai-da-te (come alcuni stimatissimi lettori del blog hanno chiesto). Sarà un prototipo di preserie, non penso ancora ad una produzione industriale ...ma con qualche Azienda partner, si potrà provare a fornire un Kit completo (esiste qualche Imprenditore tra i lettori o siamo tutti Marziani?). Comunque l'obiettivo e quello di fare in modo che ciascuno possa costruirne una replica ...almeno concettuale.

Iniziamo a vedere la part-list, poi, per l'integrazione dei singoli componenti, realizzarò un "Episodio", cioè un post dedicato, in cui descriverò tutte le fasi realizzative. Farò del mio meglio ...perdonatemi in anticipo qualche inevitabile imprecisione!


Per chi volesse iniziare a prendere confidenza con la scheda PortuxG20 vi riporto i link ai due articoli che ho postato sul blog L'Elettronica Open Source:


Qui Pianeta Tarra, a presto!

mercoledì 31 agosto 2011

Anatomia di un Robot Umanoide

Bentrovati,
oggi vi parlerò del mio umanoide preferito: NAO prodotto dalla Aldebaran Robotics

(Cortesia di AR, click per ingrandire)

Da cosa è costituito un Robot Umanoide? Quali sono i suoi "organi"?

Prima di provare a dare delle risposte, guardiamo insieme questo video che introduce alcune delle caratteristiche di NAO.


Visto? E' un simpatico personaggio, ma è sopratutto un computer embedded basato sul Kernel Linux, un insieme di motori e attuatori (25 gradi di liberà), una rete di sensori e vari dispositivi di input/output.

...e non perdetevi quest'altro video!!!


Vediamo più nel dettaglio i singoli componenti, anche con l'aiuto dei precedenti post ove ho trattato componenti o tecniche similari:

  • Unità di calcolo basata su Linux (qui e qui)
  • Sensore inerziale per il controllo dell'assetto e della posizione (qui)
  • Motori passo-passo per il movimento degli arti, della testa e delle dita (qui)
  • Un generatore di audio e messaggi vocali (qui)
  • Controllore PWM per effetti di luce ...con i LED (qui)
  • Sonar ad ultrasuoni per il riconoscimento di ostacoli
  • Sensori tattili per l'interazione con gli oggetti manipolati
  • Sensori di immagini per il riconoscimento di pattern visuali
  • Microfoni per il riconoscimento di pattern acustici
  • Emettitori e Ricevitori nello spettro infrarosso per il riconoscimento di ostacoli e per la comunicazione
  • Ricetrasmettitore radio per la comunicazione wireless (WiFi)
  • Batteria ricaricabile per un'autonomia di 1,5 ore ...poi deve mangiare!!!

E, poi, tanto ...tantissimo software, poiché ogni piccolo passo, ogni movimento è regolato da appositi algoritmi e tutte le azioni sono assolutamente deterministiche, dalle capacità cognitive ai movimenti di risposta.

Quali applicazioni può avere un robot umanoide?
Beh, qui siamo ancora nel campo della ricerca e della sperimentazione. A differenza di un robot industriale che opera essenzialmente in un ambiente strutturato ed è programmato per eseguire delle operazioni prestabilite (es. movimentazione di parti, saldatura, taglio, verniciatura, ecc.), un Umanoide opera nell'ambiente circostante, adattando il proprio comportamento agli stimoli che riceve dall'ambiente stesso e operando al fine di raggiungere uno scopo. La programmazione di un simile robot richiede nuovi algoritmi (es. reti neurali, algoritmi genetici, ecc.) e tecniche di riconoscimento dell'ambiente (es. riconoscimento acustico, visuale, spaziale) che sono in continua evoluzione nell'ambito dei centri di ricerca sia pubblici e sia privati.

Se vi è venuta voglia di sperimentare i possibili utilizzi di un robot, potete richiedere l'SDK Open-source fornito dalla casa costruttrice di NAO, visitando il sito http://www.aldebaran-robotics.com/.

Qui Pianeta Terra, a presto.

martedì 26 luglio 2011

Computer Linux fai-da-te!

Ciao a Tutti,
ho sempre desiderato costruire un Computer con le mie mani (...un computer fai-da-te o make-it-yourself ...come preferite).
Negli anni '80 sarebbe bastato un microprocessore da 1MHz, pochi Kbyte di memoria e nulla più.



Oggi, un computer embedded (es. uno Smart-Phone) richiede 500-1000 MIPS (Million Instructions Per Second), un display TFT, un File System nello spazio dei Gbyte, un Sistema Operativo, una "porta" USB, ecc.

Linux è il sistema ideale per realizzare il mio/Vostro desiderio!

Guardiamo insieme il video che ho realizzato per Voi, poi vi dirò cosa ho pensato per venire incontro ai desideri dei miei stimatissimi lettori del blog!



Visto? Talvolta, mi sorprendo di me stesso (...non sono mica un Robot!). 

Negli anni '80 Linus Torvalds (vedi qui) non aveva ancora ideato il suo mitico Sistema Operativo ...just an hobby come egli stesso lo definì.

Volete realizzare anche Voi un sistema Linux, totalmente open-source?
Volete utilizzare le indicazioni che troverete su questo blog? Benissimo! Partite da qui.
Volete un kit hardware già pronto all'uso?
Ok, cercherò di produrlo con l'aiuto di qualche azienda. Mi metto subito all'opera!

Qui Pianeta Terra ...dove i desideri si realizzano, a presto.

sabato 16 luglio 2011

Laboratorio: l'evoluzione dei display

Carissimi,
oggi, voglio parlarvi di come le nostre applicazioni elettroniche, pervasive, comunicano con noi umani. Naturalmente stimolano i nostri sensi e, la vista, è uno di quelli maggiormente sviluppati nella nostra specie, evolutasi mediante la raccolta, diurna, delle risorse spontaneamente presenti sul nostro Pianeta.
Pertanto, la rappresentazione a colori delle immagini, rappresenta uno dei nostri metodi, privilegiati, di comunicazione!


Guardiamo insieme il video che ho preparato per Voi e, poi, parleremo dei componenti e delle tecniche hardware/software, per realizzare i nostri "liberi" progetti con i Display TFT.



Ok, avrete apprezzato la qualità delle immagini a colori e, sono sicuro, non vi accontenterete più dei soliti display LED a 7-Segmenti oppure dei Moduli LCD.
Prima di abbandonare definitivamente le tecnologie più mature, è opportuno ricordare che i display a 7-Segmenti hanno il grande vantaggio di essere completamente allo stato solido e di poter operare in un'ampia gamma di temperature (es. -55°C, +125°C) e che i Moduli LCD Transflettivi restano egualmente visibili sia in piena luce solare e sia al buio, grazie alla presenza del circuito di retroilluminazione a LED o fluorescente. Mentre, i Display TFT, devono essere scelti in funzione dell'ambiente nel quale dovranno operare, sia in termini di temperatura e sia di luminosità dell'ambiente circostante.

Vi ricordo che il Display TFT è stato comandato dal nostro sistema tuttofare Linux-ToolBox che ho già descritto qui.

Nella seguente figura vengono riportati i segnali utilizzati per la comunicazione con il modulo Display TFT.


Mentre, nel seguito, potete vedere il diagramma temporale con cui la CPU trasferisce i dati al display.


Qui vi riporto un frammento di codice per leggere il contenuto di un file Bitmap di 320x240 pixel. Cosa sono i pixel? Quarda questo link su Wikipedia!

void read_file(char* name)
{
    int x, y;
    unsigned char color_r, color_g, color_b;
    FILE* fdesc;

    /* show test bitmap */
    fdesc = fopen(name,"r");
    if (fdesc == (void*) -1) {   
        printf("File open error.\n");
        fflush(stdout);
        exit(0);
    }
 
    /* skip header */
    for (x=0; x<54; x++) {
        color_r = fgetc(fdesc);
    }
 
    /* read rgb color from file */
    for (y=0; y<240; y++) {
        for (x=0; x<320; x++) {
          color_b = fgetc(fdesc);
          color_g = fgetc(fdesc);
          color_r = fgetc(fdesc);
          qvga_buffer[x][239-y] = rgb(color_r, color_g, color_b);
        }
    }
 
    fclose(fdesc);
    printf("QVGA buffer write complete.\n");

    return;
}

Qui Pianeta Terra (non vivo mica su Saturno, Mimas o Titano!), a presto.

domenica 22 maggio 2011

C’è un pinguino in laboratorio...

Qualche giorno fa un amico mi ha segnalato questo video: Pinguino in aereo . E’ buffo, ma sai che spavento per il povero animaletto.

Adesso, invece, voglio presentarvi un pinguino dal cuore d’acciaio, anzi di silicio, che vive nel mio laboratorio e che, spero, userete presto anche per i vostri progetti. Eccolo!


E’ la mia Linux-Toolbox, un sistema tuttofare, completamente open-source, con il quale realizzare rapidamente ogni genere di prototipo e sperimentare cose sempre nuove, senza rinunciare alla flessibilità e con una discreta potenza di calcolo della CPU (200 MIPS @ 180 MHz).

Guardiamolo meglio...
In questa foto, potete notare la tastiera 4x4 ed il display TFT da 3,5 pollici.

Qui si vede l’assieme completo.

Gli elementi hardware che compongono la Linux-Toolbox sono i seguenti:
  • Scheda Portux920T, prodotta dalla TaskIt Gmbh, su cui è installato il Kernel Linux 2.6.18 e alcuni applicativi di base.
  • Alimentatore step-down, basato su due regolatori LM2575, per generare le tensioni necessarie (3,3Vdc e 5 Vdc).
  • Display TFT da 65536 colori con Touch-Screen resistivo, che viene venduto come kit di sviluppo per il microcontrollore LM3S1958 (Core ARM Cortex-M3) della Texas Instruments (il kit è RDK-IDM-L35).
Il tutto è assemblato mediante piastre di allumino ed è pensato per rendere le  schede e le interfacce, facilmente accessibili e smontabili.

Cosa c’è nella mia Linux-Toolbox?

Troviamo, oltre al display, alla tastiera e alla CPU, anche n°4 porte seriali (2xRS232 e 2xLVCMOS), una interfaccia Ethernet 10/100 Mb/s, alcune porte di I/O LVCMOS, un local-bus a 8/16 bit direttamente pilotato dalla CPU, 64Mbyte di SDRAM, 1Mbyte di Flash per i dati/programmi dell’utente (una partizione della Flash contenente uboot e l'immagine del kernel), una SDCARD (attualmente monto una 128 Mbyte).

La dotazione software è costituita da una shell BusyBox, accessibile via Telnet oppure localmente, un server Ftp, un web server Http, un editor VI. Tutto il processo di sviluppo software avviene su un PC (con Linux installato ...naturalmente... e può andare benissimo un Netbook con Ubuntu 10), mediante il cross-compilatore arm-linux-3.4.2-gcc.
Io preferisco usare il linguaggio ANSI C, ma la tool-chain sembra abbastanza completa e ci sono esempi nella documentazione anche per Java (...da provare!).

 Configurazione per uso locale

Adesso potete divertirvi a creare applicazioni per Internet (non il solito Hello World), e telecontrollare il vostro tostapane dall’altro capo del pianeta.

Configuarazione Web con indirizzi IP pubblici

Qui Paneta Terra, a presto.