Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TiGiDino, il Factotum
Programma per il Telecontrollo GSM multifunzione TiGiDino
di Ettore Massimo Albani
Premessa
stato bello e stimolante per me partecipare al contest: una vera e propria fontana della giovinezza. La sfida era quella, allet di ! anni, di imparare un nuovo linguaggio e di farlo con un progetto ben preciso in mente: un inseguitore solare ed un sistema di gestione dellenergia. "er il mio compleanno a met di #gosto mi sono fatto il regalo dell#rduino $ega % &' ed (o iniziato a studiare, facendo i primi sketch. # causa delle ferie (o letto del contest in ritardo, tuttavia (o c(iesto al Direttore di Elettronica In di partecipare ugualmente e verso la fine di )ettembre (o ricevuto il mio esemplare del TiDiGino: un pubblico ringraziamento al Dr. #rsenio )padoni * dobbligo per me. #ccantonato il mio progetto originale, (o preso in mano il TiDiGino e l(o studiato comparandolo con l#rduino $+G# % &' oltre al resto del materiale messo a disposizione. Le difficolt c(e (o incontrate sono state molte, non ultima il fatto c(e lesemplare ricevuto era difettoso e si * guastato dopo un paio di settimane, ma grazie alla pronta assistenza di Futura Elettronica ,un grazie anc(e a loro-. dopo alcuni giorni (o ricevuto un secondo esemplare. /ortunatamente, il contest nel frattempo era stato procrastinato, dandomi modo di terminare il mio lavoro ,anc(e se un soft0are non pu1 mai essere considerato finito, essendo tante le migliorie c(e si possono apportare.. 2omunque (o portato a termine una versione stabile del programma ed anc(e se non sar1 il vincitore, sono fiero del mio lavoro. )pero c(e scuserete eventuali ingenuit nella programmazione: prima di dire di conoscere un linguaggio, occorre molto pi3 tempo dei poc(i mesi c(e (o avuto a disposizione. Grazie per la pazienza.
4 di 5!
TiGiDino, il Factotum
La scheda
6l TiGiDino * il nuovo nato della serie di telecontrolli dotati di modulo G)$ )6$7''. Diversamente dai suoi predecessori, il TiGiDino si basa sul processore #Tmega% &', lo stesso adottato dall#rduino $+G# % &' e da questi deriva la sua struttura. 8ediamo in dettaglio le sue caratteristic(e, confrontandole con quelle dell#rduino $+G# % &' , edi allegato ! e ".. )i osserva c(e rispetto al modello normale ci sono in pi3: modulo G)$9 DT$/9 pulsante utente9 ponticello removibile per auto reset9 % ingressi optoisolati9 % uscite a rel*9 sensore di temperatura seriale con protocollo #ne $ire9 memoria ++":;$ seriale da 5% <= L+D: % rossi per le uscite rel*, 4 verde per lattivit del modulo G)$ e % disponibili per il programma.
"urtroppo, per limitare le dimensioni della sc(eda e limitare i costi, abbiamo dovuto rinunciare ad alcune cose: #limentazione solo esterna ,4%8, 4#. 6>; digitali o uscite "?$ limitati a 4' ,@% se non si adoperano gli interrupt esterni.9 ingressi analogici limitati a &9 interrupt esterni limitati a %9 porte seriali limitate ad 4 ,@4 utilizzata dal modulo G)$.9 connettore T?6 ,T%in $ire Interface. assente ,utilizzato dalla memoria ++":;$ seriale.9
Tuttavia, pur con queste limitazioni, TiGiDino rappresenta un potente sistema di telecontrollo programmabile grazie alla interfaccia 6D+ di #rduino. Auello c(e avrei desiderato in pi3 sulla sc(eda: un paio di L+D per monitorare gli ingressi9 un L+D collegato al pin 45 delle linee di 6>; digitale per uguagliare quello presente su #rduino $+G# % &' un cicalino piezoelettrico9 un microfono preamplificato ed un altoparlante per c(iamate vocali9 sensore temperatura esterno , edi Emulazione Temperatura..
Bo avuto modo di provare due esemplari di TiDiGino: il primo dopo qualc(e giorno (a presentato un problema (ard0are ,la linea :eset del micro non funzionava pi3. e (o dovuto aspettare un secondo esemplare per continuare le prove. 6l secondo esemplare aveva ancora il resistore :%' saldato sul "2=, mentre avrebbe dovuto essere eliminato per non causare problemi quando la porta C)= non * connessa.
% di 5!
TiGiDino, il Factotum 6nfatti, lalimentazione del micro di interfaccia C)= /T%5%:L * fornita direttamente dalla linea a 8 proveniente dal "2: senza lalimentazione la porta :T) , &e'uest To Send. attraverso il resistore :%' porta a massa la corrispondente porta :)T ,&eset. del #Tmega% &' c(e quindi rimane bloccato. "oic(D il TiDiGino * ancora in fase di testing avanzato ,beta testing. * facile c(e lassistenza non abbia ancora confidenza con questa informazione. 2omunque, nulla di grave, a patto c(e non vengano pi3 distribuite sc(ede con questo problema: essendo il componente a montaggio superficiale, non * agevole dissaldarlo, vista anc(e la vicinanza con altri componenti. Futura Elettronica (a a catalogo un contenitore plastico gi forato per fissaggio al muro: consiglio vivamente di acquistarlo insieme al TiDiGino. :icordatevi anc(e di acquistare un alimentatore a 4% 8 c(e possa erogare almeno 4 # di corrente continua anc(e di tipo non stabilizzato ed un cavo C)= ,masc(io # E masc(io micro #. per il collegamento al "2. )e poi volete strafare, perc(D non aggiungere una batteria tampone da 4% 8 !,% #( ,tipo quelle usate nei sistemi antifurto.F
5 di 5!
TiGiDino, il Factotum
Il modulo GSM
6l modulo G)$>G":) 'uadriband ,G '>7''>4G''>47'' $Bz. si basa sul processore SIM900 della SIM Com. 6l modulo (a 47 pin ,5 su un lato e 4& dallaltro. e si adatta perfettamente nellalloggio previsto sul TiDiGino. Cna volta alimentato ,esiste un apposito metodo della libreria G)$ per farlo. il minuscolo L+D verde sul modulo ed il L+D verde in parallelo sulla sc(eda iniziano a lampeggiare a circa 4 Bz, segno c(e il modulo * alimentato ed * alla ricerca di una rete a cui agganciarsi. )e * presente la )6$ nellapposito alloggiamento ed il segnale * sufficiente, il modulo aggancia la rete del gestore telefonico e la frequenza di lampeggio cambia a circa 4 volta ogni 5 secondi ,',5 Bz.. "eccato c(e non esistano nD un buzzer, nD un microfono, nD un altoparlante per avere la possibilit di comunicare come un normale cellulare. Luscita :/ fornisce 4 ? di potenza H 4G''>47'' $Bz e % ? H G '>7'' $Bz tramite un connettore femmina )$# per una antenna esterna. Lantenna fornita in dotazione * alta circa 4% cm, dispone di un paio di metri di cavo terminato da un connettore masc(io )$# ed una base magnetica per collocarla su di una superficie metallica. Iel caso non si disponga di una superficie metallica * consigliabile usare del velcro autoadesivo od una goccia di collante per fissarla stabilmente. #ttenzione a non appoggiarla troppo vicina al vostro "2 o notebook: il potente magnete potrebbe creare seri problemi allhard disk-
J di 5!
TiGiDino, il Factotum
Lambiente di sviluppo * in realt unapplicazione $ava c(e consiglio di installare allinterno di una cartella ,director,. c(iamata rduino. 6o posseggo %indo"s &P Pro e l(o installato allinterno della cartella Documenti9 questo il percorso completo: C'(Documents and Settin)s(Knome utenteL(Documenti( rduino( rduino*00+, +ssendo unapplicazione Mava non viene registrata nel registro dei programmi di ?indo0s , &egistr,. e non viene neanc(e inserita nello Start: conviene creare a mano un collegamento al programma rduino#e-e da inserire sul DesNtop per un pi3 comodo accesso ad esso:
di 5!
TiGiDino, il Factotum ;ra bisogna aggiungere nella cartella libraries le librerie aggiuntive utilizzate da /actotum: per farlo copiate semplicemente le cartelle fornite: Dallas G)$OTDG6I; $%JL2% & ;ne?ire contiene versione modificata di GSM#h per eliminare il D+=CG
"oic(D la libreria G)$O TDG6I; viene fornita con attivato il D+=CG e questo consuma molta memoria, raccomando di usare la mia versione c(e (a il D+=CG disattivato, altrimenti il programma potrebbe non funzionare correttamente.
& di 5!
TiGiDino, il Factotum #desso loperazione pi3 delicata: bisogna sostituire il file pins.arduino#c con il file con lo stesso nome, ma contenente la mappa dei pin di TiDiGino. 6l file si trova nella cartella: /( rduino( rduino*00+,(hard"are(arduino(cores(arduino 8i consiglio, per1, di conservare il vecc(io file anzic(D cancellarlo rinominandolo, ad esempio, pins.arduino.0ri)inal#c, magari conservando anc(e una copia del nuovo. "restate molta attenzione a non inserire spazi nel nome del file.
2ome ultima operazione, copiate la cartella !actotum allinterno della cartella #rduino: vi consiglio di creare allo scopo una nuova cartella Pro)etti e di inserirci dentro la cartella /actotum.
! di 5!
TiGiDino, il Factotum #desso possiamo collegare, finalmente, lalimentazione al nostro TiDiGino e, quindi, collegare il cavetto C)= al nostro "2 o notebook. 6l TiDiGino, contrariamente alla sc(eda #rduino $+G# % &' c(e usa il processore #TmegaG, usa il processore /T%5% come interfaccia C)=, quindi i driver sono diversi e vanno caricati separatamente. Iiente paura, loperazione * quasi del tutto automatica: basta indicare in fase di installazione del dri e la cartella drivers di #rduino c(e contiene a sua volta la cartella FDTI USB Drivers.
G di 5!
TiGiDino, il Factotum Dopo aver caricato /actotum, vi troverete con una finestra simile a questa:
7 di 5!
TiGiDino, il Factotum "oi si indica la Serial Port fornita dal drive C)=:
/inalmente con licona Upload si pu1 caricare /actotum sulla sc(eda. )e tutto * stato fatto correttamente, i due L+D :P e TP a bordo di TiDiGino inizieranno a lampeggiare velocemente, indicando luploading.
4' di 5!
TiGiDino, il Factotum Cna volta terminata questa fase, si pu1 lanciare il Serial Monitor ,previa impostazione della velocit a 7&'' baud. per interagire con /actotum:
Iellesempio sopra riportato si osserva la versione del programma e la sua emulazione ,T+$"+:#TC:#.. )i noti come /actotum abbia caricato le variabili preferenziali e ripristinato le uscite ,variabile 1IP settata a true.. "oic(D il funzionamento dellemulazione era Automatico. /actotum ne segnala la condizione. 6l messaggio di Startup viene visualizzato e, poic(D nellesempio esisteva un numero preferenziale a cui inviare uno squillo, viene visualizzato levento. )e ci fossero stati pi3 numeri preferenziali a cui inviare squilli e>o )$), ci sarebbe stata lindicazione relativa. 6nviando T2MP3 ,campo in alto con il pulsante Send., si ottiene la temperatura minima, massima e ambientale.
44 di 5!
TiGiDino, il Factotum "urtroppo esiste un problema: come sar specificato pi3 avanti, il modulo G)$ allo startup potrebbe non configurarsi correttamente, risultando un apparente blocco. 2ompare la scritta QRichiesta passwordR come se il programma dovesse rispondere ad una c(iamata vocale ,DT$/. e rimane in quella situazione per 5' secondi, dopodic(D la c(iamata viene terminata ed il sistema prosegue normalmente le sue funzioni.
4% di 5!
TiGiDino, il Factotum
Il so4t"are
6l programma !actotum * il risultato del -ontest proposto da Elettronica In per sviluppare unapplicazione per TiGiDino c(e consentisse di emulare i precedenti progetti di telecontrollo G)$: TDG45J S #pricancello TDG455 S Telecontrollo % in > % out ,TDG4J' @ DT$/. TDG457 S Termostato pricancello, Telecontrollo, Temperatura.
6l codice compilato della versione pi3 complessa occupa oltre <= della memoria /las( del processore, oltre ovviamente lo spazio di memorizzazione delle variabili nella ):#$. Ion * stata utilizzata la memoria 22P10M da J <= interna al processore, proprio per dare modo agli sviluppatori di caricare un programma diverso ,c(e usi questa memoria. senza cancellare i dati memorizzati nella memoria ++":;$ seriale ausiliaria da 5% <=. #nc(e la SIM ,Subscriber Identit, Module. del gestore telefonico scelto non viene utilizzata per memorizzare i numeri telefonici, poic(D, in questo modo, * possibile sostituirla con unTaltra senza perdere i numeri telefonici gi memorizzati. )ono stati aggiunti dei comandi speciali per consentire agli QsmanettoniR di accedere a tutti gli altri ingressi>uscite disponibili , edi -omandi aggiunti i.. Le parti essenziali sono: initialize setup loop inclusioni, direttive di compilazione, dic(iarazioni di variabili e costanti9 inizializzazione classi, inizializzazione variabili9 ciclo principale c(e comprende: procedure di input9 procedure di elaborazione dati9 procedure di output.
:esta da comprendere il complesso delle temporizzazioni nellambito del ciclo di loop. #lcune procedure, infatti, sono sottoposte ad un contatore temporale o timer. 6l processore, una volta terminata la fase di inizialize e quella di setup, entra in quella di loop e vi permane sino a quando non viene attivato il reset oppure viene tolta lalimentazione. La velocit di ciclo complessiva non * stimabile a priori poic(D esistono alcune procedure c(e usano una quantit di tempo variabile secondo il loro stato interno ,ad esempio la procedura di risposta ad una c(iamata vocale.. 6potizziamo c(e sia di volte in un secondo. cicli>secondo: la singola procedura di input, ad esempio, verrebbe eseguita
2onsideriamo la procedura di input relativa allacquisizione della temperatura: il processore eseguirebbe, perci1, la misura della temperatura volte ogni secondo. =asterebbe avere una lettura ogni 5SJ secondi e, con il tempo risparmiato, il ciclo complessivo diventerebbe pi3 breve, a tutto vantaggio di altre procedure pi3 lung(e. +cco spiegato luso dei timer: * un artificio per consentire alle varie procedure di essere eseguite a scadenze prefissate, solo quando il loro contatore temporale supera un certo valore. La funzione millis56 restituisce il numero di millisecondi passati dal momento in cui il sistema * partito: essendo un valore unsigned long raggiunge il suo massimo dopo circa ' giorni di funzionamento, dopodic(D il conteggio riparte da zero.
45 di 5!
TiGiDino, il Factotum 6nserendo questo valore in una variabile contatore * possibile ad ogni ciclo confrontare il nuovo valore di millis,. con quello memorizzato. )e la differenza * maggiore od uguale al valore programmato ,costante. il tempo * stato raggiunto, si esegue la procedura corrispondente e si reimposta la variabile contatore al nuovo valore di millis,.9 se, invece, la differenza * minore la procedura non viene eseguita. +siste, per1, un caso in cui il valore della variabile contatore * maggiore di millis,.: quando il contatore di millis,. raggiunge il suo massimo e si azzera tra un controllo e laltro. 6n questo caso si considera il tempo scaduto e si ricade nel primo caso. )enza questo controllo si risc(ia, dopo procedure di timing.
... // ---------- Utility - TimerCheck ---------boolean TimeElapsed(unsigned long Timer, unsigned long StopTime) unsigned long T ! millis()" i# (Timer $ T) return true" i# ((T - Timer) $ StopTime) return true" else return #alse" // internal timer resetted a#ter %&' days // time elapsed
( ...
Cn esempio * il lampeggio del L+D: per consentire di verificare c(e il programma * esecutivo, il L+D5 lampeggia alla velocit di 4 Bz. )e smette di lampeggiare non necessariamente significa c(e il sistema * bloccato, ma potrebbe essere impegnato in una procedura lunga ,ad esempio rispondere ad una c(iamata vocale..
4J di 5!
TiGiDino, il Factotum
Librerie a))iuntive
6l programma !actotum si avvale di alcune librerie aggiuntive ric(iamate nellarea 6I2LCD+:
... @include AEEB,.2.h$ @include ACire.h$ @include A24?*C4&<.h$ @include Astdlib.h$ @include A.neCire.h$ @include A)allasTemperature.h$ @include A1S2.h$ ... // +Tmega4&<' internal EEB,.2 // TDo Cire -4C protocol (used by serial EEB,.2) // serial EEB,.2 on Ti)i1ino // #or #loat to string conEersion // .ne Cire protocol (used by temperature sensor) // )allas )S0=84' temperature sensor // #or 1S2 S-2;'' module
protocollo T%o $ire I"- per comunicare con la serial ++":;$9 gestisce le routine di memorizzazione veloce della ++":;$ seriale9 contiene la funzione dtostrf./ per visualizzare valori float ,temperatura.9 gestisce il protocollo #ne $ire usato dal sensore di temperatura9 gestisce il sensore di temperatura Dallas9
DallasTemperature#h GSM#h
Lultima libreria indicata ,GSM#h. * la pi3 importante poic(D gestisce il modulo G)$ )6$7''. Auesta libreria * derivata da quella utilizzata dal GSM Shield for Arduino, opportunamente modificata da =oris Landoni per funzionare con TiDiGino. "oic(D la libreria modificata non aveva indicazioni di come usarla ,escludendo gli esempi forniti non del tutto esaustivi., (o seguito le indicazioni di quella originale fornite da GSM Pla,ground Sketches: 000.(0Nitc(en.com>ne0s>gsmSplaUgroundSsNetc(es> )i faccia attenzione c(e nel manuale ci sono delle piccole differenze rispetto alla versione per TiDiGino ,ad esempio il TurnOn ! non (a nessun parametro.. 2ome afferma la documentazione a corredo , edi allegato., la tecnica usata per la comunicazione con il modulo * del tipo blocking, ovvero il processore * bloccato finc(D la comunicazione non termina. /ortunatamente sono stati inseriti dei timer di timeout per uscire da pericolose situazioni di blocco totale. 6l funzionamento della libreria * discreto, ma alla volte si presentano delle anomalie: in caso di caduta della tensione a seguito di un blacNout oppure a seguito di un reset, al suo ripristino il modulo G)$ non sempre si inizializza correttamente, indicando una c(iamata a cui il sistema sta rispondendo9 avendo inserito un timeout di 5' secondi, basta aspettare c(e la c(iamata venga c(iusa e il sistema riprende il suo funzionamento normale. i toni emessi dal DT$/ (anno un ritardo di risposta troppo elevato ,L 4%'' ms. e perci1 i beep sono troppo distanziati.
"er la verit inizialmente la libreria funzionava molto male, ma questo succedeva prima c(e scoprissi il problema: lecho. Lecho * una modalit usata nei terminali per visualizzare sullo sc(ermo ci1 c(e si batte sulla tastiera o si invia.
4 di 5!
TiGiDino, il Factotum La cosa pu1 sembrare scontata ma non lo *: il fatto c(e si inviino dei caratteri non implica necessariamente c(e essi siano visualizzato sul dispositivo di QascoltoR. Gli esempi forniti a corredo riportano la presenza del metodo aggiuntivo 2cho5:6 c(e consente di attivare lecho dei comandi #T, mentre nella libreria originale questo comando * stato disattivato. "robabilmente il metodo * stato aggiunto per effettuare il debug del sistema: peccato c(e, con il comando echo inserito, la ricezione degli )$) non potesse funzionare e forse anc(e altre funzioniLa spiegazione del perc(D * piuttosto complessa, ma possiamo dire c(e la presenza sul buffer di ricezione dellecho del penultimo comando inviato veniva interpretato come la risposta allultimo comando inviato. Bo impiegato diverso tempo per capire c(e il problema non era allinterno del mio soft0are, ma nella libreria: * normale dare per scontato c(e la libreria sia funzionante, non vi pareF "erci1, nel )etup di !actotum occorre inserire il comando 2cho506 e non 2cho5:6... ... // ---------- SETUB - 1S2 F )T2G ---------pin2ode(1S2)C)Bin, pin2ode(1S2,/1Bin, pin2ode(1S2CTSBin, pin2ode(1S2*E)Bin, pin2ode(1S2StaBin, -/BUT)" -/BUT)" -/BUT)" -/BUT)" -/BUT)"
pin2ode()T2GST)Bin, -/BUT)" pin2ode()T2GH0Bin, -/BUT)" pin2ode()T2GH4Bin, -/BUT)" pin2ode()T2GH3Bin, -/BUT)" pin2ode()T2GH?Bin, -/BUT)" pin2ode(1S2)T,Bin, pin2ode(1S2,TSBin, pin2ode(1S2,esBin, pin2ode(1S2BDrBin, .UTBUT)" .UTBUT)" .UTBUT)" .UTBUT)" // module poDer on // disable AT echo // Eeri#ica registraIione alla rete
Tutte queste cose (anno contribuito non poco allallungamento della fase di debug ,decine e decine di telefonate ed )$) persi per questi problemi.. # mio avviso la libreria * da considerare pi3 un punto dinizio c(e la soluzione definitiva e sarebbe opportuno riscriverla per un migliore abbinamento con TiDiGino. Tuttavia, poic(D gli organizzatori del contest (anno fornito questa versione, questa non * stata modificata, accettandone le limitazioni.
4& di 5!
TiGiDino, il Factotum
Mappa di memoria
2ome gi accennato, !actotum adopera esclusivamente la memoria seriale ++":;$ per le sue variabili. +ssa * stata suddivisa in cinque aree:
Indirizz o Iniziale .he+/
Area
Descrizione
i valori delle variabili generali i valori delle variabili ingressi i valori delle variabili temperatura i valori delle variabili uscite la rubrica dei numeri telefonici ,% &.
La mappa si commenta da sola: nella prima parte vengono salvati i valori delle variabili personalizzate dallutente, mentre nellultima vengono salvati i numeri telefonici da c(iamare e>o a cui mandare un )$) , edi allegato (.. )i noti c(e i Qbuc(iR ,gap. presenti ,aree di memoria libera. (anno il solo scopo di suddividere le varie zone per poter pi3 facilmente apportare delle aggiunte successive. #d ogni attivazione del programma, la ++":;$ seriale viene analizzata sul suo primo bUte per sapere se * vergine o meno ,contenuto // se vergine.: se lo * vengono salvate tutte le variabili nellarea di memoria corrispondente, altrimenti il sistema le caric(er dalla stessa area. + del tutto evidente c(e allinizio le variabile operative e quelle in memoria saranno identic(e. )uccessivamente, man mano c(e il sistema viene personalizzato ,cambiando, ad esempio, il messaggio iniziale di attivazione. sar possibile riallineare i due contenuti usando il comando speciale S ; ,sa e. c(e memorizza le variabili nella ++":;$: ci1 consentir ai successivi riavvii del sistema di usare le variabili personalizzate anzic(D quelle preimpostate. #vrei potuto memorizzare immediatamente i parametri nella ++":;$ seriale, ma in questo modo * possibile testare il risultato delle modific(e apportate prima di memorizzarle definitivamente. # tale scopo (o anc(e aggiunto il comando 12S<=ps"> c(e consente di resettare il sistema anc(e da remoto. )i noti c(e non * un vero reset (ard0are, ma piuttosto una reSinizializzazione. Cna certa attenzione va rivolta alluso del pulsante utente. 6nfatti, tenendolo premuto mentre si riavvia il sistema la memoria ++":;$ seriale viene completamente cancellata. La cosa pu1 essere utile, in caso di malfunzionamento del sistema, per ripristinare le impostazioni originali ed * segnalata sia sul $onitor )eriale con un apposito messaggio, sia attraverso 5 rapidi lampeggi del L+D5 ,giallo..
4! di 5!
TiGiDino, il Factotum
Memoria S1 M
Cn grosso problema c(e (o dovuto affrontare * quello del relativamente limitato spazio della memoria ):#$. # quanto sembra, oltre una certa occupazione di memoria, #rduino $+G# % &' entra in crisi. 2on una occupazione di circa &' <= della memoria /las( da parte del programma, lo spazio ):#$ si riduce a circa %, <= degli G <= iniziali. "u1 sembrare molto, ma per un programma come questo c(e si basa su una forte interazione QverbaleR con lutente, la memoria libera viene presto saturata dal contenuto delle variabili stringa, con un conseguente crash del sistema. "er esempio, inserendo i comandi aggiuntivi con lemulazione Telecontrollo, al momento della ricezione di un )$) ,c(e ric(iede ben 4&4 bUte per la sua allocazione., il sistema attualmente si resetta, segno c(e * stata esaurito lo spazio in memoria ):#$. Bo dovuto faticare non poco per limitare la dimensione delle string(e allo stretto necessario ,ecco il motivo per cui, ad esempio, i messaggi di allarme sono stati limitati a 5' caratteri dei 4'' originari.. 2erto si potrebbero usare delle tecnic(e particolari, come quella di memorizzare le variabili stringa nella memoria /las( oppure in quella della ++":;$ interna all#Tmega% &', ma mi sembra assurdo c(e i progettisti di #rduino non abbiano pensato a questa limitazione. )arebbe bastato portare a 4&< la memoria ):#$2omunque, conto di risolvere il problema nelle successive versioni del programma. ;ra come ora, per far funzionare correttamente /actotum occorre rinunciare alle modalit di debug della libreria G)$: in pratica bisogna trasformare in commento le definizioni nellarea DEFI0E ,parte iniziale del file GSM#h..
/J 1S2.h - library #or the 1S2 Blayground - 1S2 Shield #or +rduino ,eleased under the CreatiEe Commons +ttribution-Share +like 3.' *icense httpK//DDD.creatiEecommons.org/licenses/by-sa/3.'/ DDD.hDkitchen.com library Eersion 0.'0 by 8oris *andoni J/ @i#nde# LL1S2 @de#ine LL1S2 @include MCBrogram.hM // )EG-/E // @de#ine // @de#ine // @de#ine // @de#ine ... ... )E8U1LB,-/T )E8U1L1S2,N )E8U1L*E)LE/+8*E) )E8U1LS2SLE/+8*E)
4G di 5!
TiGiDino, il Factotum
Le emulazioni
)ono disponibili tre emulazioni: pricancello, Telecontrollo e Temperatura. #vrei voluto usare una variabile per attivare queste emulazioni, ma, purtroppo, a causa della limitazione di memoria accennata prima, lunico sistema per poter attivare queste emulazioni * quello di usare le direttive di compilazione ,anc(e in questo caso, eliminando le limitazioni di memoria nelle future versioni del programma, il problema sar risolto.. 6n pratica bisogna modificare nellarea DEFI0E le prime tre definizioni, lasciando attiva solo quella c(e interessa. Iellesempio sottostante viene attivata, ad esempio, lemulazione T+$"+:#TC:#, mentre le precedenti due sono state opportunamente trasformate in commento:
/J G+CT.TU2 0.' per Ti)i1ino Eers. 0.' by Ettore 2assimo +lbani 3'/00/4'00 DDD.cyberhs.it in#o:cyberhs.it J/ // !!!!!!!!!!!!!!!!!!!!!!!!! )EG-/E !!!!!!!!!!!!!!!!!!!!!!!!! //@de#ine +B,-C+/CE**. //@de#ine TE*EC./T,.**. @de#ine TE2BE,+TU,+ @de#ine C.2+/)-ENB //@de#ine )E8U1 ... ... // emulaIione apricancello (% ?& O8 Glash) // emulaIione telecontrollo (% &0 O8 Glash) // emulaIione termostato (% &4 O8 Glash) // comandi aggiuntiEi (% & O8 Glash) // solo per debug
)i noti la presenza della definizione C0M ?DI2&P c(e inserisci alcuni comandi aggiunti i utili per una interazione con le altre risorse del sistema , edi paragrafo comandi aggiunti i.. 6l passo successivo sar quello di eseguire l upload del programma sulla sc(eda TiGiDino connessa al "2 tramite la porta C)=.
I comandi
+sistono quattro modi diversi per fornire i comandi al TiGiDino dotato del programma !actotum: 4. diretto S tramite un "2 ed un qualsiasi programma terminale mediante la connessione C)=9 %. remoto S tramite un )$) inviato da un qualsiasi cellulare, purc(D il numero telefonico appartenga ad uno degli otto numeri autorizzati9 5. remoto S tramite una telefonata usando la tastiera DT$/, purc(D si disponga della pass0ord di autorizzazione9 J. remoto S tramite una telefonata, purc(D il numero telefonico appartenga ad uno dei % & numeri della lista apricancello ,compresi i primi otto autorizzati.. )i noti c(e, mentre i primi due metodi possono utilizzare tutti i comandi a disposizione, il terzo metodo * limitato ai soli comandi c(e gestiscono le due uscite, mentre il quarto pu1 funzionare solo con lemulazione apricancello, essendo luscita collegata allapricancello. Lelenco completo di tutti comandi * in allegato 1. )i * cercato il pi3 possibile di non modificare i comandi originali ,come ric(iesto dal contest. e di rendere la sintassi unica per tutti, semplificando il loro inserimento tramite )$).
47 di 5!
TiGiDino, il Factotum # tale scopo, i caratteri separatori K '> e K<> possono essere sostituiti da un semplice spazio ,molto pi3 facile da inserire in un )$). o qualsiasi altro carattere: il programma non si basa sulla loro presenza per verificare la sintassi del comando ,eccezione i comandi "++< e ";<+.. Iaturalmente occorrer prestare attenzione a non inserire due spazi al posto di uno, come pure non inserirlo affatto#d esempio, il comando ?01 +: oppure ?01'+: fornir lo stesso risultato ,temperatura normale impostata a %4 V2., ma scrivendo ?01+: la temperatura sar impostata a 4 V2. #ncora, nellinserimento numerico non confondete lo Q 0R ,zero. con la Q0R ,maiuscola o minuscola.. Auindi, occ(io alla sintassi"er evitare ambiguit, si * evitato luso del punto e della virgola come simboli separatori delle cifre decimali: come conseguenza non * possibile inserire cifre decimali, ma solo intere, eventualmente con segno negativo. Lunica occasione in cui si potrebbe sentire questa esigenza * nel settaggio delle variabili di temperatura LLM &, LLMI? e ?01, ma con piccole modific(e si potrebbe rimediare a questo inconveniente.
%' di 5!
TiGiDino, il Factotum
%4 di 5!
TiGiDino, il Factotum
Comandi a))iuntivi
;ltre ai comandi standard, se in fase di compilazione * stato predisposto il define C0M ?DI2&P, sono disponibili dei comandi aggiunti i utili per conoscere lo stato degli ingressi e delle uscite non gestiti direttamente da /actotum. )i noti c(e (o ripartito in questo modo le altre porte di 6>; a disposizione:
Porte Pin 0ote
"er quello c(e riguarda gli ingressi analogici, per evitare false letture, viene effettuata una media di n letture consecutive ,con n personalizzabile attraverso la costante #na6n:eads W 4Xn.. Cn comando aggiuntivo c(e (o dovuto eliminare per problemi di memoria * lutilissimo C2LP: avrebbe consentito di ottenere lelenco completo di tutti i comandi con relativo significato e sintassi. 2omunque non escludo, una volta risolto il problema della memoria, c(e le successive versioni possano contenere questo comando. 6l programma prevede una funzionalit di monitoraggio sulla serial 4 connessa al "2. Tutti gli eventi vengono visualizzati nella finestra del )erial $onitor dell6D+ di #rduino configurato con queste impostazioni: auto scroll, 7&'' baud, no line ending. 6 due ultimi comandi P22B e P0B2 danno la possibilit di leggere e scrivere le informazioni dalla>nella memoria ++":;$ seriale. )ono questi comandi pensati per una personalizzazione di /actotum attraverso linterazione con un programma di comunicazione esterno. )i noti c(e questi due comandi utilizzano i caratteri separatori K 'L e K<L c(e, quindi, non possono essere omessi. +cco un esempio di visualizzazione degli ingressi analogici:
%% di 5!
TiGiDino, il Factotum )i noti c(e lingresso #% * stato portato a massa, mentre gli altri sono liberi ,resistore di pullup interno da %' <.. 6n questo altro esempio sono visualizzati le uscite digitali, gli ingressi digitali e le uscite "?$ dopo aver settato luscita "?$ 4' a :
%5 di 5!
TiGiDino, il Factotum
6 comandi SMS=:+,###F>'=0?G0!!><=ps"> e ;0C=:+,###F>'=0?G0!!><=ps"> consentono di attivare o disattivare per ognuno dei numeri preferenziali linvio di )$) e>o squilli in caso di allarme ingressi. +sempio: $&$"48:'(;1"345 !')1"%8:'**;1"345 attiva invio )$) per numeri preferenziali %, J e G disattiva squilli per numeri preferenziali 4, %, & e G
%J di 5!
TiGiDino, il Factotum
2mulazione
pricancello
Auesta * lemulazione meno complessa. Ctilizza larea rubrica delle ++":;$ seriale per memorizzare, oltre agli G numeri preferenziali, altri %JG numeri telefonici, per un totale di % & numeri. 6 numeri telefonici sono stati previsti con un massimo di 4& caratteri, compreso il prefisso internazionale. stato aggiunto il comando P12'=pre4i-> c(e consente di inserire il prefisso di default c(e per l6talia * Q@57R. :icordo c(e il Q@R corrisponde al doppio zero Q''R. La sua lung(ezza massima * di caratteri. Iel caso il numero telefonico inserito non contenga il prefisso, questo viene automaticamente aggiunto dal programma. 6l numero telefonico ,a parte il prefisso. non pu1 essere pi3 lungo di 4' caratteri ,44 per zone ad alta concentrazioni di telefoni.. Auindi 44 caratteri pi3 di prefisso sono appunto 4& caratteri. )i noti c(e il limite di memorizzazione di % & numeri telefonici * pi3 c(e altro pratico, poic(D lo spazio di memoria consentirebbe la memorizzazione di altri 4 5& numeri#d ogni c(iamata ricevuta dal modulo G)$, viene controllata lidentit del c(iamante ovvero il numero di telefono. )e il numero di telefono corrisponde ad un elemento della lista, viene attivato il rel* 4 connesso al sistema apricancello e quindi il programma termina la telefonata. 6n questo modo il c(iamante non spende nulla per la telefonata ,un bel risparmio-.. La stessa apertura pu1 essere fatta anc(e in locale, tenendo premuto il pulsante utente della sc(eda per almeno un ciclo di loop ,circa 4 secondo.. 6 numeri preferenziali possono anc(e inviare )$) contenenti i comandi.
% di 5!
TiGiDino, il Factotum
2mulazione Telecontrollo
Cna spiegazione delle funzioni di allarme * dobbligo. Gli ingressi optoisolati possono essere processati se la variabile LI ,allarme ingressi. * true. La variabile viene controllata dal relativo comando LI ,c(e fantasia-.: se posto in ;I la variabile assume valore true, viceversa con ;// essa assume valore false. 6 livelli degli ingressi di allarme possono essere ,alto., A ,basso. e ; ,variazione.: impostando il comando LI;=:G+>'= GAG;> relativo ad uno dei due ingressi si stabilisce quando il livello di tensione deve essere considerato allarme. Cn ingresso entrato in stato di allarme non viene considerato subito tale, ma deve passare un certo tempo ,detto di osser azione o di preallarme.. Auesto tempo * controllato dalle variabili 0SS: e 0SS+ ed * settato dal relativo comando 0SS=:G+>'=0E89> ,tempo espresso in secondi.. Cna volta trascorso questo tempo, se lingresso non (a subito variazioni, lallarme diventa effettivo. a questo punto c(e parte il timer del tempo di inibizione controllato dalle variabili I?I: ed I?I+ e settato dal relativo comando I?I=:G+>'=0E89> ,tempo espresso in minuti.. 6n pratica, esprime il tempo per il quale lallarme non deve generare altri )$) e>o squilli agli otto possibili numeri preferenziali. 6 comandi SMS=:+,###F>'=0?G0!!><=ps"> e ;0C=:+,###F>'=0?G0!!><=ps"> consentono di attivare o disattivare per ognuno dei numeri preferenziali linvio di )$) e>o squilli in caso di allarme ingressi. +sempio: $&$"48:'(;1"345 !')1"%8:'**;1"345 attiva invio )$) per numeri preferenziali %, J e G disattiva squilli per numeri preferenziali 4, %, & e G
%& di 5!
TiGiDino, il Factotum
2mulazione Temperatura
6l sensore per la temperatura ambientale DS:FA+0 ,D LL S*M &IM. consente di scegliere vari livelli di risoluzione: 7 bit 4' bit 44 bit 4% bit risoluzione ', V2 risoluzione ',% V2 risoluzione ',4% V2 risoluzione ','&% V2
)i * scelto di usare la massima risoluzione di 4% bit per garantire lapprezzamento del decimo di grado. 6l range di temperatura del sensore * compreso tra S Y'. V2 * garantita tra S4'V2 e @G V2. V2 e @4% V2, anc(e se la precisione di
2omunque, per un controllo di temperatura ambientale sono valori pi3 c(e sufficienti. "urtroppo questa precisione della misura * falsata dal fatto c(e dopo qualc(e minuto di funzionamento del sistema, la temperatura rilevata sale di circa % gradi rispetto a quella ambiente. Tuttavia, non credo c(e il problema sia la vicinanza di qualc(e componente QcaldoR sulla sc(eda e neanc(e di qualc(e esoterica influenza del generatore :/ del modulo G)$. La logica vorrebbe c(e il sia pur minimo consumo di corrente ,da 4 a J m#. da parte del dispositivo fosse sufficiente ad innalzare la temperatura del diodo interno di rilevamento, ma possibile c(e i progettisti non se ne siano accortiF La casa costruttrice del sensore pare fosse a conoscenza di un problema simile per il sensore DS:F+0 , edi rapporto DA**AS allegato. sottoposto alla temperatura di vapore, imputando la causa ad un resistore collegato alloscillatore interno del sistema di conteggio c(e * sensibile agli stress meccanici. Lo stesso documento afferma c(e i problemi sono stati risolti con il DS:FS+0, ma non parla del D)4G=%' usato in questo caso. Ioto soltanto c(e con il D)4G)%' la risoluzione * scesa a soli 7 bit ,risoluzione ', V2.: come maiF 6l documento * del ! marzo %''' e dopo un anno la D#LL#) * stata acquisita dalla $#Z6$: forse nellacquisizione i tecnici si sono accorti dei problemi ed (anno ridotto la risoluzione per evitare QrogneR con la clientelaF $a(6l fatto * c(e il problema c* e non * trascurabile ,due gradi sono tanti[.. )i potrebbe pensare ad un offset di un paio di gradi da sottrarre progressivamente nellarco di minuti alla temperatura rilevata per tener conto di questo effetto indesiderato, ma sarebbe un palliativo poco elegante. $i domando, allora, se non sia meglio utilizzare un pi3 economico ? TI0? L LM,8, vista la presenza degli ingressi analogici inutilizzati. 8olendo proprio usare un sensore #ne $ire sarebbe stato meglio predisporne un montaggio separato dalla sc(eda del TiDiGino e, magari, prevedere un secondo sensore delle stesso tipo per la rilevazione della temperatura esterna: il protocollo, infatti, prevede la possibilit di pi3 dispositivi presenti sullo stesso bus. stata aggiunto il comando IST'=0E+0> collegato alla variabile IST c(e esprime listeresi in decimi di grado ,valore di default corrispondente a ', V2. per evitare ravvicinate attivazioni>disattivazioni del rel* 4 collegato alla caldaia. 6n pratica, il rel* si attiva sotto la temperatura di ,I;: S 6)T. e si disattiva sopra la temperatura di ,I;: @ 6)T.
%! di 5!
TiGiDino, il Factotum 2erto sarebbe stato meglio predisporre un controllo di tipo "6D , Proporzionale Integrati o Deri ati o. per prevedere il naturale ritardo nella risposta del sistema #mbienteS2aldaia ,dovuto al volano termico., cosa c(e * presente nei moderni cronoStermostati. Tuttavia, considerando le finalit di questo apparecc(io ,controllo remoto dellimpianto di riscaldamento della casa in montagna e simili., questa funzione non * indispensabile. "er lo stesso motivo, il range di temperatura * stato ridotto a valori compresi tra S4'V2 e @G V2, in modo da garantire la precisione della misura. Iaturalmente i comandi ?01, LLMI? ed LLM & verificano la congruenza delle temperature allinterno di questo range ed anc(e tra loro ,non * possibile, ad esempio, inserire un I;: a 4GV2 con un #LL$6I settato a %'V2.. "er quanto riguarda il pulsante utente, tenendolo premuto per almeno un ciclo di loop ,4 secondo., commuta la modalit di funzionamento ,#utomatico>$anuale>Termostato. in modo ciclico. 6l L+D5 si attiva quando il funzionamento * automatico, mentre il L+DJ si attiva quando il funzionamento * su termostato. 6n caso di funzionamento manuale, invece, i due L+D risultano spenti.
*ED -olore Segnalazione 0ote
:osso )tato uscita 4 :osso )tato uscita % Giallo /unzionamento automatico Giallo /unzionamento termostato gli ingressi optoisolati:
Ingresso #ptoisolat o
Funzione
Allarme
0ote
4 %
2ollegare in parallelo spia avaria caldaia 2ollegare in parallelo al termostato ambiente ,se presente.
possibile fornire comandi diretti alle uscite a rel*, ma solo per il rel* %. 6l rel* 4 ,caldaia. , essendo controllato dalla procedura di controllo temperatura, pu1 essere controllato solo se il funzionamento * manuale. 6 comandi SMS=:+,###F>'=0?G0!!><=ps"> e ;0C=:+,###F>'=0?G0!!><=ps"> consentono di attivare o disattivare, per ognuno dei numeri preferenziali, linvio di )$) e>o squilli in caso di allarme temperatura e>o caldaia.
%G di 5!
TiGiDino, il Factotum
Di4etti conosciuti
La prima regola di un programmatore * quella di non essere il collaudatore del proprio soft0are9 questa regola, in questo caso, non * stata osservata con la conseguenza c(e * possibile c(e nel soft0are ci siano delle sviste o degli errori in alcuni punti. Lascio ai validi tecnici di Futura Elettronica lonere delle prove, pregandoli di segnalarmi qualsiasi anomalia. 2erto sarebbe desiderabile c(e non esistessero difetti, ma purtroppo questo non pu1 accadere, almeno per le versioni iniziali del programma: in caso di caduta della tensione a seguito di un blacNout, al suo ripristino il modulo G)$ non sempre si inizializza correttamente ,presenza sul mio prototipo del resistore &"47.9 nel caso di assenza della )6$, la velocit di ciclo scende sensibilmente9 il comando !IL'=0?G0!!>, pur essendo presente e funzionante, non viene gestito ,non riesco a comprenderne lutilit.9 il comando SIC'=0?G0!!> non viene gestito poic(D i comandi DT$/ sono tutti condizionati dallinserimento della pass%ord ,una tantum.9 i beep DT$/ generati dal modulo G)$ ric(iedono un tempo eccessivamente lungo9 le temperature #LL$6I, #LL$#Z e I;: sono numeri interi e quindi non possono contenere decimali9 la temperatura rilevata dal sensore sale di due gradi rispetto a quella ambientale dopo minuti circa dallaccensione del sistema e ci1 * fuorviante ai fini del controllo ambientale9 non * indispensabile ma sarebbe meglio aggiungere un L+D per indicare lattivit del processore: il L+D5 usato allo scopo * gi utilizzato dallemulazione Temperatura, mentre sarebbe pi3 utile collegarne uno al classico pin 45 in modo da essere compatibile con la serie #rduino.
#d alcuni di essi si pu1 rimediare, ma per altri * ric(iesta una maggiore quantit di tempo per prove e migliorie.
%7 di 5!
TiGiDino, il Factotum
lle)ato : H TiDiGino
Po"er
1-GT-
@SA
uto 1eset
GSM SIM900
IG0 Di)itali
1eset
ICSP
5' di 5!
TiGiDino, il Factotum
lle)ato + H Pinout
Tme)a+890
"in + , 9 I : 8 :8 :9 :I :F +, +7 +8 +9 97 9, :, :+ 79 78 77 7, IF II I9 I8 I7 I, I: 90 89 I+ 8F 8I 89 88 87 8, 80 I0 8+ 8: 7+ 7: 70 ,9 ,F ,I ,9 ,8 ++ +: +0 :9 9I 99 98 97 "in Iame "+' ,:ZD'S"26ITG. "+4 ,TZD'. "+J ,;25=S6ITJ. "+ ,;252S6IT . "G ,;2'=. "+5 ,;25#S#6I4. "B5 ,;2J#. "BJ ,;2J=. "B ,;2J2. "B& ,;2%=. "=J ,;2%#S"26ITJ. "= ,;24#S"26IT . "=& ,;24=S"26IT&. "=! ,;2'#S;242S"26IT!. "M4 ,TZD5S"26IT4'. "M' ,:ZD5S"26IT7. "B4 ,TZD%. "B' ,:ZD%. "D5 ,TZD4S6IT5. "D% ,:ZD4S6IT%. "D4 ,)D#S6IT4. "D' ,)2LS6IT'. "#' ,#D'. "#4 ,#D4. "#% ,#D%. "#5 ,#D5. "#J ,#DJ. "# ,#D . "#! ,#D!. "2! ,#4 . "2& ,#4J. "#& ,#D&. "2 ,#45. "2J ,#4%. "25 ,#44. "2% ,#4'. "24 ,#7. "2' ,#G. "D! ,T'. "G% ,#L+. "G4 ,:D. "G' ,?:. "L! "L& "L ,;2 2. "LJ ,;2 =. "L5 ,;2 #. "L% ,T . "L4 ,62" . "L' ,62"J. "=5 ,$6);S"26IT5. "=% ,$;)6S"26IT%. "=4 ,)2<S"26IT4. "=' ,))S"26IT'. "/' ,#D2'. "/4 ,#D24. "/% ,#D2%. "/5 ,#D25.
rduino M2G
"in 0 : + , 7 8 9 I F 9 :0 :: :+ :, :7 :8 :9 :I :F :9 +0 +: ++ +, +7 +8 +9 +I +9 ,0 ,: ,: ,+ ,, ,7 ,8 ,9 ,I ,F ,9 70 7: 7+ 7, 77 78 79 7I 7F 79 80 8: 8+ 8, 0 : + , "ort 0 : + , 7 8 9 I F 9 :0 :: :+ :, :7 :8 :9 :I :F :9 +0 +: ++ +, +7 +8 +9 +I +9 ,0 ,: ,: ,+ ,, ,7 ,8 ,9 ,I ,F ,9 70 7: 7+ 7, 77 78 79 7I 7F 79 80 8: 8+ 8, 87 88 89 8I
+890
"in 0 : + , 7 8 9 I F 9 :0 :: :+ :, "ort 0 : + , 7 8 9 I F 9 :0 :: :+ :, :7 :8 :9 :I :F :9 +0 +: ++ +, +7 +8 +9 +I +9 ,0 ,: ,: ,+ ,, ,7 ,8 ,9 ,I ,F ,9 70 7: 7+ 7, 77 78 79 7I 7F 79 80 8: 8+ 8, 87 88 89 8I
TiDiGino
"ort Iame :Z' TZ' "?$S6ITJ "?$S6IT "?$ "?$ "?$ "?$ "?$ "?$ "?$ "?$ "?$ "?$ DT$/ )TD Kn.c.L Kn.c.L Kn.c.L G)$4 TZ4 G)$4& :Z4 )D# ,++":;$%. )2L ,++":;$%. Kn.c.L Kn.c.L Kn.c.L L+D5 L+DJ G)$ D2D G)$ :T) Kn.c.L Kn.c.L G)$ DT: Kn.c.L Kn.c.L G)$ :6IG G)$ :+)+T :L\;CT 4 :L\;CT % Kn.c.L G)$ 2T) Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L $6); $;)6 )2< Kn.c.L #nalog ' #nalog 4 #nalog % #nalog 5
"ort Iame :Z' TZ' "?$S6ITJ "?$S6IT "?$ "?$ "?$ "?$ "?$ "?$ "?$ "?$ "?$ "?$ ,L+D. TZ5 :Z5 TZ% :Z% TZ4S6IT5 :Z4S6IT% )D#S6IT4 )2LS6IT' Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; Digital 6>; $6); ,62)"4. $;)6 ,62)"J. )2< ,62)"5. Digital 6>; ,)). #nalog ' #nalog 4 #nalog % #nalog 5
GSM:8 GSM:9
GSM:F GSM:7
GSM:I
GSM:+ GSM09
GSM:,
54 di 5!
TiGiDino, il Factotum
9, 9+ 9: 90 F9 FF FI F9 F8 F7 F, F+ 98 99 9I 9F 99 I9 9 F :0 ,: 9: F0 :00 9F :: ,+ 9+ F: 99 ,0 7 :7 +I +F +9 ,, ,7 7I 7F 79 "/J ,#D2JST2<. "/ ,#D2 ST$). "/& ,#D2&STD;. "/! ,#D2!STD6. "<' ,#D2GS"26IT4&. "<4 ,#D27S"26IT4!. "<% ,#D24'S"26IT4G. "<5 ,#D244S"26IT47. "<J ,#D24%S"26IT%'. "< ,#D245S"26IT%4. "<& ,#D24JS"26IT%%. "<! ,#D24 S"26IT%5. "M% ,Z2<5S"26IT44. "M5 ,"26IT4%. "MJ ,"26IT45. "M ,"26IT4J. "M& ,"26IT 4 . "M! "+! ,2L<;S62"5S6IT!. "+& ,T5S6IT&. 822 822 822 822 #822 #:+/ GID GID GID GID #GID :+)+T "+% ,Z2<'S#6I'. "B% ,Z2<%. "B! ,TJ. "G5 ,T;)2%. "GJ ,T;)24. ZT#L% ZT#L4 "DJ ,62"4. "D ,Z2<4. "D& ,T4. 7 8 9 I F 9 :0 :: :+ :, :7 :8 8F 89 90 9: 9+ 9, 97 98 99 9I 9F 99 I+ I, I7 I8 I9 II F, F7 #nalog J #nalog #nalog & #nalog ! #nalog G #nalog 7 #nalog 4' #nalog 44 #nalog 4% #nalog 45 #nalog 4J #nalog 4 Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L 7 8 8F 89 90 9: 9+ 9, 97 98 99 9I 9F 99 I+ I, I7 I8 I9 II F, F7 #nalog J #nalog Kn.c.L Kn.c.L "% ,pulsante utente. T+$" Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L DT$/ A4 DT$/ A% DT$/ A5 DT$/ AJ G)$ I+TL+D ,]] L+D . G)$ ;I>;// 6I% 6I4
GSM:9 GSM0:
;CC ;CC ;CC ;CC ;CC re4 G?D G?D G?D G?D G?D 12S Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L
;CC ;CC ;CC ;CC ;CC re4 G?D G?D G?D G?D G?D 12S Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L Kn.c.L G)$'5 G)$4' G)$44 G)$'% G)$' G)$'J G)$'G G)$'7 G)$'!
5% di 5!
TiGiDino, il Factotum
Generale
0 0 4 > 04
1 1 5 5 1 30 1
1 1 1 1 1 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 & & 0 3' = 4'& 0 0 0 0 0 0 0 3' 3' 3' 3' 0 0 04> 0 0 0 0 0 0 3' 3' 3' 0<' 0
' 0 < 00 04
03 ''') ?3 ''48
?4 ''4+ &' ''34 4&& ''GG 4&< '0'' 4&> '0'0 4&= '0'4 4&; '0'3 4<' '0'? 4<0 '0'& 4<4 '0'< 4;4 '04? 344 '0?4 3&4 '0<' 3=4 '0>E 3=3 '0>G 3=? '0=' &00 '0GG &04 '4'' &03 '4'0 &0? '4'4 &0& '4'3 &0< '4'? &0> '4'& &?> '443 &>> '4?0 <'> '4&G ><> '4GG ><= '3''
boolean bUte bUte )tring )tring bUte bUte )tring )tring )tring )tring boolean boolean
&0 ''33 "05 "5% 0100 1 4&> '0'0 4&= '0'4 4&; '0'3 4<' '0'? 4<0 '0'& 4<4 '0'< 4<3 '0'> 4;3 '04& 343 '0?3 3&3 '0<0 3=3 '0>G 3=? '0=' 51" 0"00 &03 '4'0 &0? '4'4 &0& '4'3 &0< '4'? &0> '4'& &0= '4'< &?= '44? &>= '4?4 1 1 1 1 1 1 30 30 30 30 1 1 1 1 1 1 1 1 30 30 30
# # 4 4 6ngresso alto 6ngresso basso 6ngresso alto 6ngresso basso false false 4 4 % %
In)ressi
Temperatura
@sc ite
0@T:
bUte
55 di 5!
TiGiDino, il Factotum
)econdi attivazione uscita % :ipristino :elD dopo blacNout )econdi attivazione apricancello )econdi inversione momentanea uscita 4 )econdi inversione momentanea uscita % )tato relD 4 )tato relD % Karea liberaL Knon utilizzataL Iumeri telefonici Karea liberaL
><; '3'0 >>' '3'4 >>0 '3'3 >>4 '3'? >>3 '3'&
1 1 1 1 1
1 1 1 1 1 1 1 1 19" "5%
><; '3'0 >>' '3'4 >>0 '3'3 >>4 '3'? >>3 '3'& >>? '3'< >>& '3'> 0'43 '3GG ?';& 'GGG =0;0 0GGG
5 true
5 5 false false
1ubrica Gap
c(ar
5J di 5!
TiGiDino, il Factotum
lle)ato 7 H Comandi
TiDiGino * Comandi
Gruppo /unzione 6nvio )$) o squilli allTavvio /iltro c(iamate entranti ,accetta solo numeri autorizzati. "refisso internazionale ,maP caratteri. 2ambio "ass0ord ,numero di cifre. :eset ,ricarica impostazioni personalizzate. 6nvia )$) di risposta )alva impostazioni personalizzate 8isualizza stato 6ngressi e Cscite 2omandi DT$/ con pass0ord Testo startup ,maP 5' caratteri. 8isualizza tempi di inibizione ingressi 8isualizza allarme ingressi #llarme ingressi Tempo inibizione ingresso 4>% ,'X 7 minuti per evitare dopo allarme altri )$) o squilli. 8isualizza livelli allarme Livello allarme ingresso #lto>=asso>8ariazione ,presenza tensione in ingresso. 8isualizza tempi osservazione ingressi ,tempo di preallarme. Tempo di osservazione 6ngresso 4>% ,'X 7 secondi S tempo di preallarme. Testo allarme alto ingresso ` ,maP 5' caratteri. Testo allarme basso ingresso ` ,maP 5' caratteri. #zzera tempo di inibizione ingresso P a fine allarme 8isualizza le temperature di allarme #llarmi temperatura Temperatura allarme massima ,S4' X @G V2. Temperatura allarme minima ,S4' X @G V2. 8isualizza tipo funzionamento Tipo di funzionamento ,#W#utomatico, $W$anuale, TWTermostato. 6steresi ,decimi di grado. Temperatura normale ,S4' X @G V2. :ic(iedere la temperatura Testo allarme temperatura massima ,maP 5' caratteri. Testo allarme caldaia ,maP 5' caratteri. )intassi 8ariabile 2ollegata #88 /6L ":+ "?D 8alore "redefinito true false @57 4%5J
A!!:+'(/'**, *-.:+'(/'**, /0E:+12e3i , /45:+1s6,;+7e61s6, 0E$;+1s6, 0-$/:+'(/'**, $A!;+1s6, $TA8 $-):+'(/'**, T$9:+:es:o, -(-8 A.-8 A.-:+'(/'**, -(-+1/",:+0;59, .-!8 .-!+1/",:+A/</!, '$$8 '$$+1/",:+0;59, T-(+1/",A:+:es:o, T-(+1/",<:+:es:o, T-=+1/",:+'(/'**, A..8 A..:+'(/'**, A..&A>:+?,+0;99, A..&-(:+?,+0;99, *9(8 *9(:+A/&/T, -$T:+0;"0, ('0:+?,+0;99, TE&/8 T@-:+:es:o, T-(:+:es:o,
Generale
:6)"
true
false
In)ressi 0ptoisolati
L684, L68% ;))4, ;))% ;))4, ;))% T6I4#, T6I%# T6I4=, T6I%= T6a4, T6a% I;:, #LL$#Z, #LL$6I #LL #LL$#Z #LL$6I /CI /CI 6)T I;: Temp8al, Temp$aP, Temp$in TB6 T6I
Temperatura
false % 4!
%4
5 di 5!
TiGiDino, il Factotum
#llarme Temperatura $inima S , 4%
Testo allarme temperatura minima ,maP 5' caratteri. #zzera temperature minima e massima #ttiva>Disattiva :elD P Tempo di attivazione :elD P ,'W=istabile. 8isualizza stato :ipristino :ipristino :elD dopo blacNout Tempo di attivazione apricancello ,'W=istabile. Tempo di inversione momentanea stato :elD P ,4X7 secondi. 2ancellazione totale lista apricancello ,tranne i primi G numeri. 2ancella numero da lista apricancello 8isualizza numeri apricancello ,pagina gruppi di G. $emorizza numero lista apricancello ,maP 4& caratteri. 8isualizza numeri preferenziali ,prime G posizioni. 2ancella numero preferenziale in posizione K4XGL $emorizza numero preferenziale in posizione K4XGL ,maP 4& caratteri. Iumeri preferenziali a cui verranno inviati gli )$) Iumeri preferenziali a cui verr fatto uno squillo 8isualizza ingressi analogici 8isualizza ingressi digitali 8isualizza uscite digitali 6mposta uscita digitale 8isualizza uscite "?$ 6mposta uscita "?$ 8isualizza contenuto memoria ++":;$ seriale )crive valore nella memoria ++":;$ seriale
T.':+:es:o, T0E$ '9T+1/",:+'(/'**, '9T+1/",:+0;59, 0-/8 0-/:+'(/'**, TA):+0;59, T-&+1/",:+1;9, 5A);+1s6, 5A):+7Am,;+1s6, &A)8:+";3",;+1s6, &A):+7Am,;+1s6, (9&8;+1s6, (9&+1;8,;+1s6, (9&+1;8,:+7Am,;+1s6, $&$+1"3...8,:+'(/'**,;+1s6, !')+1"3...8,:+'(/'**,;+1s6, A-(8 5-(8 5'9T8 5'9T+4;13,:+0/1, /4&8 /4&+4;13,:+0;"55, /EEB+ad2,;+siCe, /'BE+ad2,;+siCe,:+Dal,
false '
@scite a 1elN
true 5 5
1ubrica
5 5
))iuntivi
' '
0ote8 9 : possibile usare indifferentemente il maiuscolo o il minuscolo; 9 i caratteri di separazione <8< e <;< possono essere sostituiti da un semplice spazio .unica eccezione sono i comandi PEE= e P#=E/> ma attenzione a non inserirne pi? di uno@ 9 il comando FI"#$O%&OFF'> pur essendo presente e funzionante> non iene gestito .non riesco a comprenderne lAutilitB/; 9 il comando SI(#$O%&OFF' non iene gestito poichC i comandi DTMF sono tutti condizionati dallAinserimento della pass%ord .una tantum/;
5& di 5!
TiGiDino, il Factotum
: +
Cscite
, 7 8 9
6ngressi
I F 9 0 O P
Generale
Termina telefonata +ntra nella modalit di programmazione +sci dalla modalit di programmazione
"rogramma
0ote8 durante la fase di connessione e riconoscimento> il sistema in iando tre beep consecuti i comunica che per procedere : richiesta la pass%ord; una olta che la pass%ord inserita : stata riconosciuta> il sistema emette un beep> che indica che la pass%ord : stata accettataD
5! di 5!