DT-4000ZC logger per Android

Aggiornato: 10 Lug 2016
Ho realizzato, qualche tempo fa, un programma in ambiente Windows per collegare al PC un multimetro digitale di tipo DT-4000ZC. Questo multimetro (economico) ha una uscita seriale, ma non invia -come si potrebbe pensare- una serie di caratteri alfanumerici che contengono le informazioni sulla misura in atto, bensì una specie di “bitmap” di tutti i segmenti del display. Quindi, il programma deve “ricostruire” il dato misurato partendo da questi elementi.

Ulteriori spiegazioni si possono trovare nei miei precedenti articoli a questi links:
http://ficara.altervista.org/?p=1581
http://ficara.altervista.org/?p=1602
Il secondo link è stato citato anche dal sito Hack-a-Day:
http://hackaday.com/2013/08/26/logging-two-multimeters-at-nearly-the-same-time/

Ora mi trovo a dover effettuare una registrazione dell’andamento della tensione su una linea di un impianto di allarme e non voglio lasciare il mio notebook utilizzato come logger nel sito dove si trova l’allarme. Ho pensato quindi di riscrivere l’applicazione per Android e farla girare su un vecchio (economicissimo) tablet Android “Made in China” che possiedo.

L’applicazione è estremamente semplice :

La scermata principale

La schermata principale

Abbiamo un riquadro dove compare il contenuto del display LCD e due pulsanti che provocano l’avvio e l’arresto della registrazione. I dati vengono trasmessi dal multimetro secondo un proprio timing, di circa 2 invii al secondo. Se la registrazione è attiva (se il “led” rosso è acceso) ogni dato arrivato viene salvato in un file di log, altrimenti viene solo mostrato sul display. (9 Lug 2016) Ho aggiunto un box per impostare il numero di letture da ignorare, per ridurre le dimensioni del file di log in caso di misure che variano con molta lentezza nel tempo. Facciamo un esempio : quando si avvia la registrazione (log) vengono salvate 3 letture e quindi il programma controlla se l’utente ha settato un numero di campioni da saltare. Diciamo di aver deciso di saltare 27 letture ; il programma NON salverà su disco le successive 27 letture. Finite le letture da saltare, lo strumento registrerà di nuovo tre campioni e quindi il processo ricomincerà. Dato che ci sono approssimativamente 2 letture al secondo, scegliendo un numero di letture da saltare pari a 117, avremo un log di 3 letture ogni 60 secondi.

Ho inoltre fissato anche un limite alla lunghezza del file di log. Quando il contatore delle letture salvate raggiunge 86400, la registrazione si interrompe automaticamente.

Possiamo distinguere la fase di esclusione delle letture dal colore del box che contiene il numero di letture salvate ; se è grigio, ciò che arriva dal multimetro non viene salvato sul log, se invece è verde, la lettura viene salvata e il numero si incrementa.

Ho scelto di salvare tre letture per volta perché il protocollo dei dati inviati dal multimetro non prevede un checksum, quindi se ci fosse un errore nel trasferimento, con tre letture è possibile scartare l’errore facendo la scelta delle “due su tre” buone. Poi, se sono sbagliate più letture consecutive, allora è richiesto l’intervento del vostro Santo Protettore. Comunque, facendo un cavetto dati piuttosto corto (entro un metro), è difficile che ci siano errori…

Registrazione - la casella con il num. di campioni è grigia perché si stanno saltando delle letture

Registrazione – la casella con il numero di campioni salvati è grigia perché si stanno saltando delle letture

Registrazione - la casella con il num. di campioni è verde perché si letture vengono salvate sul log

Registrazione – la casella con il numero di campioni è verde perché le letture vengono salvate sul log

Il file di log viene inizializzato al momento in cui premiamo il pulsante start (quello col cerchio rosso) e gli viene dato il nome log_data_ora.txt (es: log_160706_101820.txt per un log avviato il 6 Luglio 2016 alle ore 10:18:20). Il file viene salvato sulla directory propria del programma, quindi, in questo caso, lo troveremo in Android/data/robotop.DT4Klogger/files/.

Ogni “linea” del file di log contiene l’ora e le informazioni lette dal multimetro. Per esempio:

17:35:44 DC Auto [2.200] V
17:35:44 DC Auto [2.201] V
17:35:45 DC Auto [2.201] V
17:35:56 DC Auto [2.206] V
17:35:57 DC Auto [2.206] V
17:35:57 DC Auto [2.207] V

