Home Su Francobolli Sport Elettronica Astronomia Il lavoro Gli altri
Links:
Hubble
AstroPicture
Spaceflight
Notizie
Teazzo - iBolli
Forum F&F
[D*] new
| |
|
La mia SMARTHOME |
|
|
Clikkare per ingrandire
Come usare la parallela per un
dialogo tra un PC e HW esterno
|
Il sistema non ha lo scopo di allarme o protezione antifurto; serve
solo per collezionare dati provenienti da varie sorgenti, e reagire
secondo una macchina a stati.
Il sistema è costituito da tre parti principali.
* La prima è un programma in linguaggio macchina per 6502
(per un
vecchio computer Apple ][ ) che effettua una misurazione ciclica dei valori che variano
lentamente, ed un controllo frequente per i segnali che hanno brevi transienti
(es. suona il campanello). Le misurazioni vengono convertite in un sistema di
messaggi a byte che vengono inviate, via interfaccia parallela, ad un PC con
sistema operativo DOS.
* In questo PC gira un programma in C (QuickC2.5)
compilato, e che contiene una grande macchina a stati, che reagisce in vari modi
in funzione dei segnali ricevuti dall'altro computer.
* La terza componente è tutto l'hardware
necessario a condizionare i segnali
|
|
L'interfacciamento tra l'hardware e l'apple2 (nello schema sopra
chiamato Driver I/O) è presentato qui a lato. In sintesi la comunicazione
avviene tramite memory-mapped I/O (tipica del processore 6502) e dove
vengono usate le locazioni da C060 a C07F.
Viene usata una logica di decodifica che usa le linee A0..A3 dell'address
bus, il data bus D0..D7, il segnale /C070 (che indica che è in fase di
accesso la memoria che va da C070 a C07F), il segnale /C060 (analogo), il
segnale R/W dal processore ed il segnale di clock phi0.
Tramite un 74LS138 estraggo i segnali da C060 a C067, mentre tramite un
74LS259 ottengo 8 linee di output dal C07X (X sono 4 bit, dove il MSB deve
essere 0, gli altri tre indicano quale linea deve essere variata, e
R/W indica acceso/spento).
Sono usati anche due riconoscitori DTMF 8870, un ADC a 8 ingressi
multiplexati, e vari integrati di I/O. Si noti che ho dovuto aggiungere
qualche condensatore per eliminare strani spike che creavano problemi.
|
|
Qui ci sono gli schemi dei rilevatori di tre segnali: luce SCALE (220volt), CAMPANELLO
(12 volt), APERTURA PORTONCINO (12volt). Dal progetto originale ho dovuto
variare il valore di qualche componente (dal progetto alla realtà...
cambiano molte cose). |
|
Questo è lo schema della parte che riguarda la commutazione
telefonica, ed il rilevamento dello stato della linea: RING e LINEA
ESTERNA OCCUPATA. Come si vede, i tre telefoni di casa possono essere
collegati, ognuno in modo indipendente, alla linea esterna, a quella
interna, o alla linea di "ring" (che fa squillare il telefono). Qui
invece c'è un circuito che mi ha fatto perdere un bel po' di tempo: l'interfacciamento
audio telefono, che prevede sia l'amplificazione dell'audio in ingresso,
sia l'iniezione di audio in uscita. |
|
Anche questo schema è stato molto sofferto: come misurare la corrente
consumata dalla casa?? Basta misurare la tensione indotta su alcune spire
avvolte su uno dei due fili che portano il 220v alla casa. Ma si parla di
microvolt!! E' stata dura amplificare quel segnale, e non solo rumore... |
|
Questo è l'alimentatore ed è piuttosto semplice. Il secondario del
trasformatore è un 17+17 volt. Si noti come ricavo la tensione di 60volt
con un raddoppiatore (usato per la linea telefonica interna), e come uso
un'impedenza per evitare che il segnale di fonia sulla linea interna venga
annullatto dal condensatore di stabilizzazione. |
|
Il software per l'Apple2 non è tantissimo. Ecco il LISTATO!
Se vi interessa saperne di più contattatemi. Al solito non è il massimo
cercare di capire qualcosa da un listato assembler. Ad ogni modo basti
capire che questo programma è un loop continuo che tiene sotto controllo
vari valori, e comunica tramite un opportuno protocollo le variazioni al
PC tramite la parallela.
Dopo un anno di variazioni, il SW si è stabilizzato, ed ho lavorato poi
solo sul programma in C. |
|
|
|