You are on page 1of 141

Ttol: Sistema de comunicaci sense fils per captaci de dades meteorolgiques Alumne: Ramon Balaguer Altadill Director/Ponent: Pere

Mars Mart Departament: ESAII Data: 30 de juny del 2010

DADES DEL PROJECTE Ttol del Projecte: Sistema de comunicaci sense fils per captaci de dades meteorolgiques Nom de l'estudiant: Ramon Balaguer Altadill Titulaci: Enginyeria dinformtica Tcnica de Sistemas Crdits: 22,5 Director/Ponent: Pere Mars Mart Departament: ESAII

MEMBRES DEL TRIBUNAL (nom i signatura) President: Enric Xavier Martin Rull Vocal: Maria Jose Serna Iglesias Secretari: Pere Mars Mart

QUALIFICACI Qualificaci numrica: Qualificaci descriptiva: Data:

Projecte Final de Carrera

Sistema de comunicaci sense fils per captaci de dades meteorolgiques

Autor: RAMON BALAGUER ALTADILL Director: PERE MARS MART President: ENRIC XAVIER MARTIN RULL Vocal: MARIA JOSE SERNA IGLESIAS

Agraments:
En certa manera hi ha molta gent que ha contribut implcitament o explcitament al projecte per nombrar a aquells que ms mhan ajudat. Al meu pare Ramon Balaguer, a la meva mare Concepci Altadill i al meu germ Victor Balaguer per lajuda moral que sempre mhan ofert sense demanar res a canvi, i alguna ajuda extra amb les capces del prototip. Als que no son de la famlia per com si ho fossin per mi, a lAlex Fernndez, el Jordi Angulo i la Majdou Larhfiri. En especial magradaria nombrar a lordinador den Ferran Carreira que sha utilitzat per fer proves des de fora de casa i a Mariangels Bueno per fer de correctora, traductora i sser un motiu ms per acabar aquest projecte. A en Xavi Moldes per tota lajuda aportada amb el programari ja que els punters poden sser molt tradors. Al director del projecte Pere Mares, per guiar-me en els moments difcils. I per a finalitzar he de mencionar obligatriament a tots aquells usuaris del frum oficial de lArduino que tant han ajudat.

ndex temes:
AGRAMENTS: ............................................................................. 2 NDEX TEMES: ............................................................................ 3 NDEX FIGURES: ......................................................................... 6 MOTIVACI ................................................................................ 8 OBJECTIUS ................................................................................. 9 COM SER EL PROJECTE? ........................................................ 11 LARDUINO: .............................................................................. 15 QU S LARDUINO ?..................................................................... 15 PER QU ARDUINO? ...................................................................... 15 ON COMPRAR? .............................................................................. 18 Libelium: ............................................................................... 19 BrikoGeek: ............................................................................. 20 Sparkfun: .............................................................................. 21 QU S UN PROGRAMADOR AVR? ........................................................ 22 QU S UN MICROPROGRAMARI? ......................................................... 23 CARACTERSTIQUES TCNIQUES DE LARDUINO : ...................................... 23 QU S UN BUS D'INTERFCIE DE PERIFRICS SRIE? .................................. 26 EL MICROCONTROLADOR DE LARDUINO: ................................................ 30 LLICNCIES ................................................................................. 34 El maquinari i dissenys: ........................................................... 34 El programari i l'entorn de desenvolupament .............................. 36 COMPILADOR: .............................................................................. 37 LLIBRERIES: ................................................................................ 40 L'ENTORN DE DESENVOLUPAMENT ........................................................ 42 PANTALLES LED: ....................................................................... 45 PER QU NO UNA PANTALLA LCD? ...................................................... 45 LED MATRIX - SERIAL INTERFACE - RED/GREEN/BLUE .............................. 46 GRAVACI AMB EL PORT SPI: ............................................................ 49 ACTUALITZACIONS DE MICROPROGRAMARI: ............................................. 51 SOLUCI AL PROBLEMA DE MICROPROGRAMARI: ....................................... 52 MILLORES AL MICROPROGRAMARI: ....................................................... 53 PROBLEMA DE CONNEXI AMB EL PORT DE PROGRAMACI: ........................... 53 EL PROGRAMARI: ........................................................................... 54 ETHERNET SHIELD: ................................................................... 56 CONNEXI AMB SERVEIS DE LA XARXA: ................................................. 56 SERVIDOR WEB: ............................................................................ 59 ALLEUGERIMENT DE PES DE LA WEB:..................................................... 60 3

FULLES DESTIL EN CASCADA CSS3: .................................................... 61 JAVASCRIPT JQUERY: ...................................................................... 62 PROBLEMES AMB ELS PORTS DENTRADA I SORTIDA: ................................... 63 XBEE SHIELD: ........................................................................... 64 QU ES XBEE? ............................................................................. 64 AVANTATGES DEL XBEE ................................................................... 65 COM FUNCIONA? ........................................................................... 66 MODE PROGRAMACI ...................................................................... 67 COM PROGRAMAR AMB ARDUINO?........................................................ 68 XBEE EN MODE API ....................................................................... 69 COMANDES AT ............................................................................. 70 DIFERNCIES ENTRE XBEE Y XBEEPRO.................................................. 71 MICROSD SHIELD ..................................................................... 72 QU S FAT? ............................................................................... 72 QU S UNA TARGETA DE MEMRIA O TARGETA DE MEMRIA FLASH? ................ 74 PER QU UNA MICROSD? ................................................................. 75 FORMAT CSV ............................................................................... 76 SENSORS: ................................................................................. 77 TEMPERATURA: ............................................................................. 78 SENSOR D'INFRAROIG PASSIU: .......................................................... 80 SENSOR HUMITAT: ......................................................................... 84 SENSOR FOTORESISTNCIA: .............................................................. 86 DIAGRAMA DE FLUXOS DELS NODES: ....................................... 88 DIAGRAMA DEL NODE SX01: ............................................................. 88 DIAGRAMA DEL NODE PX02: ............................................................. 89 DIAGRAMA DEL NODE CX03: ............................................................. 90 PROBLEMES SORGITS: .............................................................. 91 PROBLEMA AMB LES PANTALLES: ......................................................... 91 PROBLEMA AMB UN DELS XIPS XBEE ..................................................... 96 PROBLEMA AMB LA LLIBERIA WSTRING .................................................. 97 PROBLEMA AMB L'ENVIAMENT HTML..................................................... 99 PLANIFICACI: ...................................................................... 101 PLANIFICACI IDEAL: .................................................................... 101 PROBLEMES DE PLANIFICACI: ......................................................... 107 PLANIFICACI REAL: ..................................................................... 108 VALORACI ECONMICA: ....................................................... 115 ROLS DELS COMPONENTS: .............................................................. 115 Analista: .............................................................................. 115 4

Tcnic de gesti:................................................................... 115 Tcnic de sistemes: ............................................................... 116 MATERIAL NECESSARI: .................................................................. 116 COST M DOBRA: ........................................................................ 117 PREU FINAL PER EXTREURE BENEFICIS. ................................................ 118 El prototip:........................................................................... 119 El cost de les 100 primeres unitats: ........................................ 119 Els beneficis ......................................................................... 120 Preu per unitat ..................................................................... 120 CONCLUSIONS: ....................................................................... 121 AMPLIACIONS: ....................................................................... 123 BIBLIOGRAFIA: ...................................................................... 126 GENERALS: ............................................................................... 126 ARDUINO: ................................................................................. 127 PANTALLES: ............................................................................... 127 ETHERNET SHIELD ....................................................................... 127 XBEE ...................................................................................... 128 MICROSD SHIELD: ...................................................................... 128 SENSOR TEMPERATURA .................................................................. 128 SENSOR D'INFRAROIG PASSIU .......................................................... 129 SENSOR HUMITAT: ....................................................................... 129 SENSOR LDR ............................................................................. 129 ATMEGA 328P............................................................................ 130 ANNEXOS ................................................................................ 131 CONVERSACI DE CORREUS ELECTRONICS AMB AMB SPARKFUN: .................. 131 CONVERSACI AMB ELS CREADORS DE LA API WSTRING: ........................... 134 FACTURES: ................................................................................ 135 LIBELUM.COM ............................................................................. 135 Pedido Num. 1699 ................................................................ 135 Pedido Num. 1724 ................................................................ 136 BRICOGEEK.COM ......................................................................... 137 Comanda: 002129Comanda: 002571 ...................................... 137 Comanda: 002571 ................................................................ 138 SPARKFUN.COM ........................................................................... 139 Comanda: 192102 ................................................................ 139

ndex figures:
Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. 1: Esquema projecte ............................................................... 11 2: Node Dx01 ........................................................................ 12 3: Node Px02 ......................................................................... 13 4: Node Cx03 ........................................................................ 14 5 Logotip Arduino ................................................................... 15 6: Arduino ............................................................................. 16 7: Parts Arduino ..................................................................... 17 8: Esquema Arduino ............................................................... 18 9: Logotip Libelium ................................................................. 19 10: Logotip BricoGeek ............................................................. 20 11: Logotip Sparkfun .............................................................. 21 12: Programador AVR ............................................................. 22 13: Grfic PWN ...................................................................... 24 14: Exemple SPI .................................................................... 26 15: Exemple SPI 2 .................................................................. 27 16: Exemple SPI 3 .................................................................. 27 17: Cable SPI ........................................................................ 29 18: Ports microcontrolador ...................................................... 31 19: Arduino Duemilanove ........................................................ 31 20: Arduino Nano ................................................................... 32 21: Arduino Mega ................................................................... 32 22: Arduino Lilypad ................................................................ 33 23: Arduino FIO ..................................................................... 34 24: Logotip Creative Commons ................................................ 35 25: Logotip GNU .................................................................... 36 26: Amtel ATmega328P........................................................... 39 27: Llibreries ......................................................................... 40 28: Logotip Processing ............................................................ 42 29: Entorn desenvolupament ................................................... 43 30: Pantalla frontal ................................................................. 45 31: Mesures pantalla .............................................................. 47 32: Posici LEDs pantalla ......................................................... 47 33: Connexi maquinari pantalles ............................................. 48 34: Ordre Impresi pantalles ................................................... 50 35: Conexi pantalles ............................................................. 51 36: Pantalles collocades ......................................................... 52 37: Pins programaci pantalla .................................................. 53 38: Mesures pantalla .............................................................. 55 39: Logotip arduino forum ....................................................... 56 40: Logotip Twitter ................................................................. 56 41: Ethernet Shield ................................................................ 59 42: Impressi pantalla web ..................................................... 60 6

Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig. Fig.

43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:

Exemple alleugeriment web ............................................... 61 Logotip jQuery ................................................................. 62 Xip XBee ......................................................................... 64 XBee muntat amb Arduino ................................................. 66 Exemple transmissi de dades ............................................ 67 Xarxa XBee ...................................................................... 69 Esquema comanda AT ....................................................... 71 Mesures XBee .................................................................. 71 MicroSD Shield ................................................................. 72 Tipus de targetes de memria ............................................ 74 Mesures i tipus de SD ........................................................ 75 Sensor temperatura .......................................................... 79 Simulaci sensor temperatura ............................................ 80 Dimensions sensor d'infraroigs passiu ................................. 80 Sensor sensor d'infraroigs passiu ........................................ 81 Funcionament del sensor d'infraroigs passiu ......................... 82 Circuit sensor d'infraroigs passiu ........................................ 83 Circuit sensor d'humitat ..................................................... 84 Sensor d'humitat .............................................................. 85 Mesures sensor d'humitat .................................................. 85 Sensor fotoresistncia ....................................................... 86 circuit sensor fotoresistncia: ............................................. 86 Stack i Heap .................................................................... 98

Motivaci
Grcies a algunes assignatures de la carrera he anat experimentant un inters a destacar sobre el mn dels microcontroladors; aquest fet, amb el temps, ha anat augmentant amb la descoberta de lArduino i tots els projectes que poc a poc he pogut conixer al llarg dels anys. Els projectes de lArduino cada cop han estat ms interessants per la seva complexitat i intercompatibilitat amb daltres components electrnics com motors, sensors, etc. Per tant, el projecte final de carrera ha estat una excusa perfecta per poder endinsar-me en el mn Arduino, entendre la seva estructura i els mtodes de treball. La meva intenci s crear un producte til i que un cop acabat aquest es pugui mantindre a casa amb possibles ampliacions, de manera que la funcionalitat i lusabilitat es combinin exitosament. Quan parlem dusabilitat ens referim a que el projecte ha de ser el mxim vists possible, ja que ha de sser un sistema que estigui integrat en una llar on hi ha un alt nombre daparells electrnics i un fet diferenciador seria la vistositat del projecte.

Objectius
Existeixen una srie dobjectius bsics al projecte que shan de materialitzar en un prototip: Comunicaci: o Construir un sistema capa de comunicar-se sense fils entre els seus diferents elements i reduir problemes de disposici dels elements comunicatius ms habituals. Hem de poder fer interactuar els nodes per a poder enviar dades i rebre-les, de manera que la localitzaci no sigui un problema. o Confeccionar un node que sigui capa d' interactuar amb la xarxa i alhora pugui descarregar informaci complementria mitjanant Internet. Tamb volem que aquest node pugui acceptar i enviar peticions HTTP (Hypertext Transfer Protocol) protocol de transferncia de hipertext, per a comunicar-se amb Internet i qualsevol navegador web, de manera que ofereixi una multiplataforma absoluta. Captaci de dades: o Obtindre un mnim de dades meteorolgiques com pot sser la temperatura, humitat o pressi atmosfrica. o Inserir les dades obtingudes mitjanant els sensors en una targeta de memria externa per a poder tractar-les posteriorment, amb ordinadors amb mes potncia.

Interfcie dusuari: o Sha de crear una interfcie per a que lusuari pugui entendre correctament les dades obtingudes per els altres nodes, han dexistir dos tipus dinterfcies: Pantalla: shan de mostrar dades mitjanant alguna pantalla i d'una manera el ms vistosa possible. WEB: shan de poder servir peticions HTTP per a poder tenir un accs multiplataforma i poder accedir mitjanant qualsevol navegador, aquesta interfcie ha de ser prou entenedora i molt senzilla.

10

Com ser el projecte?


El projecte s la uni entre maquinari i programari per a formar un sistema de obtenci i manegament de dades. Aquest tindr tres nodes que s'interconnectaran entre ells amb una xarxa sense fils. Aquests tres nodes tindran una placa Arduino cadascun, ja que ser el microcontrolador escollit i l'encarregat de tindre el programari per interactuar amb els sensors. Cada node del sistema tindr una funci diferent i aquest tindr uns objectius i unes tasques a realitzar, tot s definit segons les necessitats de l' usuari que en aquest cas vindr donat per la funci principal del projecte.

