Orologio digitale in rete
Storia del progetto
Ho iniziato ad interessarmi all'elettronica nel lontano 1975 e più o meno in quel periodo sono apparsi sulle riviste che leggevo i primi orologi digitali, spesso da autocostruire.
Anch'io sono stato contagiato dalla cosa e ho iniziato a riempire la casa di vari orologi, fra cui quello col modulo della National MA1002 (verificare e scansionare datasheet) cui ho ovviamente fatto numerose modifiche e aggiunte.
Mi ha sempre frustrato però il fatto che a causa della poco precisione del clock ci fosse spesso una differenza di orario fra le varie stanze della casa, tanto che per scherzo dicevamo di aver sostituito le normali porte con delle porte spazio temporali, inoltre in occasione del passaggio dall'ora legale a quella solare (e viceversa) era necessaria una noiosa procedura di reimpostazione dell'orario di tutti gli orologi.
La prima soluzione a cui ho pensato, a quel tempo l'unica che fosse facilmente percorribile, è stato un sistema per azzerare tutti gli orologi a mezzanotte. Risolveva il problema del disallineamento e con qualche sacrificio anche quello dell'ora legale (facendolo in anticipo), potenzialmente poteva anche risolvere o attenuare il problema dell'errore a patto di trovare una fonte di orario campione facilmente integrabile. Di qui vari studi con segnale orario RAI (vi ricordate il trillo prima dell'ora esatta), poi con DCF77, il sistema tedesco di diffusione dell'ora esatta via radio, il cui segnale purtroppo arrivava da noi molto debole e, con la diffusione dei personal computer, della sincronizzazione dell'ora via modem.
Attorno al 2000 con un amico abbiamo iniziato lo sviluppo di una nuova generazione di orologi sincronizzati. Il progetto prevedeva l'uso di un microcontrollore (modello) con l'aggiunta di un RTC e di un interfaccia seriale RS232 o RS485. Utilizzava display da 2,30" facili da leggere anche senza occhiali da parte di noi miopi. Aveva inoltre una serie di gadget fra cui lettura della luminosità ambiente, ricevitore IR per telecomandi, buzzer, uscita a relè. Il processore poteva essere programmato on board. Sullo stampato era inoltre prevista una zona millefori per ulteriori personalizzazioni. Lo stampato prevedeva l'uso di 4 o 6 display per funzionare come orologio, ma poteva accoglierne fino a 8 per altri utilizzi.
Purtroppo lo sviluppo del software in assembler, che doveva essere a carico di questo mio amico, non andò mai in porto e i prototipi che avevo realizzato hanno funzionato per vent'anni come semplici orologi (sincronizzati) con le routine che avevo sviluppato per provare l'hardware.
Nel frattempo si rendevano disponibili moduli sempre più potenti e dopo un tentativo abortito di realizzare una versione basata sul Tibbo EM1000 [1] mi sono orientato verso l'utilizzo di un modulo analogo al Raspberry PI ovvero all'Orange PI Zero[2].
Si tratta a tutti gli effetti di un computer basato sul SoC H2 prodotto da AllWinner Technology [3]. Vista la mia passione per il software libero ci faccio girare ovviamente Linux, al momento per motivi di pigrizia uso un mix fra le distribuzioni Armbian e Devuan per avere i moduli già configurati per le varie interfacce e per utilizzare init al posto di systemd che non mi sta molto simpatico.
Anche di questo progetto, nato nel 2018, ci sono state varie versioni, ed oggi sono arrivato a qualcosa di sufficientemente stabile.
Descrizione
L'attuale progetto prevede la sincronizzazione dell'orario con i server NTP presenti su internet, il software è scritto in Python. Lo stampato, come nei precedenti progetti, prevede varie opzioni che possono essere utilizzate a seconda dell'utilizzo che si prevede di farne.
I display da me utilizzati sono i BS-CD14RD di LedBright, ma possono essere ovviamente utilizzati tutti i modelli che presentano una piedinatura compatibile. È possibile montarne 4 (tagliando la parte di stampato eccedente) oppure 6 se si desidera avere anche l'indicazione dei secondi, è inoltre possibile montare fino a 8 display, in questo caso adiacenti fra loro, per altri utilizzi come ad esempio come contatore o contapunti.
Il pilotaggio dei display è a carico di un MAX7219 collegato via SPI al processore, altri integrati sono utilizzati per adattare il livello delle tensioni sul bus SPI e per interfacciarsi ai display che, viste le dimensioni, devono essere alimentati a 12V cosa non prevista dal MAX 7219.
Lo stampato prevede il collegamento dell'Orange PI Zero direttamente come Hat, sono comunque presenti dei connettori per permettere l'utilizzo anche con altri sistemi che possiedano un bus SPI sia a 5 che a 3, 3 volt come ad esempio i vari Arduino.
Sullo stampato sono previsti la possibilità di varie sezioni opzionali:
- un RTC DS3231 sia montato direttamente sullo stampato, sia utilizzando i moduli premontati reperibili in internet.
- un amplificatore BF monofonico LM386 collegato ad un canale dell'uscita audio del''Orange PI Zero per segnali orario e altri effetti sonori.
- un ingresso per collegare uno o più sensori di temperatura DS18B20.
- un buzzer a 3,3 volt.
- fino a tre optoisolatori per un ingresso e due uscite di segnali digitali (sezione non collaudata).
- connettore per il collegamento di un modulo sensore di luminosità basato sull'integrato MAX44009.
- connettori per il collegamento di moduli con interfaccia I2C come ad esempio quelli basati sull'SHT21 per rilevare con precisione temperatura e umidità.
- connettore per il collegamento di ulteriori moduli SPI (sulla seconda interfaccia di cui è dotato il modulo Orange PI Zero) fra cui un display a matrice 8 x 96 su cui far visualizzare altre informazioni come data, temperatura etc.
- pilotaggio di un LED IR per simulare comandi dati da telecomandi a infrarossi (sezione non collaudata).
- come sempre un ampia zona millefori per ulteriori espansioni
Il tutto viene alimentato a 12V, volendo tramite un adattatore PoE. Un modulo dc/dc installato sulla scheda riduce tale tensione a 5 volt per l'Orange PI Zero e gli altri integrati.