batxillerat 2020-2021

82
DISSENY I CONSTRUCCIÓ DE LA MAQUETA DUNA CASA DOMÒTICA TREBALL DE RECERCA BATXILLERAT 2020-2021 AUTORA: SARA HERNÁNDEZ CABELLO TUTOR: ALEX DE GIORGIO I JACOB YERGA

Upload: others

Post on 29-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

DISSENY I CONSTRUCCIÓ DE LA MAQUETA D’UNA CASA DOMÒTICA

TREBALL DE RECERCA

BATXILLERAT 2020-2021

AUTORA: SARA HERNÁNDEZ CABELLO

TUTOR: ALEX DE GIORGIO I JACOB YERGA

1

RESUM

Aquest treball consisteix en la realització d’una maqueta d’un habitatge i la

creació de la programació i el desenvolupament d’aplicacions per poder governar

elements comuns com la calefacció o les lluminàries. La intenció és mostrar com

funciona un habitatge intel·ligent de manera conceptual, amb el propòsit d’exposar

les possibilitats potencials que ofereix la tecnologia. Tot i que la maqueta és un

prototip, la programació dissenyada serveix per controlar edificacions reals.

Els meus coneixements previs eren molt limitats, pel que he hagut d’aprendre

diferents continguts per dur a terme aquest treball. Vaig decidir utilitzar Arduino com

a plataforma electrònica i de programació perquè ja havia treballat amb ella. A més,

he utilitzat MIT Inventor per desenvolupar una aplicació de mòbil amb la qual també

poder controlar la maqueta a distància a través del Bluetooth. Així mateix, vaig

documentar-me en diferents fonts de modelisme per poder realitzar la base de

l’habitatge. Finalment, a partir de l’obtenció de cert coneixement previ, també vaig

decidir quins dispositius utilitzar per fer les funcions que volia automatitzar (sensors,

motors, polsadors, etc.).

Els mecanismes de control de la maqueta funcionen i són perfectament

extrapolables al món real. Aquest treball m’ha ajudat per adonar-me’n dels canvis

tecnològics amb el pas del temps, les possibilitats infinites del Iot (Internet of Things,

que és la interacció intel·ligent entre màquines) i la seva aplicació pràctica per

facilitar la vida de les persones.

ABSTRACT

This project consists in the design and construction of a mock-up of a home

and the programming and the development of the applications in order to govern the

housing appliances, such as the heating system or the lighting. The intention is to

create a smart home work in a conceptual way with the purpose of teaching the

potential the technology offers. Even though the mock-up is a prototype, the

programming designed can also be used to control real buildings.

2

My knowledge of the subject was limited when I started, and I had to learn

different skills to carry out this project. I decided to work with Arduino as an electronic

and programming platform because I worked with it some years ago. In addition, I

used MIT inventor to develop a mobile app to control the mock-up remotely by

Bluetooth. I looked at various sources to be able to build the house structure. I also

decided which devices I had to use to do all the functions that I wanted to automate

(sensors, motors, etc.).

The control mechanisms of the mock-up work can be expanded to real life.

This project has helped me to realize the technological changes that have taken

place over time, the possibilities of the IoT (Internet of Things, meaning the smart

interaction between machines) and their practical application to make people’s lifes

easier.

3

ÍNDEX

Resum ......................................................................................................... 1

Abstract ....................................................................................................... 1

0. Introducció............................................................................................... 6

0.1. Motivacions ...................................................................................... 6

0.2. Hipòtesi ............................................................................................ 7

0.3. Objectius .......................................................................................... 7

0.4. Memòria descriptiva i metodologia de treball .................................... 7

Bloc I. Introducció al projecte .................................................................... 10

Capítol I. Introducció a la domòtica ....................................................... 11

1.1. Definició ................................................................................... 11

1.2. Història ..................................................................................... 11

1.3. Fonaments ............................................................................... 11

1.4. Avantatges i inconvenients ....................................................... 12

1.5. Nous camps d’aplicació ............................................................ 13

Capítol II. Introducció a l’entorn Arduino ................................................ 14

2.1. Definició ................................................................................... 14

2.2. Història ..................................................................................... 14

2.3. Plaques electròniques controladores ........................................ 14

2.4. Elements d’una placa Arduino UNO ......................................... 15

2.5. IDE Arduino .............................................................................. 16

2.6. Sensors .................................................................................... 17

2.7. Actuadors ................................................................................. 19

Capítol III. Introducció a l’aplicació mòbil ............................................... 20

3.1. Definició ................................................................................... 20

3.2. Fonaments ............................................................................... 20

Bloc II. Components utilitzats al projecte ................................................... 22

Capítol IV. Sensors ............................................................................... 23

Capítol V. Actuadors ............................................................................. 25

Capítol VI. Plaques controladores ......................................................... 28

6.1. Plaques emprades ................................................................... 28

4

6.1.1. Característiques de la placa Mega 2560 Rev 3 .............. 28

Capítol VII. Comunicacions: Bluetooth .................................................. 29

Bloc III. Memòria descriptiva de la maqueta .............................................. 30

Capítol VIII. Presentació de la maqueta ................................................ 31

8.1. Presentació............................................................................. 31

8.2. Planificació de tasques ........................................................... 31

8.3. Recerca d’informació .............................................................. 31

8.4. Disseny i plànols ..................................................................... 32

Capítol IX. Construcció de la maqueta .................................................. 33

9.1. Construcció de la planta baixa ................................................ 33

9.2. Construcció de la primera planta ............................................ 33

9.3. Construcció de la base de la maqueta .................................... 34

9.4. Adaptació dels sensors de la maqueta ................................... 34

9.5. Adaptació dels actuadors de la maqueta ................................ 35

9.6. Connexions de la maqueta ..................................................... 36

9.7. Càlculs necessaris .................................................................. 37

9.7.1. Càlcul del valor de les resistències ................................... 37

9.7.2. Càlcul del moment necessari per pujar la planta .............. 38

Capítol X. Pressupost ............................................................................ 39

Capítol XI. Avaluació ............................................................................. 40

Bloc IV. Programació ................................................................................. 43

Capítol XII. Programació de la controladora .......................................... 44

Capítol XIII. Programació de l’aplicació mòbil ........................................ 46

13.1. Pantalla principal .................................................................... 46

13.1.1. Disseny de la pantalla principal .................................... 46

13.1.2. Programa de la pantalla principal ................................. 46

13.2. Pantalla d’ordres ..................................................................... 47

13.2.1. Disseny de la pantalla d’ordres..................................... 47

13.2.2. Programa de la pantalla d’ordres .................................. 47

13.3. Pantalla de reconeixement de veu .......................................... 47

13.3.1. Disseny de la pantalla de reconeixement de veu .......... 48

5

13.3.2. Programa de la pantalla de reconeixement de veu ....... 48

Bloc V. Circuit de connexions .................................................................... 49

Capítol XIV. Connexions Mega 1 i llistat de pins ................................... 50

14.1. Circuit elèctric Mega 1 ............................................................ 50

14.2. Llistat de pins Mega 1 ............................................................. 51

Capítol XV. Connexions Mega 2 i llistat de pins .................................... 52

15.1. Circuit elèctric Mega 2 ............................................................ 52

15.2. Llistat de pins Mega 2 ............................................................. 53

Bloc VI. Conclusions ................................................................................. 54

Conclusions........................................................................................... 55

Bibliografia i webgrafía .............................................................................. 58

Annex I. Plànols planta baixa i primera de la maqueta .............................. 60

Annex II. Plànol de la base de la maqueta ................................................ 63

Annex III. Programació .............................................................................. 65

Introducció

6

0.- INTRODUCCIÓ

Des de sempre, l’ésser humà ha intentat donar-li utilitat als descobriments

científics i, avui en dia, no es pot concebre una edificació que no desenvolupi el

concepte d’intel·ligent. Actualment, ens trobem en una era tecnològica basada en

l’electrònica i les telecomunicacions que persegueixen el benestar de les persones.

L’àmbit de la domòtica ja està present a la nostra societat, però les persones encara

no som del tot conscients i el seu creixement en un futur pròxim serà exponencial.

0.1.- Motivacions

Les motivacions que m’han impulsat a realitzar aquest treball de recerca són,

per una banda, la meva intenció d’obtenir coneixements que em seran útils pel grau

universitari que vull cursar. Per altra banda, el meu interès en l’aprofitament de les

noves tecnologies per incorporar-les al disseny de les edificacions amb l’objectiu de

fer-les més confortables i eficients.

En primer lloc, pretenc estudiar una enginyeria que s’especialitza en el

disseny: enginyeria de disseny industrial i desenvolupament del producte. Hauré

d’utilitzar eines de programació i de desenvolupament d’aplicacions, entre d’altres.

També hauré d’utilitzar una sèrie de components de hardware per controlar la part

física dels projectes. És per això que el treball de recerca m’ajudarà a apropar-me

a aquest entorn.

D’altra banda, considero que aquest treball ha de contenir una part pràctica

per entendre millor tots els processos. Per tant, dissenyaré i construiré una maqueta

d’un habitatge domòtic. Aquest disseny contindrà tot un seguit d’automatismes que

mostraran també diferents solucions que s’han anat desenvolupant amb el pas del

temps.

En segon lloc, penso que és molt important que els espais on els éssers

humans passem molt de temps siguin agradables. Per aconseguir això, s’han de

tenir en compte molts aspectes i la domòtica ens ajuda a controlar aquests factors.

De manera que aquest treball m’introduirà en aquest àmbit en que es combina

l’enginyeria amb l’arquitectura.

Introducció

7

0.2.- Hipòtesi

Pressuposo que qualsevol persona sense gaires coneixements tècnics previs

relacionats amb l’electrònica i l’automatització pot dissenyar un habitatge domòtic,

tant en un prototip com en un cas real. També vull verificar que el disseny es pot

realitzar i que pot funcionar correctament a un preu assequible.

0.3 Objectius

Els objectius que em proposo són:

1. Aprofundir en el coneixement del hardware i el software necessaris per

desenvolupar el projecte.

2. Desenvolupar la programació necessària perquè funcioni tot el projecte.

3. Analitzar com van canviant les tecnologies relacionades amb la innovació

en la construcció dels edificis al llarg del temps.

4. Adquirir els coneixements bàsics d’edificació per a un correcte disseny de

l’habitatge.

5. Construir una maqueta conceptual mostrant diferents automatismes.

0.4 Memòria descriptiva i metodologia de treball

La idea concreta del treball de recerca va sorgir a finals de l’any 2019 i ho

vaig consultar amb la meva professora de tecnologia industrial. Més tard, en una

reunió amb el departament de tecnologia, vam acabar de decidir el contingut. Vaig

buscar exemples de treballs de recerca per prendre’ls com a referència i, si bé no

eren exactament el que volia fer, em van donar un seguit d’idees.

A partir d’aquí, vaig planificar un calendari (veure il·lustració 0 de la pàgina

següent) per poder organitzar totes les tasques que havia de fer: investigar els

temes relacionats amb la programació, la realització de la maqueta o la compra dels

materials necessaris.

Vaig haver d'aprendre la programació de la placa controladora. Això ho vaig

dur a terme durant els mesos de gener fins abril del 2020.

Introducció

8

Vaig comprar un joc d’iniciació en electrònica amb diferents sensors i

actuadors amb la controladora per poder entendre el funcionament d’aquests.

També vaig fer diversos projectes que conté el joc durant el mes de maig, per tal de

començar a familiaritzar-me amb els diferents components.

La maqueta la vaig començar a dissenyar a principis d’any, però fins a l’abril

no la vaig començar a construir. Les dificultats més grans amb les que em vaig

trobar van ser, per una banda, buscar on comprar els materials i aprendre a fer-la i,

per l’altra, la integració dels sistemes d’automatització a la maqueta.

Respecte a l’estructura del treball, està dividida en blocs i cada bloc té

diferents capítols, com es veu a continuació:

0. Introducció

Bloc I. Introducció al projecte

- Capítol I. Introducció a la domòtica