Cadascun dels nodes es defineix per dues caracterstiques, els sensors que cont i el programari especfic que s'installa al node. A continuaci es definiran les funcionalitats de cada node:

Node Dx01: Aquest node tindr els sentits del projecte, ja que contindr els sensors de manera que s'encarrega de rebre les dades i 11

Fig. 1: Esquema projecte

esperar que altres nodes facin una petici de consulta. Alhora aquest node emmagatzemar les dades en un memria no voltil per a una posterior edici amb d'altres sistemes ms potents.

Fig. 2: Node Dx01

12

Node Px02: ser l'encarregat de visualitzar les dades mitjanant unes pantalles de LEDs, aquest node noms consultar als altres nodes les dades per a poder-les visualitzar.

Fig. 3: Node Px02

13

Node Cx03: aquest Arduino tindr connexi a la xarxa i per tant a Internet on tindrem la oportunitat d'interactuar amb altres serveis. Aquest acceptar altres peticions del sistema per enriquir d'informaci el projecte amb dades externes. D'altra banda tindrem la oportunitat d'utilitzar aquest node com a servidor WEB i per tant tindre una interfcie accessible amb qualsevol plataforma. Tot i aix hi ha unes caracterstiques que contindran tots els nodes, com la propietat d'interactuar amb els altres nodes mitjanant una xarxa sense fils, per tant podran saber l'estat dels altres nodes i enviar-se informaci en cas de sser necessari.

Fig. 4: Node Cx03

14

LArduino:
Qu s lArduino ?

s una plataforma de prototipatge electrnic de codi obert (les especificacions i els diagrames esquemtics sn daccs pblic) utilitzant un maquinari i programari flexibles i fcils dutilitzar. Arduino llenguatge de programaci es un llenguatge basat en un projecte anomenat Wirings i essencialment C/C++.

Fig. 5 Logotip Arduino

Grcies a les entrades i sortides podem fer d' Arduino un entorn de recepci amb una gran varietat de sensors que pugui interactuar amb el seu entorn mitjanant llums, motors o daltres perifrics. Les plaques poden sser assemblades a m o poden encarregar-se a empreses que es dediquen a fer-ho en srie per a reduir costos. El programari necessari per a la programaci s tamb lliure i gratut i es pot descarregar a la pgina oficial del projecte.

Per qu Arduino?
Hi ha molts microcontroladors i plataformes disponibles al mercat amb

15

moltes ofertes i funcionalitats similars per levoluci de lArduino ha estat molt alta grcies a unes caracterstiques niques:

Fig. 6: Arduino

Econmic: Arduino s relativament econmic si comparem aquestes plaques amb les seves competidores, amb l' avantatge de que el seu compilador i entorn de desenvolupament s gratut; a ms, el projecte Arduino cada cop intenta abaratir ms els seus components.

Si comparem lArduino amb algun dels seus competidors podrem observar que per exemple Atmega sol sser 1 euro ms econmic que els PICs de caracterstiques similars.

Continutat: Una de les principals coses a tindre en compte a l'hora d'iniciar un projecte s buscar la mxima projecci de futur amb els projectes que es recolzin. Amb lArduino aix ho tenim garantit ja que es planteja sobre uns pilars molts slids, alguns dels projectes en que es 16

basa lArduino treuen noves versions molt sovint i s en aquest cas on veiem si un projecte es viu o no.

Multiplataforma: Lentorn de desenvolupament i compilador pot ser executat en varis sistemes operatius com Windows, Linux, Mac Os X, a diferncia dels competidors que normalment noms accepten Windows. El gran desenvolupament que existeix sota lArduino , grcies en gran part a la comunitat d'Internet, provoca millores constants i evolucions peridiques, que donen al projecte Arduino una gran potncia evolutiva. Codi obert, programari i maquinari extensible: El software que engloba a Arduino s de codi obert, de manera que pot sser utilitzat per qualsevol de manera gratuta a ms de que dna la possibilitat d'atendrel mitjanant llibreries de C++. Els plnols del circuits tamb sn publicats i qualsevol usuari pot endinsar-se i ajudar a la comunitat a ajudar amb la evoluci de lArduino .

Fig. 7: Parts Arduino

Configurable: Arduino pot sser assemblat per lusuari o comprat preassemblat, tot i aix existeixen moltes configuracions possibles, Nano (versi reduda), Mega (versi amb mes entrades i sortides), al sser de codi obert, la circuiteria t els dissenys publicats per a que qualsevol 17

persona pugui comprar els components per separat i desprs fins i tot millorar-lo. Gran suport: Al ser de codi obert aquesta plataforma ha rebut una gran collaboraci per part de la gent, de manera que trobar una soluci a un problema pot resultar senzill per el fet de que hi ha molta informaci referent a les mateixes possibles complicacions.

Fig. 8: Esquema Arduino

On comprar?
Durant el inici del projecte un dels grans dubtes que em va sorgir va sser on comprar tot el maquinari que necessitava. Vaig posar-me en contacte amb vries tendes d'electrnica de Barcelona per intentar trobar un distribudor i d'aquesta manera tenir una persona fsica a qui preguntar en cas de voler resoldre algun dubte. A tot arreu vaig rebre negatives, fins que un comercial de Diotronics em va comentar que el projecte Arduino obliga als distribudors a no vendre al per menor si no s mitjanant la venta web; d'aquesta manera s'asseguren quins sn els preus de venda i troben la manera d'abaratir el cost ja que eliminen les despeses que agrega una tenda de venda directa amb mostrador, aix que encara que Diotronics volgus vendre els Arduino no podria.

18

Amb aquest context vaig haver de buscar tendes en lnia que oferissin garanties de l'enviament i de la qualitat dels productes, i a l'hora opinions favorables de les tendes. Un punt important a tindre en compte a l'hora de buscar una tenda va sser intentar que tingus assistncia de llengua castellana o catalana. Tot i aix alguns components no els vaig trobar aix que vaig haver d'aprofitar-me de la globalitzaci per obtenir segons quins components. Les tres tendes seleccionades van ser: Libelium:

Fig. 9: Logotip Libelium Fig. 10: Logotip Libelium

Aquesta tenda es dedica a vendre solucions amb Arduino, aix que sembla que deuen tenir idea del producte, a ms que tenen llistes de correu on es poden consultar problemes que vagin sorgint sobre els seus productes que tenen a la venda. Libelium ven ms components, ja que les seves estacions o nodes incorporen un sistema molt semblant al proposat per aquest projecte.

19

Coses que es van comprar: 1 x Sensor Temperatura 1 x Modulo MicroSD 2Gb para Arduino 3 x Arduino ZigBee Pack (802.15.4 Versi) 1 x PIR Sensor 1 x Sensor de Humitat 808H5V5 1 x Sensor LDR

La seva soluci s incorporar lArduino dins d'unes caixes i ofereixen diferents tipus de sensors i funcionalitats com vigilncia, domtica, presa de dades o comunicaci entre diferents sistemes. Fins el final del projecte noms vaig tindre un petit problema amb els seus productes; al sser una empresa situada a Saragossa noms vaig haver d'enviar per correu ordinari un xip de la comunicaci sense fils per a reprogramar-ho. Aix que no hi ha cap incidncia greu amb aquesta tenda.

BrikoGeek:

Fig. 11: Logotip BricoGeek

En aquesta tenda vaig comprar molt menys material en comparaci a les altres de manera que la possibilitat de tindre problemes ha estat molt inferior.

20

Aquesta tenda no es dedica tant a la venda especialitzada en Arduino per tot i aix tenen una gran oferta de components compatibles amb aquest. Coses que es van comprar a BrikoGeek: 1 x Arduino Ethernet Shield 1 x Kit Programador USB AVR

Sparkfun:

Fig. 12: Logotip Sparkfun

Aquesta empresa s dels Estats Units d'Amrica i era la nica que per qestions de llengua podia donar ms problemes, tot i tenir un nivell baix d'angls sempre a l'hora d'expressar-se es molt ms complicat. Aquesta tenda en lnia t un alt assortit de productes electrnics, aqu s on es van comprar entre d'altres coses les pantalles de Leds que ms endavant explicar; aquestes inicialment sn fabricades a la Xina i enviades per a inserir una part de maquinari que les controla, el problema va sorgir amb aquesta ltima part. El maquinari era fabricat per la prpia tenda, de manera que en cas de tindre qualsevol problema m'hauria de dirigir a ells. Va sorgir un problema de refresc explicat mes endavant; resulta que les pantalles es podien apilar i no funcionaven b aix que em vaig posar en contacte amb la tenda en lnia mitjanant els dos canals possibles.

21

Al final no va sser la tenda qui va trobar la soluci, conseqentment la meva opini d'aquesta tenda s bastant negativa. Coses que es van comprar a Sparkfun: 4 x LED Matrix - Serial Interface - Red/Green/Blue

Qu s un programador AVR?
s un component que t la utilitat de poder gravar el microprogramari de qualsevol microcontrolador de la famlia especfica anomenada AVR. Aquests programadors tenen la caracterstica de que tenen un port SPI; per exemple el propi Arduino en t un inserit a la circuiteria. Al projecte ho utilitzarem per poder reprogramar les pantalles de leds.

Fig. 13: Programador AVR

22

Qu s un microprogramari?
En angls anomenat "Firmware", s un bloc d'instruccions de programa per a un propsit especfic (a diferncia de qualsevol ordinador de sobretaula), gravat en una part de la memria ROM, normalment sn utilitzats per a components petits i que tenen una funcionalitat especfica. Aquest codi serveix per a apropar d'altres programes d'alt nivell amb el maquinari, de manera que s programat en baix nivell, ms exactament en el nivell mes baix, ja que acaba formant part del maquinari i del programari. Si busquem una relaci directa amb un ordinador convencional el microprogramari seria una espcie de Bios dels ordinadors actuals.

Caracterstiques tcniques de lArduino :


El maquinari de lArduino est basat en el microcontrolador Atmel AT328P, per modifica o agrega algun comportament, com un rellotge de 16Mhz. Les sortides o entrades de les plaques Arduino tenen una sortida de 5volts operatius acceptant fins 40mA, aquest cont un total de 14pins per a treballar dels quals sis d'ells accepten el mode PWN (Pulse-Width Modulation) modulaci per amplada de polsos, d'aquesta manera podem controlar l'energia que aquell pin t.

23

Fig. 14: Grfic PWN

L'alimentador d'energia es selecciona automticament entre les dos opcions mitjanant el USB o la connexi directa a un transformador, es recomana que el corrent d'alimentaci estigui comprs entre 7 i 12 volts. Connectors de corrent: Vin: Voltatge d'entrada de lArduino , aquest voltatge s de 5 volts i serveix per alimentar-lo a ell i a tots els components que estiguin connectats. 5V: lArduino pot oferir 5 volts a qualsevol dels components que estiguin connectats a aquest. 3V3: Sortida de 3,3 volts amb la mateixa funcionalitat que la sortida de 5V. GND: Presa de terra per a tot el sistema.

24

Connectors Entrada / Sortida: Serial 0 (RX) i 1 (TX): utilitzats per rebre (RX) i transmetre (TX) informaci pel port TTL serial. Aquests pins estan connectats corresponentment a un xip convertidor USB a TTL per a poder enviar i rebre informaci mitjanant un port USB de l'ordinador. Interrupcions externes 2 i 3: Aquets pins es poden configurar per a fer activar una interrupci. PWM 3, 4, 5, 8, 10 i 11: Proporcionen un PWM de 8bits de sortida i actuen com una sortida analgica. SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): Aquests pins suporten una comunicaci SPI, lArduino no proporciona mtodes d'interacci amb aquests tipus de port ja que cada component pot interactuar d'una manera diferent. LED 13: En aquest connector tenim un LED connectat al pin digital 13, quan aquest pin t un valor alt (5 volts) el LED s'engegar contrriament i si el pin t un valor baix el LED s'apagar.

LArduino proporciona a ms a ms entrades digitals que seran convertides a digitals grcies al microcontrolador. Desprs d'aquesta conversi el valor digital tindr un valor comprs entre 0 i 1023 segons el seu voltatge d'entrada. I2C 4 (SDA) i 5 (SCL). Suporten I2C (TWI), un bus de comunicaci utilitzant la llibreria Wire.

25

Per a finalitzar els connectors disponibles amb lArduino : AREF: Referncia per al voltatge de lectures analgiques, aquestes lectures habitualment necessiten d'una dada per impedir que les variacions del corrent puguin influir als valors de lectura dels diferents sensors. Reset: Aquest connector s'utilitza per a poder resetejar lArduino mitjanant codi. S'utilitza habitualment per detectar que el programari de lArduino est en un estat fora de lesperat i per poder entrar correctament es reseteja.

Qu s un bus d'interfcie de perifrics srie?

El port SPI (Serial Peripheral Interface Bus) o bus d' interfcie de perifrics srie s un estndard de comunicaci entre perifrics amb una clara utilitat dins del mn de l'electrnica.

Fig. 15: Exemple SPI

Habitualment aquest estndard es regeix per tindre un periferic mster i un esclau, i entre aquests dos pot existir una transmissi a dues bandes instantnies de manera que els dos perifrics poden emitir i rebre dades. 26

Un dels grans avantatges d'aquest port de comunicaci s que tenim la possibilitat de poder apilar varis esclaus i poder comunicar amb el mateix port molts elements amb el nostre mster alhora. Utilitzarem un bit ms per cada perifric que connectem i aquest bit activar la comunicaci entre el mster escollit i l'esclau que volem, posteriorment veurem que hi ha ms mtodes per poder apilar esclaus. Al projecte tamb utilitzarem un maquinari que s capa concatenar crides mitjanant un port SPI propi de manera que cadascun dels elements propaga la informaci al segent i aix successivament fins l'ltim.

Fig. 16: Exemple SPI 2

Fig. 17: Exemple SPI 3

27

Identificarem els 5 bits necessaris per a la comunicaci: SS(ChipSelect): Amb aquest podrem indicar a la pantalla quan enviarem les dades, utilitzarem el pas alt (un 1 lgic o 5 volts) per indicar l'estat en reps i de visualitzaci, mentres que utilitzarem el pas baix (un 0 lgic o 0 volts) per indicar l'inici de l'enviament de les dades. MOSI (mster Output, Slave Input) o sortida del mster, entrada de l'esclau: Aquest bit ser utilitzat per a enviar les dades del mster cap a l'esclau. MISO (mster Input, Slave Output) o entrada del mster, i sortida del esclau: En contraposici amb el MOSI aquest pint te la funci d'enviar dades de l'esclau cap al mster. SCLK (Clock): Enviarem una pulsaci per cada bit que enviem per el bit de dades (MOSI) d'aquesta manera amb 2 bits podem enviar qualsevol informaci. VCC: 5Volts d'entrada per alimentar els components electrnics connectats. GND: la presa de terra pels components electrnics connectats.