Per aprire un file di log copiato dal tablet su un PC Windows, usate un text-editor tipo Genie o altri compatibili con la modalità Android (Linux) di terminare le linee di testo con il solo carattere LF (Line Feed, 0x0A), anziché CRLF (Carriage Return & Line Feed – 0x0D 0x0A) come usa Windows.

Quando l’applicazione viene avviata la prima volta, compare una richiesta di autorizzazione all’uso dell’interfaccia USB :

Richiesta di autorizzazione ad usare l'interfaccia USB

Richiesta di autorizzazione ad usare l’interfaccia USB

Diamo quindi l’autorizzazione per proseguire (si dovrà nuovamente toccare l’icona del programma per effettuare l’avvio). Se ci sono problemi con la seriale USB, si riceverà un messaggio di errore :

Oops ! Errore sulla seriale USB

Oops ! Errore sulla seriale USB

Come interfaccia USB ho utilizzato una di quelle schedine USB-TTL che sono comunissime nei negozi on-line e che costano un paio di Euro dai venditori cinesi. La mia utilizza il chip Prolific PL2303 ed è riconosciuta tranquillamente da Android.

Nota: alcuni tablet non riconoscono l’interfaccia USB-TTL se questa è collegata “a caldo”, cioè col tablet già acceso. Se si riceve l’errore “Impossibile usare porta COM”, provare a spegnere completamente il tablet e quindi riaccenderlo con l’interfaccia già collegata.

L’interfaccia USB, però, non basta per collegarsi al multimetro, che ha una presa Jack stereo come connettore d’uscita. Bisogna costruire un minuscolo adattatore. Questo è lo schema :

Lo schemino dell'adattatore

Lo schemino dell’adattatore

Io l’ho costruito direttamente su una striscetta di contatti con 3 pin, senza usare un CS. Ho poi collegato i tre pin all’interfaccia USB con i soliti cavetti Dupont. Il risultato è questo :

Scheda USB-TTL e circuitino adattatore per multimetro

Scheda USB-TTL e circuitino adattatore per multimetro

Aggiornamento 19 Nov 2016:

Ho comprato di recente su un “noto negozio on-line” una interfaccia USB-RS485 e così ho notato che potevo creare una interfaccia più semplice della precedente per collegare il multimetro al computer. L’interfaccia che vedete nella foto sottostante è basata su un chip FTDI e quindi dovrebbe essere “vista” tranquillamente dal dispositivo Android. La mia prova l’ho fatta su un PC con Windows e su un tablet Android ed ha funzionato in entrambi i casi.

L'interfaccia USB-RS485 con le connessioni effettuate senza saldatore.

L’interfaccia USB-RS485 con le connessioni effettuate senza saldatore. I fili neri sono quelli del connettore Jack che va sul multimetro.

Lo schema elettrico corrispondente è questo:

Lo schema elettrico

Lo schema elettrico

Il bello di questa interfaccia è che può essere realizzata senza saldatore, basta un giravite e un po’ di pazienza per intrecciare i fili di rame. Notate che il +5V è stato preso da un “jumper” inserito sul circuito, intrecciando sul ponticello un filo di rame isolato, come si vede in figura. Tempo di assembleaggio: meno di un minuto, se avete un cavetto con il connettore jack già pronto. Nella foto sotto, potete vedere il dispositivo in funzione.

Il multimetro collegato al tablet con l'interfaccia descritta.

Il multimetro collegato al tablet con l’interfaccia descritta.

L’applicazione DT4Klogger.apk può essere scaricata gratuitamente dalla mia pagina Google Play a questo link :
https://play.google.com/store/apps/developer?id=Emilio+P.G.+Ficara

L'icona dell'App

L’icona dell’App

(10 Lug 2016) Note per la versione corrente dell’App gratuita :
1) l’App può essere usata solo su dispositivi che siano in grado di supportare USB OTG e di rilevare correttamente l’interfaccia USB-TTL collegata.
2) l’App attualmente supporta solo l’orientamento verticale. Se si ruota il tablet (o smartphone) l’applicazione viene chiusa.
3) l’App si chiude quando viene mandata in sospensione tramite il pulsante home o se si riceve una chiamata o un avviso.
4) l’App mantiene il dispositivo acceso, quindi il consumo della batteria può essere consistente.