- Capítol II. Introducció a l’entorn Arduino

- Capítol III. Introducció a l’aplicació mòbil

Bloc II. Components utilitzats al projecte

- Capítol IV. Sensors

- Capítol V. Actuadors

Il·lustració 0. Planificació de les tasques

Introducció

9

- Capítol VI. Plaques controladores

- Capítol VII. Comunicacions: Bluetooth

Bloc III. Memòria descriptiva de la maqueta

- Capítol VIII. Presentació de la maqueta

- Capítol IX. Construcció de la maqueta

- Capítol X. Pressupost

- Capítol XI. Avaluació

Bloc IV. Programació

- Capítol XII. Programació de la controladora

- Capítol XIII. Programació de l’aplicació mòbil

Bloc V. Circuit de connexions

- Capítol XIV. Connexions Mega 1 i llistat de pins

- Capítol XV. Connexions Mega 2 i llistat de pins

Bloc VI. Conclusions

Bibliografia i webgrafia

Annexos

10

BLOC I. INTRODUCCIÓ AL PROJECTE

Capítol I. Introducció a la domòtica

Capítol II. Introducció a l’entorn Arduino

Capítol III. Introducció a l’aplicació mòbil

Introducció a la domòtica

11

CAPÍTOL I. INTRODUCCIÓ A LA DOMÒTICA

1.1.- Definició

Tal com ho defineix l’Associació Espanyola de Domòtica i Immòtica, “La

domòtica és el conjunt de tecnologies aplicades al control i l’automatització

intel·ligent de l’habitatge, que permet

una gestió eficient de l’ús de l’energia,

que aporta seguretat i confort, a més de

comunicació entre l’usuari i el sistema”.

El mateix nom d’aquesta associació

(CEDOM) diferencia entre el concepte

de domòtica (il·lustració 1) i immòtica.

La principal diferència és que el primer

es concentra en habitatges i el segon en la resta d’edificis. No obstant això,

comparteixen els mateixos objectius.

1.2.- Història

Ja des de la dècada dels trenta del segle passat s’utilitzava el concepte de

casa del futur i començaven a haver-hi electrodomèstics amb certa automatització.

Però aquest nou camp no va començar a desenvolupar-se fins als setanta amb

diferents proves pilot. Comercialment no va ser explotada fins als anys vuitanta.

Podem destacar que tan aviat es va disposar de les noves tecnologies informàtiques

es va començar a investigar en aquest camp. La domòtica integra la part elèctrica i

la part electrònica que permet la comunicació entre dispositius. Actualment, hi ha

una ampla oferta de dispositius per automatitzar un habitatge i a un cost relativament

baix. Malgrat això, podem veure que encara no és molt conegut per la societat

actual.

1.3.- Fonaments

Un sistema domòtic consisteix bàsicament en una controladora electrònica

programable que funciona com el cervell de la instal·lació. Perquè funcioni necessita

informació de l’exterior que li proporcionen uns sensors (temperatura, moviment,

Il·lustració 1. Domòtica

Introducció a la domòtica

12

etc.). L’execució de les ordres fa que siguin necessaris els actuadors (relé, motor,

etc.), que són dispositius amb la capacitat de realitzar accions al món físic.

Finalment, tota aquesta informació requereix un sistema de comunicació entre tots

els elements.

1.4.- Avantatges i inconvenients

Sembla que la domòtica té molts avantatges, i realment és així, però també

té alguns inconvenients a destacar.

Avantatges:

- Confort. Podem controlar el funcionament d’esdeveniments comuns com el

reg automàtic, els llums o les persianes amb una gran varietat de comandaments

possibles, des de polsadors fins a comandaments de veu des de qualsevol lloc del

món disposant d’una connexió a la xarxa de comunicacions.

- Eficiència energètica. L’habitatge controla tota la llar a partir de la informació

rebuda com la temperatura o la llum exterior fent, per exemple, que s’encengui la

calefacció o abaixi una persiana quan sigui necessari. Això permetrà l’estalvi

energètic, ja que el sistema optarà per la millor opció.

- Seguretat (il·lustració 2). Hi ha

sensors que tenen com a finalitat la seguretat

de les persones, com ara els sensors de

flama o de moviment, que normalment estan

programats per dur a terme una acció

pal·liativa com podria ser una notificació al

mòbil, una alarma o fins i tot el tall del

subministrament (gas, electricitat, etc.).

- Immediatesa. Les ordres que volem donar s’executen de forma ràpida i

instantània sense la necessitat d’estar presents. Es pot controlar en temps real un

habitatge des de qualsevol part del món.

- Informació. Podem obtenir dades sobre aspectes tan variats com es vulgui

sobre l’habitatge. Tota aquesta gran quantitat d’informació pot ser emmagatzemada,

Il·lustració 2. Seguretat

Introducció a la domòtica

13

interpretada i utilitzada per millorar el rendiment, tant energèticament parlant com

en la millora de la seguretat amb dispositius que simulen la presència de persones.

Inconvenients:

- Sedentarisme. Com que tot ho podem controlar a distància i sense esforç,

les persones cada vegada fem menys activitats físiques.

- Complexitat. Un projecte d’habitatge intel·ligent implica tenir els

coneixements relacionats amb l’electricitat, l’electrònica, la informàtica, les

telecomunicacions, etc. Són tots coneixements especialitzats que no estan a l’abast

de tothom. Les empreses que comercialitzen els aparells intenten que siguin fàcils

d’utilitzar però quan parlem d’integrar un sistema amb molts elements, la integració

no està a la mà de qualsevol persona.

- Dependència. Com que les empreses fan que siguin fàcils d’utilitzar els

comandaments per controlar l’habitatge, en quant alguna cosa no funciona bé, les

persones no tenen els coneixements necessaris com per arreglar-ho, de manera

que tenen una gran dependència de les empreses i de la tecnologia.

1.5.- Nous camps d’aplicació

Actualment, el desenvolupament de la domòtica està tractant el concepte de

IoT1 (il·lustració 3), que és l’agrupació de dispositius a través d’una xarxa on les

màquines poden interactuar entre elles. Aquests dispositius poden ser des de

sensors fins a objectes quotidians, com els electrodomèstics.

1 Internet of Things. El concepte va ser proposat per Kevin Ashton al 1999

Il·lustració 3. El futur de la domòtica passa per l’IoT

Introducció a l’entorn Arduino

14

CAPÍTOL II. INTRODUCCIÓ A L’ENTORN ARDUINO

2.1.- Definició

Arduino és una plataforma de creació de prototips de codi obert2. Està

formada, per una banda, pel hardware, que són tots els dispositius electrònics físics

i, per una altra banda, pel software (IDE3), que és l’aplicació on es dissenyen els

programes.

2.2.- Història

Arduino va ser inventat l’any 2005 per un alumne d’un institut de secundària

italià amb la finalitat de fer més econòmics els projectes escolars. El primer prototip

d’Arduino va ser fabricat al mateix institut. Més tard, es va integrar a l’equip

Hernando Barragán, que era un altre estudiant que va contribuir al desenvolupament

d’un entorn per a la programació de la placa. Un temps després es va incorporar

David Cuartielles, un estudiant espanyol que va ajudar a millorar el IDE. Anys més

tard, Tom Igoe va millorar la placa fent-la més potent, afegint-hi ports USB per poder

connectar-la a l’ordinador. En aquell moment van començar a distribuir-la país per

país fins a convertir-se en la plataforma més important d’eines d’aprenentatge per

al desenvolupament de sistemes automàtics.

2.3.- Plaques electròniques controladores

La part més important del hardware és la placa controladora. Existeixen molts

models de plaques amb diferents característiques, mides, formes, funcions i preus.

A la il·lustració 4 podem veure

tres de les més utilitzades (Micro,

UNO i Mega). La més comuna és

l’anomenada placa UNO perquè

és la més recomanable per a qui

està començant amb Arduino.

2 Codi accessible, gratuït i modificable per a qualsevol persona 3 Entorn de Desenvolupament Integrat

Il·lustració 4. Placa Micro, UNO i Mega, d’esquerra a dreta

Introducció a l’entorn Arduino

15

2.4.- Elements d’una placa Arduino UNO

Els elements bàsics que té qualsevol placa d’Arduino estan representats a la

il·lustració 5. El component principal és el microcontrolador, un circuit integrat on es

poden memoritzar les instruccions perquè la placa funcioni de forma autònoma,

sempre que estigui connectada a una font d’alimentació. La connexió amb el món

exterior es fa a partir d’uns

pins, que poden ser d’entrada

o també de sortida. Els pins

d’entrada recullen informació

externa a través de diferents

dispositius. Poden ser tant

digitals com analògics. Els

digitals detecten dos nivells

de senyal que representen

els dos estats bàsics del sistema binari: està apagat o encès o, respectivament, 0 o

1, low o high, false o true, és a dir, detecta si un dispositiu està activat o desactivat.

Els pins analògics són aquells on es connecten els sensors que recullen informació

de l’exterior, com podria ser la temperatura d’un lloc o la detecció d’un camp

magnètic. Aquest senyal és continu, és a dir, és capaç de rebre qualsevol dada entre

dos valors de tensió entre 0 i 5 V.

Els pins de sortida són només digitals i s’utilitzen per a enviar senyals i activar

o desactivar dispositius de forma similar a la que s’ha comentat anteriorment. A la

pràctica, mitjançant programació, es pot aconseguir que un pin digital de sortida

simuli un comportament analògic de forma que es pugui controlar el nivell de tensió

donat a un dispositiu extern. Val la pena mencionar que els pins es configuren

perquè siguin d’entrada o de sortida segons les necessitats de cada projecte a

través de la programació.

Les plaques d’Arduino, a més, contenen resistències, LED, transistors,

condensadors i altres elements, com un botó de reinici del programa, que completen

les funcionalitats electròniques. Un kit bàsic d’iniciació per començar a treballar amb

Il·lustració 5. Placa Arduino

Introducció a l’entorn Arduino

16

aquest entorn conté també una placa (placa de proves o protoboard) per poder

realitzar connexions elèctriques ràpides sense la

necessitat de soldar els cables. Podem veure un

exemple típic a la il·lustració 6.

Els programes que es desenvolupen a l’IDE

d’Arduino s’han de pujar a la placa controladora des

de l’ordinador. Es fa mitjançant un USB que té

incorporat. L’alimentació de la placa es pot fer a partir

d’un jack d’alimentació a una tensió de 7 a 12 V o pel port USB.

La controladora pot transmetre i rebre informació d’altres dispositius a través

d’un cable BUS amb diferents protocols de comunicació. Té pins específics pels

sistemes I2C4, SPI5 i UART6.

Hi ha plaques electròniques que complementen a les anteriors i els hi donen

més funcionalitats. Se’ls anomena escuts i s’introdueixen directament als pins de

les plaques base. Alguns exemples podrien ser el Bluetooth i el Wi-Fi.

2.5.- IDE Arduino

L’IDE consta d’un editor de codi, d’un compilador que tradueix el programa al

llenguatge binari que utilitza la controladora, d’un depurador d’errors i de les eines

necessàries per carregar el programa a la memòria de la placa mitjançant un cable

USB. Com és de codi obert, es pot aconseguir de forma lliure a la pàgina oficial

d’Arduino. El llenguatge de programació és una simplificació del conegut C++.

Un programa fet amb Arduino (sketch) ha de tenir la següent estructura:

- Declaració de variables. Les variables són noms que posem a espais de

memòria que emmagatzemen valors que poden ser canviats durant l’execució del

programa. Aquesta part del codi s’escriu al principi abans de fer les dues funcions

essencials del programa, que són el Void setup i el Void loop.

4 I2C (Inter-Integrated Circuit) 5 SPI (Serial Peripheral Interface) 6 UART (Universal Asynchronous Transmitter/Receiver)

Il·lustració 6. Protoboard

Introducció a l’entorn Arduino

17

- Void setup. S’executa només una vegada en iniciar el programa i és on es

configuren alguns aspectes de la configuració dels pins.

- Void loop. S’executa de manera repetida indefinidament després de fer el