Per a configurar correctament el port SPI existeixen 2 bytes, un anomenat SCPR i l'altre SPSR. Aquests donen valor a les configuracions segents:

28

Fig. 18: Cable SPI

Byte SCPR: Bit 7 SPIE: Aquest bit habilita les interrupcions del port SPI. Bit 6 SPE: Habilita el SPI, s'ha de setejar a '1' en cas que es vulgui utilitzar el port SPI. Bit 5 DORD: Ordre de les dades Bit 4 MSTR: Aquest bit identifica si aquest maquinari es '1' mster o esclau. Bit 3 CPOL: Polaritat del rellotge, si s activat a '1' ser actiu amb un flanc alt, en cas contrari estar desactivat en un flanc baix. Bit 2 CHPA: Fase del rellotge; Bit 1-0 SPR1, SPR2: Aquests dos bits identifiquen la velocitat a la que ha d'anar el rellotge, aquesta ordre noms funcionar quan el maquinari estigui deposat com a mster.

29

Byte SPSR: Bit 7 SPPIF: Bandera d' interrupci del SPI. Quan una

transferncia serial s complerta, la bandera SPIF s habilitada. De manera que serveix per a que el nostre maquinari tingui constncia de que ha finalitzat una transferncia, per a que succeeixi aix s'han de complir algunes premisses: o SPIE i SREG habilitats o Si el bit SS del port SPI est habilitat quan el SPI s configurat en mode Mster el SPIF quedar deshabilitat per maquinari quan s'executi la corresponent interrupci manualment. Bit 6 WCOL: Bandera de collisions d'escriptura, s'habilita quan hi ha una collisi durant el procs de transferncia. Bit 0 SPI2X: Duplica la velocitat dels bits.

El microcontrolador de lArduino:
Lescollit s un Amtel ATmega328P aquest micro t les segents caracterstiques: 32Kb de memria per al programari. 2KB SRAM Convertidor analgic / digital Funciona fins 20MHz amb un clock extern 23 entrades i sortides de propsit general

30

Fig. 19: Ports microcontrolador

Tipus principals d'Arduino: Hi ha molts tipus i versions de les plaques Arduino, en aquest apartat comentarem les ms venudes o ms conegudes. Duemilanove: Aquesta es l'ltima versi bsica d'una placa de lArduino connectada mitjanant l'estndard USB. Aquest servir per gravar el programari cap i per enviar o rebre informaci de l'ordinador. Aquesta placa t la possibilitat de complementar-la amb d'altres components prefabricats anomenats Shields.

Fig. 20: Arduino Duemilanove

31

Diecimila: s la versi anterior del Duemilanove. Nano: Aquesta s una versi reduda, t menys connectors d'entrada i sortida de manera que es redueix la potncia de lArduino per la mida es veu reduda notablement; aquest utilitzar un cable Mini-USB.

Fig. 21: Arduino Nano

Mega: Al contrari que el nano, aquesta versi cont un augment de entrades i sortides. Aquesta placa mant una alta compatibilitat entre el programari de la versi Duemilanove i Diecmila. Existeixen poques i petites diferncies, aquesta versi vitaminada de lArduino augmenta la mida, per en cas de necessitar molts ports d'entrada i sortida pot resultar una bona opci.

Fig. 22: Arduino Mega

32

Bluetooth: Aquest Arduino cont el maquinari necessari per utilitzar la comunicaci de Bluetooth, per s'ha de recordar que el Duemilanove t alguns components externs que donen aquesta funcionalitat.

LilyPad: s una de les versions ms innovadores. La que est feta per poder utilitzar lArduino amb la roba, aquest s mpliament utilitzat per dissenyadors de moda. Es redueix considerablement la mida del mateix i les connexions.

Fig. 23: Arduino Lilypad

33

Fio: Dissenyat especialment per a aplicacions amb necessitat de comunicaci amb xarxes XBee, aquest cont ms facilitats per a tindre una bateria al circuit.

Fig. 24: Arduino FIO

Llicncies
Tota la plataforma Arduino s de codi obert, per de totes maneres existeixen diferents llicncies a tindre en compte per a poder conixer quines sn les nostres obligacions.

El maquinari i dissenys: Per al maquinari i els dissenys d'aquest la llicncia escollida s Creative Commons amb perms de compartir i modificar:

34

Compartir: aix significa que es pot fer tantes cpies com sigui necessari, distribuir, comunicar o executar pblicament la obra. Modificar: es permet modificar i confeccionar obres derivades.

Fig. 25: Logotip Creative Commons

Sota les segents condicions: Atribuci: hem de reconixer i citar qualsevol obra de la forma especificada per l'autor. Traslladar la llicncia: si modifiques o transformes aquesta obra, o generes una obra derivada, noms pots distribuir la obra generada sota una llicncia idntica a aquesta.

Coses a tenir en compte: Renncia: L'autor pot renunciar a algun dels drets establerts per aquesta llicncia tot demanant perms i aix poder utilitzar-ho com es vulgui sobre la renncia. Altres drets: Els segents drets no queden afectats per la llicncia o s just. o Drets morals de l'autor. o Drets de privacitat. 35

El programari i l'entorn de desenvolupament Aquesta part del projecte ser llicenciada sota GNU (General Public License) "Llicncia pblica general", aquesta s orientada per a protegir la lliure distribuci, modificaci i s del programari. El propsit de GNU s declarar el programari com lliure, i protegir-lo d'intents d'apropiacions que restringeixin aquestes llibertats als usuaris.

Fig. 26: Logotip GNU

Enumerarem les llibertats dels usuaris al tindre una obra amb llicncia GNU:

La llibertat d'executar el programa per a qualsevol propsit. La llibertat d'estudiar com funciona el programa i adaptar-lo a les seves necessitats La llibertat de redistribuir cpies per ajudar al prxim. La llibertat de millorar el programa i comunicar les millores al pblic, per a un benefici de la comunitat.

36

De totes maneres existeixen unes condicions generals que s'han de complir.

Per a cada cpia, s'ha de fer constar una nota amb els drets d'autor i una exoneraci de responsabilitats. Per a qualsevol cpia d'una obra sota aquesta llicncia tindr implcita aquesta llicncia i haurem de fer-ho constar. En cas de copiar o distribuir el programa, haur de portar adjunt el codi font complert del mateix essent entenedor per a les computadores al menys en un espai de temps de tres anys.

Compilador:
Iniciant amb una petita introducci sobre el qu s un compilador i com funciona que ens portar a detallar el compilador utilitzat per lArduino . Un compilador s un programa que tradueix un programa escrit en un llenguatge de programaci a un altre llenguatge de programaci de nivell ms baix, generant un programa que la mquina ser capa d'interpretar. D'aquesta manera el programador pot dissenyar un programa ms intutiu i entenedor per a l' sser hum, a ms elimina la necessitat d'aprofundir i tindre constncia de quina mquina reproduir aquest programa. Per exemple, un programa escrit en un llenguatge com c++ pot sser executat indiferentment en un ordinador amb qualsevol sistema operatiu o un microcontrolador. Aix s causat pels compiladors ja que s'encarreguen de traduir el programa escrit en c++ en llenguatge mquina.

37

El llenguatge mquina se suposa que s un llenguatge optimitzat creat especficament per a un tipus de maquinari, d'aquesta manera el programador no cal que tingui necessitat de saber buscar aquestes optimitzacions que els compiladors ens ofereixen.

A grans trets existeixen aquests tipus de compiladors: Compiladors creuats: generen el codi per a un sistema diferent del que funcionen. Compiladors optimitzadors: realitzen canvis al codi per a millorar la seva eficincia sense variar la seva funcionalitat; per exemple, hi ha ocasions en que el processador t dreceres per fer segons quin tipus de bucles, aix si el compilador t constncia d'aquestes pot optimitzar utilitzant-les. Compiladors d'una sola passada: aquests compiladors generen el codi mquina a partir d'una nica lectura del codi font. Compiladors de varies passades: a diferncia del tipus anterior, aquests compiladors necessiten tindre ms d'una passada per poder generar el codi mquina. Compiladors JIT (Just In Time) just al moment: sn compiladors que formen part d'una unitat ms gran que s'encarrega de compilar noms aquell codi necessari en cada moment. Aquests compiladors habitualment tracten un codi precompilat, de manera que el procs de compilaci no s tan farrags. Llavors el compilador indicat per a l' Arduino s anomenat AVR-GCC, heretat del seu microcontrolador Amtel ATmega328P. s un compilador de llenguatge d'alt nivell C i C++, aquest crear un arxiu binari que desprs ser enregistrat a la memria de programari del micro.

38

Fig. 27: Amtel ATmega328P

El AVR-GCC prov d'una collecci de compiladors anomenats GCC, aquests sn tots escrits sota llicncia GNU, la majoria de les referncies sn a entrades d'una srie d'eines del GNU per noms s'escullen les ms importants o es modifiquen per a que aquest compilador obtingui un codi mquina molt optimitzat per als microcontroladors de la famlia AVR. El propi compilador AVR-GCC s un projecte viu en termes

d'actualitzacions degut a que s molt habitual que s'actualitzi abans que els binaris de la distribuci oficial GCC. Aquest projecte s destinat principalment per a sistemes operatius basats en Linux i Unix, per existeix l'evoluci per a Windows anomenat WinAVR. De totes maneres aquests dos projectes conviuen junts i s'ajuden l'un a l'altre per avanar en el desenvolupament dels compiladors. El WinAVR cont varis projectes, com el compilador que ja hem parlat anteriorment AVR-GCC, un programador AVRdude i un debugador avrgdb. Aquest no necessita sser installat de manera que els seus creadors fins i tot donen la opci de inserir-ho en un llapis de memria. 39

Llibreries:
Introduir el concepte llibreria o biblioteca, per poder acabar aprofundint sobre la llibreria que lArduino utilitza. Una llibreria s un a conjunt de subprogrames independents utilitzats de la per a

desenvolupar programes. Les biblioteques contenen dades i codi que proporciona servei programes llibreria.

Les llibreries permeten que el codi i les dades es comparteixin i es puguin modificar de forma modular des de varis programes, d'aquesta manera una mateixa funci pot sser cridada des de qualsevol programari. La majoria de sistemes operatius moderns proporcionen llibreries que implementen la majoria dels serveis del sistema.

En aquest parlarem nicament de llibreries per a compartir codi, exactament de C i C++.

Fig. 28: Llibreries

40

Hi ha diferents tipus de llibreries: Llibreries esttiques: Antigament totes les llibreries eren

esttiques. Aquestes consisteixen en un conjunt de subrutines que es copien a una aplicaci mitjanant el compilador, aqu es creen enllaos cap a direccions fsiques on existeixen les rutines de les llibreries. Molts llenguatges de programaci utilitzen aquestes llibreries per inserir algoritmes que s'utilitzen sovint per agilitzar el treball als programadors. De totes maneres hi ha programadors que tamb decideixen crear les seves llibreries per a parts de codi que utilitzen habitualment. Els compiladors moderns proporcionen accs tant a les llibreries estndard com a les llibreries personalitzades.

Llibreries

dinmiques:

Aquestes

sn

carregades

en

temps

d'execuci i es mantenen com arxius separats del programa principal, aquestes donen l' avantatge de que en cas de no ser utilitzades el sistema operatiu no les carregar. Llibreries remotes: Aquestes llibreries es consulten a distncia de manera que no cal que estiguin fsicament al mateix computador que el programa principal.

Al projecte utilitzarem el tipus de llibreria esttica anomenada AVRLIBC. Aquesta s un llibreria d'alta qualitat que atorga un subconjunt de l'estndard de C utilitzada amb el GCC. Aquesta llibreria es creada i optimitzada per als microcontroladors Atmel AVR RISC de 8 bits. 41

El compilador AVR-GCC s qui s'encarrega d'oferir i utilitzar aquesta llibreria per a programes creats per a aquests micros.

L'entorn de desenvolupament
Com hem comentat en altres apartats de la memria l'entorn de desenvolupament est llicenciat com codi obert, d'aquesta manera t la possibilitat d'adoptar altres projectes per a millorar, en aquest cas, es el Processing.

Fig. 29: Logotip Processing

Processing s un entorn de desenvolupament i llenguatge programat amb Java i de fcil utilitzaci, aquest estableix una versi reduda del C/C++ per a poder sser posteriorment compilada amb el AVR-GCC.

Aquest entorn de desenvolupament ens ofereix vries funcionalitats per ajudar als programadors. El resultat s un entorn utilitzat al mn de l'ensenyament ja que les seves funcionalitats fan que el programador no tingui la necessitat d'obrir cap altre programa per editar els programes que posteriorment es gravaran al microcontroladror.

42

Fig. 30: Entorn desenvolupament

Avantatges de l'entorn de programaci: Illuminaci dels errors de compilaci: identifica la zona per tindre millor referncia del problema. Ordenaci del codi: estructura el codi jerrquicament segons el seu context deixant espais necessaris per a poder visualitzar-lo correctament. Gravaci a lArduino amb un clic. 43

Colorejament de sintaxis: aix ajuda a identificar parts del codi i visualitzar ordres comunes. Costos mnims en el ordinador client on s'executa l'entorn de programaci. Simplicitat: t totes les opcions necessries per a programar, amb una interfcie sencilla, per aquest motiu lArduino s tan utilitzat en el mn escolar. D'aqu a pocs anys qualsevol persona podr crear un petit programa i enviar-lo al Arduino per a que s'executi i es visualitzi un resultat.

44

Pantalles led:
Per qu no una pantalla LCD?
La ra per la que no vaig escollir pantalles LCD s la vistositat dels LEDs. El projecte va dirigit a poder ser una part ms de la casa i una pantalla LCD no convida a apropar-se per a llegir-la a lhora que una simulaci amb 4 pantalles (8x8) de LED multicolor d'un mida final 16x16 t molta ms fora visualment parlant.

Fig. 31: Pantalla frontal

Aix que vaig buscar alguna tenda a Barcelona que tingus alguna cosa semblant, per com no vaig trobar res apropiat llavors Internet va sser l'altre punt de recerca on finalment vaig trobar unes pantalles que eren el millor que vaig trobar.

45

Aquestes pantalles eren 8x8 leds que tenien un maquinari per a tractarlos, aix la meva intenci no era centrar el treball en la pantalla ja que aix em facilitaria molt el treball. Un cop seleccionada la tipologia de pantalles i vist que 64 leds eren pocs per poder transmetre tota la informaci desitjada vaig optar per agafar-ne 4 i organitzar-les amb una matriu 2x2 amb un total de 256 leds.

LED Matrix - Serial Interface - Red/Green/Blue


