lunedì 20 giugno 2016

Symbol SE-1200-I000A Barcode Scan engine con Arduino

Ed ecco che stavolta tocca a lui, un modulo di lettura disassemblato da un terminale di rilevamento codici a barre, del quale mi resta solo questo pezzo, il resto è andato nel corso dei periodici riordini del laboratorio per fare spazio a nuovo hardware da studiare e riutilizzare. 
Il modulo di lettura laser è un "cubetto" compatto dal quale esce una piattina flessibile a 8 fili, prodotto dalla Motorola per Symbol, modello della serie SE1200. Mi sono messo in testa di accenderlo e vedere il laser tracciare una riga. L'idea originaria era quella di costruirmi una livella laser ma dopo alcuni esperimenti, trovo didatticamente più interessante giocarci un pò e magari documentare come implementare il modulo con una basetta a microprocessore (tipo Arduino o Raspberry per capirci... che le devo ancora comprare ma prima o poi...). 
Inizialmente pensavo di ricavare e decodificare i segnali seguendo le piste, giusto per capire come alimentarlo ma le difficoltà si sono manifestate sin da subito. Fortuna vuole che in rete c'è un documento del produttore, che spiega in modo molto dettagliato come utilizzarlo. 
Al momento mi manca solo un idea di come implementare il software che decodifica i codici che escono dal modulo sotto forma di barra/spazio, ma... andiamo con ordine, per documentazione, visto che in futuro proverò a fare lo stesso con un modulo simile ma ad alta visibilità (SE1200HV-I000A).
La piattina flessibile è connessa al suo connettore e per estrarla occorre delicatamente far scorrere di poco verso l'esterno la parte in marron scuro che fissa stabilmente i contatti. Il pin numero 1, guardando il modulo con il circuito stampato verso l'alto (girato come in foto), è il primo a sinistra. Nel dubbio, si usa un tester  in modalità prova diodi, collegando il puntale nero sul corpo metallico e con l'altro cercare il pin 1. Nel maneggiare il cubetto occorre sempre fare attenzione in quanto, contrariamente a quello che si potrebbe pensare, il corpo metallico usato come supporto e dissipatore di calore in realtà è connesso ai +5Volts. Per la piedinatira del flat all'altra estremità, occorre fare attenzione perchè un contatto è sdoppiato ed un altro non collegato. 
I segnali del connettore sono così classificati:
  • pin 1 Alimentazione + 5 Volts
  • pin 2 Range limiter. Se posto a massa il range dello scanner è ridotto, mentre se è a +5V o non collegato, funziona alla massima prestazione possibile. Per alcuni modelli questo segnale è trattato leggermente diversamente (ad esempio per tracciare un puntino per individuare l'area che si sta puntando)
  • pin 3 Abilitazione laser. Serve ad accendere il laser quando messo a massa
  • pin 4 Abilitazione scan. Si usa per abilitare la lettura (alimenta i circuiti interni) quando posto a massa.
  • pin 5 Uscita lettura. Tramite una resistenza di pull-up da 10k ohm quando è "alto" (+5Volts) significa che ha letto una barra mentre se "basso" (GND) uno spazio. Per leggere occorre temporizzare per 55 millisecondi dopo l'abilitazione del laser e dello scan.
  • pin 6 Start of scan. Questo non l'ho ancora compreso bene... devo approfondire... meglio riportare la frase originale e sperare che qualcuno nei commenti spieghi cos'è "Provides the start of scan signal to the decoding system. This signal toggles each scan line and is a square wave with a frequency of about 18 Hz."
  • pin 7 ed 8 - Massa


Per accendere il modulo e vedere la linea rossa è sufficiente collegare + 5 volt al pin 1 e mettere a massa i pin 7,8,3 e 4. Funziona!... massacrando la piattina. Io, in mancanza del connettore adeguato all'altro capo, ho massacrato la piattina flessibile ed ho dovuto grattarla con una lametta dopo che i contatti si sono staccati, per effetto del calore, dal kapton. 
Ora la parte più interessante è quella di creare un software (ad esempio per Arduino o Raspberry o qualsiasi altra scheda a microprocessore) che alla pressione di un tasto fa partire il laser abilitando le lettura e poi visualizze da qualche parte il risultato della scansione, una figata. 
A fantasticare, vista la relativa semplicità del modulo, lo si potrebbe usare in catena di montaggio tra la produzione reparto prodotti finiti ed il magazzino o tra magazzino e zona di carico, per leggere i codici e memorizzarli nel database. Oppure inserirlo in qualche piccolo negozio per creare un piano lettura simile a quello che si vede nei supermercati, una figata. Di applicazioni ce ne potrebbero essere altre ed il limite è solo la fantasia. Ma per la livella laser?? Si può fare ma occorre trovare un sistema che tenga in bolla tutto il modulo... un pò complicato, fattibile ma laborioso. Magari lo installo sul trapano a colonna assieme all'altro per tracciare il punto di foratura.  Alla prossima.

P.S. Luca e Piero sono al bar. Ripeto: Luca e Piero sono al bar.

sabato 18 giugno 2016

Q1617-60001 HP scanner motor assembly

Autopsia di un unità motore di uno scanner, disassemblato da una stampante HP PSC1315 All-In-One. Si tratta del motore facente parte dell'unità di trascinamento del sensore CIS di uno scanner passato a miglior vita. La curiosità e l'idea di riutilizzarlo per qualche applicazione robotica, mi hanno spinto a riportarlo in vita, più che altro a scopo "didattico" e per impratichirmi con la realizzazione di esperimenti nell'ottica "impara l'arte e metti da parte". L'unica foto "dettagliata" dell'unità, in rete, sembra essere disponibile a questo indirizzo.
Intanto partiamo da alcune sigle. L'unità motore ha il part code HP Q1617-60001 (fa parte dell'asssembly  Q1647-60256) ed è compatibile con molte stampanti simili a quella da cui proviene. Per una lista completa dei modelli compatibili, basta visitare partsurfer.hp.com, per accorgersi che il pezzo non è venduto al pubblico come parte di ricambio (forse ai centri autorizzati).
Codice motore: FC130SA - BD063Z08, alimentato a 5 volts, desunti da prove sperimentali. Si parte dalla tensione più bassa e la si aumenta sino a valori "umani", lontani dalla soglia di distruzione. Alcuni motorini a 5 volts non si avviano nemmeno. Questo invece a 5 volts gira ad una velocità che a orecchio è compatibile con quella a cui viaggiava lo scanner, per cui... 5 volts come valore standard e non facciamoci venire altri dubbi.
Lo schema è facilmente ricostruibile seguendo le piste del PCB che ospita il motore. Il segnale che avvisa il processore che l'unità scanner è in movimento (ed in quale direzione) si basa su un doppio sensore a fototransistor e led ad infrarossi. Una rotellina forata, solidale all'asse del motore, interrompe il fascio di luce e alternativamente manda in conduzione/interdizione i fototransistors per produrre in uscita un segnale analogico che viene successivamente campionato e trattato dal microprocessore. Le resistenze inserite nel circuito ci facilitano l'esercizio di calcolo delle correnti e dei valori. La corrente del led ad infrarosso è di 50mA (compatibile con i valori di massima applicabili a questa tipologia di sensore). La corrente di collettore calcolata grossolanamente con la resistenza di emettitore da 1kohm, dovrebbe essere di 10 mA, anche questa compatibile con la stragrande maggioranza degli opto-interruttori a forcella (max value 30/40mA). Per cui....5 volts è l'alimentazione corretta. 
Per visualizzare il segnale in uscita, prelevato dall'emettitore dei fototransistor, se non si dispone di un oscilloscopio, è sufficiente collegare un led rosso con una resistenza in serie da 220ohm (5% 1/4Watt, chi non ce l'ha nel cassetto?), in grado di limitare la corrente a circa 15mA e non rischiare di bruciare i fototransistor. Il segnale prelevato all'emettitore del fototransistor dovrebbe attestarsi sui 3,16 volts, compatibili per la maggior parte dei processori attualmente in uso (Arduino, Raspberry, ecc...). Ok, quasi ci siamo. La tabella del segnale in uscita, prelevato dai due collettori, per una rotazione in senso orario è la seguente:
00
10
11
01
mentre nel senso contrario 
00
01
11
10
Con una semplice routine software (esercizio e compitino da fare a casa) non è difficilissimo interpretare il senso di rotazione del'asse del motorino ed agire di conseguenza. 
Bene, manca la piedinatura del connettore che può essere rimosso o lasciato al suo posto se si è conservato il cavo flessibile piatto. Se si guarda il PCB lato saldature tenendo a destra il connettore, numerando dall'alto verso il basso i punti di saldatura avremo la seguente disposizione:
1 Motore
2 Motore
3 Massa
4 Alimentazione +5 volts (anodo e collettore comune)
5 segnale 1
6 segnale 2
Seguendo le piste è possibile ricavare la piedinatura del sensore a forcella entro cui gira l'interruttore ottico del fascio di luce infrarossa.
Ok, ci siamo. Abbiamo tutti gli elementi per riutilizzare l'oggetto o per modificarlo a piacere. Come? Un idea strampalata può essere quella di un retrofit della stampante, sostituendo la mother board con processore, interfaccia e firmware proprietario e realizzare una stampante open source. Magari, finalmente, potrebbe essere possibile stampare anche con un colore assente senza dover sostituire tutta la cartuccia. O divertirsi a scannerizzare solo con la luce blu o verde (utile per scovare o evidenziare particolari colori, tipo i ghost dot che marchiano le nostre stampe a nostra insaputa) o magari inserendo dei led UV in aggiunta o in sostituzione ai tre già presenti nel CIS (già analizzato nei post precedenti). Esperimenti in corso, ci sarà da divertirsi. Alla prossima.