Void setup. És la part que conté les ordres que constitueixen el nucli del programa.

- Funcions personalitzades. El programa permet que l’usuari pugui crear

funcions que agrupen una part del codi que és molt repetitiva. Aquestes funcions

s’executen quan són requerides per una ordre al Void loop.

A més del codi pròpiament dit, al sketch es poden fer comentaris que ajuden

a entendre què fa cada línia del programa. Aquest codi no es té en compte quan es

compila. Aquests comentaris han d’estar precedits d’uns símbols específics (//) com

es pot veure a la il·lustració 7.

2.6.- Sensors

Els sensors són dispositius que detecten magnituds físiques o químiques,

que reben el nom de variables d’instrumentació i, després, les transforma en

variables elèctriques. Alguns exemples de variables d’instrumentació són la

Il·lustració 7. IDE

Introducció a l’entorn Arduino

18

temperatura, la lluminositat, la distància, la humitat o el moviment; de variable

elèctrica podria ser una resistència, una tensió o un corrent elèctric.

Al mercat hi ha una enorme quantitat de sensors de diferents fabricants

(il·lustració 8) i amb diferents característiques; per això és necessari consultar les

propietats de cada un d’ells en les fulles tècniques que les empreses publiquen. Des

del punt de vista de la utilitat que tenen es podrien agrupar de la següent manera:

- De moviment. Detectors de moviment, de velocitat, d’acceleració o de

desplaçament són els exemples més comuns.

- De posició. Detector de posició, de presència, de proximitat i de distància

són els més representatius.

- De senyals elèctriques per detectar esdeveniments. Uns exemples són el

polsador i el potenciòmetre.

- De condicions ambientals. Detectors de temperatura, d’humitat i baròmetres

són alguns exemples.

- De sensors òptics. Detector de lluminositat i de color són els exemples més

representatius.

- De so i vibració. Els exemples més utilitzats són els detectors de nivell sonor

i d’ultrasons.

- De flux. Detector de fluids i de flama són els exemples més representatius.

- De força. Alguns exemples són el detector de força, de pressió i d’impacte.

- De magnetisme. Detector de camp magnètic i intensitat magnètica són dos

exemples.

Il·lustració 8. Detector de temperatura i humitat i d’ultrasons

Introducció a l’entorn Arduino

19

2.7.- Actuadors

Els actuadors (il·lustració 9) són dispositius que a partir de l’energia

hidràulica, pneumàtica o elèctrica pot activar un sistema amb l’objectiu de controlar

elements externs. Aquest, rep l’ordre de la nostra placa controladora i, en funció

d’aquesta, activa un element final. Hi ha diferents tipus d’actuadors, que són:

- Electrònics. Alguns exemples són l’electrovàlvula i el relé d’estat sòlid.

- Hidràulics. El pistó és el principal exemple.

- Pneumàtics. Alguns exemples són les bàrbules i les bombes pneumàtiques.

- Elèctrics. Un altaveu i un brunzidor són alguns exemples.

- Motors. Steppers7, servomotors i bombes són els exemples comuns.

7 Motor de precisió pas a pas

Il·lustració 9. Electrovàlvula i relé d’estat sòlid.

Introducció a l’aplicació mòbil

20

CAPÍTOL III. INTRODUCCIÓ A L’APLICACIÓ MÒBIL

3.1.- Definició

L’aplicació MIT Inventor és un entorn de desenvolupament per dissenyar

aplicacions que funcionen només en dispositius Android. Es basa en un servei web

lliure que permet realitzar projectes i emmagatzemar el treball. És una aplicació molt

intuïtiva pensada per a usuaris no professionals amb l’entorn de programació.

Aquestes aplicacions serveixen per comunicar el mòbil amb altres dispositius, com

podria ser la placa Arduino.

3.2.- Fonaments

MIT Inventor té dues eines essencials: App Inventor Designer i App Inventor

Blocks. Amb l’eina Designer es dissenya la interfície d’usuari, és a dir, el que es

veurà en obrir l’aplicació; des d’imatges fins a comandaments. A la il·lustració 10 es

pot veure l’aspecte de l’aplicació. Per altra banda, amb l’altra eina es defineix el codi

de programació amb l’ajuda de blocs, com es pot veure a la il·lustració 11 de la

pàgina següent.

Il·lustració 10. App Inventor Designer

Introducció a l’aplicació mòbil

21

Una vegada dissenyada l’aplicació, el programa crea un QR8 i aquest t’envia a una

pàgina on es descarrega l’aplicació que permet comandar la placa Arduino des de qualsevol

dispositiu Android.

8 Matriu de punts equivalent a un codi de barres

Il·lustració 11. App Inventor Blocks

22

BLOC II. COMPONENTS UTILITZATS AL PROJECTE

Capítol IV. Sensors

Capítol V. Actuadors

Capítol VI. Plaques controladores

Capítol VII. Comunicacions: Bluetooth

Sensors

23

CAPÍTOL IV. SENSORS

Els sensors utilitzats per a aquest projecte són els següents:

- Mòdul receptor d’infrarojos. Treballa en la

freqüència de 38 kHz i la longitud d’ona del LED és de

240 nm. Aquest receptor (il·lustració 12) l’he utilitzat per

rebre el senyal d’un comandament a distància que obre

i tanca una cortina.

- Control remot per infrarojos. Treballa en la

freqüència de 38 kHz i té una distància d’operació entre

vuit i deu metres. Amb aquest comandament a distància

(il·lustració 12) podem governar la cortina comentada al

punt anterior.

- Sensor de moviment per infrarojos HC-

SR501. Té una sensibilitat ajustable de tres a set

metres i un retard també ajustable de detecció. Quan

s’encén, requereix un minut per a estabilitzar-se.

L’angle de detecció que té és de 110º. Aquest sensor

(il·lustració 13) l’utilitzo com a alarma contra

intrusions per la detecció de la variació d’infrarojos

deguts a la calor que desprèn qualsevol ésser viu.

- Termistor NTC (coeficient de temperatura negatiu). Quan la temperatura

augmenta la resistència del termistor disminueix, de

manera que són dues magnituds inversament

proporcionals. Els límits de temperatura que suporta va

des de -55 a 260 ºC. Aquest sensor (il·lustració 14)

l’utilitzo per fer funcionar l’aire condicionat sempre que la

temperatura superi un valor que es pot modificar a l’IDE

de programació.

Il·lustració 12. Receptor i emisor

Il·lustració 13. Sensor de moviment

Il·lustració 14. Termistor NTC

Sensors

24

- Fotoresistència LDR. Ofereix una resistència

major o menor depenent de la quantitat de llum que rep.

Té una resistència d’aproximadament 50 kΩ en la foscor

i 500 Ω amb llum brillant. Aquest component (il·lustració

15) el faig servir per controlar les llums del jardí. Si el

sensor detecta llum exterior, els llums es trobaran

apagats; en canvi, si no detecta prou lluminositat, els

encendrà fins que n’hi hagi.

- Potenciòmetre de 10 k. És una resistència variable

de comportament lineal. Aquest component (il·lustració

16) l’he utilitzat en tres ocasions. Una d’elles ha estat per

controlar el contrast del Display LCD, una altra per

controlar la intensitat del llum d’una habitació i l’última per

canviar els colors dels LED RGB situats a la part del

davant del jardí.

- Teclat numèric. És un teclat de quatre files per quatre columnes, de manera

que té setze tecles en total. Cada una d’elles funciona

com un polsador. Consta de números que van del zero al

nou, de lletres que van de la A a la D i dos símbols,

l’asterisc i el numeral. Aquest sensor (il·lustració 17) l’he

utilitzat per poder obrir la porta del garatge a partir d’una

clau secreta. També he programat la funció de dues

tecles: l’asterisc és per esborrar tot l’escrit i el numeral

serveix per tancar la porta.

- Polsador (normalment obert). Hi ha de moltes mides i

formes. Aquest sensor (il·lustració 18) l’he utilitzat en cinc

ocasions. La primera perquè funcioni el relé, la segona per

elevar el primer pis de la maqueta, la tercera per baixar-ho a la

posició inicial, la quarta per obrir i tancar la porta del garatge i

l’última per encendre i apagar un llum d’una habitació.

Il·lustració 15. LDR

Il·lustració 16. Potenciòmetres

Il·lustració 17. Teclat numèric

Il·lustració 18. Polsador

Actuadors

25

CAPÍTOL V. ACTUADORS

Els actuadors utilitzats per a aquest projecte són els següents:

- Servomotor SG90. És un motor que té la capacitat

de moure’s a una posició fixa en un rang de 0 fins a 180

graus. Funciona a parir d’impulsos elèctrics que li diuen

on s’ha de col·locar. La seva velocitat de gir és

programable. Aquest actuador (il·lustració 19) l’he utilitzat

per obrir i tancar la porta del garatge.

- Motor pas a pas 28BYJ-48. A diferència d’un motor normal, és un element

electromecànic que transforma els impulsos elèctrics a moviments mecànics

puntuals. La seva característica principal és que els moviments són molt petits i això

fa que tingui una gran precisió. Treballa a una freqüència de 100 Hz. Té un moment9

de 4,3 mN·m. Aquest component (il·lustració 20)

l’he utilitzat per fer dues funcions. Una d’elles és per

moure una cortina (un motor) i l’altre és per pujar i

baixar el primer pis (tres motors).

- Mòdul ULN-2003 controlador del motor

28BYJ-48. Rep les ordres de l’IDE d’Arduino i dóna

tensió seqüencialment a les quatre bobines del

motor. Aquest mòdul (il·lustració 20) l’he utilitzat per a cadascun dels motors.

- Motor de corrent continu. L’estator10 és d’imant permanent i el rotor11 conté

les bobines. La seva velocitat de gir depèn de la tensió que se li aplica i el sentit de

gir es controla amb l’ajut d’un microprocessador.

Aquest motor (il·lustració 21) l’he utilitzat per a l’aire

condicionat i funciona automàticament a partir del que

detecta el termistor NTC.

9 Magnitud física que mesura la seva capacitat per moure cossos. La seva fórmula és: M = F · d. 10 La part que no es mou del motor 11 La part que es mou del motor

Il·lustració 19. Servomotor

Il·lustració 20. Motor pas a pas i mòdul

Il·lustració 21. Motor DC i microxip

Actuadors

26

- Microprocessador pont H L293D. Conté díodes que permeten el control de

gir d’un motor sense la necessitat de canviar els cables. Aquest microprocessador

(il·lustració 21 de la pàgina anterior) l’he utilitzat per controlar el motor de corrent

continu de l’aire condicionat.

- Brunzidor actiu. A diferència del brunzidor passiu,

emet un so de freqüència fixa quan rep alimentació.

Funciona a un voltatge d’entre 3,5 i 5,5 V. La freqüència de

ressonància és de 2500 Hz. Aquest actuador (il·lustració 22)

l’he utilitzat per a l’alarma d’intrusió a partir de la detecció

d’infrarojos amb el sensor de moviment.

- Relé SONGLE de 5 V. S’utilitzen quan es necessita un sistema de control a

partir d’un senyal de baixa potència per governar

elements externs de potència. Aquest relé utilitza un

electroimant per operar un interruptor. Suporta fins a

2500 W, de manera que podem controlar qualsevol

element d’una llar. Aquest actuador (il·lustració 23) l’he

fet servir per controlar una làmpada externa de 220 V

que es connecta a la maqueta.

- LED. Són díodes emissors de llum. La tensió

elèctrica que necessiten està entre 2 i 4 V. Funcionen amb

molt poc corrent elèctric, uns 20 mA. Normalment, el seu

diàmetre és de 5 mm. No es pot connectar un LED

directament a una font d’alimentació, sempre necessita

una resistència limitadora d’intensitat. Té una pota positiva

i una negativa, és a dir, tenen polaritat. Aquest component

(il·lustració 24) l’he utilitzat per il·luminar cada habitació, per les llums del jardí i per

indicar que l’alarma d’intrusió està activada. He necessitat disset LED blancs i un

vermell. També he utilitzat diverses resistències pels diferents circuits. El càlcul del

seu valor l’explico a la memòria de la maqueta.

Il·lustració 22. Brunzidor

Il·lustració 23. Relé

Il·lustració 24. LED i resistor

Actuadors

27

- RGB. És un tipus de díode LED que conté tres colors: el vermell, el verd i el

blau. En definitiva, són tres LED junts en el mateix

encapsulat, com el que s’acaba de veure. Amb aquests es

poden formar moltes combinacions de colors. El tipus que he

utilitzat té quatre potes, una per cada color i el negatiu comú.

Aquest actuador (il·lustració 25) l’he utilitzat per a dues llums

del jardí que a partir d’un potenciòmetre podem canviar el

color d’aquests.

- Display LCD 1602. És una pantalla amb dues

files que poden mostrar a cada una d’elles setze

caràcters. És de tecnologia de cristall líquid, de lletres

blanques i fons blau de contrast variable. Aquest

display (il·lustració 26) l’utilitzo per explicar el que està

succeint a la maqueta, és a dir, sempre que estiguem donant alguna ordre, a la

pantalla sortirà un text indicant el que estem fent. Quan no estem donant cap ordre,

posa un text predeterminat amb el nom del treball i el meu nom.

- Mòdul de radiofreqüència RC522. Permet que hi hagi comunicació entre

dispositius sense la necessitat de contacte físic entre ells.

Funciona a 3,3 V. La freqüència en la qual treballa és de

13,56 MHz. Aquest mòdul (il·lustració 27) l’he fet servir

per poder obrir la porta del garatge a partir d’una targeta

o un clauer que tenen un xip integrat. Un cop el mòdul

verifica que la targeta o el clauer són d’usuaris coneguts,

envia un senyal al servomotor perquè mogui la porta.

Després deixa passar uns segons i, finalment, la porta baixa automàticament, sense

la necessitat de tornar a passar els dispositius d’obertura.

Il·lustració 25. RGB

Il·lustració 26. Display LCD

Il·lustració 27. Mòdul de radiofreqüència, clauer i targeta

Plaques controladores

28

CAPÍTOL VI. PLAQUES CONTROLADORES

6.1.- Plaques emprades

La primera placa que vaig utilitzar va ser la UNO Rev 3 amb la idea de fer les

pràctiques necessàries per entendre el funcionament de les diferents funcionalitats

que volia que tingués el projecte. Finalment, he necessitat per fer la maqueta la

Mega 2560 Rev 3 (il·lustració 28). La diferència principal entre la placa UNO i la

Mega és que la segona té molts més pins de connexió. De fet, he utilitzat dues

plaques perquè corria el risc de sobrepassar la intensitat de corrent elèctric que

suporta cada una d’elles.

6.1.1.- Característiques de la placa Mega 2560 Rev 3

Les característiques de la controladora són:

- Microcontrolador: ATmega2560

- Voltatge operatiu: 5 V

- Pins digitals d’entrada/sortida: 54 (dels quals 15 amb capacitat PWM12)

- Pins analògics d’entrada: 16

- Corrent per cada pin: 40 mA

- Clock Speed13: 16 MHz

12 Pulse Width Modulation (modulació per ample de pols). Permet canviar la tensió eficaç de sortida 13 Velocitat de processament

Il·lustració 28. Placa Mega 2560 Rev 3

Bluetooth

29

CAPÍTOL VII. COMUNICACIONS: BLUETOOTH

Per comunicar el dispositiu Android amb la placa controladora Arduino tenia

vàries opcions: Ethernet, Wi-Fi, Bluetooth i radiofreqüència. Finalment, he decidit

fer-ho mitjançant el Bluetooth perquè no es

necessiten cables, té un radi d’abast suficient

i puc utilitzar-ho allà on vulgui sense fer

modificacions. Com es veu a la il·lustració 29,

el Bluetooth permet controlar des d’un

dispositiu mòbil com una tauleta, un

smartphone o un ordinador qualsevol sistema

electrònic. En l’actualitat, aquest sistema de

comunicació és àmpliament utilitzat. Aquests

últims anys s’ha fet molt popular la utilització del Bluetooth en aparells com

televisors, auriculars o altaveus. Hi ha molta documentació per saber utilitzar-lo i

també resulta relativament econòmic.

El model de Bluetooth que he utilitzat és l’HC-06. Treballa a la freqüència de

2,4 GHz. És configurable des de l’IDE d’Arduino. El seu radi de funcionament és de

10 m, aproximadament. El consum de corrent

elèctric es troba al voltant dels 40 mA, el que fa que

sigui ideal per una placa controladora com la que jo

utilitzo. La seva velocitat de comunicació va des de

9600 a 115200 bauds14.

L’he utilitzat (il·lustració 30) en el meu

projecte per rebre les ordres de control des d’un

smartphone i poder transmetre-les a una placa

controladora d’Arduino. Les ordres es donen mitjançant l’aplicació mòbil que he

dissenyat a partir del reconeixement de veu.

14 Bit (basic digit) per segon

Il·lustració 29. Sistema Bluetooth

Il·lustració 30. Bluetooth HC-06

30

BLOC III. MEMÒRIA DESCRIPTIVA DE LA MAQUETA

Capítol VIII. Presentació de la maqueta

Capítol IX. Construcció de la maqueta

Capítol X. Pressupost

Capítol XI. Avaluació

Presentació de la maqueta

31

Capítol VIII. Presentació de la maqueta

8.1.- Presentació

Com ja he explicat a l’apartat d’introducció, he construït la maqueta per

obtenir coneixements que em serviran per al grau que vull cursar posteriorment i per

demostrar que amb pocs coneixements previs es pot desenvolupar un projecte

extrapolable al món real.

La maqueta està feta a escala 1:25 i dins d’aquesta hi ha molts sensors i

actuadors que la converteixen en un habitatge intel·ligent.

8.2.- Planificació de tasques

8.3.- Recerca d’informació

No sabia quins materials utilitzar, així que vaig buscar informació a diferents

fonts per escollir-los. Finalment, vaig optar pel cartó ploma, la fusta i el MDF, els tres

materials més comuns per fer maquetes. D’aquests tres he decidit utilitzar el cartó

ploma perquè és lleuger i s’enganxa molt bé amb cola blanca, tant amb altres

materials com amb el mateix cartó ploma. D’altra banda, també he escollit la fusta i

el MDF per fer la base perquè són resistents i també s’enganxen molt bé amb altres

materials.

Com és la construcció d’un habitatge, he necessitat fer plànols de la maqueta.

Per fer-los vaig aprendre a utilitzar AutoCAD i SketchUp, a partir de diverses fonts

Disseny i plànols

Compra de materials

Construcció planta baixa

Construcció primera planta

Construcció de la base

Presentació de la maqueta

32

on expliquen com funcionen els programes. També he hagut d’aprendre les normes

bàsiques d’edificació per poder dissenyar un habitatge, des de diverses fonts com

el llibre de text de tecnologia de quart de la ESO.

Vaig aprendre també a com fer una maqueta, és a dir, els coneixements

bàsics per poder dur-la a terme. Vaig fer-ho a partir de llibres i vídeos.

8.4.- Disseny i plànols

Primerament, volia que la maqueta sigués de dues plantes perquè es

poguessin veure millor tots els sensors i actuadors. Desprès, vaig fer diferents

esbossos per la distribució de les habitacions fins que finalment vaig realitzar el que

més m’agradava. Més tard, se’m va ocórrer la idea de fer que la primera planta

pogués pujar i baixar automàticament per veure millor la planta baixa. Finalment,

vaig dissenyar la base de la maqueta.

Per poder realitzar la maqueta, he hagut de fer plànols en dues dimensions

amb AutoCAD. N’he fet dos, un per cada planta. Com que l’escala és 1:25, les

mesures són equivalents a les mesures reals d’un habitatge. Els plànols es poden

veure amb més detall a l’annex I, on també es troba l’axonometria de la maqueta en

3D feta amb SketchUp. Els plànols de la planta baixa i primera planta són,

respectivament, els següents:

Construcció de la maqueta

33

Capítol IX. Construcció de la maqueta

9.1.- Construcció de la planta baixa (il·lustració 31)

Un cop ja tenia fets els plànols vaig començar a construir la maqueta. Vaig

començar per la plana baixa i necessitava cola blanca, cartó ploma de 3 mm i un

cúter. Els passos que vaig seguir són els següents:

1. En el cartó ploma dibuixar el

terra i retallar-lo amb el cúter.

2. Dibuixar, retallar i enganxar

entre elles les parets exteriors.

3. Dibuixar i retallar l’escala per

pujar al primer pis.

4. Fer les parets interiors i

enganxar-les.

5. Fer diferents mobles perquè

sigui més realista.

6. Enganxar alguns personatges a escala.

9.2.- Construcció de la primera planta (il·lustració 32)

Per fer-la necessitava els mateixos materials que amb la planta baixa: cola

blanca, cartó ploma de 3 mm i un cúter. Vaig seguir una estructura similar de passos:

1. En el cartó ploma dibuixar el

terra i retallar-lo amb el cúter.

2. Dibuixar, retallar i enganxar

entre elles les parets exteriors.

3. Fer les parets interiors i

enganxar-les.

4. Fer diferents mobles perquè

sigui més realista.

5. Enganxar alguns personatges

a escala.

6. En el cartó ploma dibuixar el sostre i retallar-lo amb el cúter.

Il·lustració 32. Primera planta en construcció

Il·lustració 31. Planta baixa en construcció

Construcció de la maqueta

34

9.3.- Construcció de la base de la maqueta (il·lustració 33)

Per fer la base vaig necessitar fusta, cartó ploma, serra, cola blanca i cúter.

Vaig seguir els passos que hi ha a continuació:

1. Amb la serra, tallar la fusta MDF

per fer la base.

2. Enganxar les peces de fusta amb

cola blanca.

3. Retallar amb el cúter el cartó

ploma per embolicar la base de fusta.

4. Enganxar el cartó ploma a la base

de fusta.

5. Fer totes les perforacions necessàries per passar els cables i altres

components des de les plantes fins a la base.

9.4.- Adaptació dels sensors a la maqueta (il·lustració 34)

Els sensors són una part molt important dins d’aquest projecte. La maqueta

conté onze sensors:

- El mòdul receptor d’infrarojos. Es troba fora de la maqueta perquè així els

senyals siguin més clars.

- El sensor de moviment. Està col·locat a la planta baixa prop del menjador,

la cuina i la porta d’entrada.

- El termistor. Està fora de la maqueta perquè així podem augmentar la

temperatura tocant-lo amb el nostra calor corporal.

- El LDR. Es troba fora de la maqueta perquè així podem disminuir la

lluminositat fàcilment.

- El teclat numèric. Es troba fora de la maqueta perquè sigui mes accessible

posar el codi. Està al costat de la porta del garatge.

Il·lustració 33. Base en construcció

Construcció de la maqueta

35

- Dos potenciòmetres. Estan fora de la

maqueta perquè puguem controlar-los

fàcilment. Un controla la lluminositat d’un llum

d’una habitació i l’altre els colors dels RGB

situats a la part del davant del jardí.

- Cinc polsadors. Estan col·locats fora

de la maqueta perquè siguin més accessibles

per activar-los. Dos d’ells controlen que pugi o baixi el pis, un per encendre el relé,

un per obrir la porta del garatge i l’altre per encendre un llum d’una habitació.

9.5.- Adaptació dels actuadors a la maqueta (il·lustracions 35 i 36)

Els actuadors també són una part molt important de la maqueta. En trobem

trenta:

- El Servomotor. Es troba a la porta del garatge,

ja que la seva finalitat és moure-la. Està relativament

amagat, ja que es troba entre les parets exteriors.

- Quatre motors pas a pas. Tres es troben

distribuïts a la planta baixa de la maqueta per poder

pujar i baixar el primer pis. L’altre es troba sota de la

maqueta, és a dir, a la base, per moure la cortina, que

com està a la planta baixa s’ha de col·locar a sota.

- El motor de corrent continu. Està col·locat a sota de la planta baixa també

perquè és el que fa funcionar l’aire condicionat.

- El brunzidor actiu. Està a la base de la maqueta, perquè sona tant fort que

no cal que estigui a la superfície.

- El relé. Es troba dins de la base perquè no cal que es vegi, perquè es veurà

a partir de la làmpada el seu funcionament.

- Divuit LED. Hi ha quatre al jardí, un vermell a una paret exterior del primer

pis i els altres distribuïts per totes les habitacions de la maqueta. En algunes

habitacions hi ha més d’un.

- Dos RGB. Situats a la part del davant del jardí.

Il·lustració 35. Adaptació Servomotor

Il·lustració 34. Adaptació dels potenciòmetres, polsadors, LDR i termistor

Construcció de la maqueta

36

- El Display LCD. Situat a la base de la

maqueta amb la finalitat de que es vegi des de

l’exterior la pantalla.

- El mòdul de radiofreqüència. Està a la base

de la maqueta perquè no cal que es vegi ja que el

contacte amb els comandament d’obertura no

necessita que sigui físic.

9.6.- Connexions de la maqueta

Cada sensor i actuador s’ha de connectar a la seva respectiva placa

controladora Mega, de manera que la maqueta està plena de connexions i cables.

Tots aquests s’ajunten a la base

(il·lustració 37), ja que allà és on es

troben les dues plaques. Podem veure el

diagrama de connexions al bloc V pàgina

63. La il·lustració 38 és un exemple de

connexions LED. Aquests cables, que

són la fase i el neutre, van a les plaques

de la base i es connecten als seus

determinats pins. Per passar les

connexions del primer pis a la base, tots els

cables s’ajunten a un cable multi-paral·lel i

arriben a la planta baixa per fora de la maqueta,

on allà s’ajunten amb les connexions d’aquesta

i arriben finalment a les plaques. En total, hi ha

aproximadament uns 200 cables a la maqueta.

Alguns han estat de connexió simple perquè

tenen terminals per connectar directament als

pins de les controladores; molts altres els he hagut de soldar entre ells afegint-hi

resistències quan era necessari.

Il·lustració 36. Adaptació LCD

Il·lustració 37. Connexions de la maqueta

Il·lustració 38. Exemple de connexions

Construcció de la maqueta

37

9.7.- Càlculs necessaris

9.7.1.- Càlcul del valor de les resistències

Per calcular quina resistència utilitzar en cada cas he tingut en compte el

voltatge i la intensitat que hi circula. He calculat la resistència amb la llei d’Ohm i la

potència amb la seva fórmula:

𝐼 =𝑉

𝑅 ; 𝑅 =

𝑉

𝐼 𝑃 = 𝐼 · 𝑉

Hi havia vegades que no tenia prou resistències i les vaig haver de posar en

sèrie o en paral·lel depenent de la situació perquè dones el valor desitjat. En total,

hi ha 40 resistències.

Els càlculs per la resistència de protecció d’un LED son:

𝑅 =5 − 3 𝑉

20 𝑚𝐴= 100 𝛺 𝑃 = 20 𝑚𝐴 · (5 − 3) 𝑉 = 40 𝑚𝑊

Realment, no utilitzo resistències de 100 Ω, sinó de 220 Ω per garantir la

seguretat del LED. De la mateixa manera que la potència que faig servir és de 250

mW, ja que és un estàndard de mercat. Veure circuit a la il·lustració 39.

Els càlculs per la resistència de protecció de dos LED en paral·lel son:

𝑅 =5 − 3 𝑉

40 𝑚𝐴= 50 𝛺 𝑃 = 40 𝑚𝐴 · (5 − 3) 𝑉 = 80 𝑚𝑊

Realment, no utilitzo resistències de 50 Ω, sinó de 100 Ω per garantir la

seguretat del LED. De la mateixa manera que la potència que faig servir és de 250

mW, com en el cas anterior. Veure circuit a la il·lustració 39.

Il·lustració 39. Circuit d’un i de dos LED

220 Ω

5 V

5 V

100 Ω

Construcció de la maqueta

38

9.7.2.- Càlcul del moment necessari per pujar la primera planta

Per calcular el moment que ha de tenir el motor per poder pujar la primera

planta he tingut en compte la força i la distància. Cada motor que he utilitzat té un

moment de 34,3 mN·m. Com utilitzo tres el moment total és de 102,9 mN·m. La

distància d’aplicació de la força respecte l’eix del motor és d’1 cm. Per tant, els tres

motors treballant junts poden pujar 1,05 kg tal com es pot veure als càlculs de sota.

La primera planta de la maqueta i el seu sostre tenen una massa de 0,45 kg, per

tant els motors poden pujar-la sense dificultat.

𝑀 = 𝐹 · 𝑑 ; 𝐹 =𝑀

𝑑 𝐹 = 𝑚 · 𝑎 ; 𝑚 =

𝐹

𝑎

Els càlculs reals de la maqueta son:

𝐹 =3 · 0,0343 𝑁

0,01 𝑚= 10,29 𝑁 𝑚 =

10,29 𝑁

9,81 𝑚/𝑠2= 1,05 𝑘𝑔

Pressupost

39

Capítol X. Pressupost

Material Quantitat Preu per unitat Preu total

Kit Elegoo 1 33,13 € 33,13 €

Segona placa Mega 1 8,11 € 8,11 €

Placa UNO 1 6,75 € 6,75 €

Segona protoboard 1 3,10 € 3,10 €

Cartó ploma 9 3,50 € 31,50 €

Llistó de fusta 1 1,95 € 1,95 €

Tauler MDF 1 5,45 € 5,45 €

Cables 1 6,88 € 6,88 €

Cable multi-paral·lel 1 3,90 € 3,90 €

Alimentador de 9 V 1 3,36 € 3,36 €

Alimentador de 5 V 1 2,52 € 2,52 €

Endoll 1 2,50 € 2,50 €

Base endoll 1 3,95 € 3,95 €

Lladre 1 1,25 € 1,25 €

50 LED blancs 1 1,97 € 1,97 €

Relé 1 1,10 € 1,10 €

Stepper 4 1,79 € 7,16 €

Potenciòmetre 1 1,60 € 1,60 €

Polsador 5 0,78 € 3,88 €

Joc d’engranatges 4 0,40 € 1,60 €

Bluetooth 1 8,49 € 8,49 €

Figures a escala 1 4,66 € 4,66 €

Potes 4 0,12 € 0,50 €

Regletes elèctriques 6 1,20 € 7,20 €

Cúter 1 2,65 € 2,65 €

Acetat 1 2,00 € 2,00 €

TOTAL (IVA inclòs) - - 157,16 €

Avaluació

40

Capítol XI. Avaluació

En la construcció de la maqueta (il·lustracions 40, 41, 42 i 43) m’he trobat

amb diverses dificultats. D’entrada, el tall del cartó ploma, ja que mai havia treballat

amb el cúter i agafar-li confiança em va costar una mica. Per altra banda, incorporar

els diferents sensors i actuadors dins la

maqueta ha suposat una tasca bastant

difícil perquè no estan a escala i s’han de

col·locar d’una manera determinada. Era

necessari mecanitzar els materials i de

vegades era complicat saber exactament

on i com fer-ho.

Un sensor que m’ha costat molt

d’integrar ha estat el sensor de moviment. El problema no ha estat on col·locar-lo,

sinó que un cop connectat no parava de sonar ja que té un radi de funcionament

bastant gran. El que vaig fer per solucionar aquest imprevist va ser posar un

interruptor perquè el sensor funciones quan jo canviava l’estat.

Una altra dificultat que em vaig trobar va ser la incorporació dels motors pas

a pas per pujar i baixar el primer pis. Havia

de tenir en compte l’equilibri, el pes, la

velocitat i els engranatges. Primerament

només hi havia dos motors però vaig

haver de col·locar un altre perquè el pis se

n’anava cap a un costat a causa de la falta

d’equilibri. Per altre banda, el pes també

era un aspecte important però no va ser un problema perquè el cartó ploma és molt

lleuger i els motors podien suporta-ho perfectament, tal com s’ha vist a l’apartat de

càlculs. Perquè tots els motors funcionessin bé havien de contenir el mateix

engranatge i anar a la mateixa velocitat. Això em va costar perquè vaig haver de

comprar un altre joc d’engranatges, ja que al primer només hi havia dos d’iguals i

necessitava un tercer.

Il·lustració 40. Probes prèvies

Il·lustració 41. Construint la planta baixa

Avaluació

41

La construcció de l’escala també em va suposar una gran dificultat ja que

vaig haver de repetir-la molts cops perquè sortís bé. Consta de peces petites de

manera que havia de treballar amb molta cura i concentració. Tot i que realment

havia d’estar concentrada en tot moment perquè qualsevol peça requereix molta

precisió, ja que els petits errors acaben convertint-se en grans.

Un altre problema va estar baixar els cables del primer pis a la base, ja que

no sabia exactament com fer-ho. Finalment, se’m va ocórrer portar-los tots a un punt

concret i unir-los amb un cable multi-paral·lel. Això em va permetre baixar-los fins a

la planta baixa, per així connectar-los a les plaques controladores.

L’aire condicionat també va ser un aspecte que em va costar perquè com el

motor està col·locat a la base no sabia si

l’aire arribaria correctament a la planta

baixa i es veuria bé. Perquè es notés, vaig

posar una serpentina blava, de manera

que quan està engegat es mou i es veu

com funciona l’aire.

Vaig decidir posar mobles, figures a escala i un cotxe per fer-la més realista.

Això ha comportat a la necessitat de dissenyar i construir els mobles i de trobar les

figures a escala.

Un altre repte important va ser amagar els cables tot el possible. L’escala de

la maqueta permetia fer-ho entre les parets exteriors. Era important tenir clar la

seqüència de coses que havia de fer perquè una acció no impedeixi la realització

de la següent. Per exemple, que el LED ja tingués soldada la resistència i els cables

abans de col·locar-lo entre les parets exteriors.

El fet de no tenir classes presencials a l’últim trimestre per les circumstàncies

d’alerta sanitària en la que ens trobàvem, va suposar un augment de temps

disponible per dedicar-me al treball de recerca. En contraposició, la mateixa situació

ha provocat que els materials que necessitava no estiguessin disponibles en un

període curt de temps.

Il·lustració 42. Soldant

Avaluació

42

Una vegada superades les dificultats, considero molt satisfactori el procés i

el resultat. Pel que fa al procés, és molt gratificant quan tot funciona i quadra. És

una tasca creativa que m’ha ajudat a utilitzar noves eines com el cúter per fer els

talls del cartó ploma. Pel que fa a l’acabat, crec que és prou bo i s’assembla molt a

la meva idea original.

Il·lustració 43. Maqueta acabada

43

BLOC IV. PROGRAMACIÓ

Capítol XII. Programació de la controladora

Capítol XIII. Programació de l’aplicació mòbil

Programació de la controladora

44

CAPÍTOL XII. PROGRAMACIÓ DE LA CONTROLADORA

La programació és una part molt important dins d’aquest treball de recerca.

Realment, la domòtica no es pot concebre sense aquest codi específic. Els

programes estan sotmesos a una estricta sintaxi que obliga a l’ús de paraules

concretes amb una seqüència determinada per definir el comportament dels

esdeveniments desitjats.

Amb la intenció de mostrar de forma molt sintetitzada un programa simple es

pot posar com a exemple el control d’un llum que de manera automàtica s’encengui

o s’apagui en funció de la lluminositat ambiental. Per realitzar aquesta acció s’ha

d’escriure al programa (en color blau):

- Donar nom al sensor de lluminositat, en aquest cas un LDR i indicar per quin

pin rebrà la informació d’entrada:

int LDR = A0;

- Donar nom a un llum, en aquest cas un LED i indicar per quin pin sortirà

l’ordre que controla el LED:

int LED = 12;

- Donar nom a l’espai de memòria que emmagatzemarà el valor llegit al LDR:

int llum;

- Indicar si els pins anteriors són d’entrada o de sortida.

pinMode (LDR, INPUT);

pinMode (LED, OUTPUT);

- Donar l’ordre de fer la lectura del nivell de lluminositat capturat per LDR i

emmagatzemar aquesta dada a la variable llum:

llum = analogRead (LDR);

- Indicar el valor de lluminositat considerat límit per fer una acció:

if (llum < 30)

- Indicar al programa que si el que detecta el sensor supera el límit establert

doni la ordre d’apagar el LED:

digitalWrite (LED, LOW);

Programació de la controladora

45

- Indicar al programa que si el que detecta el sensor no supera el límit

establert doni la ordre d’encendre el LED:

digitalWrite (LED, HIGH);

Per la gran extensió dels programes desenvolupats, l’annex II recull el codi

complert de les dues plaques controladores Arduino Mega.

Programació de l’aplicació mòbil

46

Capítol XIII. Programació de l’aplicació mòbil

13.1.- Pantalla principal

La pantalla principal consta de dos botons: un per anar a la pantalla d’ordres

i l’altre per anar a la pantalla de reconeixement de veu.

13.1.1.- Disseny de la pantalla principal

13.1.2.- Programa de la pantalla principal

Il·lustració 44. Captura de la pantalla principal

Si cliquem aquí ens portarà a la

pantalla de reconeixement de

veu per poder donar les ordres

Si cliquem aquí ens portarà a la

pantalla de la llista d’ordres

reconegudes

Programació de l’aplicació mòbil

47

13.2.- Pantalla d’ordres

La pantalla d’ordres consta de la llista de comandaments reconeguts pel

sistema. És una llarga llista que serveix com a recordatori de totes les funcions que

pot fer i la sintaxi exacta per donar les ordres. També conté un botó per poder tornar

a la pantalla principal.

13.2.1.- Disseny de la pantalla d’ordres

13.2.2.- Programa de la pantalla d’ordres

13.3.- Pantalla de reconeixement de veu

La pantalla de reconeixement de veu consta de tres botons: tornar a la

pantalla principal, anar a la pantalla que ofereix connectar-se a qualsevol dispositiu

que tingui activat el seu Bluetooth i activar el reconeixement de veu.

Il·lustració 45. Captura de la pantalla d’ordres

Llista de combinacions d’ordres

Si cliquem aquí ens portarà a la

pantalla principal

Programació de l’aplicació mòbil

48

13.3.1.- Disseny de la pantalla de reconeixement de veu

13.3.2.- Programa de la pantalla de reconeixement de veu

Il·lustració 46. Captura de la pantalla de reconeixement de veu

Si cliquem aquí s’activa el

reconeixement de veu

Si cliquem aquí ens portarà a la

pantalla principal

Si cliquem aquí ens portarà a la

llista de dispositius Bluetooth

Missatge de si està o no

connectat

49

BLOC V. CIRCUITS DE CONNEXIONS

Capítol XIV. Connexions Mega 1 i llistat de pins

Capítol XV. Connexions Mega 2 i llistat de pins

Connexions Mega 1 i llistat de pins

50

Capítol XIV. Connexions Mega 1 i llistat de pins

14.1.- Circuit elèctric Mega 1

El circuit elèctric simbòlic de la placa controladora Mega 1 és el següent:

Tant aquest circuit com el següent els he fet amb l’ajut de la aplicació web

Fritzing, pensada per elaborar plànols relacionats amb Arduino i d’altres plataformes

de disseny de prototips amb plaques controladores.

LED RGB Jardí dret

LED RGB Jardí esquerra

LED Jardí esquerra LED Jardí dret

R: 220 Ω

R: 47Ω

R: 47Ω

Potenciòmetre 10 KΩ

LDR

1 KΩ

R: 1 KΩ

Pulsador pujar

Pulsador baixar

Pulsador Relé

R: 10 KΩ

R: 10 KΩ

R: 10 KΩ

RELÉ

220 V

STEPPER 1 STEPPER 2 STEPPER 3

Red

DRIVER DRIVER DRIVER

Connexions Mega 1 i llistat de pins

51

14.2.- Llistat de pins Mega 1

Els pins utilitzats a la placa controladora Mega 1 són els següents:

Pins d’entrada analògics:

- A0: entrada de la lectura de la intensitat lumínica del LDR

- A1: entrada del valor de tensió d’un potenciòmetre

Pins d’entrada/sortida digitals:

- 2, 3, 4, 5, 6 i 7: sortides per canviar el color dels dos LED tricolor

- 22, 23, 24 i 25: sortides per controlar un motor stepper (pujar/baixar pis)

- 26, 27, 28 i 29: sortides per controlar un motor stepper (pujar/baixar pis)

- 30, 31, 32 i 33: sortides per controlar un motor stepper (pujar/baixar pis)

- 38: entrada de la lectura d’un botó polsador per pujar la primera planta

- 39: entrada de la lectura d’un botó polsador per baixar la primera planta

- 40 i 41: sortides per controlar els LED del jardí

- 48: sortida per governar un relé

- 49: entrada de la lectura d’un botó polsador per activar el relé

Connexions Mega 2 i llistat de pins

52

Capítol XV. Connexions Mega 2 i llistat de pins

15.1.- Circuit elèctric Mega 2

El circuit elèctric simbòlic de la placa controladora Mega 2 és el següent:

LED

HABITACIONS

Receptor

de RF

Receptor

de IR

Red

STEPPER 4

Persiana

DRIVER

Motor DC

Aire condicionat

BLUETOOTH

Detector IR

moviment

Teclat numèric

Servomotor

Porta garatge

Pulsador llum

Brunzidor

Tiristor

R: 10 KΩ

Potenciòmetre 10 KΩ

LED

ALARMA

R: 220 Ω

LCD

TRIM

R: 220 Ω

LED

HABITACIONS

Connexions Mega 2 i llistat de pins

53

15.2.- Llistat de pins Mega 2

Els pins utilitzats a la placa controladora Mega 2 són els següents:

Pins d’entrada analògics:

- A0: entrada de la lectura de temperatura que prové del Termistor

- A1: entrada del valor de tensió d’un potenciòmetre

- A11, A12, A13 i A14: sortides de dades del display LCD

- A15: entrada de la lectura d’un botó polsador per encendre un LED

Pins d’entrada/sortida digitals:

- 2: entrada de la lectura d’un botó per obrir i tancar la porta del garatge

- 4: sortida per controlar la intensitat lumínica d’un LED

- 5: sortida per controlar el brunzidor actiu

- 6, 7, 8 i 9: sortides per controlar un motor stepper (cortina)

- 10: sortida RST per governar el control d’accessos per radiofreqüència

- 11 i 12: enable i RS, respectivament per controlar el display LCD

- 14 i 15: sortides per modificar el sentit de gir d’un motor de corrent continu

- 16: sortida per controlar el motor de corrent continu (aire condicionat)

- 18 i 19: BUS de comunicació amb el Bluetooth

- 23, 25, 27, 29, 31, 33, 35 i 37: entrades del teclat numèric

- 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 45 i 47: sortides per controlar llums

- 39: sortida per controlar el LED d’alarma

- 41: entrada del sensor de moviment per infrarojos

- 43: entrada del receptor de radiofreqüència

- 49: sortida per governar el servomotor de la porta del garatge

- 50, 51, 52 i 53: BUS ISP per la comunicació amb el control d’accessos

54

BLOC VI. CONCLUSIONS

Conclusions

55

Conclusions

Com ja he comentat a la introducció, la tecnologia ha anat canviant amb el

pas del temps, però sempre ha volgut facilitar la vida de les persones. Dins de l’àmbit

de l’edificació, actualment no es pot concebre un habitatge sense el concepte

d’intel·ligent. La domòtica va apareixent a la nostra societat de manera progressiva.

Ja fa anys que existeix però les persones encara no som del tot conscients.

La metodologia de treball que em vaig plantejar l’he complert. He anat seguint

amb el pla previst, tot i que hi ha hagut moments que he anat més ràpida gràcies a

poder dedicar-li més hores o més lenta quan havia d’esperar a que m’arribés el

material per poder continuar el pla establert.

Considero assolit l’objectiu d’aprofundir en el coneixement de hardware i

software necessaris per desenvolupar el projecte. Respecte el hardware he après a

utilitzar la placa controladora i tots els components que he utilitzat. Això ha sigut una

part important de l’aprenentatge perquè he hagut d’investigar en el àmbit de

l’electrònica per entendre bé el funcionament dels dispositius. La gran majoria els

he entès perfectament però en algun cas el nivell necessari requereix estudis

superiors. Respecte el software he augmentat els meus coneixements per a la

utilització d’AutoCad, SketchUp, Arduino, MET Inventor i Fritzing.

Considero assolit l’objectiu de desenvolupar la programació necessària

perquè funcioni tot el projecte. He hagut d’interioritzar l’estructura i sintaxis

imprescindibles a l’entorn de programació C++15 per poder integrar tots els

comandaments. Incorporar cada un dels components en un mateix programa va ser

un repte difícil d’aconseguir perquè cap font t’explica com unir tantes funcions en un

sol programa. Em vaig plantejar fer la programació de manera descentralitzada, és

a dir, cada un dels sensors i actuadors incorporen la seva petita placa controladora

i el seu corresponent programa informàtic. Aquest tipus de projecte requeriria més

temps i resultaria menys assequible econòmicament. Per això vaig realitzar una

estructura centralitzada on hi ha un únic programa per placa controladora. Un cop

15 És un llenguatge de programació molt estés

Conclusions

56

totes les funcions estaven juntes dins del mateix programa vaig haver de depurar

conflictes entre dispositius que presentaven col·lisió.

Considero assolit l’objectiu d’analitzar com van canviant les tecnologies

relacionades amb la innovació en la construcció dels edificis al llarg del temps. De

fet, a la maqueta presento diferents formes de controlar una mateixa funció. El

projecte conté des del comandament més bàsic com un interruptor, passant per

polsadors, fins el comandament de veu. Per exemple, obrir la porta per teclat

numèric, per radiofreqüència i per comunicació a distància. Dins d’aquest àmbit

m’ha costat obtenir informació complerta. Les fonts eren parcials i gairebé sempre

d’empreses privades que es dediquen a la venta d’aquestes tecnologies i no he

trobat una historiografia precisa.

Considero assolit l’objectiu d’adquirir els coneixements bàsics d’edificació.

Per poder fer els plànols de l’habitatge vaig haver de consultar documents tècnics

com per exemple el Codi d’Edificació per saber el gruix d’una paret, l’ample d’una

porta o l’alçada d’un pis. Altres coses que vaig haver d’investigar que no m’havia

plantejat mai és la ubicació de les finestres i les seves dimensions. La maqueta

respecta l’escala perfectament però evidentment no pretén ser un projecte de

construcció tot i que és perfectament extrapolable al món real.

Considero assolit l’objectiu de construir una maqueta conceptual mostrant

diferents automatismes. Com ja he explicat a l’apartat d’avaluació (bloc III, capítol

XI, pàgina 40) estic molt contenta amb el resultat i he pogut integrar totes les

funcions que havia previst amb l’acabat esperat desprès de trobar-me amb diverses

dificultats que han estat superades.

Un cop assolits tots els objectius puc concloure que la hipòtesi amb la que

treballava és certa. Qualsevol persona sense gaires coneixements tècnics previs

relacionats amb l’electrònica i l’automatització pot dissenyar un habitatge domòtic,

tant en un prototip com en un cas real. El prototip és la maqueta, que també conté

un exemple de funcionament d’un element que treballa a la tensió de la xarxa

domèstica. També és cert que el disseny es pot realitzar i comprovar el seu

funcionament a un preu assequible, ja que tota la despesa incloent els materials

Conclusions

57

utilitzats és de tan sols 157,16 €. La majoria dels dispositius que formen part de la

maqueta serveixen també per fer la mateixa funció a un habitatge domòtic real.

58

BIBLIOGRAFIA I WEBGRAFIA

Bibliografia i webgrafia

59

Bibliografia

- Torrente Artero, Óscar. Arduino. Curso practico de formación. Madrid: Rc Libros,

2013.

- Culkin, Jody i Hagan, Eric. Aprende electrónica con Arduino. Barcelona:

Marcombo, 2018.

- Enríquez Herrador, Rafael. Guía de Usuario de Arduino. Córdoba: I.T.I. Sistemas,

2009.

- W. Evans, Brian. Manual de programación. San Francisco: Creative Commons,

2007.

- Sanclemente Carretero, Óscar. Casa domótica con Arduino. Valencia: Escuela

Técnica Superior de Ingeniería del Diseño, 2016.

Webgrafia

- https://elprofegarcia.com/ (12/01/2020)

- https://youtube.com/watch?ve=EjAyiCSszrc (30/01/2020)

- https://www.prometec.net/indice-tutoriales/ (10/04/2020)

- https://www.youtube.com/results?search_query=arduino+desde+0 (24/04/2020)

- https://www.areatecnologia.com/electricidad/domotica.html (24/04/2020)

- https://codeweek.eu/docs/spain/guia-iniciacion-app-inventor.pdf (04/07/2020)

- https://fritzing.org/projects/ (02/08/2020)

- http://www.cedom.es/sobre-domotica/que-es-domotica (11/08/2020)

- https://www.arkiplus.com/historia-de-la-domotica/ (11/08/2020)

- https://proyectoarduino.com/arduino-mega-2560/ (14/08/2020)

- https://www.geekfactory.mx/ (24/08/2020)

60

ANNEX I

Annex I

61

Annex I

62

63

ANNEX II

64

65

ANNEX III

66

Programa de la placa controladora Arduino Mega 1:

/*

Sara Hernández Cabello

Casa domòtica

Treball de recerca

Batxillerat 2019 - 2021

IES La Roca

Placa mega 1

*/

String missatge; //variable que conté la ordre de l'Android

#include "Stepper.h"

#include "IRremote.h"

#define STEPS 32 //pases per volta

int Steps2Take; //2048 = 1 volta

int receiver = 43; //pin receptor IR

Stepper small_stepper (STEPS, 6, 8, 7, 9);

IRrecv irrecv(receiver); //variable

decode_results results; //variable

#include <Servo.h> //afegeixo la llibrería de servomotors

Servo porta; //li dono nom al servo que mou la porta

int pos = 0; //variable per emmagatzemar la posició del servo de la porta

#include <LiquidCrystal.h> //afegeixo la llibrería per la pantalla

LiquidCrystal lcd (12, 11, A11, A12, A13, A14); //configuro els pins de la pantalla

#include <Keypad.h> //afegeixo la llibrería del teclat

const byte Files = 4;

const byte Cols = 4;

byte Pins_Files[] = 37, 35, 33, 31;

byte Pins_Cols[] = 29, 27, 25, 23;

char Tecles [ Files ][ Cols ] =

'1', '2', '3', 'A',

'4', '5', '6', 'B',

'7', '8', '9', 'C',

'*', '0', '#', 'D'

;

char codiSecret[4] = '2', '5', '8', '0';

int posicio = 0; //necessaria per a la clau de obrir porta amb el teclat

Keypad teclat = Keypad(makeKeymap(Tecles), Pins_Files, Pins_Cols, Files, Cols);

#include <SPI.h> //aquest bloc de cinc entrades és per la tarja i el clauer

#include <MFRC522.h> //receptor

#define RST_PIN 10 //pin pel reset del RC522

#define SS_PIN 53 //pin pel SS (SDA) del RC522

MFRC522 mfrc522(SS_PIN, RST_PIN); //faig l'objecte pel RC522

//anomeno les variables pels LEDs i els seus pins

const int llum_sala = 4;

const int llum_hab_esq = 26;

const int llum_lav_esq = 28;

const int llum_lav_cent = 30;

const int llum_hab_cent = 32;

67

const int llum_lav_dch = 34;

const int llum_hab_dch = 36;

const int llum_menjador_1 = 38;

const int llum_menjador_2 = 40;

const int llum_cuina_1 = 42;

const int llum_cuina_2 = 44;

const int llum_lavabo_sota = 45;

const int llum_estudi = 47;

//per la alarma per sensor de moviment

int ledalarma = 39; //pin per LED alarma

int pirPin = 41; //input del HC-S501. Sensor de moviment

int pirValue; //variable per amagatzemar el valor PIR

int zumbador = 5;

//per controlar el ventilador o aire condicionat

int termistor = A0;

#define ventilador 16

#define DIRA 14

#define DIRB 15

//per controlar llums amb un botó

int botonLuz = A15; //pin analògic però utilitzat com a digital per aprofitar pins

bool estado = false;

//per controlar la porta del garatge amb un botó

int botoGaratge=2;

bool garatge=false;

//per graduar l'intensitat de la llum amb potenciòmetre

const int potenciometre = A1;

int brillo;

void setup()

Serial1.begin(9600); //inicio la comunicació serie per a rebre dades de l'Android

irrecv.enableIRIn(); //inicio el receptor

//configuro la pantalla LCD

lcd.begin(16, 2); //inicio la pantalla LCD

lcd.print(" Casa Domotica "); //text en la primera linia

lcd.setCursor(0, 1);

lcd.print(" Sara Hernandez "); //text en la segona linia

//configuro els pins dels LEDs com sortides

pinMode(llum_sala, OUTPUT);

pinMode(llum_hab_esq, OUTPUT);

pinMode(llum_lav_esq, OUTPUT);

pinMode(llum_lav_cent, OUTPUT);

pinMode(llum_hab_cent, OUTPUT);

pinMode(llum_lav_dch, OUTPUT);

pinMode(llum_hab_dch, OUTPUT);

pinMode(llum_menjador_1, OUTPUT);

pinMode(llum_menjador_2, OUTPUT);

68

pinMode(llum_cuina_1, OUTPUT);

pinMode(llum_cuina_2, OUTPUT);

pinMode(llum_lavabo_sota, OUTPUT);

pinMode(llum_estudi, OUTPUT);

pinMode(botonLuz, INPUT);

pinMode(botoGaratge, INPUT);

//configuro els pins del servomotor

porta.attach(49);

//inicio en posició tancada

porta.write(8);

SPI.begin(); //inicio el Bus SPI

mfrc522.PCD_Init(); //inicio el MFRC522

pinMode(ledalarma, OUTPUT);

pinMode(pirPin, INPUT);

digitalWrite(ledalarma, LOW);

pinMode (zumbador, OUTPUT);

pinMode(ventilador, OUTPUT);

pinMode(DIRA, OUTPUT);

pinMode(DIRB, OUTPUT);

byte ActualUID[4]; //almagatzema el codi del Tag llegit

byte Usuario1[4] = 0x49, 0x8D, 0xF0, 0xB8 ; //codi de l'usuari 1. Tarja

byte Usuario2[4] = 0x89, 0x00, 0xA3, 0x99 ; //códi de l'usuari 2. Clauer

void loop()

brillo = analogRead(potenciometre);

int mapeopot = map(brillo, 0, 1023, 0, 255);

analogWrite (llum_sala, mapeopot);

bool valorBoton = digitalRead(botonLuz); //llegeixo el botó

if (valorBoton == true) //està premut

estado = !estado; //canvío l'estat

digitalWrite(llum_menjador_1, estado); //nou valor

digitalWrite(llum_menjador_2, estado); //nou valor

delay(250); //dona estabilitat al premer el botó

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums menjador "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Canvi d'estat "); //text a la segona linia