Cada pantalla cont una matriu 16x16 de leds tricolors (Vermell, Verd, Blau) amb 16 bits d'entrada, d'aquesta manera es poden encendre i apagar tots els leds. Sabent que tenim un nmero limitat de ports de sortida al nostre maquinari (Arduino) hem de tindre en compte que encendre cada Led directament a les seves potes significaria que necessitem 64 bits per pantalla per encendre i apagar tots els bits.

46

Fig. 32: Mesures pantalla

La matriu de leds est connectada entre si per a poder encendre tots els leds amb el menor nmero de pins, d'aquesta manera jugant amb la freqncia de visualitzaci podem encendre qualsevol combinaci que sigui necessria.

Fig. 33: Posici LEDs pantalla

47

D'altra banda la pantalla tamb te una circuiteria afegida per un altre fabricant. Aquest fabricant tenia tres objectius a l'hora d'implementarla: Trobar el mtode per poder manegar la pantalla de leds sense tindre conscincia del refresc visual necessari per a poder formar qualsevol dibuix. Trobar el mtode per a una utilitzaci ms senzilla. Trobar el mtode per utilitzar el mnim de pins necessaris. Trobar el mtode per poder interconnectar vries pantalles alhora.

El fabricant va optar per la comunicaci serial, tant del nostre circuit (en el meu cas Arduino) com entre les pantalles (segons el fabricant amb un mxim de 8 pantalles). D'aquesta manera amb 5 bits s suficient com per tindre una comunicaci i poder enviar a les pantalles quin color i quins leds volem que s'engeguin.

Fig. 34: Connexi maquinari pantalles

48

Per a poder seleccionar el color utilitzarem un registre de 8 bits (char) de manera que cadascun dels bits tingui una referncia directa amb el color del Led: Vermell Bit 6 Verd Bit 3 Blau Bit 2 Bit 1 Bit 0

Bit 7

Bit 5

Bit 4

Aix podem donar color amb un byte, encara que el fabricant estipula uns valors per a trobar uns 8 colors definits: Color Negre Vermell Verd Blau Tronga Magenta Xarxet Blanc Valor del Byte 0x00 0xE0 0x1C 0x03 0xFC 0xE3 0x1F 0xFF

Gravaci amb el port SPI:


Per a gravar el microprogramari modificat a les pantalles utilitzarem el port SPI, per en aquest cas queda eliminada la connexi MISO (mster Inpur, Slave Output) d' Entrada del mster, Sortida de l'esclau, ja que no necessitem rebre cap tipus de comunicaci per part de les pantalles perqu el seu estat sempre vindr donat pel nostre maquinari. Ara mostrar un exemple de comunicaci amb un nmero indeterminat de pantalles: 49

1. Activem el CS (pas baix) 2. Temps d'espera 0.5ms 3. Transferncia del primer color mitjanant el port serial (MOSI). Aquesta operaci la reproduirem 64 vegades per cada led i en cas de tindre ms pantalles es reproduir 64xNPantalles; en el nostre cas sn 4 pantalles de manera que es reproduir 64x4=256 vegades, i cada vegada s'enviar un byte amb el color que pertany al led. 4. Desactivem el CS (pas alt)
255 254 253 252 251 250 249 248 127 126 125 124 123 122 121 120 247 246 245 244 243 242 241 240 119 118 117 116 115 114 113 112 239 238 237 236 235 234 233 232 111 110 109 108 107 106 105 104 231 230 229 228 227 226 225 224 103 102 101 100 99 98 97 96 223 222 221 220 219 218 217 216 95 94 93 92 91 90 89 88 215 214 213 212 211 210 209 208 87 86 85 84 83 82 81 80 207 206 205 204 203 202 201 200 79 78 77 76 75 74 73 72 199 198 197 196 195 194 193 192 71 70 69 68 67 66 65 64 191 190 189 188 187 186 185 184 63 62 61 60 59 58 57 56 183 182 181 180 179 178 177 176 55 54 53 52 51 50 49 48 175 174 173 172 171 170 169 168 47 46 45 44 43 42 41 40 167 166 165 164 163 162 161 160 39 38 37 36 35 34 33 32 159 158 157 156 155 154 153 152 31 30 29 28 27 26 25 24 151 150 149 148 147 146 145 144 23 22 21 20 19 18 17 16 143 142 141 140 139 138 137 136 15 14 13 12 11 10 9 8 135 134 133 132 131 130 129 128 7 6 5 4 3 2 1 0

Fig. 35: Ordre Impresi pantalles

Un cop establerta la connexi entre el nostre maquinari i la primera pantalla, veiem que la connexi entre pantalles es desencadena mitjanant Daisy-chained o concatenats, de manera que la primera pantalla s'encarregar d'enviar la informaci a la segona i aix successivament, conseqentment els primers 64 bytes enviats pel nostre maquinari aniran a parar a la ltima pantalla connectada.

50

Fig. 36: Conexi pantalles

Actualitzacions de microprogramari:
Les pantalles varen tindre un canvi de microprogramari amb data 4/27/2009; aquesta actualitzaci ajudava a la connexi Daisy-chained entre pantalles per contenia un error de refresc de les pantalles.

51

El problema apareix en el moment en que les pantalles s'han de resetejar, ja que existeix un identificador que indica a la pantalla quin LED volem encendre (aquest identificador augmenta mitjanant un rellotge que mostra quan ha de passar al segent dode) per el programari de les pantalles no resetejaba aquest valor quan nosaltres criem o quan el datasheet de les pantalles ho indicava, de manera que es quedaven en un estatus indefinit i no controlat degut a que les pantalles seguien mantenint el indicador en un LED erroni.

Soluci al problema de microprogramari:


La soluci va ser donada i conseqentment trobada per mi dins d'un frum a Internet ja que el propi fabricant, desprs de posar-me en contacte amb ell en ms d'una dotzena d'ocasions i corroborant l'error de les pantalles encara no havia actualitzat el microprogramari erroni amb una actualitzaci. Entre uns quants usuaris es va poder trobar una soluci modificant l'identificador per a que actu adequadament.

Fig. 37: Pantalles collocades

52

Millores al microprogramari:
D'altra banda es van fer millores al microprogramari per a qu les imprecisions fossin ms ptimes en quant a velocitat i s'eliminessin estats de les pantalles que no eren tils.

Problema de connexi amb el port de programaci:


Les pantalles es van haver de programar una a una amb el nou microprogramari modificat. Llavors em vaig posar en contacte amb el fabricant de les plaques perqu ens ajudes a trobar la manera de carregar el nou microprogramari.

Fig. 38: Pins programaci pantalla

Aquest cop em van facilitar un port on shavien de soldar pins, i es va trobar una soluci adient per al problema.

53

De totes maneres es va haver d'adquirir un programador AVR serial per a poder enviar el nou microprogramari cap a la ROM de las pantalles i d'aquesta manera va acabar el problema sorgit amb les pantalles de leds.

El programari:
Per a poder extreure el mxim partit a les pantalles he decidit fer una petita API per a traduir el mes fcil possible un char amb la illuminaci de les pantalles, s'ha optat per 2 mtodes. Mitjanant una variable de tipus long, de manera que cada bit d'aquesta variable indica si el led esta encs o no. o Avantatge: les variables ocupen molt menys que l'altre mtode, 32bits per carcter. o Desavantatge: hi ha un mxim de 32 bits, per tant noms es poden dissenyar una matriu de 32 leds. Ara b, s suficient per a poder dibuixar carcters amb un mida de 4x7. Mitjanant matrius de tipus char, d'aquesta manera cada posici de la matriu ens dna un color per a un Led. o Avantatge: no hi ha lmits de colors o Leds, per tant podem dibuixar la pantalla sencera amb una matriu de 16x16, a ms cada Led tindr un color independent a la resta. o Desavantatge: ocupen i desaprofitar molt espai en memria, ja que si utilitzem una matriu 16x16 i cada posici s un char llavors tenim una matriu de 2.048bits.

54

Fig. 39: Mesures pantalla

55

Ethernet Shield:
Internet segurament s el mitj de comunicaci amb ms fora als ltims anys amb aplicatius web com Twitter o connexions amb estacions meteorolgiques en directe. He intentat injectar aquesta fora dins del projecte amb la interconnexi entre varis serveis de la xarxa. A ms, el propi sistema s capa de comportar-se com un servidor web, de manera que en tot instant i en qualsevol lloc amb accs a Internet tindrem accs a la informaci que el nostre sistema manega.

Fig. 40: Logotip arduino forum

Connexi amb serveis de la xarxa:


Internet es modifica a s mateixa cada dia, cada hora, cada minut o segon, i les xarxes socials sn actualment un recurs a utilitzar i manegar, de manera que he optat per interactuar amb Twitter per la seva facilitat amb la connexi i simplicitat.

Fig. 41: Logotip Twitter

56

57

Aix el programari del sistema s'encarregar d'enviar alarmes mitjanant l'aplicatiu Twitter; aquestes alarmes tenen l' avantatge de que sn inserides en un servidor extern, per tant encara que la nostra xarxa o connexi a Internet falli, ens podem assegurar de que aquest aplicatiu estar en lnia la majoria de vegades. D'altra banda, existeixen moltes possibilitats per poder extreure la informaci de Twitter ja sigui via web o aplicatiu d'escriptori en qualsevol plataforma, fins i tot mbil.

58

Fig. 42: Ethernet Shield

Servidor web:
Una de les estacions del sistema s'encarregar de servir a la xarxa de qualsevol tipus d'informaci que el sistema tingui, de manera que tindrem un servidor web que respongui les peticions HTTP. Aquesta funcionalitat ens dna la possibilitat de modificar el

comportament del sistema amb diferents opcions mitjanant formularis web. De totes maneres, s'ha d'intentar alleugerir qualsevol tipus de codi HTML que vulguem inserir. Per a solucionar problemes de connexi i d'espai, he optat per externalitzar alguna llibreria Javascript, imatges i arxius CSS en altres servidors, de manera que salleugereix el pes del codi dins del sistema i de la nostra connexi. El funcionament del servidor s senzill ja que podem identificar les capaleres de les peticions HTTP, aix podem identificar amb parmetres enviats des del client quines sn les necessitats per a poder servir una web adequada, injectant el codi HTML com a resposta de les peticions.

59

Fig. 43: Impressi pantalla web

Alleugeriment de pes de la web:


Gracies al Javascript utilitzat podem fer crides al servidor i consultant noms una petita part del codi, amb aquest procs estem estalviant haver de rebre la pgina sencera. En nmeros aquest fets es tradueix amb: Pes pgina complerta: 1.600 bytes Pes duna actualitzaci complerta mitjanant Ajax: 5 (valors) x 4 bytes = 20 bytes

60

Fig. 44: Exemple alleugeriment web

Aquesta diferencia implica que mitjanant lAjax ens estem estalviant, 98% de la mida original, ara les connexions duraran molt menys temps, i el servidor es mantindr en estat ocis mes temps acceptat moltes mes peticions per minut.

Fulles destil en cascada CSS3:


Gracies a les CSS (Cascade Style Sheet) fulles destil en cascada podem externalitzar la part de disseny grfic a un arxiu independent del HTML, daquesta manera el nostre servidor tindr menys carrega tant despai com temps de connexi. Daltra banda les fulles destil ofereixen molta mes potencia parlant de disseny ja que es creat per a poder modificar la aparena duna web fcilment. Exemple, podem tindre una divisi del HTML que vulguem donar un estil: <div id="DivText"> 61

Aqu el text que es vulgui </div> La crida a partir de la fulla destils es far de la segent manera: #DivText { Propietat: valor; }

Javascript jQuery:
Per a poder fer segons quines coses el HTML es veu molt limitat quan el que intentes es fer una web vistosa. De manera que he utilitzat una llibreria que ja he treballat anteriorment i coneixia el seu llenguatge, potencia i de mes factors que fan daquesta llibreria un perfecte aliat.

Fig. 45: Logotip jQuery

Aquesta llibreria mha ofert la possibilitat de inserir Ajax a la web i per tant obtenir varies avantatges explicades anteriorment, a lhora hem pogut establir algun efecte als textos per a poder fer mes agradable la seva visualitzaci. Es un mitj perfecte entre la comunicaci servidor i client.

62

Problemes amb els ports dentrada i sortida:


Aquest maquinari est pensat per a utilitzar-lo de manera independent, i per tant a les especificacions es deixa clar que hi ha uns pins que posteriorment no poden ser utilitzats per a ports d'entrada i sortida de lArduino . Tot i aix vaig trobar la soluci retornant a l'explicaci del port srie de les pantalles i seleccionant quin maquinari vull utilitzar en tot moment segons el pin selector de chip i aix no tenir lmits per a expandir lArduino.

63

XBee Shield:
Qu es XBee?
XBee s el nom comercial d'un protocol anomenat ZigBee, aquest cont les especificacions d'alt nivell per a un protocol de comunicaci utilitzant ones de rdio digital de baixa potncia. Es basa en un estndard obert anomenat IEEE 802.15.4-2003 per a xarxes sense fil d'mbit personal, aquest implementa l'accs al maquinari especificant el baix nivell del programari. Aquest maquinari es comunicar mitjanant el port SPI, que com ja hem contrastat s el mtode ms rpid, senzill i mpliament utilitzat per aquest tipus de comunicaci entre petits dispositius.

Fig. 46: Xip XBee

Ara b, desprs de la presa en contacte amb aquest maquinari, podem afirmar que existeix la possibilitat d'extreure molt ms potencial d'aquests xips ja que ofereixen moltes possibilitats i funcions que no podrem utilitzar per falta de temps, com per exemple:

64

Funci sleep: Que redueix el consum elctric. Funcions per escanejar els diferents canals per poder trobar diferents xarxes o nodes.

Avantatges del XBee

Consum elctric: Un dels grans avantatges que t XBee s els seu baix consum d'energia. Est pensat per a poder sser alimentat per bateries recarregables o fins i tot plaques fotovoltaiques, de manera que es pot utilitzar per mantindre informat un node sense haver d' utilitzar grans installacions elctriques o xarxes d'informaci. A ms, per arrodonir aquest avantatge, trobem un mode "sleep" o dormit que obliga al maquinari a entrar en un estat per a conservar encara ms l'energia d'aquesta reduint fins a un 500% el consum, segons el manual d'instruccions.

Consum de programari: una cosa a avaluar s el codi necessari per a poder intercanviar informaci entre aparells amb XBee. Aix no s cap problema ja que per fer l'exemple ms senzill d'enviament noms calen 2 ordres.

Baix cost: els mduls XBee estan creats per a poder ser el ms econmics possibles a diferncia d'altres competidors. Xarxa en malla: el maquinari dna la possibilitat de poder crear una xarxa en malla per a simplificar la feina. He buscat una a API, per poder comunicar varis nodes entre s sense limitacions.

65

Fig. 47: XBee muntat amb Arduino

