Introduzione al Progetto Negli ultimi anni abbiamo assistito ad una crescente diffusione dei dispositivi a controllo remoto nella vita di tutti i giorni. Fino a qualche tempo fa il telecomando ad infrarossi della televisione o dello stereo, era l’unica applicazione del controllo a distanza presente nelle nostre case. Attualmente, invece, si registra una proliferazione di periferiche senza fili in ambito lavorativo così come domestico. Per interagire con un numero sempre crescente di applicazioni di questo tipo, spesso collocate in una stessa regione operativa, si manifesta sempre più la necessità di un loro inserimento entro un’unica rete di comunicazione wireless gestibile attraverso un’unica interfaccia di controllo standard. Queste reti sono le “Home Area Network” (HAN) ed uno dei protocolli più promettenti con cui gestirle prende il nome di “Zigbee”. Per questo motivo, tale protocollo, è stato utilizzato per l’implementazione di un’applicazione biomedicale. L’introduzione di un’innovazione nella tecnologia del controllo remoto è giustificata, in parte dal numero sempre più alto di sistemi da controllare e, in parte dall’inadeguatezza degli standard già esistenti in alcune applicazioni come l’automazione ed il controllo di infrastrutture domestiche e commerciali; applicazioni per cui Zigbee risulta, invece, esplicitamente studiato nella sua formulazione. Se si prende come esempio la già citata tecnologia ad infrarossi con cui si può attualmente accendere la TV, aprire la porta del garage o il cancello, accendere le luci, ecc…, essa presenta un problema legato al fatto che supporta una comunicazione di tipo punto-punto, per cui si deve tipicamente disporre di tante unità di controllo quanti sono i dispositivi slave comandati. Inoltre una comunicazione IR necessita di essere a vista per la sua attuabilità, per cui gli ambienti domestici, tanto per restare in tema, risulterebbero difficilmente controllabili da un’unica postazione. Invece la realizzazione di una rete HAN a radiofrequenza risolve facilmente entrambi i problemi, in quanto non necessita di comunicazione a vista ed è gestibile nel suo complesso tramite un unico nodo coordinatore. Quello di “Wireless Area Network” non è certo un concetto nuovo; al contrario alcuni standard come WiFi o Bluetooth con cui è possibile attuare il trasferimento di informazioni 1 tra PC o altre periferiche collegate tra loro entro una stessa rete senza fili,risultano già ben consolidati e maturi. Il problema, tuttavia, è legato al fatto che tali tecnologie non rispondono alle peculiari esigenze delle reti di sensori o attuatori. Dispositivi come i rivelatori di fumo o gli allarmi antifurto, tanto per citare dei sistemi largamente diffusi, trascorrono risaputamene gran parte del tempo in modalità “sleep”, attivandosi solo nel caso si verifichi un evento anomalo da segnalare. Una loro possibile realizzazione wireless si fonderebbe su due sostanziali imperativi: basso costo del nodo che li collega alla rete (basso rispetto a quello del sensore di rilevazione) e consumo di potenza estremamente ridotto. Inoltre tali tipi di applicazioni richiedono configurazioni potenzialmente complesse del network in maniera da garantire la copertura di superfici ambientali anche estese e, di contro, non presentano eccezionali pretese in termini di velocità di trasmissione dei dati, tenuto conto della natura “semplice” dell’informazione che deve essere trasferita. Gli standard attuali supportano, prevalentemente, applicazioni ad alto data-rate per consentire il trasferimento efficiente di voce, video, immagini, file, ecc…, non risultano però ottimizzate per il basso consumo dei singoli nodi di rete. Di conseguenza, l’adozione di tali standard per le applicazioni di cui sopra, costringerebbe l’utente ad una frequente sostituzione delle batterie a bordo di ciascun terminale, considerati i pesanti protocolli che devono essere supportati. Già questo, senza considerare gli annessi problemi di costo, rappresenterebbe un serio vincolo alla diffusione delle HAN. La proliferazione del wireless anche in questa direzione, si fonda quindi, sulla disponibilità di un protocollo semplice e funzionale, nonché sulla progettazione elettronica dei nodi selettivamente orientata al basso consumo di potenza. In questo lavoro di tesi vengono ripresi tutti questi concetti cercando di approfondirli per la realizzazione di un radiocomando in grado di gestire l’apertura a distanza di microelettrovalvole per una particolare applicazione medica in ambito odontoiatrico. L’applicazione prevederà lo sviluppo di un modulo ricevitore da inserire alla poltrona dentistica che permette, tramite un trasmettitore con interruttori a pedali opportunamente realizzato, di comunicare in modalità wifi con quest’ultimo (figura 1) . 2 WIFI Modulo Ricevitore Modulo Trasmettitore Figura 1: Schema dell’applicazione Ogni pressione del pedale farà aprire la corrispondente microelettrovalvola che consentirà il flusso di uno specifico liquido. La chiusura di tali elettrovalvole è stata programmata per avvenire con una successiva pressione del pedale stesso. Il Trasmettitore essendo in effetti un radiocomando può essere alimentato con un opportuno regolatore di tensione esterno da 9V oppure per mezzo di una pila/batteria a 9V. Il Ricevitore, invece, prevede che l’alimentazione a 9V gli venga fornita direttamente dalla poltrona dentistica attraverso un regolatore di tensione a 9V. Inoltre i relè a 5V, collegati in uscita al modulo ricevitore, permetteranno di microelettrovalvole realizzare il collegamento tra ricevitore e consentendo un isolamento da queste ultime che sono alimentate a 12V e 24V attraverso regolatori presenti sulla poltrona stessa. Nello specifico le microelettrovalvole che servono a far fluire il liquido, sono alimentate a 12V mentre l’unica microelettrovalvola che serve al risucchio del liquido stesso, 3 quella relativa al pedale di colore rosso, è alimentata a 24V perché necessita di una potenza maggiore in relazione alla specifica operazione che dovrà svolgere. Realizzazione Ricetrasmettitore 5.1 - Realizzazione circuito Trasmettitore Il circuito Trasmettitore realizzato (figura 5.1) è in grado di gestire a distanza l’apertura di microelettrovalvole per una particolare applicazione in ambito odontoiatrico. Figura 5.1: Realizzazione Trasmettitore su basetta di prova Al trasmettitore sono stati applicati quattro pulsanti/pedali la cui pressione sarà riconosciuta dal microcontrollore PIC16F628 il quale, a seconda del pulsante premuto, invierà al modulo Xbee trasmettitore un segnale codificato che verrà riconosciuto dal circuito ricevitore per l’attivazione della corrispondente microelettrovalvola. 4 Figura 5.2: inquadrature varie del trasmettitore su basetta di prova 5.1.1 - Circuito Trasmettitore Utilizzando il software Eagle, come descritto dettagliatamente nel Capitolo 2, è possibile realizzare una rappresentazione 3D del progetto. Si descriverà per prima come è stato realizzato il circuito(figura 5.3). Figura 5.3: Circuito Trasmettitore 5 5.1.2 - Componenti del circuito Trasmettitore I vari componenti che caratterizzano tale lavoro di tesi sono: 1. Regolatore di tensione 9V. 2. Regolatore di tensione 5V. 3. Interfaccia XbeePC. 4. Interfaccia PIC16F628 PC. 5. Modulo Xbee. 6. Altri componenti utilizzati. 1 Regolatore di tensione a 9V: In un qualunque circuito elettronico, una delle parti più importanti è lo stadio dell'alimentazione. Esiste tutta una serie di regolatori di tensione in grado di fornire al circuito le giuste tensioni. Il regolatore di tensione variabile per tensione positiva utilizzato, è l’ LM317 prodotto dalla National Semiconductor. Osserviamo più da vicino questo componente: LM317: tensione positiva. I regolatori di tipo LM317 permettono di ottenere delle tensioni positive variabili mediante solo due resistenze. Inoltre esistono, sostanzialmente, due sotto-serie del circuito integrato LM317: LM317 e LM317L. La differenza riguarda la corrente che sono in grado di fornire in uscita: fino a 1,5A e fino a 100mA, rispettivamente. Può essere utile sapere che il ripple, cioè l'ondulazione in uscita, è al massimo di -80db ovvero -10.000 volte il valore della tensione nominale. Quindi per Vout=5volt, il ripple è di solo 0,5mV e la potenza massima dissipabile è di 15W. Per basse tensioni in uscita è necessario prestare un po' di attenzione per stabilire la massima tensione in ingresso, tenendo conto della corrente che si andrà a prelevare. Nella tabella si possono vedere le principali caratteristiche per ciascuna sotto-serie. 6 Tabella 11: Caratteristiche dei regolatori LM317/LM317L In figura 5.4 viene mostrato il circuito elettronico completo di un regolatore di tensione positiva fissa. E' presente inoltre l'elenco dei valori dei componenti. Il diodo ‘D1’ serve per scaricare il condensatore ‘C3’ durante lo spegnimento in modo che non venga danneggiato il circuito integrato; ‘D2’ per scaricare ‘C4’ in caso di cortocircuito in uscita; ‘C4’ stabilizza la tensione di regolazione sul terminale "R". La tensione in uscita viene stabilita mediante il valore di ‘R2’ in quanto R1=220 Ohm, come viene consigliato dalla casa costruttrice. C'è inoltre una formula (semplificata) per determinare ‘Vout’ , nota ‘R2’ , tenendo conto che ‘Vout’ è espresso in Volt e ‘R2’ in Ohm: Vout= 1,25 * ( 1 + R2 / R1 ) Conoscendo invece ‘Vout’ è possibile risalire al valore di ‘R2’ , mediante la formula posta sotto, tenendo conto che ‘R2’ è espresso in Ohm, Vout in Volt: R2= ( (Vout/1,25) - 1 ) * R1 Il valore di ‘R2’ calcolato difficilmente corrisponderà ad uno standard. Sarà quindi necessario scegliere il valore standard più vicino e poi utilizzare la prima formula per ricavare la tensione ‘Vout’ con il valore standard di ‘R2’. Questo consentirà di valutare di quanto ‘Vout’ differisca dal valore che si voleva ottenere. Per diminuire ancora di più tale scarto, è possibile variare leggermente il valore di ‘R1’ scegliendo tra 270Ohm e 560Ohm. Lo scarto in percentuale può essere calcolato mediante la seguente formula: %= 100 * (1 * (valore ideale - valore reale)) Per ‘R1’ e ‘R2’ si possono usare delle normali resistenze da 1/4 di Watt. 7 Figura 5.4: Regolatore di tensione positivo variabile per Vout=3.3V Figura 5.5: Regolatore di tensione variabile per il modulo Trasmettitore e Ricevitore I componenti che sono stati utilizzati risultano: R1= 220 Ohm da 1/4 di Watt R2= vedere formula nel testo C1= 47-100 uF C2= 100 nF C3= 1-10uF C4= 10uF D1= 1N4007 D2= 1N4007 IC1= LM317 o LM317L NOTA: Il valore del condensatore C1 deve essere maggiore di quello di C3, per 8 evitare di danneggiare IC1. Il Regolatore di tensione così realizzato utilizzerà una tensione d’ingresso pari a 9V e fornirà in uscita, per mezzo del resistore variabile ‘R2’, una tensione pari a 3.3V che sarà l’alimentazione necessaria per il corretto funzionamento dei moduli Xbee. 2 Regolatore di tensione a 5V: Nell'alimentare i circuiti integrati , nello specifico i microcontrollori PIC16F628 è utile una tensione di 5 volt ma spesso questo valore non viene erogato dall'alimentatore stabilizzato in possesso. Nel nostro caso i moduli, sia trasmettitore che ricevitore, sono alimentati da un regolatore di tensione o da una batteria da 9V. Lo schema utilizza un integrato della serie LM78xx (regolatore di tensione positiva) che può essere facilmente sostituito con uno della serie LM79xx (regolatore di tensione negativa) semplicemente collegando il piedino di regolazione alla massa e i piedini ‘in’ e ‘out’ al positivo. Lo schema del circuito realizzato è il seguente: Figura 5.6: Circuito regolatore con Vout=5V 9 Figura 5.7:Circuito regolatore 3D con Vout=5V per Trasmettitore e Ricevitore Componenti necessari: C1 = condensatore elettrolitico 220µF C2 = C3 = condensatori poliestere 100nF C4 = condensatore elettrolitico 100µF IC1= LM7805 / LM7905 R1 = resistenza 180 ohm DL1 = diodo led Attenzione: nella versione con 7905, il PIN GND di tale integrato va collegato al ‘+’ (in teoria diamo come riferimento al 7905 una tensione che per noi è positiva, quindi è come se il ‘+’ fosse la massa, e i 5V fossero una tensione negativa). Il cuore del circuito è l'integrato regolatore di tensione che fornisce in uscita 5V avendo in ingresso una tensione continua a 9V. Essa è presa da un regolatore esterno o da una pila/batteria nel caso del modulo trasmettitore. E’ possibile anche inserire nella configurazione base del regolatore un led con in serie una resistenza ‘R1’ da 180Ohm collegato in parallelo all'uscita, la quale ci avvisa di eventuali cortocircuiti, spegnendosi. In caso di sovraccarico (aumento eccessivo della temperatura dell'integrato) quest'ultimo limiterà la corrente uscente facendo affievolire la luminosità del LED. E' consigliabile non assorbire correnti elevate se non si fissa l'integrato ad un adeguato dissipatore di calore; in questo caso la corrente non deve comunque superare 1 Ampere. 10 Figura 5.8: Diagramma di connessione del regolatore LM7805 Le caratteristiche elettriche del regolatore sono mostrate nella figura seguente. Una più dettagliata rappresentazione di questo componente è presente nel suo specifico datasheet. Tabella 12 : Caratteristiche elettriche del regolatore LM7805 3 Interfaccia XBEE PC Attraverso tale circuito si riesce ad interfacciare tramite porta seriale il modulo Xbee ed il PC. Ciò permetterà poi tramite il software della DIGI X-CTU, visto nel capitolo precedente, di riuscire a configurare e modificare i parametri sul modulo stesso. 11 Figura 5.9: Circuito d’interfaccia XbeePC attraverso Max232 Figura 5.10: Circuito d’interfaccia 3D XbeePC attraverso Max232 Per il posizionamento su circuito del modulo Xbee si sono utilizzati degli appositi supporti (figura 5.11). Ciò consentirà una facile lettura dei pin da utilizzare in fase di progettazione. Figura 5.11 : Supporto per il montaggio dei moduli Xbee 12 Uno dei componenti principi dei circuiti d’interfaccia è il MAX232. E’ quindi opportuno rappresentarne i pin ed il loro ruolo(figura 5.12). Figura 5.12: Descrizione del Max232 4 Interfaccia PIC16F628 PC Come nel caso dell’interfaccia del modulo Xbee con il PC i collegamenti sono simili anche per l’interfaccia realizzata nel caso di microcontrollore PIC con il PC. Si è comunque preferito utilizzare i piedini 10,9,8,7 del MAX232 perché hanno la stessa funzione di quelli 11,12,13,14 evitando così di utilizzare gli stessi piedini del collegamento con Xbee. Nel grafico (figura 5.13) sarà proposto il collegamento iniziale e non quello poi utilizzato in fase di progettazione. 13 Figura 5.13 : Circuito d’interfaccia PIC16F628PC attraverso Max232 I quattro condensatori collegati al MAX232 sono di 1uF; se si utilizza MAX232A o ST232 essi possono essere di 100nF. Figura 5.14: PIC16F628 3D Una volta realizzata l’interfaccia è possibile, tramite il collegamento seriale con il nostro personal computer, far dialogare il microcontrollore PIC16F628 con l’HyperTerminal del PC. Prima però bisogna definire la porta ‘COM’ su cui è collegata l’interfaccia(figura 5.15) ed alcuni parametri fondamentali per la comunicazione e per la corretta configurazione dell’ HyperTerminal . Figura 5.15: Configurazioni per software HyperTerminal Come si nota dalla figura 5.16 è opportuno, per la corretta configurazione dell’HyperTerminal, tener presente i seguenti parametri: Bit per secondo = 9600. Bit di dati =8 Bit di parità = Nessuno Bit di stop =1 14 Controllo di flusso = Nessuno Figura 5.16: schermata iniziale del software HyperTerminal Eseguite tutte le istruzioni, sarà possibile visualizzare le eventuali stampe a video previste nella programmazione in linguaggio C per verificare gli errori commessi in fase di programmazione e progettazione. 5 Moduli Xbee I moduli Xbee utilizzati in fase di progettazione sono stati ampiamente discussi nel Capitolo 4. In questo capitolo verranno soltanto visualizzati. Figura 5.17: Moduli e circuito virtuale Xbee Le caratteristiche più importanti di questi componenti sono state riassunte nella tabella seguente: 15 Tabella 13: Caratteristiche principali dei moduli Xbee 6 Altri componenti utilizzati Si è pensato di inserire degli interruttori sia sul trasmettitore che sul ricevitore per poterli disattivare nel momento in cui non si utilizzano. Ciò consentirà un minor consumo delle batterie nel caso del Trasmettitore. Figura 5.18: Vista 3D dell’interruttore utilizzato nel modulo Trasmettitore e Ricevitore Gli interruttori inseriti (figura 5.19) sono normalmente aperti e vengono utilizzati per verificare l’intero funzionamento del progetto. Comunque in fase di realizzazione finale saranno sostituiti con quelli a pedali per una maggiore manovrabilità da parte del medico. 16 Figura 5.19: Pulsantiera e pedaliera utilizzabili nell’applicazione del radiocomando Il connettore (figura 5.20) è utilizzato per collegare il circuito all’alimentazione esterna o per mezzo di un regolatore di tensione a 9V(ricevitore) o per mezzo di una pila/batteria a 9V(trasmettitore). Figura 5.20: Connettore 3D per collegare il circuito con le alimentazioni esterne I dip switch (figura 5.21) sono di fondamentale importanza nel progetto poiché consentono alle piste realizzate per interfacciare l’Xbee con il Personal Computer di non interferire con le piste utilizzate per interfacciare invece il PIC16F628 con il PC. Di conseguenza si eviteranno disturbi quando si dovranno programmare tali dispositivi. Figura 5.21: Dip switch E’ tramite le seriali (figura 5.22), due per dispositivo, che avvengono le comunicazioni con il Personal Computer dei moduli Xbee e dei PIC utilizzati. 17 Figura 5.22: Connettori Seriali 3D utilizzati nel progetto I relè utilizzati sono gli SRD-S-105D della casa costruttrice SANYOU. Figura 5.23: Relè a 5V I vari tipi di relè vengono distinti per la tensione di pilotaggio che può essere ricavata dalla sigla sottostante: Figura 5.23: Relè a 5V Le specifiche dei Relè sono elencate nella tabella seguente: 18 Tabella 14: Specifiche dei Relè SRD-S-105D della SANYOU Una volta elencate le fasi di progettazione del modulo trasmettitore, si realizzerà attraverso il software Eagle il suo circuito stampato (PCB) dove saranno visualizzati i collegamenti ottimizzati delle piste riferite sia al lato superiore(colore rosso) sia a quello inferiore (colore blue). Figura 5.24: Circuito stampato(PCB) del Trasmettitore Si rappresenterà ora il circuito in forma tridimensionale avendo utilizzato l’apposito script Eagle 3D(figura 5.25). 19 Figura 5.25: Trasmettitore 3D realizzato con lo script Eagle 3D Figura 5.26: piste sul circuito stampato del Trasmettitore 3D 20 Figura 5.27: Inquadratura laterale del Trasmettitore 3D 5.2 - Realizzazione circuito Ricevitore Il circuito Ricevitore (figura 5.28) avrà il compito, una volta ricevuto il carattere in relazione al pulsante premuto sul circuito trasmettitore, di attivare il relè corrispondente. 21 Figura 5.28: Realizzazione Ricevitore su basetta di prova Tale relè piloterà l’apertura di una specifica elettrovalvola ad esso collegata. Tre di queste elettrovalvole verranno utilizzate per far fluire del liquido; la quarta, corrispondente al led di colore rosso, servirà come valvola di risucchio di tale liquido. Il microcontrollore PIC utilizzato riconoscerà non solo il carattere inviato, ma consentirà anche di spegnere il relè se questo è acceso. 22 Figura 5.29: Inquadrature del Ricevitore su basetta di prova 5.2.1 - Circuito Ricevitore Così come si è realizzato un circuito 3D per il Trasmettitore, è possibile realizzarne uno per il Ricevitore (figura 5.30). Si descriverà per prima come si è progettato il circuito. Figura 5.30: Circuito Ricevitore 23 5.2.2 - Componenti del circuito Ricevitore In questo paragrafo saranno descritti i vari componenti che caratterizzano il Ricevitore. Non verranno presi in considerazione quelli già trattati nel paragrafo precedente (Trasmettitore). 1. Regolatore di tensione 9V. 2. Regolatore di tensione 5V. 3. Interfacciamento XbeePC. 4. Interfacciamento PIC16F628 PC. 5. Modulo Xbee . 6. Rete per pilotaggio relè. 7. Altri componenti utilizzati. 6 Rete per pilotaggio Relè Figura 5.31: Circuito di pilotaggio dei Relè Lo schema elettrico è molto semplice e comprende quattro relè con relativi transistor di pilotaggio e led di segnalazione. Il carattere in arrivo al modulo ricevitore verrà opportunamente analizzato dal PIC16F628, il quale permetterà 24 di definire il corrispondente relè da attivare. Tutto il circuito di pilotaggio dei relè viene alimentato a 5 volt così come i relè. Siccome i relè da 12 volt continui sono più facilmente reperibili, potremmo montare questi ultimi al posto di quelli a 5 volt. In tal caso basterà distaccare il terminale dei relè che va alla tensione di 5volt per collegarli ad un alimentatore che fornisca anche la 12 volt. Poi si farà riferimento al suo circuito stampato (PCB figura 5.32). Figura 5.32: Circuito stampato(PCB) del Ricevitore Si rappresenterà ora il circuito in forma tridimensionale avendo utilizzato l’apposito Script Eagle 3D(figura 5.33). 25 Figura 5.33: Ricevitore 3D realizzato con lo script Eagle 3D Figura 5.34: Inquadratura piste sul circuito stampato del Ricevitore 3D 26 Figura 5.35: Inquadratura laterale del Ricevitore 3D Possibili miglioramenti futuri Le prime specifiche del protocollo ZigBee sono state ratificate nel dicembre del 2004, ed ora la ZigBee Alliance continuerà a convalidare tali specifiche attraverso test di interoperabilità, scalabilità e miglioramenti futuri. L'Alleanza promuoverà l'uso della tecnologia ZigBee nelle applicazioni del mondo reale per sostenere le nuove e creative domande per il mercato, così come faciliterà l'adozione dello standard ZigBee in tutto il mondo. L’obiettivo principale di questo lavoro di tesi è stato la realizzazione di un radiocomando con relativo modulo ricevitore. Nei circuiti realizzati sono state inserite le corrispondenti interfacce per effettuare le configurazioni dei moduli Xbee che gestiscono la comunicazione wifi. Si è inoltre utilizzato il programma HyperTerminal di Windows per verificare, attraverso messaggi a video, eventuali errori nella programmazione. Le future applicazioni potranno prevedere l’utilizzo di connettori usb, sostitutivi di quelli seriali, per la comunicazione con il Personal Computer. Il motivo di tale sostituzione è dovuto 27 alla mancanza sempre più crescente di connettori seriali a 9 poli su computer portatili. Un’ulteriore modifica sull’applicazione potrebbe essere la sostituzione del regolatore di tensione variabile positivo con un regolatore specifico (LM11173.3), utilizzato per ottenere un’alimentazione di 3.3V sui moduli Xbee. L’ LM1117-3.3 consentirà di recuperare spazio sul circuito e diminuire le dimensioni dell’applicazione stessa, ottenendo una maggior portabilità. E’ possibile inoltre, negli sviluppi futuri, migliorare l’applicazione aggiungendo ad essa un’interfaccia virtuale user-friendly del radiocomando dal PC(figura 5.36). Il motivo di prevedere tale interfaccia è dato dal sempre più crescente uso di computer su applicazioni di vario genere. Figura 5.36: Radiocomando virtuale L’interfaccia virtuale potrebbe essere implementata aggiungendo, ad esempio, sul circuito ricevitore un integrato pre-programmato della Nutchip. Poi utilizzando il software ‘Commander’ i tasti si possono cliccare come su un radiocomando vero, inoltre, sono presenti 8 led (4 rossi e 4 verdi) che mostrano in tempo reale gli ingressi e le uscite del chip, ed un display per sapere sempre in quale stato si trova il Nutchip. Tale interfaccia e relativo circuito potrebbe essere utile per: Comandare a distanza col PC; ad esempio cliccando sullo schermo si accenderanno o si spegneranno dei relè. Visualizzare sul PC ingressi e sensori remoti; ad esempio per verificare se una microelettrovalvola è ON o OFF. 28 Per usare il ‘Commander’ , che rappresenta il software del radiocomando(figura 5.36), il Nutchip deve essere collegato al PC tramite l'interfaccia seriale (la stessa che si è utilizzata per la programmazione dei PIC e dei moduli Xbee). Bisogna però ricordare che lo standard delle porte seriali (RS232), per il corretto collegamento, indichi in una decina di metri la lunghezza massima del cavo di prolunga seriale. Appendice per la programmazione dei PIC: 3.6.4 - Codice di programmazione del Trasmettitore Prima di visualizzare il codice di programmazione del trasmettitore implementato in C è opportuno rappresentare, come definito nei paragrafi precedenti, il FlowChart che ne descriverà i passi di programmazione (figura 3.15). Figura 3.15: Flow-Chart Trasmettitore 29 Realizzato il Flow-Chart del trasmettitore è ora possibile visualizzarne il codice implementato in linguaggio C del programma sviluppato: Il Codice sopra descritto con il relativo flow-chart del modulo trasmettitore definisce queste essenziali istruzioni per la programmazione dello stesso: Definizione delle librerie relative al linguaggio C (include..). 30 Definizione dei fuses come descritto nel Capitolo 3. Definizione degli use (ritardi ed interfacce seriali uart utilizzate dal PIC). Settaggi variabili di progetto. Settaggi dei registri del PIC16F628 (set_tris_b e set_tris_a). Definizione delle porte utilizzate come input ed output. Una volta definite le direttive di programma si passa al cuore del codice implementato: Attraverso il ciclo ‘while( )’ il programma attende la pressione della pulsantiera / pedaliera su uno dei pin precedentemente impostati come input. Il pulsante premuto è riconosciuto per mezzo di una variazione della tensione di uno dei pin d’ingresso da 5V a 0V. In seguito saranno le istruzioni ‘if( ) ed else( )’ che definiranno quale area di codice eseguire in base alle condizioni imposte su tali pin. Una volta riconosciuto il tasto premuto, il codice accenderà un led che ha il solo compito di indicare all’utente se l’operazione è stata eseguita correttamente. L’accensione del led si avrà rispettando i ritardi previsti in fase di progettazione (1 secondo) attraverso l’istruzione ‘delay( )’ . Successivamente sarà inviato dal pin ‘Tx’ del PIC16F628 il dato codificato (printf(“carattere”)) attraverso caratteri così definiti: Tasto 1 (pin B0) = ‘A’. Tasto 2 (pin B3) = Tasto 3 (pin B5) ‘D’. = ‘C’. Tasto 4 (pin B6) = ‘B’. Il dato così definito sarà inviato al ‘Max232’ che consentirà di interfacciare il PIC16F628 al modulo Xbee. Tale segnale verrà poi inviato dal Max232 sul pin ‘Rx’ del modulo Xbee trasmettitore. Successivamente esso sarà inviato dal pin ‘Tx’ del trasmettitore al pin ‘Rx’ del modulo Xbee Ricevitore. 3.6.5 - Codice di programmazione del Ricevitore Ora si realizzerà il Flow-Chart relativo al modulo Ricevitore che dovrà comunicare con il modulo trasmettitore appena visto (figura 3.16) . 31 Figura 3.16: Flow-Chart Ricevitore Il Codice in linguaggio C del modulo Ricevitore risulterà essere: 32 33 34 Il Codice sopra descritto con il relativo flow-chart del modulo Ricevitore definisce queste essenziali istruzioni per la programmazione dello stesso: Definizione delle librerie relative al linguaggio C (include..). Definizione dei fuses come descritto nel Capitolo 3. Definizione degli use (ritardi ed interfacce seriale uart utilizzate dal PIC). Settaggi variabili di progetto. Settaggi dei registri del PIC16F628 (set_tris_b e set_tris_a). Definizione delle porte utilizzate come input ed output. Una volta definite le direttive di programma si passa al cuore del codice implementato: Attraverso il ciclo ‘while( )’ il programma attende la ricezione del carattere sul pin ‘Rx’ del modulo Xbee Ricevitore e lo direziona attraverso il pin ‘Tx’ al ‘MAX232’. Il dato verrà poi inviato al pin ‘Rx’ del PIC16F628 precedentemente impostato come pin di input. Tale microcontrollore risulta essere già fornito di interfaccia uart per la comunicazione. L’arrivo di un carattere è riscontrato attraverso l’istruzione ‘getc( )’ presente nel ‘while( )’ . In seguito saranno le istruzioni ‘if( ) ed else( )’ che definiranno quale area di codice eseguire in base alle condizioni imposte sui pin d’ingresso (in base al carattere ricevuto) . Una volta definito il carattere , il codice accenderà dei led che hanno il solo compito di indicare all’utente se l’operazione è stata eseguita correttamente e di definire il relativo relè attivato. Ovviamente i relè andranno collegati sui loro terminali d’uscita a delle microelettrovalvole. I led anche in questo caso rispetteranno i ritardi (di 1 secondo) previsti in fase di progettazione attraverso l’istruzione 35 ‘delay( )’ . Inoltre nelle condizioni sulle istruzioni di scelta (if e else) saranno presenti delle variabili di conteggio che permetteranno di definire se il led e la microelettrovalvola corrispondente va spenta o accesa. Di conseguenza lo spegnimento delle microelettrovalvole avviene sullo stesso pedale/pulsante come da progettazione. 36