delay(5000);

69

Bool valorgaratge = digitalRead(botoGaratge); //llegeixo el botó

If (valorgaratge == true) //està premut

Garatge = !garatge; //canvio l’estat

for (pos = 8; pos <= 106; pos += 1) //obre la porta grau a grau fins als 100 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Oberta "); //text a la segona linia

delay(5000);

for (pos = 106; pos >= 8; pos -= 1) //tanca la porta grau a grau fins als 0 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Tancada "); //text a la segona linia

if (irrecv.decode(&results)) //hi ha senyal al receptor d'ínfrarrojos?

switch (results.value)

case 0xFF22DD: //tecla d'obrir cortina

small_stepper.setSpeed(500);

Steps2Take = 980; //canviant voltes. 2048 és una volta en sentit A

small_stepper.step(Steps2Take);

delay(1000);

break;

case 0xFFC23D: //tecla de tancar cortina

small_stepper.setSpeed(500);

Steps2Take = -980; //canviant voltes. -2048 és una volta en sentit B

small_stepper.step(Steps2Take);

delay(1000);

break;

irrecv.resume(); //rep el valor nou

digitalWrite(6, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

digitalWrite(9, LOW);

pirValue = digitalRead(pirPin);

if (pirValue != 0)

lcd.setCursor(0, 0);

lcd.print(" ALARMA "); //text en la primera linia

lcd.setCursor(0, 1);

lcd.print(" !!!!!!!!!!!!!! "); //text en la segona linia

70

digitalWrite (zumbador, HIGH);

digitalWrite (ledalarma, HIGH);

delay(300);

digitalWrite (ledalarma, LOW);

delay(300);

else

digitalWrite (zumbador, LOW);

digitalWrite (ledalarma, LOW);

lcd.setCursor(0, 0);

lcd.print(" Casa Domotica "); //text en la primera linia

lcd.setCursor(0, 1);

lcd.print(" Sara Hernandez "); //text en la segona linia

//medeixo temperatura del termistor

int tempReading = analogRead(termistor);

double tempK = log(10000.0 * ((1024.0 / tempReading - 1)));

tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK );

float tempC = tempK - 273.15; //converteig Kelvin a Celcius

if (tempC > 32)

digitalWrite(ventilador, HIGH);

digitalWrite(DIRA, HIGH);

digitalWrite(DIRB, LOW);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Temperatura "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" " + String(tempC) + " C "); //text a la segona linia

delay(10000);

digitalWrite(ventilador, LOW);

digitalWrite(DIRA, LOW);

digitalWrite(DIRB, LOW);

char pulsacio = teclat.getKey();

if (pulsacio == codiSecret[posicio])

posicio ++; //augmento posició si es correcte el dÍgit

if (posicio == 4) //comprobo que s'han introduït els 4 correctament

for (pos = 8; pos <= 106; pos += 1) //obre la porta grau a grau fins als 90 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Oberta "); //text a la segona linia

if (pulsacio == '*') //reset per corregir errors per introduÏr de nou el codi per obrir

posicio = 0;

71

if (pulsacio == '#')

for (pos = 106; pos >= 8; pos -= 1) //tanca la porta grau a grau fins als 0 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Tancada "); //text a la segona linia

while (Serial1.available() > 0) //confirmació de que la comunicació esta disponible

delay(10); //retard per estabilitzar el programa

char c = Serial1.read(); //c amagatzema la ordre que ve de l'Android