Com funciona?
Els mduls xbee es comuniquen mitjanant una interfcie a nivell lgic asincronament mitjanant el port serial. Aix significa que s una comunicaci binria entre els diferents dispositius, de manera que tindrem dos estats, flanc ascendent i un flanc descendent; aquest mtode s anomenat UART (Universal Asynchronous ReceiverTransmitter) Transmisor-Receptor Asncron Universal.

66

Fig. 48: Exemple transmissi de dades

Mode programaci

Per a poder utilitzar XBee, s'ha de programar per tal de configurar inicialment cada xip XBee, de manera que noms caldr fer-ho un cop. En aquest mode tenim diferents comandes per a editar diferents parmetres del XBee. Exemples d'algunes comandes utilitzades al projecte:

67

Comanda Funci AT RE AP X MY XXXX ID XXXX CH XX BD XX Inici comanda Resetejar valors per defecte de fbrica Seleccionar el mode API en estat activat o desactivat. Donar valor a la direcci d'origen (amb aquesta direcci podrem identificar i posteriorment enviar informaci) Identificar la xarxa a la que es vol connectar aquest node Identificar el valor del canal de la xarxa que es vol connectar Defineix la velocitat de connexi

DH XXXX Part alta de l'adrea dest DL XXXX WR CN Part baixa de l'adrea dest Gravaci de les configuracions al xip XBee finalitzaci de la comanda

Com programar amb Arduino?


Segons els manuals per a utilitzar lArduino amb el XBee especifica un mtode per a programar extraient el microcontrolador de la placa i creant un circuit independent de programaci. La idea de treure el microcontrolador cada cop que volia programar un xip XBee, no em va convncer per temor a malmetre algun component de manera que vaig trobar una manera de no haver de desmuntar res.

68

Si agafem lArduino i el programem amb un codi buit d'aquest estil: setup{} loop{} LArduino actua com un pont entre el port USB i els xips XBee, donant la possibilita de programar-los sense problemes.

XBee en Mode API


La funcionalitat per defecte dels xips Arduinos s tindre una comunicaci amb un origen prefixat i un dest prefixat, els xips noms coneixen un node que s amb el que es comuniquen de manera que les comandes DH i DL tenen sentit noms en un mbit en el que el mode API no t activitat.

Fig. 49: Xarxa XBee

Quan activem el mode API, els XBee es comportaran com una xarxa entrellaada ampliant considerablement la funcionalitat dels mateixos ja que no depn del node enllaat nicament per establir una comunicaci. 69

Utilitzant el mode API, un xip XBee podr comunicar-se amb diferents nodes sense tenir prefixat cap d'aquests. El disseny de la xarxa del projecte es convertir en estrella ja que qualsevol node podr interactuar amb qualsevol altre.

Comandes AT
La programaci s'estableix mitjanant el port serial, d'aquesta manera com en quasi tots els maquinaris es fa compatible una comunicaci fcil i flua. Per a iniciar una conversaci amb el xip XBee, necessitarem enviar el comandament d'inici "+++" i tindrem 5 segons per a enviar totes les comandes que vulguem, passat aquest temps el mode programaci quedar deshabilitat. Totes les comandes que enviem han de comenar pel prefix "AT" seguit de la comanda que vulguem enviar. Tenim la possibilitat de concatenar vries comandes utilitzant la segent sintaxis:

ATcomanda1,comanda2,comanda3 o ATCOMANDA1 ATCOMANDA2 ATCOMANDA3 Exemple:

ATRE,AP2,CE0,MY0001,ID1111,CH0C,WR,CN

70

Cada comanda AT tamb tindr una sintaxis seguint el segent patr:

Fig. 50: Esquema comanda AT

Diferncies entre XBee i XBeePro


Les diferncies entre les dos versions de XBee son mnimes i noms actuen sobre les especificacions, donant a la versi Pro l'avantatge de tindre un emissor ms potent, amb la conseqncia d'un major consum energtic ( un 20%mxim ). De manera que amb un xip simple del XBee l'emissor t una capacitat d'uns 100m sense obstacles i uns 30 metres amb obstacles com parets, a la versi Pro aquest rang augmentaria fins els 1500 metres.

Fig. 51: Mesures XBee

71

MicroSD Shield
El projecte manegar molta informaci voltil per cal buscar algun mtode per poder emmagatzemar aquesta informaci per poder-la tractar posteriorment amb un ordinador i aix tenir ms potncia. El maquinari especfic per poder tractar una targeta SD treballa amb el sistema d'arxius FAT(File Allocation Table) Taula d'Assignaci per Arxius.

Fig. 52: MicroSD Shield

Qu s FAT?

s un sistema d'arxius desenvolupat per Microsoft. En un inici va ser creat per a la plataforma MS-DOS i desprs va sser adoptat per la gran majories de sistemes operatius o sistemes d'emmagatzematge com els diskets al principi i avui en dia en llapis de memria USB o targetes de memria.

72

El seu xit va sser la seva simplicitat, el sistema funciona amb una taula com a ndex dels arxius que es volen emmagatzemar. Aquesta taula cont la direcci fsica on es troba el principi de l'arxiu, un cop situat a la direcci s'ha de llegir l'arxiu, aquest a l'hora cont la direcci del segent bloc on es situa la continuaci de l'arxiu, de manera que en cas de no tindre l'arxiu consecutiu el mitj fsic haur d' anar saltant de direcci en direcci per poder compondre l'arxiu necessari. Una dels avantatges ms interessants s el fet de que he pogut trobar una API per suportar la lectura o gravaci d'informaci dins d'una targeta de memria amb un sistema d'arxius FAT, aix em dna un temps essencial dins del projecte. Un cop comprovada aquesta llibreria i els seus avantatges, com la reducci de consum de memria necessria per accedir a la informaci.

73

Qu s una targeta de memria o targeta de memria flash?


Es un mitj fsic per emmagatzemar informaci, aquesta memria s derivada de les EEPROM (Electrically-Erasable Programmable Read-Only Memory) ROM programable i esborrable elctricament amb la diferncia que esborrarem en petits blocs, d'aquesta manera la velocitat de la memoria augmentar considerablement respecte a les EEPROM normals.

Fig. 53: Tipus de targetes de memria

D'aquesta memria existeixen moltes opcions per comprar, entre elles SD, CompacFlash, SmartMedia i d'altres. Les diferncies estan en la capacitat de les memries, la mida i la velocitat.

74

Per qu una MicroSD?


