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.

2 commenti:

Stefano Bettega ha detto...

Secondo me funziona così (spero tenga la formattazione)

_ _ _ _ _
pin5 _| |_____| |_| |_| |_____________| |_....

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pin6 _| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_

code B S B B B S S S B

Quindi il pin6 ti dà il clock e sul fronte di salita (o discesa) del clock (bisogna leggere il datasheet, magari ci sono i diagrammi temporali meglio del mio), si legge lo stato del pin5 per capire cosa si sta leggendo; una sorta di interfaccia SPI.

unamico ha detto...

Grazie, credo sia corretto. In mancanza di oscilloscopio dovrò, appena troverò il tempo, approfondire meglio (sto approntando un foxboard allo scopo). Il "datasheet" (integration guide) in realtà non fa molta chiarezza e non riporta i diagrammi temporali (https://www.quad.de/WebRoot/quad/Shops/qios/MediaGallery/Dokumentation_OEM/SE-1200_Series.pdf).