missatge += c; //afegeix el contingut de la ordre a la variable missatge

if (missatge.length() > 0) //verifica que la variable missatge no estigui buida

//cumpleix les ordres de l'Android

if (missatge == "*Obrir porta")

for (pos = 8; pos <= 106; pos += 1) //obre la porta grau a grau fins als 100 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Oberta "); //text a la segona linia

else if (missatge == "*tancar porta")

for (pos = 106; pos >= 8; pos -= 1) //tanca la porta grau a grau fins als 0 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Tancada "); //text a la segona linia

else if (missatge == "*encendre llum habitació esquerra")

digitalWrite(llum_hab_esq, HIGH); //s'encen la llum de la habitació esquerra

lcd.setCursor(0, 0); //posa cursor a la primera linia

72

lcd.print("Llums habitacio "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum habitació esquerra")

digitalWrite(llum_hab_esq, LOW); //s'apaga la llum de la habitació esquerra

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Llums habitacio "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum lavabo esquerra")

digitalWrite(llum_lav_esq, HIGH); //s'encen la llum del lavabo esquerra

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum lavabo esquerra")

digitalWrite(llum_lav_esq, LOW); //s'apaga la llum del lavabo esquerra

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum lavabo mig")

digitalWrite(llum_lav_cent, HIGH); //s'encen la llum del lavabo del mig

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum lavabo mig")