Per decidir quin tipus de targeta s'utilitzaria al sistema, es van avaluar els diferents components similars que es trobaven al mercat per l' mplia utilitzaci de les targetes SD i els seu baix cost de producci (causats per l' estandarditzaci) ens dna un potencial suficient per no haver d'adquirir un lector o un mtode per extreure la informaci emmagatzemada.

Fig. 54: Mesures i tipus de SD

La mida i el preu d'aquestes targetes va sser molt rellevant per a l' elecci dins del projecte ja que la capacitat no s cap problema per al nivell d'informaci que manegarem. De manera que la combinaci d'una targeta de memria amb un sistema d'arxius FAT s la millor combinaci per al projecte, ara caldr escollir en quin format enregistrar la informaci en un arxiu de text pla.

75

Format CSV
Aquest format ha estat escollit ja que compleix les caracterstiques necessries per a poder sser introdut dins el sistema: Treballa com a text pla s molt senzill Format obert mpliament utilitzat per diferents programaris d'ofimtica. La prdua d'espai s molt baixa

Aquest format representa una taula organitzada les columnes delimitada cadascuna per comes y les files per salts de lnia. Exemple: 1331, sants, 08028, barcelona 1421, les corts, 08014, barcelona 8821, gracia, 08007, barcelona A l'exemple anterior podem veure com hi ha 4 columnes: identificador, barri, codi postal i ciutat. I a l'hora 3 registres o fileres.

76

Sensors:
Donat que els sensors tenen un cost molt car econmicament parlant respecte a la qualitat del projecte he optat per buscar els sensors ms econmics i introduir-los en funcionament dins del projecte. Tamb cal especificar que el posar en funcionament qualsevol d'aquests sensors no implica cap problema mentre que el maquinari tingui suficients ports d'entrada i sortida. Per fer funcionar els sensors noms caldr veure les especificacions tcniques dels fabricants i adaptar el codi per a poder fer una lectura ptima d'aquests. Per veure una variaci de valors per als sensors establir una connexi directe entre els valors extrets dels sensors i els que es visualitzen mitjanant les interfcies del projecte. En un cas real haurem d'establir algun mtode per mantindre una relaci de valors ptima i evitar variacions de voltatge. Els problemes amb les mesures inestables es podrien solucionar fent una mitja dels ltims valors recollits de manera que una variaci dins d'una mesura instantnia no modifiqus substancialment la mesura a visualitzar. Aquest apartat es pot estendre mpliament, agregant sensors i complicant la obtenci de les dades. Tamb seria factible poder fer prediccions ja que salvaguardem la informaci en una targeta de memria no voltil; en tot moment podrem recopilar les mesures antigues i estadsticament parlant podrem extreure prediccions, encara que per la limitaci del temps he pensat que aquest apartat ha de sser 77

ms lleuger ja que els sensors dins del projecte sn les fulles d'un arbre i existeix una necessitat ms gran de tindre unes bases ms consolidades. Un fet a l'hora d'escollir els sensors va sser la seva independncia respecte als altres ja que mentre cercava diferents models i sensors vaig poder observar que la gran majoria dels sensors sn centralitzats en un nucli per a poder estalviar recursos econmics i espai per la meva necessitat implica poder intercanviar qualsevol d'ells independentment de la resta, de manera que si algun dels sensors s'espatlla els altres poden seguir funcionant sense cap problema.

Temperatura:
Per a poder mesurar la temperatura he seleccionat el MCP9700A ja que s molt econmic en comparaci amb els seus rivals. Aquest tamb ens deixa obtindre un gran rang de temperatures, suficients com per determinar una temperatura meteorolgica ja que la major part del globus terraqi tindr una temperatura dins del rang especificat pel fabricant: -40C fins els 125C.

78

Fig. 55: Sensor temperatura

Aquest sensor en concret disposa de tres pins: Vin: Entrada de l'alimentaci. Gnd: La presa de terra. Vout: El valor analgic de sortida del sensor. Aquest valor un cop tradut a digital tindr un valor entre 0 i 1023 i mitjanant una presa de dades del voltatge d'entrada del sensor ens podem estalviar errors amb les variacions de voltatge que pot provar el nostre maquinari.

79

Fig. 56: Simulaci sensor temperatura

Sensor d'Infraroig Passiu:


El sensor PIR (Passive InfraRed sensor) o Sensor d'Infraroig Passiu detecta el moviment a una distncia d'uns 6 metres aproximadament, aquest utilitza una lent de Fresnel per poder augmentar els graus de visi de manera que ajuda a sensors de petita distncia focal.

Fig. 57: Dimensions sensor d'infraroigs passiu

80

A partir del sensor s'envia un raig d'infraroig que queda dispersat amb la lent, llavors el PIR espera que aquest raig xoqui amb algun objecte i enregistra el temps en que el raig viatja pel medi; si aquest augmenta significa que els objectes que envolten el sensor han variat. Per a poder complir les especificacions del fabricant el sensor ha d'establir la posici per defecte dels objectes del voltant. Concretament es requereix entre 10 i 60 segons per a que el sensor pugui establir quins sn els temps esttics de l'entorn. Durant aquest temps s recomanable no llegir en cap moment l'entrada digital del nostre maquinari.

Fig. 58: Sensor sensor d'infraroigs passiu

Aquest sensor t 3 pins de connexi: Vin: Voltatge d'entrada per al sensor. Gnd: s la presa de terra del sensor. Vout: Voltatge de sortida del sensor, aquest es sita en flanc ascendent per indicar que hi ha algun moviment al seu voltant, de manera que s una sortida digital.

81

Fig. 59: Funcionament del sensor d'infraroigs passiu

Aquest sensor s especialment fabricat per a tindre una funci de vigilncia. Podem detectar el moviment, i encendre les llums, enviar mitjanant Internet algun missatge per advertir dels canvis de moviments, fins i tot es podria arribar a enllaar amb una alarma real provocant encendre les llums o trucar la policia. Aquesta funcionalitat encara fa visionar el projecte com un sistema ms generalista, doncs les possibilitats per a comunicar el mn exterior amb el nostre maquinari son molt grans, una altra funci que pot tindre el sensor PIR seria encendre les pantalles de LEDs noms quan hi hagi alg present a la habitaci aix estalviarem energia mentre ning visualitzi les dades per pantalla.

82

Fig. 60: Circuit sensor d'infraroigs passiu

83

Sensor Humitat:

El sensor escollit per mesurar la humitat ha estat el 808H5V5. Les seves caracterstiques: Un baix preu. El voltatge de sortida es modifica segons la variaci de humitat relativa de l'entorn del sensor. Alta precisi. Funcionalitat a llarg termini. Independncia amb d'altres sensors.

Fig. 61: Circuit sensor d'humitat

El fabricant d'aquest sensor especifica que per obtindre un valor correcte de la humitat em de tindre en compte les variacions que provoca la 84

temperatura sobre el sensor. De totes maneres el rang de fiabilitat del sensor sobre la temperatura encara es situa al mateix mbit que el proporcionat pel sensor de temperatura de manera que les dades en tot moment seran el ms correcte possible.

Fig. 62: Sensor d'humitat

Fig. 63: Mesures sensor d'humitat

85

Sensor Fotoresistncia:
Aquests tipus de sensors anomenats LDR (light-dependent resistor) son resistncies capaces de variar segons la llum que te dentrada, aquesta funcionalitat ens dona la possibilitat de calcular el nivell de llum que tenim al voltant del sensor i poder identificar si hi ha un dia totalment nuvolat o clar.

Fig. 64: Sensor fotoresistncia

Per a poder utilitzar-lo he necessitat muntar un circuit pull-up ampliar el rang del voltatge de sortida i aix obtindre lescala major possible. Aquest sensor tindr un mxim de 10k ohms per al mercat podem trobar-ne fins 100k ohms. De manera que si hi ha molta llum la resistncia disminueix mentre succeeix el contrari amb poca llum.

Fig. 65: circuit sensor fotoresistncia:

86

87

Diagrama de fluxos dels nodes:


Diagrama del node Sx01:

88

Diagrama del node Px02:

89

Diagrama del node Cx03:

90

Problemes sorgits:
Problema amb les pantalles:
Com ja s'ha explicat anteriorment va sorgir un problema amb les pantalles de LEDs. Aqu explicar com va sser el procs per identificar l'error i solucionar-lo. Al principi creia que tota la problemtica sorgia quan les pantalles s'apilaven grcies a la funcionalitat del port SPI, per es va veure que tamb existien problemes de refresc amb el cas d'una pantalla individual. Com que les pantalles no funcionaven correctament, i comenava a intuir que les pantalles tenien un problema amb el refresc, ja que, l'ordre de la impressi als leds es modificava. Aix que hem vaig posar en contacte amb el fabricant del programari per a les pantalles, recordo que es el mateix que inserir aquestes una controladora. El contacte amb la tenda va sser rpid, de seguida van mostrar molt d'inters pel meu problema i vaig estar en contacte amb un comercial. Amb aquest comercial varem inspeccionar tant el meu programari com les connexions entre lArduino i les pantalles; com he dit anteriorment aquesta connexi s'establia mitjanant el port SPI i amb els altres components no ha donat problemes.

91

A l'hora i vist que el comercial no hem semblava gran ajuda ja que portvem mitja dotzena de correus i encara no havem identificat el problema vaig comenar a enviar la meva consulta a varies fonts ms: Frums especialitzats amb la temtica Arduino i electrnica, redirigiu-vos a la bibliografia al el link: Arduino Forum - el meu fil Alguns usuaris que havien penjat a Youtube projectes amb les mateixes pantalles (o aix creia). Amb els usuaris de Youtube no vaig tindre molta sort, ja que aviat em varen indicar que les seves pantalles tenien un microprogramari inferior al que jo podia estar manegant. Encara que no em van donar la soluci aquesta diferncia em va fer tornar a contactar amb el comercial de la tenda en lnia per veure si podia tindre algun tipus de relaci el fet de que les meves pantalles no funcionessin exactament com la d'altres usuaris. Aleshores el comercial va iniciar una incidncia amb els tcnics per veure si podia sser un problema seu, poc desprs em van respondre que ells no tenien indicis de tindre cap problema. Fins aquest moment la desesperaci augmentava ja que no avanava el projecte i en cas de quedar-me ms temps aturat amb les pantalles podia crrer el risc de perdre massa temps. El mitj dels frums va donar ms fruits. Poc a poc vaig poder observar com en unes setmanes ms tard hi havien ms usuaris que compartien el mateix problema que jo. En alguns llocs el tema es va tancar rpidament ja que trobar alg que comprs les mateixes pantalles i volgus connectar-les amb lArduino i llegs els mateixos frums era poc probable.

92

Passats els dies alg va llegir un comentari que vaig deixar a la prpia pgina web de la tenda; aquest usuari em va indicar un enlla cap un nou fil de discussi del mateix frum de la tenda on es parlava del problema i aqu finalment s on vaig reafirmar que el problema existia al microprogramari de les pantalles. En aquest mateix moment, vaig augmentar la pressi cap al comercial de la tenda enviant-li un codi molt senzill amb unes imatges molt instructives de com s'hauria de veure per pantalla el resultat d'executar el codi i una imatge amb el resultat real de com es veia a les pantalles. Conjuntament amb uns enllaos dels diferents debats en que vaig anar trobant altres usuaris amb el mateix problema. La resposta al segent dia (tenim una diferncia horria de 7 hores i era difcil coincidir) va sser que enviaria el codi a un tcnic hi ho provarien al taller en real. Passats alguns dies vaig haver de recordar que esperava la seva resposta, cosa que va fer segurament una mica mes gil el procs ja que la resposta no es va fer esperar molt. La seva resposta fou que tenia ra amb el problema i existia un error amb el refresc de les pantalles. Tot semblava tenir soluci reiniciant tot el maquinari per aquesta no s una opci viable quan treballes amb variables voltils. La seva resposta al problema va sser preguntar-me si ja havia trobat jo una soluci: vull fer constar que era jo qui buscava una soluci. De nou vaig haver de posar les cartes sobre la taula, i demanar algun tipus de remei. Aquest cop va sser quan vaig veure que no podia continuar esperant una soluci per aquesta via ja que la meva intenci era arreglar-ho i ells retornar-me els diners (i jo fent-me crrec dels costos d'enviament). 93

Aix que em vaig centrar en la opci dels frums, i aqu es on va sorgir la soluci necessria per arreglar les pantalles, trobareu el fil del frum a lapartat bibliografia el enlla anomenat: Arduino Forum - la soluci Finalment vaig aconseguir el microprogramari en una d'aquelles

interaccions amb el comercial i amb l'ajuda via missatges entre varis usuaris dels frums es va trobar la soluci, o millor dit, es va acabar optimitzant el codi de les impressions per pantalla, eliminant codi i modificant alguns bucles. Ara noms faltaria poder programar les pantalles amb el codi arreglat, aquesta vegada era una soluci tcnica i vaig pensar que no comportaria tants problemes, i un altre cop em vaig equivocar. Grcies a les sospites d'un usuari vaig poder gravar informaci soldant uns pins en una part de les pantalles. Era un alleujament poder torbar alg que tenia les pantalles arreglades i funcionals. Un cop ms vaig donar voltes per Barcelona buscant una manera de no haver de soldar res a les pantalles. Mai havia soldat en xips integrats i no era la meva idea haver de fer-ho. Per desgrcia un altre cop vaig equivocar-me. La planificaci del projecte ja era un alt i baix, vaig haver de prioritzar altres objectius per sobre de les pantalles per a qu quan tingus arreglat el tema de les pantalles poder seguir amb certa velocitat el projecte. He de dir que encara tenia esperances de poder arreglar-les. Tornant a les soldadures, totes les tendes em van denegar la meva proposta de trobar una soluci sense haver de soldar. Aix que vaig haver de recrrer al tutor del projecte per intentar solucionar aquest 94

entrebanc, aix que desprs de concertar la cita amb el tutor es va quedar ell una pantalla per veure si seria factible soldar ja que no hi havia molt d'espai per a fer virgueries. Em va demanar uns pins especials per a poder intentar una soldadura invertida al que seria normal, aix provocaria que els pins s'invertissin i desprs noms tindria un problema molt petit en relaci a tot el que ja s'ha solucionat. A l'hora de la moguda de les soldadures un cop ms tenia tornar a cercar a la xarxa algun tipus de programador capa de gravar a les pantalles el codi que s'ha modificat del microprogramari. Segurament una del les millors eleccions que he pres amb el projecte ha estat diversificar les tendes per tindre diferents provedors de material, i cercant a la xarxa vaig trobar que un d'ells hem va oferir el programador que necessitava. El programador AVR necessari el tenia justament a la venda una de les tendes en lnia que vaig utilitzar al principi del projecte aix que noms va caldre fer la comanda i esperar a rebre el programador (tot i aix no estava 100% segur de que tot funcions). Els mateixos dies que vaig rebre el programador vaig fer una visita per a qu m'ensenys el tutor a soldar les pantalles, una classe molt instructiva que va durar poc ms de 10 minuts, ja que la pilota de les soldadures amb els pins correctes tenia una fcil soluci. Les pantalles van quedar perfectes amb els seus ports de programaci i a ms encara eren apilables, vull dir que fsicament els pins no donaven problemes per a interconnectar les pantalles i aix s'agraa ja que en cas de donar

95

problemes haurem de dessoldar i aquesta no era una opci que trobs gaire interessant. Un cop amb les pantalles i el programador a la m, vaig haver de familiaritzar-me amb el programa que s'encarregaria de compilar el nou microprogramari de les pantalles i enviar-ho al programador per a que aquest alhora programs les pantalles una a una. Quan tot va comenar a funcionar la veritat s que per una part em va donar una gran, molt gran satisfacci per per l'altre banda aquest problema ha suposat moltes hores de treball del projecte, segurament un fet impossible de concebre en un altre entorn. S'ha de dir que en cas de no trobar un cam a seguir (molt cops vaig estar a punt de llenar el projecte per la finestra) tenia un plan B, i era adquirir una pantalla de nmeros de 8 segments per poder visualitzar la informaci que volia. Aquesta opci era la ltima que volia prendre ja que un dels objectius del projecte era fer que el sistema tingus un impacte visible per poder introduir-ho dins de la llar.

Al final no vaig haver d'utilitzar el plan B ja que tot va funcionar com s'esperava des d' un primer moment i un cop vist que amb una mica d'empenta ho he pogut solucionar vaig sentir molta gratificaci.

Problema amb un dels xips XBee


A l'hora d' interconnectar tots els Arduinos mitjanant la XBee va sorgir un problema ja que un dels xips estava mal configurat de fbrica i la velocitat de comunicaci no era la de per defecte.

96

Aquest problema es va solucionar enviant per correu ordinari a la tenda en lnia BricoGeeks aquest xip que tenia un funcionament errtic.

El resultat va ser que en poc menys d'una setmana el xip ja es trobava de tornada a casa ben configurat. El mateix dia vaig poder establir la connexi sense problemes i conseqentment vaig poder enviar dades.

Problema amb la lliberia WString


Aquesta llibreria es una versi molt reduda de la llibreria estndard de C, i s'encarrega de tenir-la actualitzada el projecte Wirings. No es habitual treballar amb tipus de dades String dins un sistema tan petit, ja que l'espai en memria dels chars es molt mes petita, per tot i aix necessitava concatenar, retallar i d'altres accions amb els textos i vaig avaluar la possibilitat d'utilitzar aquesta llibreria per a manegar segons quines dades que es mostrarien al node CX03 (el servidor HTML). El problema va sorgir quan el node CX03 es situava en un estat avanat del projecte i aquests actuava de manera errtica. Un cop programat lArduino actuava amb valors aleatoris i enviant per pantalla missatges sense sentit.

97

String::~String() { free(_array); _capacity = 0; _length = 0; }

El problema sorgiria de l'espai en memria voltil ja que aquesta s'esgotava sense tenir una explicaci evident. Aqu es on vaig trobar la manera de visualitzar quin espai en memria quedava restant, el mtode utilitzat era senzill i bsic. La memria voltil creix en dos sentits del inici en direcci al final stack i en sentit oposat del final fins al inici heap, tenint aquestes dades, podem calcular quina memria til tenim.

Fig. 66: Stack i Heap

98

Si restem aquests dos punters obtenim la memria voltil lliure en bytes que tenim accs. Ara amb aquesta eina, vaig debugar tot el codi per veure on perdia memria disponible. Desprs de danlisis vaig determinar que eren les dades String que perdien informaci. Cercant per la xarxa vaig trobar que el problema era mig resolt ja que a la classe WString no tenia destructor i la memria no s'alliberava correctament, de totes maneres les modificacions descarregades encara tenien un error ja que no setejaven alguns valors de la classe.

Problema amb l'enviament HTML


Al moment d'enviar HTML mitjanant lArduino vaig tindre molt problemes per poder fer visible el codi HTML des de qualsevol punt de la xarxa. El problema sorgia amb els navegadors web ja que avortaven qualsevol connexi, sense donar cap error. Resulta que desprs de fer varies probes el codi del projecte tenia un error. Tota transmissi HTML va precedida d'una capalera que dona el vist-iplau del servidor cap al client, desprs d'aquesta capalera s'envia un salt de lnia obligatori amb una lnia buida, aquest era l'error ja que no enviava cap salt de lnia i els navegadors no feien cas del codi que enviava a continuaci.

99

100

Planificaci:
Planificaci ideal:
Al principi del projecte es va iniciar una planificaci amb la idea de seguir-la per aix finalitzar el projecte en un temps correcte sense tindre moltes complicacions.

Cal a dir que la meva idea ha estat acabar-lo en un quadrimestre i que a ms treballo en una empresa privada i que per tant ha influt el fet de tindre altres projectes en els que treballar. Dit aix, cal afegir que no tots els dies es t el mateix nim ni tampoc es pot previndre si sorgiran imprevists. A ms, cal tenir en compte tamb aquelles variables implcites en les que nosaltres no participem, com per exemple l'espera dels diferents enviaments necessaris que s'han produt per a la construcci del mateix.

101

Altres

Controls Lectura de informacio Compra de components Reunions Tutor 1 01/02/2010 02/02/2010 03/02/2010 04/02/2010 05/02/2010 06/02/2010 07/02/2010 08/02/2010 09/02/2010 10/02/2010 11/02/2010 12/02/2010 13/02/2010 14/02/2010 2 15/02/2010 16/02/2010 17/02/2010 18/02/2010 19/02/2010 3 20/02/2010 4 21/02/2010 22/02/2010 1 23/02/2010 5 24/02/2010 25/02/2010 2 26/02/2010 5 5 27/02/2010 7 28/02/2010

Memoria Confecci motivaci Confecci Objectius

Prototipatge Primeres poves Arduino

102

Memoria Confeccio memoria 01/03/2010 02/03/2010 03/03/2010 2 04/03/2010 05/03/2010 3 4 06/03/2010 5 07/03/2010 08/03/2010 09/03/2010 3 10/03/2010 3 11/03/2010 3 12/03/2010 2 13/03/2010 3 14/03/2010 2 15/03/2010 2 16/03/2010 17/03/2010 18/03/2010 2 19/03/2010 5 2 20/03/2010 2 21/03/2010 3 22/03/2010 3 23/03/2010 24/03/2010 3 25/03/2010 2 1 26/03/2010 27/03/2010 28/03/2010 29/03/2010 30/03/2010 31/03/2010 1 3

Altres Compra components (pantalla)

Prototipatge Comunicaci wifi 4 Escriptura SD Comunicaci Ethernet Integarci comunic. wifi i ethernet Integraci wifi i escriptura SD

103

Llibreries Confecci llibreries Xbee 01/04/2010

Memoria Confeccio memoria 1 1 5 2 3 3 5 5 3 2 02/04/2010 3 03/04/2010 04/04/2010 05/04/2010 06/04/2010 07/04/2010 08/04/2010 09/04/2010 10/04/2010 11/04/2010 12/04/2010 13/04/2010 2 14/04/2010 4 15/04/2010 2 16/04/2010 3 1 17/04/2010 5 1 7 18/04/2010 2 3 19/04/2010 2 20/04/2010 1 21/04/2010 3 22/04/2010 1 5 23/04/2010 4 24/04/2010 2 25/04/2010 7 26/04/2010 3 2 27/04/2010 1 28/04/2010 29/04/2010 4 30/04/2010

Prototipatge Comunicaci wifi Primeres proves pantalles Confecci web

104

Llibreries Confecci llibreries Xbee Confecci llibreries pantalla

Memoria Confeccio memoria 01/05/2010 5 02/05/2010 03/05/2010 3 04/05/2010 3 05/05/2010 06/05/2010 2 1 07/05/2010 2 4 08/05/2010 2 09/05/2010 3 3 3 1 10/05/2010 5 11/05/2010 3 12/05/2010 13/05/2010 4 14/05/2010 1 15/05/2010 4 3 16/05/2010 3 4 17/05/2010 1 18/05/2010 1 19/05/2010 1 20/05/2010 3 1 21/05/2010 4 22/05/2010 1 8 23/05/2010 2 24/05/2010 3 25/05/2010 3 26/05/2010 3 27/05/2010 4 28/05/2010 7 29/05/2010 1 1 8 30/05/2010 1 31/05/2010 2 1 4 1

Prototipatge Comunicaci wifi Proves amb sensors

105

Prototipatge Integraci tecnologies

Llibreries Confecci llibreries Xbee Confecci llibreries pantalla

Memoria Confeccio memoria 01/06/2010 1 02/06/2010 03/06/2010 2 2 04/06/2010 3 1 05/06/2010 5 06/06/2010 8 07/06/2010 2 2 08/06/2010 1 4 3 2 3 1 5 3 09/06/2010 10/06/2010 11/06/2010 12/06/2010 13/06/2010 3 3 14/06/2010 5 15/06/2010 2 1 16/06/2010 2 17/06/2010 8 3 18/06/2010 4 19/06/2010 7 20/06/2010 8 21/06/2010 5 22/06/2010 6 23/06/2010 4 2 24/06/2010 2 25/06/2010 7 26/06/2010 7 27/06/2010 1 28/06/2010 29/06/2010 30/06/2010 3 3

106

Problemes de planificaci:
Com era d'esperar, i tot i haver intentat prevenir-los, han aparegut imprevistos, alguns dels quals ha resultat impossible trobar solucions rpides per accelerar el projecte.

A pesar dels problemes que han existit, majoritriament s'han anat solucionant o variant objectius que m'han perms valorar d'altres coses. Un altre factor determinant en el projecte ha estat l'augment de la dificultat ja que a mesura que el projecte avanava, s'anaven perfilant coses molt diferents a la idea original.

En aquest punt i vist ja tot el succet, opino que aquest projecte es per a dedicar-hi molt ms temps personal degut a que les opcions i les bases sobre les que s'ha establert el projecte sn suficientment fortes y fiables com per crear un producte d'aquest.

Tot i que la idea inicial segueix present, em trobo amb que partint d'una estaci meteorolgica s possible que hagus acabat sent un centre de domtica i de control de la llar.

De manera que en el projecte, tot i complicar-se per prpia elecci, s'han creat unes bases slides per poder creure en un projecte prou fort.

107

Planificaci real:
Tot i els problemes generals que han sorgit i sobretot, a pesar del ms determinant, el relacionat amb les pantalles, s'han arribat als objectius tenint complicacions i trobant solucions.

Per a poder finalitzar el projecte a temps s'han hagut de modificar la temporalitat i el moment d'inici de vries tasques per tal d' arribar amb el projecte el ms avanat possible per quan arribessin les solucions per a alguns dels problemes sorgits durant la duraci d'aquest. Al final de tot les hores utilitzades per al projecte seran unes 534 sense comptar daltres que no he apuntat quan de temps he dedicat al projecte.

108

Altres

Controls Lectura de informacio Compra de components Reunions Tutor 2 01/02/2010 02/02/2010 03/02/2010 2 04/02/2010 3 05/02/2010 1 06/02/2010 07/02/2010 1 3 08/02/2010 1 09/02/2010 10/02/2010 1 1 11/02/2010 1 12/02/2010 13/02/2010 14/02/2010 2 15/02/2010 16/02/2010 17/02/2010 18/02/2010 19/02/2010 3 20/02/2010 4 21/02/2010 22/02/2010 1 23/02/2010 5 24/02/2010 25/02/2010 2 26/02/2010 5 5 27/02/2010 7 28/02/2010

Memoria Confecci motivaci Confecci Objectius

Prototipatge Primeres poves Arduino

109

110

Memoria Confeccio memoria 01/03/2010 02/03/2010 03/03/2010 2 04/03/2010 3 05/03/2010 4 06/03/2010 5 07/03/2010 08/03/2010 3 09/03/2010 10/03/2010 3 11/03/2010 2 3 12/03/2010 13/03/2010 3 14/03/2010 2 15/03/2010 2 16/03/2010 17/03/2010 18/03/2010 2 19/03/2010 5 2 20/03/2010 2 21/03/2010 3 22/03/2010 3 23/03/2010 24/03/2010 3 25/03/2010 2 1 26/03/2010 27/03/2010 28/03/2010 29/03/2010 30/03/2010 31/03/2010 1 3

Altres Compra components (pantalla)

Prototipatge Comunicaci wifi 4 Escriptura SD Comunicaci Ethernet Integarci comunic. wifi i ethernet Integraci wifi i escriptura SD

111

Llibreries Confecci llibreries Xbee 01/04/2010

Memoria Confeccio memoria 1 1 5 2 3 3 5 3 2 02/04/2010 03/04/2010 04/04/2010 05/04/2010 06/04/2010 07/04/2010 08/04/2010 09/04/2010 10/04/2010 11/04/2010 12/04/2010 2 13/04/2010 14/04/2010 2 15/04/2010 3 16/04/2010 5 17/04/2010 2 18/04/2010 5 19/04/2010 5 20/04/2010 7 3 21/04/2010 22/04/2010 23/04/2010 24/04/2010 8 25/04/2010 3 26/04/2010 6 27/04/2010 2 6 28/04/2010 29/04/2010 6 30/04/2010

Prototipatge Comunicaci wifi Primeres proves pantalles Error amb les patalles

112

Llibreries Confecci llibreries Xbee Confecci llibreries pantalla

Memoria Confeccio memoria 4 5 01/05/2010 1 02/05/2010 03/05/2010 3 04/05/2010 2 05/05/2010 1 3 06/05/2010 1 5 07/05/2010 2 6 08/05/2010 3 4 2 09/05/2010 1 3 10/05/2010 5 11/05/2010 12/05/2010 5 1 13/05/2010 6 5 14/05/2010 4 3 15/05/2010 1 3 16/05/2010 1 4 17/05/2010 2 18/05/2010 1 19/05/2010 3 2 1 20/05/2010 4 4 21/05/2010 2 22/05/2010 2 8 23/05/2010 4 24/05/2010 6 25/05/2010 3 26/05/2010 3 27/05/2010 4 28/05/2010 6 29/05/2010 1 1 2 30/05/2010 1 31/05/2010 2 4 1 1

Prototipatge Comunicaci wifi Proves amb sensors Error amb les patalles

113

Llibreries Confecci llibreries Xbee Confecci llibreries pantalla

Memoria Confeccio memoria 3 1 1 01/06/2010 4 02/06/2010 2 03/06/2010 1 04/06/2010 05/06/2010 06/06/2010 8 2 2 07/06/2010 3 5 08/06/2010 09/06/2010 2 10/06/2010 3 3 1 11/06/2010 5 2 12/06/2010 2 2 5 13/06/2010 5 1 14/06/2010 2 3 1 15/06/2010 2 16/06/2010 8 3 2 17/06/2010 4 1 1 18/06/2010 9 2 19/06/2010 6 6 20/06/2010 6 21/06/2010 1 22/06/2010 23/06/2010 24/06/2010 25/06/2010 26/06/2010 27/06/2010 2 4 28/06/2010 29/06/2010 30/06/2010 4 3 3 2 2 5 7 1 3 2 4 3 2 1 4 5 2

Prototipatge Comunicaci wifi Integraci tecnologies Confecci web

114

Valoraci econmica:
En aquest espai valorarem quins costos i quins beneficis podem extreure del projecte, ens basarem en varis apartats bsics que identifiquen una evoluci econmica del projecte des del principi daquest. Primerament identificarem quins sn els rols que es necessiten per portar a terme el projecte. Daquesta manera podrem observar quin s el paper de cadascun i la temporitzaci dels mateixos.

Rols dels components:


A continuaci indicarem quins tipus de rols poden intervenir en el projecte de produci d'un prototip. Sha de tindre en compte que hi ha ms rols que podren tenir el seu paper en el projecte un cop acabat el prototip, com per exemple, un comercial que no inclourem en aquesta valoraci. Analista: Lanalista ser lencarregat davaluar les tecnologies que utilitzarem en el projecte de manera que la seva participaci es veur afectada des del principi daquest. Aquest rol assolir una funcionalitat de consultor que indiqui el cam a seguir.

Tcnic de gesti: Necessitarem lesfor per part dun tcnic de gesti per poder programar el sistema. Per a trobar aquest perfil no tindrem cap problema ja que el llenguatge s mpliament utilitzat a lactualitat. Lencarregat daquest rol ha de tenir en compte que el treball es produeix en un entorn de 115

microcontroladors, de manera que la programaci en aquest mbit ha de sser el ms simple possible.

Tcnic de sistemes: Aquest rol ser lencarregat de fusionar les diferents tecnologies i poderles posar en funcionament. D'aquesta manera que al final obtindrem la construcci d'un prototip que uneix tots els objectius mencionats al projecte i que a ms est fet amb tot el maquinari especificat per lanalista.

Material necessari:
Durant tot el projecte ja hem especificat en varies ocasions quin s el material necessari per a construir aquest prototip. En aquest apartat mencionarem els preus de cadascun dels materials, de totes maneres teniu accs a les factures rebudes al annex anomenat Factures. Cantitat 1 1 1 1 1 3 1 1 4 1 1 1 Producte Sensor Temperatura Sensor LDR Sensor PIR Sensor Humitat 808H5v5 Modul MicroSD 2Gb Arduino ZigBee Pack Arduino Ethernet Shield Kit Programador USB AVR LED MATRIX SPI RGB Metracrilat Capces Cables
Cost enviaments Sparkfun.com BricoGeeks.com Libelium

Preu 2,50 2,00 14,00 15,00 20,00 143,00 37,70 18,44 48,73 34,00 7,00 10,00

Total 2,50 2,00 14,00 15,00 20,00 429,00 37,70 18,44 194,92 34,00 7,00 10,00

30,63 20,88 23,20

116

En total el preu del material augmenta fins als 859,27 amb IVA , cal dir que en cas de produir aquest prototip a una major escala els preus dels materials amb tota seguretat es pot afirmar que baixarien per a poder ser ms competitius i tenir ms marge de benefici.

Cost m dobra:
Un cop sabem quins perfils actuaran al projecte i quin material necessitarem, amb la informaci donada per la planificaci temporal podem valorar quin cost ens afegeix el temps de treball dels integrants del projecte. En una aproximaci he establert el cost de cada rol amb els segents preus: Analista: 50 la hora Tcnic programador: 20 la hora Tcnic de sistemes: 20 la hora

Si portem aquets preus a la planificaci i la dividim segons convingui els temps segons el que convingui per a cada rol tindrem que: Analista: 63 hores Tcnic programador: 211 hores Tcnic de sistemes: 260 hores

I el total daquests costos directes sobre el prototip s de:

117

Analista: 50 * 63 hores = 3.150 Tcnic programador: 20 * 211 hores = 4.220 Tcnic de sistemes: 20 * 260 hores = 5.200

Si sumem els costos de cada rol sn 12.570 entre tots.

Preu final per extreure beneficis.


Arribats a aquest punt, hem de avaluar els costos i els beneficis que volem. Sha de saber que el cost de les unitats que es produeixin a continuaci del prototip tindran un cost ms econmic per varis motius: El material: en cas de multiplicar la compra per el nmero de cpies que volguem fer del projecte, el preu disminuir substancialment ja que, per exemple, a un provedor en cas de comprar-li 100 unitats dun mateix producte ens donarien un marge ms ampli amb el preu. El cost de la m dobra: un cop acabat el treball de lanalista i del programador, el cost de les segents cpies es reduir a 0 ja que no intervindr en la producci. A ms, el temps necessari dels altres rols es reduir ja que no tindrem els problemes que han sorgit durant el prototip, d'aquesta manera que aquest cost tamb vindr redut.

118

El prototip: Si fem els clculs apropiats obtindrem el cost del propi prototip. Aquest cost vindr donat per: el cost del material i el cost de la m dobra. Cost del material: 859,27 Cost de la m dobra: 12.570

En total el prototip ens costar 13.429,27 . El cost de les 100 primeres unitats: Per arribar a aquest preu he hagut de contactar amb algun provedor i ens han ofert fins a un 10% de rebaixa del cost inicial dels materials, de manera que ho utilitzarem en global per fer una aproximaci daquest cost. Com he dit anteriorment amb el cost dels rols, no existeix el cost del analista ni el programador ja que aquest treball ja est fet. Noms necessitarem algunes hores del tcnic de sistemes per a muntar tot el sistema. Com que aix redueix molt el cost final del producte, per estipular com seria la construcci de les 100 primeres unitats, hem recalculat les hores en cas de que no hagus sorgit cap problema. Cost material: un 10% de 859.27 es 773.34 Cost m dobra: o Tcnic de sistemes: 20 * 5 hores per unitat es 100 Cost total de les primeres 100 unitats s igual a la suma dels costos anteriors multiplicats per 100, que dna un total de 87.334 119

Els beneficis La intenci s extreure uns beneficis del projecte per valor de 40.000, aix que si el cost total del prototip i les 100 primeres unitats s de 100.763,72 ms el benefici que es requereix, 40.000 , ens surt un cost total del producte amb benefici de 14.0763,72

Preu per unitat Si tenim el preu final de 14.0763,72 del projecte, incloent-hi beneficis, i ho hem de repartir entre 100 unitats, aix significa que el cost de cada unitat s de 1.407,64

120

Conclusions:
Un cop acabat el projecte podem extreure algunes conclusions. La principal reflexi a la que he arribat actualment s fruit de la comparaci entre el nivell de complicaci al que ha arribat el projecte i fins on m'hagus agradat arribar. Ara penso que el projecte hagus estat ms adequat realitzar-lo en parella ja que hi ha molt de treball possible al projecte. Si ens posem a analitzar detalladament les Ampliacions realment veiem que hi ha moltes coses que encara segueixen sent objectes de millora, i la culpa d'aquest fet es pot atribuir a la falta de temps.

De totes maneres estic orgulls del producte final al que s'ha arribat amb el projecte, ja que cont les bases slides per fonamentar un projecte que pot arribar a ser molt ambicis i complex en el cas que s'incloguessin tots els objectius que inicialment em vaig establir.

s possible que aquests objectius fossin massa generalistes, i per tant especialitzar-se en una part del projecte hagus estat ms convenient per a no haver de dedicar tants recursos i temps extra.

De totes maneres el poder treballar amb lArduino m'ha perms interaccionar molt amb el mn del codi lliure i poder observar i valorar tot el treball que es fa desinteressadament. D'altra banda he pogut endinsar-me ms profundament en el mn del maquinari ja que sempre m'he mogut en un mbit ms proper al programari. Aquesta visi m'ha 121

fet comprendre amb ms exactitud la ra del perqu utilitzar un microcontrolador en casos on el treball del computador sigui molt limitat o acotat.

Al mateix temps, tot el programari realitzat per al projecte m'ha fet entendre una programaci a ms petita escala on els recursos sn molt limitats degut a que no tens ni un processador tant potent ni unes memries tant grans com les que tenen els ordinadors d'avui en dia.

122

Ampliacions:
Per expressar-ho breument i clarament: el lmit de les amplificacions del projecte existeix on finalitza la imaginaci del programador i del dissenyador del projecte.

Existeixen infinituds de possibles aplicacions on el projecte tindria sortida, per en aquest cas s'ha hagut de limitar a causa del redut espai de temps de treball del que disposava; amb ms temps s'hagus pogut fer crixer el projecte per molts llocs.

Ara enumerar alguns dels objectius ms importants per realitzar en cas que es volgus ampliar el projecte:

En primer cas s imprescindible fer del node que cont els sensors un sistema molt ms economitzador en relaci amb el cost d'electricitat ja que fins ara no ens em proposat cap objectiu relacionat amb l'estalvi de la llum. Aquest node podria estar alimentat per una placa fotovoltaica i una bateria en condicions ptimes. D'aquesta manera podrem oblidar-nos d'haver de canviar cap bateria ja que seria totalment independent. Per a millorar aquesta part del projecte seria recomanable investigar sobre el mode "sleep" del XBee ja que si eliminem aquest cost que ens genera la xarxa sense fils podrem estalviar molta energia.

Connexi amb ms sensors: Al mercat hi ha tants sensors com es vulgui, com per exemple sensors de gasos per a determinar quin

123

tipus de gas hi ha al voltant, sensor de pressi atmosfrica i d'altres. Estadstiques: Sent tant factible poder obtenir moltes dades s una pena que no hi hagi temps per fer alguns algoritmes que puguin estipular o preveure alguns factors com l'estat del temps. Ms interconnexi amb la llar; Sobre aquest tema tamb seria factible poder interconnectar aparells electrnics com la calefacci o l'aire condicionat per a poder modificar les configuracions via web. D'altra banda, tamb es podria apujar les persianes o abaixar-les segons el gust del consumidor; o es podria fer un algoritme que determins l'alada de les persianes segons les hores, la temperatura o la lluminositat del sol. De la mateixa manera les llums tamb podrien sser un factor susceptible a modificar-se a distncia des de lArduino . Per a tots aquests casos tamb existeix la possibilitat d'ampliar el sistema amb un node capa de rebre missatges de text amb la xarxa GSM de telefonia mbil. Centraleta de seguretat: l'objectiu del projecte tamb podria haver estat la destinaci a una centraleta de seguretat. Entre sensors de moviment PIR, sensors de gas per a la cuina, sensors d'obertures de portes o finestres, i sensors d'aigua per als serveis, es podria haver construt una alarma prou precisa com per estar tranquil quan no es troba ning a casa ja que com hem pogut veure durant tot el projecte els mtodes destinats a la comunicaci amb el sistema sn molt nombrosos: des d'un compte a Twitter, possiblement des del correu electrnic o fins i tot amb missatges de text al mbil entre d'altres. Augmentar el nombre de nodes, d'aquesta manera podem tenir ms zones per a controlar. 124

Augmentar el nombre de pantalles, aix es t la possibilitat d'augmentar la complexitat de la interfcie de pantalla. Provar lArduino amb una pantalla tctil per a fer una interfcie ms semblant a un mbil. Una possible ampliaci podria ser inserir un control d'accs per a les dutxes de la llar. Amb aquesta aplicaci es podria identificar qui i quan ha accedit a la dutxa i tenir un comptador del flux d'aigua per saber quant ha gastat cadasc (d'aquesta manera es posaria fi a la tpica discussi familiar sobre el malbaratament de l'aigua). Existeix la possibilitat d'utilitzar unes llibreries per a lArduino per a que es puguin comunicar amb DNS (Domain Name Server) servidors de noms i DHCP (Dynamic Host Configuration Protocol) protocol dinmica de configuraci de host. El primer dels dos serveis s'utilitza per a traduir direccions IP en noms de domini intelligibles per als ssers humans, i l'altre t la funcionalitat de tindre una transmissi amb un servidor per obtenir automticament la direcci IP assignada per aquella targeta de xarxa, actualment al projecte aquesta IP s'assigna manualment.

125

Bibliografia:
Generals:
SPI: http://ca.wikipedia.org/wiki/Serial_Peripheral_Interface Creative commons: http://creativecommons.org/licenses/by-sa/2.5/deed.ca GNU: http://creativecommons.org/licenses/GPL/2.0/deed.es GPL: http://es.wikipedia.org/wiki/GPL Compiladors: http://es.wikipedia.org/wiki/Compilador WinAVR: http://winavr.sourceforge.net/ AVR_GCC: http://www.avrfreaks.net/wiki/index.php/Documentation:AVR_GCC AVR_GCC: http://code.google.com/p/arduino/ AVR_libc: http://www.nongnu.org/avr-libc/ Llibreries: http://es.wikipedia.org/wiki/Biblioteca_%28inform%C3%A1tica%29

126

Arduino:
Web oficial: http://arduino.cc/ Frum oficial: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl Arduino Duemilanove: http://arduino.cc/en/Main/ArduinoBoardDuemilanove Wikipedia arduino: http://es.wikipedia.org/wiki/Arduino http://en.wikipedia.org/wiki/Arduino Esquema circuits: http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf

Pantalles:
Web producte:
http://www.sparkfun.com/commerce/product_info.php?products_id=760

Arduino Forum - el meu fil: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1268607738/0 Arduino Forum - la soluci: http://forum.sparkfun.com/viewtopic.php?f=14&t=20465

Ethernet Shield
Codi exemeple: http://www.arduino.cc/en/Main/ArduinoEthernetShield Web del producte:
http://www.libelium.com/tienda/catalog/product_info.php?products_id=72 Llibreria: http://arduino.cc/en/Reference/Ethernet

127

XBee
ZigBee: http://en.wikipedia.org/wiki/ZigBee Xarxa en malla: http://ca.wikipedia.org/wiki/Xarxa_en_malla Primers passos amb XBee:
http://trikinhuelas.com/wp-content/uploads/2008/05/arduino-xbee-primerospasos.pdf

Manual del producte: http://ssdl.stanford.edu/ssdl/images/stories/AA236/0708A/Lab/Rover/P arts/Beeproproductmanual.pdf Llibreria: http://code.google.com/p/xbee-arduino/

MicroSD Shield:
Targetes de memria: http://es.wikipedia.org/wiki/Tarjeta_de_memoria Memria flash: http://es.wikipedia.org/wiki/Memoria_flash CSV: http://es.wikipedia.org/wiki/CSV Com muntar MicroSD Shield: http://www.sensor-networks.org/index.php?page=0827727742

Sensor Temperatura
Web del producte: http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en0 27103 Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/21942e.pdf 128

Sensor d'infraroig passiu


Datasheet: http://www.libelium.com/tienda/catalog/images/sensors/PIRSensorV1.2.pdf Lent Fresnel: http://es.wikipedia.org/wiki/Lente_de_Fresnel Codi sensor PIR: http://www.arduino.cc/playground/Code/PIRsense Web del producte: http://www.libelium.com/tienda/catalog/product_info.php?products_id= 53 Com muntar el sensor PIR: http://www.sensor-networks.org/index.php?page=0816816850

Sensor Humitat:
Web del producte:
http://www.libelium.com/tienda/catalog/product_info.php?products_id=78

Datasheet: http://www.libelium.com/squidbee/upload/9/95/Humedad-808H5V5.pdf

Sensor LDR
Web del producte:
http://www.libelium.com/tienda/catalog/product_info.php?products_id=77

Datasheet: http://www.libelium.com/tienda/catalog/images/arduino/LDRDatasheet.pdf

129

Atmega 328P
Web del producte:
http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega328P Datasheet: http://www.atmel.com/dyn/resources/prod_documents/doc8271.pdf Datasheet resum: http://www.atmel.com/dyn/resources/prod_documents/8271S.pdf

130

Annexos
Conversaci de correus Electronics amb amb Sparkfun:
La conversaci es establerta entre Ramon Balaguer de color blau i en vermell un comercial de la tenda de ventes online Sparkfun.
1) Tech Support

Hello, Have you tried using the example code we have posted on the product page for this device? http://www.sparkfun.com/commerce/product_info.php?pr oducts_id=760 http://www.sparkfun.com/Code/RGBMatrixBackpackSketc h.zip Does that work? When you initially power the device on, does it go through a start-up sequence showing Red, Green, Blue and then a smiley face?
2) Hello,