P.S. Piove governo ladro. Ripeto: Piove governo ladro.


martedì 14 giugno 2016

Sharp Z-20 (Mission impossible))

Mi ero quasi dimenticato di averla conservata. Una fotocopiatrice a piano mobile con inserimento manuale dei fogli, apparentemente funzionante ma senza toner. Inizialmente prevista per recupero dei pezzi all'interno (lenti, specchi, cuscinetti, microswitch, lampade, fusore, calamite cilindriche...) mi piacerebbe rimetterla in funzione. Un fotocopiatore, in generale, è ormai obsoleto, stante la facilità di reperire PC + scanner + stampante magari a colori. La soluzione con il PC però è leggermente complicata, occorre accendere tutto, aspettare che si avvii, avviare il software ecc.ecc... per una semplicissima copia... In aiuto può venire una multifunzione (meglio se laser, che le cartucce inkjet si seccano con una rapidità impressionante, specie quando l'uso è saltuario). Il problema è sempre il costo dell'unità. Se poi il fotocopiatore è recuperato agratis, un tentativo di rimetterlo in funzione è forte. Poche copie all'anno, al volo... si dai, è comodo, ci può stare. Il problema è la "vetustità" dell'apparecchio. Troppo datato, sembra, per suscitare l'appetito avido dei centri di assistenza. Alcuni non rispondono nemmeno, altri ti dicono chiaro e tondo che "non ne vale la pena" (la pena di chi?), altri che "non conviene" (a chi?), altri ci provano col deterrente del costo (60 euro solo per vederlo e la risposta è chiaramente no, alla fine, che tanto non lo guardano nemmeno per guadagnare di più...ladri disonesti).
Un giro in rete per verificare il costo della cartuccia... dai 30 ai 185 euro, da non credere, troppo... le parti di ricambio consumabili non si deprezzano col tempo al pari dell'hardware che li ospita. In fin dei conti è polvere sottile di plastica, che sarà mai? Viene da cercare il kit di ricarica... sempre trenta euri per una bottiglietta. Il prezzo minimo per una cartuccia che ho trovato è 18 euro free shipping (ultimi pezzi) ma solo per gli USA, a noi europei non la vogliono vendere. 
E così ci si ritrova per le mani un rifiuto tossico, colpevole di funzionare ma mancano i pezzi di ricambio o la manodopera specializzata per una manutenzione generale o i consumabili, una follia. 
Quindi? che fare? buttare? NO. Le difficoltà mi stimolano non poco e complice la testardaggine cerco di arrangiarmi. Alla prima cartuccia che trovo (magari la rubo in discarica) recupero il toner e provo a mettercelo, consapevole che i toner non sono tutti uguali ma chissenefrega delle raccomandazioni del solito ingegnere terrorista complice del venditore ladro e disonesto? Stavolta punto alla rigenerazione a costo ZERO. Alla prossima

P.S. Il toner è nero. Ripeto: Il toner è nero.