Apro questo post per proseguire una discussione iniziata in spam bar, in modo che il tutto rimanga un po piu unito e comprensibile per quelli a cui puo interessare.
Come gia avevo postato in spam bar, lo scopo di questo progetto e' quello di poter aggiungere ad un segnale video (in questo caso, proveniente da un ROV), delle scritte che mi rimandino in superfice alcune informazioni, il tutto per un ROV che in origine non aveva questa possibilita' (o meglio, ha solo alcuni dei dati, e la sovrapposizione e' realizzata con un vecchio PIC il cui firmware e' protetto, ed il cui programmatore e' ignoto, e dalla scheda originale non e' possibile aggiungere altro).
La parte hardware e' relativamente semplice ed e' basata sul chip per video overlay MAX7456, pilotato da un 328 (piu o meno, la stessa configurazione usata anche nei vari minimOSD ed ArduCAM del vecchio ardupilot, da cui ho preso l'idea, modificata con l'aggiunta di ingressi extra in modo da sfruttare il piu possibile il 328) ... la sagoma della scheda e' strana perche' realizzata in modo da potersi impilare insieme a tutte le altre del ROV (il contenitore principale dell'elettronica e' un tubo in acciaio inox, in cui le schede sono impilate e fissate con due barre filettate, come nella maggior parte dei ROV commerciali), non so se servira' a qualcuno, comunque in allegato ci sono i files Eagle (se qualcuno ci trova errori, ditemelo per favore) ... appena riesco a finirla, iniziero' a fare alcune prove pratiche, comunque voglio nel frattempo portarmi avanti anche con la parte incasinata (software :P)
Come ultima modifica allo schema, ho portato fuori tutti i pin che sono riuscito a posizionare, in modo da averli a disposizione, quindi al momento la scheda dispone di 5 ingressi digitali e 3 analogici (protetti) liberi, un'ingresso extra per il blanking delle scritte (per attivare o disattivare la sovrapposizione delle scritte tramite un comando dalla superfice), piu un'altro pin insieme ai contatti alimentazione, TX ed RX sul connettore a cui andra' collegata la bussola (che realizzero' in RS485 con MPU6050 e HMC5883L gestiti da un secondo 328, come suggerito da Astro, che di queste cose se ne intende molto piu di me) ... purtroppo, non ci stava proprio la macchinetta per il caffe', mancavano un paio di millimetri
E veniamo alla parte che mi crea davvero una marea di problemi, il software ... in origine volevo sfruttare il software di minimOSD, per semplicita', modificandolo in modo che mi rimandasse sul video i dati che servoono a me, che non provengono da un bus di volo, ma da sensori fisici, come bussola, profondimetro, temperature interna ed esterna, livello di tensione dalla superfice (da un'interfaccia a parte che legge l'alternata di potenza, che puo arrivare anche a 280V circa), piu alcuni allarmi (segnali on/off) ... ma mi sono reso conto del pietoso livello di impreparazione che possiedo, perche' studiando i files del minimOSD, ci ho capito un decimo scarso di come funziona, e pure quel decimo a fatica.
Il software originale del minimOSD sembra diviso in diversi moduli, richiamati da un main, probabilmente per comodita' di modifica ... mi e' stato suggerito, molto ottimisticamente (Astro, grazie, ma mi sopravvaluti in fatto di programmazione ;)), di riscriverlo da zero ... In effetti, il minimOSD originale e' piuttosto ben fatto, ma estremamente specifico per il volo, mentre per la mia applicazione, i dati di volo non c'entrano nulla, ed anche il posizionamento delle scritte e della bussola dovrebbe essere totalmente diverso ... inoltre essendo per applicazione subacquea, la velocita' che di solito e' necessaria per i modelli volanti (per evitare che si schiantino :P) a me non serve (considerate che in media i ROV, anche i piu professionali e costosi, aggiornano i dati inviati alla superfice al massimo 4 o 5 volte al secondo, e gia questa e' un'ottima velocita', per un'oggetto che se ne sta a fluttuare sott'acqua in assetto neutro :D) ... quindi non so, magari rifare tutto da zero alla fine sarebbe piu semplice ... intanto la libreria per il MAX l'ho scaricata e sto cercando di studiarmela, insieme al datasheet, poi appena smette di uscirmi fumo dalle orecchie, vedremo ...
Un'altra cosa, che probabilmente semplificherebbe ulteriormente il lavoro ... a me tutti i 256 caratteri della tabella interna del MAX7456 non servono a nulla, mi servono solo lettere, numeri, e qualche simbolo, e studiando il datasheet ho visto che gia quelli che ci sono di default nel MAX potrebbero essere utilizzati (in pratica, l'unica componente "grafica" sarebbe il cursore della bussola, non indispensabile dato che i gradi li stamperei anche in formato numerico, ma sempre utile per vedere al volo dove e' diretta ... tutto il resto sono valori numerici e/o scritte) ... quindi, se e' possibile modificare solo alcuni dei caratteri della tabella interna, potrei ridisegnare qualche simbolo, altrimenti sfrutto quello che c'e' gia di fabbrica e amen, che vanno bene pure quelli ... poi verra' la parte "divertente" cioe' impazzire per scrivere il firmware
... In ogni caso, come informazione preliminare, cosa sarebbe piu funzionale, scrivere un singolo firmware che contiene tutto, o suddividere il tutto in diversi moduli come avevano fatto in origine gli ideatori dell'originale minimOSD ?
Astro: con la realizzazione pratica del tuo modulo bussola, hai dovuto per forza mettere gli stampati affiancati come nelle foto di quel post, oppure funzionerebbero lo stesso se fossero sovrapposti ? ... perche' se metterli sovrapposti non crea problemi, faccio uno stampatino per un 328 standalone in TQFP, cosi poi riesco ad inserirli in un contenitore stagno cilindrico piu stretto (data la pressione che dovra' sopportare, piu e' ridotta la superfice, meglio e' ) ... Inoltre, il tuo firmware richiede connessioni a pin particolari ? ... se si, quali ?
test-overlay.zip (234 KB)