I see these colors but not see any smiley face I connect this pins: GND -> GND VCC -> 5V MOSI -> 11 CS -> 10 SCLK -> 13
3) Hi,

I forgot to mention that that should come after the smiley face. The fact that you're not seeing the first part of the start-up sequence, though, is very strange. Have you tried the Arduino code that's on the product page (linked below)? http://www.sparkfun.com/Code/RGBMatrixBackpackSketc h.zip If that doesn't work, I'm not sure what else to suggest. Do you have an AVR programmer? I could send you the firmware to load onto there. Otherwise, would you be OK with sending the LED matrix back for testing and

131

replacement? Unfortunately, we'd have to check it out before we could give you a replacement. Let me know if you have any further questions or concerns.

4) This is my video http://www.youtube.com/watch?v=zsgOxhxK7Ww , see when connect arduino to usb, with this codehttp://www.sparkfun.com/Code/RGBMatrixBackpackSketch.zip

No Smiley :S why do I need AVR programmer??? i don't have any programmer, is posible use Arduino?? http://tinker.it/now/2006/12/04/turn-arduino-into-an-avr-ispprogrammer/ Hello, Hmm, the video must be set to private, I can't see it. Does that code do anything though? The AVR on this board doesn't have a serial bootloader, so it's not possible to program it over the serial pins like you would an Arduino. my problem is the firmware? then i have 2 posibilities? send 4 matrix to Sparkfun, but this send is more expensive. buy AVR programmer.
5) Hi Ramon,