digitalWrite(llum_lav_cent, LOW); //s'apaga la llum del lavabo del mig

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum habitació mig")

73

digitalWrite(llum_hab_cent, HIGH); //s'encen la llum de la habitació del mig

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Llums habitacio "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum habitació mig")

digitalWrite(llum_hab_cent, LOW); //s'apaga la llum de la habitació del mig

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Llums habitacio "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum lavabo dret")

digitalWrite(llum_lav_dch, HIGH); //s'encen la llum del lavabo dret

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum lavabo dret")

digitalWrite(llum_lav_dch, LOW); //s'apaga la llum del lavabo dret

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum habitació dreta")

digitalWrite(llum_hab_dch, HIGH); //s'encen la llum de la habitació dreta

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Llums habitacio "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum habitació dreta")

digitalWrite(llum_hab_dch, LOW); //s'apaga la llum de la habitació dreta

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Llums habitacio "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

74

else if (missatge == "*encendre llum cuina")

digitalWrite(llum_cuina_1, HIGH); //s'encen la llum 1 de la cuina

digitalWrite(llum_cuina_2, HIGH); //s'encen la llum 2 de la cuina

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums cuina "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum cuina")

digitalWrite(llum_cuina_1, LOW); //s'apaga la llum 1 de la cuina

digitalWrite(llum_cuina_2, LOW); //s'apaga la llum 2 de la cuina

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums cuina "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum menjador")

