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
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.
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)
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);