I'm honestly not sure. I really don't think the problem is firmware if all four show the same issue. I'm going to try to get this to the attention of the engineer of the serial matrix, as I'm at somewhat of a loss. I'll also try your code on a few displays out of stock and let you know if I experience the same issue. I'll let you know what I hear from the engineer. I'm very sorry for the inconvenience. Let me know if you have any further questions or concerns.

6) Jim thanks for your helps.

This project is for university and is very important for me. I know nobody, who does works some screens. The forums have same questions, realy works with new Matrix version? 132

One question this pin: #define DATAIN 12//MISO / DO what function it is? If any time we find solution, I'll put your name in the memory of the project!! sorry, i send my code, please test on the serial matrix with engineer and push RESET some times... Thanks!
7) Thanks, Ramon. I'll try to get this tested out today and I'll get back to you as soon as I can with the results.

I can assure you that the matrices should definitely work with the new firmware. Hi Ramon, Sorry for the slow reply. I've tested your code on two known working displays, and I think I'm seeing the same thing you are. On the first start up the first display is all blue, and the second is all green. If I hit reset on the Arduino, I get something similar to what you described in your forum post. However, if I interrupt power to both the matrices and the Arduino, and then plug the power back in, it goes to the normal display. It really doesn't seem like anything is wrong with your code. I'm beginning to believe this is a problem with the firmware of all of these displays. Is there any way you can work around this issue by cycling power to the displays, rather than just resetting the Arduino?
8) Hi Jim!!

I'm happy, if you reproduce my problem, it mean i not am crazy. I have only a solution: power arduino off and matrix :( but i have one theory: I think this instruccion does not work: digitalWrite(CHIPSELECT,HIGH); for example: if you push reset into bucle between CHIPSELECT LOW and CHIPSELECT HIGHT, the screen continue from here (not finaly 64bits), do you understand me?

133

9) Hi Jim.

I need one solution, because I have 4 matrix ( 240$ ) and not works :(
10) Hi Ramon,

I'm really sorry for not having gotten back to you for so long. I'm honestly stumped at this point. Is it not an option for you to cycle power to the system, rather than pressing the reset button? I really think the power to the matrix needs to be reset every time. I will also forward this on to the engineer to see if he can provide more insight into this situation. I'll forward along anything I get from him. Let me know if you have any further questions or concerns.
11) Is imposible, power off because then i lost variables!!! and status.

You sell an matrix that does not work, you ought to return the money :(

Conversaci amb els creadors de la api Wstring:


1) Hi Tom Destructor need inicializate vars: Code: String::~String() { free(_array); _capacity = 0; _length = 0; } 2) Thanks. One of my colleagues and I are in the midst of writing a new version, and he's been working on the memory and cleanup issues. If he hasn't already picked up this bug, I'll pass him this patch for testing. Tom

134

Factures: Libelum.com
Pedido Num. 1699
Fecha del Pedido: lunes 15 febrero, 2010 Total del Pedido: 203.58EUR

Direccin de Entrega Ramon Balaguer Altadill 46985746N Sants 146 3-1 Barcelona 08028 - Barcelona, S Gastos de Envo Servicio Urgente (Envo en 24/48h para ES : 0.45 Kg) Datos de Facturacin Direccin de Facturacin Ramon Balaguer Altadill 46985746N Sants 146 3-1 Barcelona 08028 - Barcelona, S Forma de Pago PayPal

Producto 1 x Sensor Temperatura 1 x Modulo MicroSD 2Gb para Arduino 2 x Arduino ZigBee Pack (802.15.4 Version)
- Accesorio: Cable USB - Complemento: Adaptador USB-220V

2.50EUR 20.00EUR 143.00EUR

Subtotal: 165.50EUR : 26.48EUR Servicio Urgente (Envo en 24/48h 11.60EUR para ES : 0.45 Kg): Total: 203.58EUR

135

Pedido Num. 1724


Fecha del Pedido: lunes 01 marzo, 2010 Total del Pedido: 133.19EUR

Direccin de Producto Entrega 1 x Sensor de Humedad 808H5V5 Ramon Balaguer 1 x Sensor LDR Altadill 46985746N 1 x Arduino ZigBee Pack (802.15.4 Sants 146 3-1 Version) Barcelona - Complemento: USB-Car & USB-220V 08028 - Barcelona, S - Accesorio: Cable USB Gastos de Envo 1 x PIR Sensor Servicio Urgente (Envo en 24/48h para ES : 0.29 Kg) Datos de Facturacin Direccin de Facturacin Ramon Balaguer Altadill 46985746N Sants 146 3-1 Barcelona 08028 - Barcelona, S Forma de Pago PayPal

15.00EUR 2.00EUR 77.00EUR

14.00EUR

Subtotal: 108.00EUR : 17.28EUR Servicio Urgente (Envo en 24/48h 11.60EUR para ES : 0.29 Kg): Points Redeemed: -3.69EUR Total: 133.19EUR

136

BricoGeek.com
Comanda: 002129

137

Comanda: 002571

138

Sparkfun.com
Comanda: 192102

139

You might also like