digitalWrite(llum_menjador_1, HIGH); //s'encen la llum 1 del menjador

digitalWrite(llum_menjador_2, HIGH); //s'encen la llum 2 del menjador

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums menjador "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum menjador")

digitalWrite(llum_menjador_1, LOW); //s'apaga la llum 1 del menjador

digitalWrite(llum_menjador_2, LOW); //s'apaga la llum 2 del menjador

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums menjador "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum lavabo sota")

digitalWrite(llum_lavabo_sota, HIGH); //s'encen la llum del lavabo de sota

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum lavabo sota")

digitalWrite(llum_lavabo_sota, LOW); //s'apaga la llum del lavabo de sota

lcd.setCursor(0, 0); //posa cursor a la primera linia

75

lcd.print(" Llums lavabo "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre llum estudi")

digitalWrite(llum_estudi, HIGH); //s'encen la llum de l'estudi

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums estudi "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar llum estudi")

digitalWrite(llum_estudi, LOW); //s'apaga la llum de l'estudi

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums estudi "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

else if (missatge == "*encendre primer pis")

digitalWrite(llum_sala, HIGH); //s'encen la planta primera sencera

digitalWrite(llum_hab_esq, HIGH);

digitalWrite(llum_lav_esq, HIGH);

digitalWrite(llum_lav_cent, HIGH);

digitalWrite(llum_hab_cent, HIGH);

digitalWrite(llum_lav_dch, HIGH);

digitalWrite(llum_hab_dch, HIGH);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums planta 1 "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar primer pis")

digitalWrite(llum_sala, LOW); //s'apaga la planta primera sencera

digitalWrite(llum_hab_esq, LOW);

digitalWrite(llum_lav_esq, LOW);

digitalWrite(llum_lav_cent, LOW);

digitalWrite(llum_hab_cent, LOW);

digitalWrite(llum_lav_dch, LOW);

digitalWrite(llum_hab_dch, LOW);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums planta 1 "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

76

else if (missatge == "*encendre planta baixa")

digitalWrite(llum_menjador_1, HIGH); //s'encen la planta baixa

digitalWrite(llum_menjador_2, HIGH);

digitalWrite(llum_cuina_1, HIGH);

digitalWrite(llum_cuina_2, HIGH);

digitalWrite(llum_lavabo_sota, HIGH);

digitalWrite(llum_estudi, HIGH);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums planta 0 "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Enceses "); //text a la segona linia

delay(5000);

else if (missatge == "*apagar planta baixa")

digitalWrite(llum_menjador_1, LOW); //s'apaga la planta baixa

digitalWrite(llum_menjador_2, LOW);

digitalWrite(llum_cuina_1, LOW);

digitalWrite(llum_cuina_2, LOW);

digitalWrite(llum_lavabo_sota, LOW);

digitalWrite(llum_estudi, LOW);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print(" Llums planta 0 "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Apagades "); //text a la segona linia

delay(5000);

missatge = ""; //reset variable

// Reviso si n'hi han noves tarjes presents

if ( mfrc522.PICC_IsNewCardPresent())

//selecciono una tarja

if ( mfrc522.PICC_ReadCardSerial())

//envio per port serie el seu UID

Serial.print(F("Card UID:"));

for (byte i = 0; i < mfrc522.uid.size; i++)

Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");

Serial.print(mfrc522.uid.uidByte[i], HEX);

ActualUID[i] = mfrc522.uid.uidByte[i];

Serial.print(" ");

//comparo els UID per determinar si es un dels usuaris reconeguts

if (compareArray(ActualUID, Usuario1))

Serial.println("Acceso concedido...");

for (pos = 8; pos <= 106; pos += 1) //obre la porta grau a grau fins als 100 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

77

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Oberta "); //text a la segona linia

delay(5000);

for (pos = 106; pos >= 8; pos -= 1) //tanca la porta grau a grau fins als 0 graus

porta.write(pos); //posa la porta a la posició emmagatzemada a la variable pos

delay(15);

lcd.setCursor(0, 0); //posa cursor a la primera linia

lcd.print("Porta principal "); //text a la primera linia

lcd.setCursor(0, 1); //posa cursor a la segona linia

lcd.print(" Tancada "); //text a la segona linia

// Termina la lectura de la tarja actual

mfrc522.PICC_HaltA();

//funció per comparar dos vectors

boolean compareArray(byte array1[], byte array2[])

if (array1[0] != array2[0])return (false);

if (array1[1] != array2[1])return (false);

if (array1[2] != array2[2])return (false);

if (array1[3] != array2[3])return (false);

return (true);

78

Programa de la placa controladora Arduino Mega 2:

/*

Sara Hernández Cabello

Casa domòtica

Treball de recerca

Batxillerat 2019 - 2021

IES La Roca

Placa Mega 2

*/

#include "Stepper.h"

#define STEPS 32 //pases per volta

Stepper elevadorUnoPlantaUno(STEPS, 22, 24, 23, 25); //defineixo stepper

Stepper elevadorDosPlantaUno(STEPS, 26, 28, 27, 29); //defineixo stepper

Stepper elevadorTresPlantaUno(STEPS, 30, 32, 31, 33); //defineixo stepper

//per controlar pujada de planta 1 amb un botó

int botonSubir = 38;

int botonBajar = 39;

//per encendre un llum de potència controlat per un relé

int botonControlRele = 49;

bool estado = false;

const int llum_rele = 48;

//per encendre automàticament el llum del jardí amb LDR

const int ldr = A0;

int lumen;

const int llum_jardi_dch = 40;

const int llum_jardi_izq = 41;

//per encendre llums RGB i controlar el seu color

int potRGB = A1;

int valorpotRGB;

int LEDizqTricolorVermell = 2;

int LEDizqTricolorVerd = 3;

int LEDizqTricolorBlau = 4;

int LEDdchTricolorVermell = 5;

int LEDdchTricolorVerd = 6;

int LEDdchTricolorBlau = 7;

void setup()

pinMode(botonSubir, INPUT); //bloc per declarar entrades amb botó i sortides per LEDs

pinMode(botonBajar, INPUT);

pinMode(botonControlRele, INPUT);

pinMode(llum_rele, OUTPUT);

digitalWrite(llum_rele, HIGH);

pinMode(llum_jardi_dch, OUTPUT);

pinMode(llum_jardi_izq, OUTPUT);

pinMode(LEDizqTricolorVermell, OUTPUT);

79

pinMode(LEDizqTricolorVerd, OUTPUT);

pinMode(LEDizqTricolorBlau, OUTPUT);

pinMode(LEDdchTricolorVermell, OUTPUT);

pinMode(LEDdchTricolorVerd, OUTPUT);

pinMode(LEDdchTricolorBlau, OUTPUT);

void loop()

bool valorBotonSubir = digitalRead(botonSubir); //llegeixo el botó

if (valorBotonSubir == true) //està premut

for (int i = 0; i < 5000; i ++) //2100 és més o menys una volta

elevadorUnoPlantaUno.setSpeed(800); //bloc per definir velocitat i sentit. Cada loop un pas tansols

elevadorDosPlantaUno.setSpeed(800);

elevadorTresPlantaUno.setSpeed(800);

elevadorUnoPlantaUno.step(-1);

elevadorDosPlantaUno.step(-1);

elevadorTresPlantaUno.step(1);

for (int j = 22; j < 34; j++)

digitalWrite(j, LOW);

bool valorBotonBajar = digitalRead(botonBajar); //llegeixo el botó

if (valorBotonBajar == true) //està premut

for (int i = 0; i < 5000; i ++) // 2100 és més o menys una volta

elevadorUnoPlantaUno.setSpeed(800); //bloc per definir velocitat i sentit. Cada loop un pas tansols

elevadorDosPlantaUno.setSpeed(800);

elevadorTresPlantaUno.setSpeed(800);

elevadorUnoPlantaUno.step(1);

elevadorDosPlantaUno.step(1);

elevadorTresPlantaUno.step(-1);

for (int j = 22; j < 34; j++)

digitalWrite(j, LOW);

bool valorBoton1 = digitalRead(botonControlRele); //llegeixo el botó

if (valorBoton1 == true) //està premut

estado = !estado; //canvío l'estat

if (estado == true)

80

digitalWrite (llum_rele, LOW);

delay (1000);

digitalWrite (llum_rele, HIGH);

delay (1000);

digitalWrite (llum_rele, LOW);

delay (1000);

digitalWrite (llum_rele, HIGH);

delay (1000);

digitalWrite (llum_rele, LOW);

delay (500);

digitalWrite (llum_rele, HIGH);

delay (500);

digitalWrite (llum_rele, LOW);

delay (500);

digitalWrite (llum_rele, HIGH);

delay (500);

digitalWrite (llum_rele, LOW);

else

digitalWrite (llum_rele, HIGH);

delay (250); //per evitar el rebot del pulsador

lumen = analogRead(ldr); //defineixo sensibilitat

if (lumen < 30)

digitalWrite (llum_jardi_dch, HIGH);

digitalWrite (llum_jardi_izq, HIGH);

else

digitalWrite (llum_jardi_dch, LOW);

digitalWrite (llum_jardi_izq, LOW);

valorpotRGB = analogRead (potRGB); //per establir segons la lectura del pot. Apagat i set colors

if (valorpotRGB >= 0 && valorpotRGB <= 127)

asignarcolor (0, 0, 0);

if (valorpotRGB >= 128 && valorpotRGB <= 255)

asignarcolor (255, 0, 0);

if (valorpotRGB >= 256 && valorpotRGB <= 383)

asignarcolor (0, 255, 0);

if (valorpotRGB >= 384 && valorpotRGB <= 511)

asignarcolor (0, 0, 255);

81

if (valorpotRGB >= 512 && valorpotRGB <= 639)

asignarcolor (255, 255, 0);

if (valorpotRGB >= 640 && valorpotRGB <= 767)

asignarcolor (0, 255, 255);

if (valorpotRGB >= 768 && valorpotRGB <= 895)

asignarcolor (255, 0, 255);

if (valorpotRGB >= 896 && valorpotRGB <= 1023)

asignarcolor (255, 153, 51);

void asignarcolor (int R, int G, int B) //defineixo funció per escullir color

analogWrite (LEDizqTricolorBlau, B);

analogWrite (LEDdchTricolorBlau, B);

analogWrite (LEDizqTricolorVermell, R);

analogWrite (LEDdchTricolorVermell, R);

analogWrite (LEDizqTricolorVerd, G);

analogWrite (LEDdchTricolorVerd, G);