Full text
Projecte de disseny per a una aplicació de telèfon mòbil per al control d'una bicicleta elèctrica amb pila de combustible. Document: Memòria Autor: Clàudia Cañamero Martínez Director Xavier Salueña Berna Titulació: Grau en Enginyeria Electrònica Industrial i Automàtica Convocatòria: Primavera, 2021 TREBALL FINAL D’ ESTUDIS
1 Resum Aquest Treball de Fi de Grau mostra el desenvolupament necessari per controlar des d'una aplicació mòbil, una bicicleta elèctrica alimentada amb una pila de combustible. Amb aquest projecte es pretén obtenir un mètode de transport alternatiu, creant una bicicleta elèctrica que en comptes d'estar alimentada per una bateria, ho estigui per una pila que utilitzi l'hidrogen com a combustible, aconseguint així una afectació mínima al medi ambient. Actualment no existeix cap mena de sistema que controli una pila de combustible ni tampoc existeix cap sistema que des d'un mòbil, pugui integrar el control tant de la pila de combustible com del motor de la bicicleta. Es tracta per tant, de realitzar una aplicació mòbil des d'on l'usuari pugui decidir la potència a la qual vol que treballi el motor en cada moment en funció de la seva necessitat, aconseguint d’aquesta manera augmentar l’eficiència i reduir el consum d'energia. Per altra banda, l’aplicació ha de controlar també l'estat de la pila de combustible, llegint constantment mitjançant sensors el valor de la temperatura i de la pressió i l’estat d’obertura i tancament de la vàlvula d'entrada d'hidrogen. Per tal d'aconseguir aquest control, en el cas de la comunicació s'utilitzarà una placa Arduino UNO connectada a un mòdul Bluetooth del tipus HC-05 que proporcionarà la comunicació de l'Arduino amb una aplicació mòbil per al sistema operatiu Android. En el cas del control de la velocitat del motor, caldrà l’ús d’una resistència i un MOSFET que actuarà com un interruptor controlat electrònicament i finalment, per controlar la pila d’hidrogen, caldrà llegir el valor del sensor integrat dins d’aquesta i afegir un sensor de pressió al sistema per, mitjançant un relé, poder obrir i tancar la vàlvula integrada també a la pila de combustible.
2 Abstract This Final Project shows the development required to control an electric bicycle powered by a fuel cell using an app. The aim of this project is to obtain an alternative means of transport method, just creating an electric bicycle that instead of being powered by a battery, is powered by a cell that uses hydrogen as fuel, thus achieving minimal impact on the environment. Nowadays there is no system that controls a fuel cell, nor is there any system that, using an app, can integrate the control of both, the fuel cell and the bicycle engine. Therefore, this project has been done with the objective of creating a mobile application from where the user can decide the power he wants the motor to work depending on his need, thus increasing efficiency and reducing energy consumption. On the other hand, the application also has to monitor the status of the fuel cell, constantly reading by means of sensors the value of temperature and pressure and the opening and closing status of the hydrogen supply valve. To achieve this control, in the case of communication, will be used an Arduino UNO board connected to a Bluetooth module of the HC-05 type that will provide the communication of the Arduino with a mobile application for the Android operating system. In the case of motor speed control, it will be necessary to use a resistor and a MOSFET, which will act as an electronically controlled switch and finally, to control the hydrogen battery, it will have to be read the value of the integrated sensor inside the cell and add a pressure sensor to the system for, by means of a relay, be able to open and close the valve also integrated in the fuel cell.
3 1. Índex 1. INTRODUCCIÓ 7 1.1 OBJECTE 7 1.2 ABAST 7 1.3 REQUERIMENTS 7 1.4 JUSTIFICACIÓ 7 2 REVISIÓ DE L’ESTAT DE L’ART 8 2.1 BICICLETA ELÈCTRICA 8 2.2 PILA DE COMBUSTIBLE 11 2.3 ARDUINO UNO 14 2.4 APLICACIONS MÒBILS 18 3 METODOLOGIA 19 3.1 SISTEMA A REGULAR 19 3.2 COMUNICACIÓ 21 3.3 ARDUINO UNO 22 3.3.1 Velocitat motor DC 22 3.3.2 Temperatura pila d’hidrogen 24 3.3.3 Pressió i vàlvula de la pila d’hidrogen 24 3.4 APLICACIÓ MÒBIL 25 4 PLANTEJAMENT I DECISIÓ SOBRE SOLUCIONS ALTERNATIVES 26 4.1 COMUNICACIÓ 26 4.2 APLICACIÓ MÒBIL 27 5 DESENVOLUPAMENT DE LES SOLUCIONS ESCOLLIDES 28 5.1 COMUNICACIÓ 28 5.2 CONTROL DES D’ARDUINO 32 5.2.1 Control velocitat motor 32 5.2.2 Control temperatura pila d’hidrogen 37 5.2.3 Control pressió i vàlvula d’hidrogen 41 5.3 APLICACIÓ MÒBIL 45 5.3.1 Disseny 45 5.3.2 Control velocitat motor 47 5.3.3 Lectura temperatura i pressió 51 6 RESULTATS 55 7 RESUM DEL PRESSUPOST I/O ESTUDI DE VIABILITAT ECONÒMICA 61 8 ANÀLISI I VALORACIÓ DE LES IMPLICACIONS AMBIENTALS I SOCIALS 62 9 CONCLUSIONS 62 10. REFERÈNCIES 64
4 2. Índex de taules TAULA 1 VALOR TÈCNIC PONDERAT DELS PROTOCOLS DE COMUNICACIÓ .................................................................................................. 27 TAULA 2 VALOR TÈCNIC PONDERAT DEL LLENGUATGE DE PROGRAMACIÓ.................................................................................................. 28 TAULA 3 PRESSUPOST DEL PROJECTE ............................................................................................................................................................... 61
5 3. Índex de figures FIGURA 1 OGDEN BOLTON, PATENT 1A BICICLETA ELÈCTRICA ........................................................................................................................ 8 FIGURA 2 OSEAS W. LIBBEY, BICICLETA ELÈCTRICA .......................................................................................................................................... 9 FIGURA 3 ESQUEMA FUNCIONAMENT D'UNA PILA DE COMBUSTIBLE ......................................................................................................... 12 FIGURA 4 PILA DE COMBUSTIBLE D'HIDROGEN .............................................................................................................................................. 13 FIGURA 5 ARDUINO UNO: PINOUTDIAGRAM............................................................................................................................................... 14 FIGURA 6 IDE ARDUINO AMB UN TROÇ D’SKETCH DE L'EXEMPLE TIMECHECK......................................................................................... 18 FIGURA 7 ESQUEMA PLANTA DE TREBALL A REGULAR ................................................................................................................................... 20 FIGURA 8 GRÀFIC VOLTATGE-INTENSITAT PILA DE COMBUSTIBLE.............................................................................................................. 21 FIGURA 9 DIAGRAMA TRANSISTOR MOSFET ........................................................................................................ 23 FIGURA 10 TRANSISTOR MOSFET ..................................................................................................................... 23 FIGURA 11 TRANSDUCTOR DE PRESSIÓ ........................................................................................................................................................... 24 FIGURA 12 VÀLVULA D'ENTRADA D'HIDROGEN ............................................................................................................................................. 25 FIGURA 13 MÒDUL BLUETOOTH HC-05 .............................................................................................................. 29 FIGURA 14 SIMULACIÓ ESQUEMA ELÈCTRIC: CONNEXIÓ MÒDUL BLUETOOTH HC-05 AMB ARDUINO ................................................ 29 FIGURA 15 ESQUEMA ELÈCTRIC REAL: CONNEXIÓ MÒDUL BLUETOOTH HC-05 AMB ARDUINO ........................................................... 30 FIGURA 16 CODI APLICACIÓ: CLASSE BLUETOOTHCONNECTION................................................................................................................. 31 FIGURA 17 DISSENY APLICACIÓ: BOTÓ CONNECT ......................................................................................................................................... 31 FIGURA 18 DISSENY APLICACIÓ: BOTÓ CONNECTED ..................................................................................................................................... 31 FIGURA 19 CODI APLICACIÓ: CONNEXIÓ BLUETOOTH .................................................................................................................................. 32 FIGURA 20 SIMULACIÓ ESQUEMA ELÈCTRIC: CONTROL VELOCITAT MOTOR AMB POTENCIÒMETRE ...................................................... 34 FIGURA 21 ESQUEMA ELÈCTRIC REAL: CONTROL VELOCITAT MOTOR AMB POTENCIÒMETRE ................................................................. 34 FIGURA 22 PROGRAMA ARDUINO: CONTROL VELOCITAT MOTOR AMB POTENCIÒMETRE ...................................................................... 35 FIGURA 23 SIMULACIÓ ESQUEMA ELÈCTRIC: CONTROL VELOCITAT MOTOR DEFINITIU ............................................................................ 35 FIGURA 24 ESQUEMA ELÈCTRIC REAL: CONTROL VELOCITAT MOTOR DEFINITU ........................................................................................ 36 FIGURA 25 PROGRAMA ARDUINO: CONTROL VELOCITAT MOTOR DEFINITIU ............................................................................................ 37 FIGURA 26 SIMULACIÓ ESQUEMA ELÈCTRIC: CONTROL TEMPERATURA TERMOPARELL ........................................................................... 38 FIGURA 27 ESQUEMA ELÈCTRIC REAL: CONTROL TEMPERATURA TERMOPARELL ...................................................................................... 38 FIGURA 28 PROGRAMA ARDUINO: CONTROL TEMPERATURA TERMOPARELL ........................................................................................... 39 FIGURA 29 SIMULACIÓ ESQUEMA ELÈCTRIC: LECTURA TEMPERATURA TERMORESISTÈNCIA ................................................................... 39 FIGURA 30 ESQUEMA ELÈCTRIC REAL: LECTURA TEMPERATURA TERMORESISTÈNCIA .............................................................................. 40 FIGURA 31 PROGRAMA ARDUINO: LECTURA TEMPERATURA TERMORESISTÈNCIA ................................................................................... 41 FIGURA 32 ESPECIFICACIONS TRANSDUCTOR DE PRESSIÓ ............................................................................................................................ 41 FIGURA 33 SIMULACIÓ ESQUEMA ELÈCTRIC: LECTURA PRESSIÓ .................................................................................................................. 42 FIGURA 34 ESQUEMA ELÈCTRIC REAL: LECTURA PRESSIÓ ............................................................................................................................. 42 FIGURA 35 PROGRAMA ARDUINO: CONTROL PRESSIÓ TANSDUCTOR ........................................................................................................ 43 FIGURA 36 SIMULACIÓ ESQUEMA ELÈCTRIC: LECTURA PRESSIÓ I CONTROL VÀLVULA D'ENTRADA D'HIDROGEN .................................. 44 FIGURA 37 PROGRAMA ARDUINO: CONTROL VÀLVULA HIDROGEN SEGONS LECTURA PRESSIÓ ............................................................. 45 FIGURA 38 CREACIÓ DISSENY APLICACIÓ MÒBIL ............................................................................................................................................ 46 FIGURA 39 DISSENY FINAL APLICACIÓ AMB “LINEARLAYOUTS” VISIBLES ................................................................................................... 47 FIGURA 40 CODI APLICACIÓ: DECLARACIÓ VARIABLES DEL CONTENT_MAIN.XML AL MAINACTIVITY.CS .............................................. 47 FIGURA 41 CODI APLICACIÓ: VELOCITAT MODE STOP ................................................................................................................................. 48 FIGURA 42 DISSENY APLICACIÓ: VELOCITAT MODE STOP ........................................................................................................................... 48 FIGURA 43 CODI APLICACIÓ: VELOCITAT MODE ECO ................................................................................................................................... 49 FIGURA 44 DISSENY APLICACIÓ: VELOCITAT MODE ECO ............................................................................................................................. 49 FIGURA 45 CODI APLICACIÓ: VELOCITAT MODE NORMAL .......................................................................................................................... 50 FIGURA 46 DISSENY APLICACIÓ: VELOCITAT MODE NORMAL ..................................................................................................................... 50 FIGURA 47 CODI APLICACIÓ: VELOCITAT MODE SPORT ............................................................................................................................... 51 FIGURA 48 DISSENY APLICACIÓ: VELOCITAT MODE SPORT ......................................................................................................................... 51 FIGURA 49 CODI APLICACIÓ: LECTURA CADENA ENVIADA DES D’ARDUINO .............................................................................................. 52 FIGURA 50 DISSENY APLICACIÓ: TEMPERATURA ÒPTIMA ............................................................................................................................ 53 FIGURA 51 DISSENY APLICACIÓ: TEMPERATURA CRÍTICA ............................................................................................................................. 53 FIGURA 52 DISSENY APLICACIÓ: VÀLVULA TANCADA .................................................................................................................................... 53 FIGURA 53 DISSENY APLICACIÓ: VÀLVULA OBERTA ....................................................................................................................................... 54
6 FIGURA 54 CODI APLICACIÓ: LECTURA VALOR TEMPERATURA I PRESSIÓ ................................................................................................... 54 FIGURA 55 CODI APLICACIÓ: VISUALITZACIÓ VALOR TEMPERATURA I PRESSIÓ ......................................................................................... 54 FIGURA 56 ESQUEMA ELÈCTRIC FINAL: CONTROL MOTOR BICICLETA ......................................................................................................... 55 FIGURA 57 ESQUEMA ELÈCTRIC FINAL: LECTURA TEMPERATURA I PRESSIÓ I CONTROL VÀLVULA D'HIDROGEN.................................... 56 FIGURA 58 DISSENY FINAL APLICACIÓ: TEMPERATURA ÒPTIMA, VÀLVULA TANCADA I VELOCITAT MODE STOP .................................. 57 FIGURA 59 DISSENY FINAL APLICACIÓ: TEMPERATURA ÒPTIMA, VÀLVULA OBERTA I VELOCITAT MODE ECO ....................................... 58 FIGURA 60 DISSENY FINAL APLICACIÓ: TEMPERATURA ÒPTIMA, VÀLVULA OBERTA I VELOCITAT MODE NORMAL ............................... 59 FIGURA 61 DISSENY FINAL APLICACIÓ: TEMPERATURA CRÍTICA, VÀLVULA TANCADA I VELOCITAT MODE SPORT ................................. 60
7 1. Introducció 1.1 Objecte Crear una aplicació de telèfon mòbil per tal de controlar els paràmetres bàsics d’una bicicleta elèctrica amb pila de combustible PEM d’hidrogen de 300 W. 1.2 Abast ● Estudi i desenvolupament del sistema electrònic pel control del motor. ● Estudi i desenvolupament del sistema electrònic pel control de les vàlvules d’entrada d’hidrogen. ● Estudi i desenvolupament de l’aplicació mòbil. ● Comunicació Bluetooth mòbil – Arduino. ● Integració del sistema electrònic a la bicicleta. ● Càlcul del pressupost final. 1.3 Requeriments ● Control de la velocitat del motor de 250 W de la bicicleta elèctrica amb control de pedaleig i limitació de velocitat ja integrada. ● Control de la temperatura de la pila. ● Control de la pressió de l’hidrogen a l’entrada de la pila. ● Control de l’obertura i el tancament de les vàlvules d’entrada d’hidrogen. ● Sistema amb gran fiabilitat i robustesa, s’ha de garantir el funcionament de la bicicleta. ● La instal·lació ha d’afectar el mínim possible a l’estètica de la bicicleta. ● Cost màxim del disseny, prototip i proves serà de 7000 € 1.4 Justificació La gran preocupació pel medi ambient i la urgent necessitat de canvi per mitigar l'efecte hivernacle, motiven la realització d'aquest projecte. La deterioració en la qualitat de l'aire a causa de la gran quantitat de vehicles que circulen cada dia, fa necessària tant la cerca de mètodes de transport alternatius com la de tipus de combustible. A més, cada cop és major la creació de zones verdes i carrils bici, que com a conseqüència augmenta el públic interessat en les bicicletes, especialment en les elèctriques, ja que requereixen menys esforç a l'hora de conduir-les. Amb aquest projecte es pretén per tant, oferir un mètode de transport amb una afectació mínima al medi ambient, utilitzant l'hidrogen com a combustible. Actualment no existeix cap mena de sistema que controli una pila de combustible on l'hidrogen s'obtingui amb un generador. Aquesta característica implica que s'hagi de controlar la pressió d'entrada de l'hidrogen a la pila per evitar que se superi la pressió que la pila pot suportar així com la temperatura per no exposar la pila a temperatures majors de les quals pot tolerar sense ser danyada. Per altra banda, tampoc no existeix cap sistema que des d'un mòbil, pugui integrar el control de la pressió i la temperatura així com la selecció de la quantitat de potència subministrada pel motor que l'usuari vol rebre d'ajuda en cada moment.
14 2.3 Arduino UNO Com es pot llegir a la pàgina oficial d’Arduino [12], Arduino és una plataforma de desenvolupament de hardware lliure basada en una placa electrònica amb un microcontrolador reprogramable i una sèrie de pins femella incorporats, dissenyada per facilitar l'ús de l'electrònica en projectes multidisciplinaris. L'Arduino UNO R3 SMD utilitza el microcontrolador ATmega328 en format SMD (dispositiu de muntatge superficial) pel maneig d’USB, això permet una transferència més ràpida i més memòria a més de no necessitar drivers per Linux o Mac. Té una longitud de 68,6 mm una amplada de 53,4 mm i un pes de 25 g. Figura 5 Arduino UNO: PinoutDiagram Font: Pàgina oficial d’Arduino A continuació, s’expliquen les característiques específiques de l’Arduino UNO [13]: Memòria: El microcontrolador ATmega328 té 32 Kbytes de memòria Flash, una memòria de baix consum i no volàtil que no perd la informació emmagatzemada inclús quan traiem tensió o apaguem el microcontrolador. S'utilitza per a emmagatzemar el codi del programa d'aquests 32 kB, 0,5 kB estan reservats per al bootloader (un frimware per permetre la ràpida descàrrega de programes als microcontroladors) o gestor d'arrencada.
15 A més compta amb 2 kB de SRAM, una memòria volàtil utilitzada per l'sketch des d'on crea i manipula les variables quan s'executa i 1 kB d'EEPROM, una memòria no volàtil que disposa el microcontrolador i que ens permet guardar dades per poder recuperar-les en cas de pèrdua d'alimentació del nostre dispositiu. Aquesta memòria pot ser llegida i escrita amb la llibreria EEPROM. Alimentació: Com es troba especificat en l’article [13], es recomana alimentar la placa en un rang d'entre 7 i 12 V, ja que tot i ser capaç de treballar amb un subministrament extern des de 6 fins a 20 V en el cas de ser alimentada amb menys de 7 V, el pin de 5 V ha de subministrar menys d'aquest voltatge i en el cas de trobar-se per sobre dels 12 V el regulador de voltatge es pot sobreescalfar. Per tant, el rang recomanable és entre 7 i 12 volts. Per alimentar la placa existeixen diverses opcions: - Aplicant un rang de 6 i 1 2 V entre el pin GND (o massa) i el pin Vin. - Aplicant un rang de 6 i 12 V a través de la clavilla Jack que l’Arduino UNO entre altres models disposa. - Alimentar mitjançant US: Aquest port té un fusible que protegeix la placa i evita que el consum de corrent sigui superior a 500 mA pel que el consum de la placa mes les càrregues connectades a aquesta no poden ser superiors a aquesta xifra. Com a pins d’alimentació trobem llavors: - Vin: podem alimentar la placa pel pin Vin entre 6 i 12 V que van directament al regulador de tensió. Aquest pin es pot utilitzar per alimentar Arduino amb piles o bateries i és molt important no alimentar mai de manera simultània per aquest pin i pel Jack. En cas de l’Arduino trobar-se alimentada pel Jack, entre Vin i GND s’obté una tensió de sortida igual a la introduïda pel Jack menys aproximadament 0.7 V. En aquest cas es recomana no connectar càrregues superiors a 1000 mA. - 5 V: Aquest pin també té doble funció, quan alimentem pel connector USB o el Jack, en aquest pin tindrem una tensió regulada de 5 V, però també podem introduir una tensió d'alimentació de 5 V a condició que es tracti d'una font regulada i estabilitzada i no es trobin alimentats de manera simultània el Jack o l'USB. - 3,3 V: Ens dóna 3,3 V de sortida generats pel regulador de tensió de la placa i un corrent màxim de 60 mA. - IOREF: Aquest és un pin que dóna la tensió de referència a la qual treballa la placa que en el cas d'Arduino UNO és de 5 V. Es tracta d'un protector configurat que llegeix el voltatge de IOREF i selecciona la font d'alimentació adequada o habilita convertidors de tensió en les sortides per a treballar amb els 5 V o 3,3 V. Serveix per assegurar compatibilitat amb les tensions de treball entre placa i un Shield o "escut" connectat sobre la placa. - GND: Pins de massa
16 Entrades i sortides: - Referència analògica (AREF): Gràcies a la instrucció analogReference() podem canviar el rang de les entrades analògiques per quan treballem amb sensors amb tensions més petites de 5 V i així aconseguir una lectura correcta dels pins d’entrada analògica, ja que en el cas de tenir un sensor que només arriba fins als 2,5 V l’Arduino estaria interpretant que el sensor es troba al 50% quan en realitat es trobaria al 100%. - E/S digitals de 0 a 13: aquests 14 pins poden ser utilitzats com entrades o com sortides configurant-los amb la funció pinMode() de la següent manera: pinMode(6,OUTPUT) en el cas del pin 6 ser una sortida i pinMode(6,INPUT) en cas de voler que sigui una entrada. Tots els pins tenen connectades unes resistències internes de 20kΩ desconnectades per defecte. En el cas dels pins configurats com a sortida, podem connectar només una càrrega que com a molt consumeixi 40mA i de voler connectar una càrrega major s’hauria d’intercalar un circuit d’electrònica de potència. - PWM: els pins 3,5,6,9,10 i 11 tenen tots el símbol ~ per indicar que poden ser utilitzats com a sortides PWM, és a dir modulades per amplada de banda. Bàsicament es tracta d'emular un senyal analògic tot i no ser-ho. Les sortides digitals només donen entre 0 i 5 V llavors el que es fa amb aquestes sortides és fer que el senyal es trobi a nivell alt un tant per cent del temps i a nivell baix l'altre tant per cent, produint així una tensió entremig de 0 i 5 V depenent dels percentatges i així emular un senyal analògic tot i no ser-ho. Això s'aconsegueix amb la instrucció analogWrite(pin,valor). - Entrades analògiques d'A0 a A5: Mentre que a les entrades digitals només tenim dos valors de 0 o 1 o de 0 V o 5 V, en el cas de les entrades analògiques tenim moltíssims valors entre mitges. Cadascuna d'aquestes entrades, mitjançant un convertidor analògic-digital converteix la tensió present en el pin que varia entre 0 i 5 V, i com a màxim la converteix en un valor binari de 10 bits oferint 1024 valors possibles. Cada increment del valor de l'entrada correspon a uns 5 V/1024 = 0,0048 V aproximadament on el 0 seria 0000000000b = 0 volts i 1023 seria 1111111111b = 5 volts. - Recepció (Rx) i transmissió (Tx): s'utilitzen per a la comunicació sèrie quan per exemple connectem un mòdul Bluetooth o un altre Arduino com a esclau. El Rx correspon al pin 0 i el Tx al pin 1 i s'utilitzen per rebre o transmetre dades en sèrie TTL. - SPI (Serial Peripheral Interface): Aquests pins s’utilitzen per a la comunicació sèrie amb perifèrics connectats i són els següents: o Pin 10SS slaveselect: selecció d’esclau. o Pin 11 MOSI masteroutslave in: mestre transmet i esclau rep. o Pin 12 MISO master in slaveout: mestre rep i esclau transmet. o Pin SCK signalclock: senyal rellotge. - Reset: Aquest pin és un connector del botó Reset, utilitzat per quan vols afegir un botó de reinicialitzi extern perquè no pots accedir al de la placa. Aquest pin reinicialitza el microcontrolador quan se li aplica un nivell baix (LOW).
17 Comunicació: Com es pot llegir a l’article [14], els ports sèrie són la manera principal de comunicar una placa Arduino amb un ordinador, una pàgina Web a través d’internet o, com en aquest cas, una aplicació mòbil a través de Bluetooth. Pràcticament totes les plaques d’Arduino disposen almenys d’una unitat UART com és en el cas de l’Arduino UNO, que disposa d’una unitat UART que opera a nivell TTL 0 V / 5 V pel que és directament compatible amb la connexió USB. Gràcies al xip ATMega16U2 per gestionar les comunicacions USB que utilitza els controladors USB COM estàndard, la placa no necessita cap controlador extern per tant, apareixerà a l'ordinador com un port COM virtual. A l’Arduino UNO els ports sèrie estan físicament units als pins digitals 0 (Rx) i 1 (Tx) de la placa per tant, mentre utilitzem els ports sèrie no podem utilitzar com a entrades o sortides digitals els pins associats amb el port sèrie en ús. Els leds Rx i Tx parpellejaran mentre hi hagi una transmissió de dades entre el xipATmega16U2 USB-to-Serial i el port USB de l'ordinador, però no ho faran quan hi hagi una transmissió sèrie pels pins 0 i 1. IDE Arduino: El IDE (Integrated Development Environment) d'Arduino, és un editor de text i compilat per programar i transferir el contingut de les instruccions a la placa Arduino en el seu llenguatge màquina. El llenguatge de programació utilitzat és Processing, però també és possible utilitzar altres llenguatges de programació i aplicacions populars d'Arduino, ja que es troba basat en C i suporta totes les funcions de l'estàndard C i algunes del C++. Aquest entorn de desenvolupament consta d'una eina que es diu Serial Monitor, una pantalla intermediària entre l'ordinador i Arduino que s'utilitza per imprimir les dades que es transfereixen entre els dos. Tota aquesta informació i comunicació es fa a través del port sèrie i des d'aquest Monitor Serial es pot teclejar qualsevol cosa afegint al codi la instrucció SerialRead() i llegir-la a la placa Arduino, o al revés, des de la placa escriure alguna cosa afegint la funció SerialPrint() per llegir-la des de l'ordinador. Per poder carregar el codi dels programes s'ha de connectar el port USB de la placa al port USB de l'ordinador mitjançant un cable USB tipus A-B. Una vegada connectat entrant a Eines - Port Sèrie, s'ha de comprovar que existeix un dispositiu connectat en COM*. També s'ha de comprovar que la Targeta o tipus de placa Arduino seleccionada és la correcta, en aquest cas seria l'Arduino UNO. - Programa Arduino o Sketch: El sketch és el programa que es crea i es carrega i consta d’una estructura molt senzilla:
18 Figura 6 IDE Arduino amb un troç d’Sketch de l'exemple TimeCheck Font: Exemple oficial d’Arduino Com podem observar a l’exemple de dalt, l’estructura que segueix el programa és sempre la mateixa i te l’estructura següent: 1. Introduir les biblioteques que s’utilitzaran. 2. Declarar i inicialitzar les variables del programa. 3. voidsetup(): assignació d’entrades i sortides i de totes aquelles funcions que volem que s’executin només una vegada a l’inici. 4. voidloop(): funció principal del programa on es troba el codi que s’executarà contínuament en bucle i que farà funcionar a l’Arduino. 2.4 Aplicacions mòbils Tal i com es troba definit a l’article [15], la paraula aplicació és una alternativa adequada en espanyol per a referir-se a app, un escurçament del terme anglès application, que s'utilitza per a al·ludir a una ‘mena de programa informàtic dissenyat com a eina que permet a l'usuari fer diversos treballs’. Aplicació es recull en el Diccionari de la llengua espanyola com a terme propi del llenguatge de la informàtica amb el significat de ‘programa preparat per a una utilització específica, com el pagament de nòmines, el tractament de textos, etc.’, accepció que encaixa perfectament amb el significat de application i app.
19 El blog [16], explica que les primeres aplicacions mòbils van començar a aparèixer aproximadament fa uns trenta anys, durant els anys 90 i es tractava d'aplicacions reduïdes al tipus: videojocs, calendaris i agendes. Cap a l'any 2008, amb el llançament de l'App Store d'Apple i la posterior, però quasi immediata inauguració de l'Android Market, canviat de nom l'any 2012 com a Google Play, va ser quan es va produir el vertader auge de les aplicacions mòbils. A causa de l'incessant creixement de l'ús dels dispositius mòbils, especialment els telèfons intel·ligents, la usabilitat de les aplicacions mòbils sembla ser la característica més rellevant, ja que les aplicacions fàcils d'usar augmenten la productivitat, redueixen el cost, i milloren la satisfacció de l'usuari. Perquè una aplicació sigui considerada de bona usabilitat cal que compleixi amb els següents requeriments: - Connectivitat: posseir una ràpida connexió a internet és fonamental, ja que garanteix un ràpid accés als continguts. - Capacitat limitada de processament: un dispositiu amb limitada capacitat resultarà en una sensació de lentitud. - Diferents resolucions de pantalla: qualitat de la informació multimèdia presentada en la pantalla. - Mètodes d'introducció de dades: els mètodes que s'utilitzen per a la inserció de dades en els dispositius mòbils són diferents dels que s'utilitzen en equips portàtils o ordinadors personals. Propietats de disseny com botons petits i etiquetes, sumades a característiques com la portabilitat, limiten l'eficàcia i eficiència de l'usuari al moment d'ingressar informació, redueix la velocitat d'entrada i augmenta errors. - Context mòbil: en fer ús d'aplicacions mòbils, l'usuari, a més de trobar-se en moviment, també pot interactuar amb altres persones, objectes i elements de l'entorn que poden distreure la seva atenció. Actualment l'ús d'aplicacions mòbils estan agafant una gran cabuda dins el món actual i cada cop són més les aplicacions desenvolupades per resoldre tota mena de situacions tant de la vida quotidiana com laboral. Entenem que en un futur pròxim, per no dir ja, aquest tipus d'eina acabarà tenint el control total de les gestions o activitats a desenvolupar pels usuaris. 3 Metodologia A continuació, s'indicaran quins són els procediments que es realitzaran a la bicicleta i es plantejaran els diferents possibles components i dispositius necessaris per a controlar-la, amb una breu explicació de quin és el funcionament de cadascun per posteriorment poder fer una comparativa i una selecció definitiva dels components i dispositius que s'utilitzaran. 3.1 Sistema a regular Inicialment, abans d’aprofundir en cada procediment, en aquest apartat s’explicarà de manera general quin és el sistema a regular per tal de poder tenir una primera idea del que aquest treball tracta.
20 Figura 7 Esquema planta de treball a regular L’esquema observat a dalt, mostra la planta sencera a regular on tots els controls es faran des d’Arduino i des de l’aplicació mòbil. Les funcions de l’aplicació mòbil seran les següents: - La visualització del valor de la temperatura La visualització del valor de la pressió - La selecció de la velocitat del motor En canvi, en el cas de l’Arduino: Es tindran com a entrades: - Sensor pressió - Sensor temperatura - Selecció de la velocitat motor rebuda via Bluetooth On les seves funcions seran: Enviar les següents lectures a l’aplicació mòbil via Bluetooth: - Valor de la pressió - Valor de la temperatura Control automàtic: - Control de la velocitat del motor en funció de la selecció prèvia de l’usuari enviada via Bluetooth - Control de la vàlvula d’entrada d’hidrogen en funció del valor llegit de la pressió
21 Al gràfic 7 es pot observar la corba de potència de la pila de combustible, on es veu la relació entre el voltatge i la intensitat. Com es pot observar treballa a 57 V en circuit obert a 0 A, i varia fins als 30 V amb un corrent màxim de gairebé 10 A. Figura 8 Gràfic Voltatge-Intensitat Pila de Combustible Font: Horizon H-300 Fuel Cell Stack El corrent de la pila pot arribar a ser de fins gairebé 10 A, i el motor incorporat a la bicicleta pot suportar un corrent màxim d’aproximadament 7 A. Degut a les variacions de tensió i per tant, del corrent de la pila de combustible, és necessari incorporar un circuit regulador de tensió a la sortida de la pila per assegurar que el motor es trobarà alimentat a 40V, càrrega a la que treballa, i que no haurà de suportar en cap cas un corrent major del que pot tolerar. 3.2 Comunicació El requeriment de què la bicicleta hagi de ser controlada mitjançant un telèfon mòbil obliga a buscar un bon protocol de comunicació per tal de poder connectar el control electrònic de l’Arduino amb l’aplicació del mòbil. Per fer possible la comunicació entre l’aplicació i el sistema, s’utilitzen diferents sistemes i protocols que marquen les regles de comunicació entre els diferents aparells intel·ligents i l’usuari. ● Protocols de comunicació: Un protocol de comunicació és un conjunt de regles i normes que han de presentar els missatges per poder ser intercanviats entre diferents equips. Un protocol descriu la sintaxi, la semàntica i la sincronització de la comunicació així com possibles mètodes de recuperació d'errors. A continuació es defineixen els protocols sense fils i cablejats més comuns per aquest tipus de comunicacions: USB On-The-Go (OTG): El connector del mòbil utilitzat per carregar el dispositiu, pot donar més joc si es té un suport OTG. Gràcies a aquest, podem connectar el mòbil amb altres dispositius i que aquest actuï com a host o amfitrió, connectat a una xarxa que proveeix i que utilitza serveis d'ella. D'aquesta manera, es poden connectar al telèfon teclats, memòries USB, disc durs i fins i tot mòdems, adquirint així aplicacions com per exemple enviar documents directament a la impressora o utilitzar un comandament cablejat per jugar
22 amb el telèfon mòbil. Té una gran velocitat, amb una taxa de transferència de fins a 20 Gbit/s (2500 MB/s) però el seu principal desavantatge apareix en la necessitat de cablejat per la instal·lació. Bluetooth: El Bluetooth és un sistema sense fils, apte per implementar petites xarxes d'àrea local de curt abast. Aquest possibilita la transmissió de veu i de dades entre diferents dispositius mitjançant un enllaç per radiofreqüència que actualment opera en una freqüència de radio de 2,4 a 2,48 GHz i permet una commutació síncrona i asíncrona. Un canal asíncron pot transmetre com a molt 721 kbit/s en una direcció i 56 kbit/s en la direcció oposada. No obstant això, una connexió síncrona pot suportar fins a 432,6 kbit/s en totes dues direccions si l'enllaç és simètric. Bluetooth té l'enorme avantatge d'estar integrat de fàbrica en la majoria de dispositius. Portàtils, Tauletes, i Telèfons intel·ligents porten integrat Bluetooth. A més, el seu ús és independent del sistema operatiu (Windows, Linux, Mac o Android). Gràcies a aquest tipus de comunicació es poden controlar edificis i indústries intel·ligents, tenint el control de les configuracions, dades i incidències des d'una tauleta tàctil o telèfon intel·ligent. Wifi: La xarxa wifi es troba present en la vida quotidiana, per tant és una opció molt còmoda a tenir en compte. És de fàcil configuració, però té un inconvenient important, l'amplada de banda. Constantment hi ha connectats mòbils, ordinadors i tauletes, fet que augmentarà dràsticament la latència dels dispositius intel·ligents i a més, genera un alt consum d'energia. En ser una xarxa sense fils, ofereix una comoditat molt elevada, però la poca seguretat i la menor velocitat per culpa de les interferències o possibles pèrdues de senyal del mateix entorn fan que potser no sigui la millor opció. 3.3 Arduino UNO Per poder automatitzar les diferents accions i sistemes de la bicicleta fan falta bàsicament tres elements: - Sensor: és l'element que proporciona informació de l'ambient al controlador. És capaç de detectar magnituds físiques o químiques, anomenades variables d'instrumentació, i transformar-les en variables elèctriques. - Controlador: és qui rep la informació dels sensors, la processa i després genera el senyal requerit per sol·licitar que l'etapa de sortida s'implementi de manera òptima. En aquest cas en concret, el controlador rebrà informació tant des dels sensors com des de l'aplicació mòbil, ja que l'usuari serà també qui sol·liciti certes instruccions a la unitat de control per tal de satisfer les seves necessitats. - Actuador: és qui influeix directament en el senyal de sortida de l'automatisme, modificant la seva magnitud segons les instruccions que rep de la unitat de control. És per aquesta raó que s'ha decidit treballar amb una Arduino UNO, una placa amb un microcontrolador, dissenyada per facilitar l'ús de l'electrònica. 3.3.1 Velocitat motor DC El control de la velocitat del motor és una de les principals funcions que ha de complir aquesta bicicleta per tal de ser automatitzada i controlada, ja que incrementarà el confort de l'usuari i l'estalvi de potència i per tant, l’estalvi d'energia del motor. Per tal de poder regular la velocitat del motor en funció de què demani l'usuari, s'ha decidit treballar amb els components dels que ja es disposava:
23 - Transistor MOSFET IRF530N: un transistor és un dispositiu que usa el camp elèctric per controlar la conductivitat d'un canal que transporta un sol tipus de portador de càrrega, per la qual cosa també sol ser conegut com a transistor unipolar. Actuen normalment com a amplificador o com a interruptor controlat elèctricament i presenten una gran varietat d'integrats, per la qual cosa no és possible distingir a simple vista les característiques d'un transistor, havent de consultar el seu Datasheet per a saber les seves característiques. Un MOSFET controla el pas del corrent entre una entrada o terminal anomenat font (source) i una sortida o terminal anomenat drenador (drain), mitjançant l'aplicació d'una tensió (amb un valor mínim anomenada tensió llindar) en el terminal anomenat porta (gate). Per tant, es tracta d'un interruptor controlat per tensió amb el qual es pot generar un senyal PWM i tenint en compte que la velocitat mecànica d'un motor de corrent continu és directament proporcional al voltatge terminal, modificant l'amplada de banda del senyal amb Arduino es pot controlar la potència del motor. El MOSFET IRF530N s’ajusta a les condicions del circuit que s’implementarà per controlar la velocitat del motor de 36 - 40 V i 250 W de potència, capaç de suportar els 6,94 A de corrent màxim que tindrà el motor. Figura 9 Diagrama transistor MOSFET Font: IRF530N Datasheet Figura 10 Transistor MOSFET Font: IRF530N Datasheet
30 Figura 15 Esquema elèctric real: Connexió mòdul Bluetooth HC-05 amb Arduino Com es pot observar a l’esquema elèctric, utilitzar el mòdul de Bluetooth requereix l'ús del port seriï de la nostra placa Arduino. Per tant, mentre usem el mòdul de Bluetooth no podrem usar el port seriï de la placa Arduino UNO. És molt important tenir clar que mentre s’estigui carregant un nou programa a la placa, s’ha de desconnectar o bé el mòdul Bluetooth o bé els cables connectats als pins Rx i Tx de l’Arduino, atès que la programació es realitza a través del port sèrie. La connexió és senzilla, primer alimentar VCC entre 3,6 i 6 V i el GND. Finalment connectar el TXD (pin de transmissió) i RXD (pin de recepció) als oposats de la placa Arduino (cada TXD a un RXD). Visual Studio: Les funcions necessàries per connectar l’aplicació mòbil al mòdul Bluetooth s’han aconseguit utilitzant una comunicació de la llibreria andoird.bluetooth. Principalment s’ha configurat manualment una direcció MAC i un nom de Bluetooth per identificar-lo i que es connecti automàticament i a través de les llibreries s’han anat utilitzant els mètodes que corresponen al framework utilitzat per enviar i rebre dades.
31 Figura 16 Codi aplicació: Classe BluetoothConnection Per connectar l’aplicació amb el Bluetooth el que s’ha fet és dissenyar un botó nomenat ‘Connect’ que en ser polsat envia els processos d’aparellament entre els dos Bluetooth que es produeix perquè s’obre una comunicació per sockets i un cop aparellats, el botó canvia d’aspecte a ‘Connected’. Figura 17 Disseny aplicació: Botó Connect Figura 18 Disseny aplicació: Botó Connected
32 Figura 19 Codi aplicació: Connexió Bluetooth 5.2 Control des d’Arduino L'Arduino rebrà tots els valors de les entrades i enviarà tots els valors de les sortides pel Serial, això implica que a escala de codi tots els controls no hagin de sofrir cap mena de canvi en funció de si aquestes entrades o sortides són escrites o rebudes directament des del Serial de l'ordinador o si són enviades des d'un altre dispositiu via Bluetooth, ja que tots els codis fan referència al que es rep o es vol enviar pel Serial sense importar la via de comunicació que l'Arduino està utilitzant. 5.2.1 Control velocitat motor En el cas d’aquesta bicicleta, es tracta d’un sistema amb motor incorporat a la roda de darrere i connectat a una bateria, que serà substituïda per la pila de combustible, situada dalt de la roda i per tant, per controlar la potència del motor cal introduir entre la bateria i el motor un circuit controlat per Arduino des d’on s’enviarà un senyal PWM diferent en funció del que l’usuari demani. Per generar el circuit necessari i poder crear un senyal PWM des del programa o sketch de l’Arduino que, posteriorment es connectarà amb el motor, calen els següents components: MOSFET: aquest element és fonamental per generar el senyal PWM, que en funció de la tensió llindar rebuda per l’Arduino a un pin marcat amb el signe ‘~’ i per tant capaç de generar aquest tipus de senyal, deixa passar o no el corrent tancant o obrint el circuit. Quan el MOSFET tanqui el circuit, el motor funcionarà i quan l’obri, deixarà d’estar alimentat i com a conseqüència de rebre potència. Modificant la freqüència amb la qual es deixa passar o no el corrent, es modificarà l’amplada de banda d’aquest senyal, i això es farà mitjançant la funció
33 analogWrite(), que enviarà el tipus de senyal PWM i per tant, és qui modificarà la velocitat del motor. Com ja s’ha esmentat anteriorment, s’utilitzarà un MOSFET IRF530N. Resistència: La càrrega màxima suportada per un pin és de 40 mA tot i que es recomana no superar els 20 mA i a l’altre costat de MOSFET es troba connectat el motor treballant a uns 6,25 A, cosa que cremaria i espatllaria la placa. És per aquesta raó que es necessita connectar una resistència a la porta o gate del MOSFET i així protegir l’Arduino de cremar-se. En el cas d’aquest circuit, serà suficient amb introduir una resistència d’1 kΩ entre la porta del MOSFET i el pin de l’Arduino. Alimentació (Pila d’Hidrogen o bateria): El motor d'aquesta bicicleta té una potència màxima de 25 0 W quan es troba treballant a entre 40 i 36 V. Seguint la llei d'ohm sabem que la Potència [P] = Voltatge [V] · Intensitat [I] i per tant trobem que aquest motor suporta un corrent màxim d'aproximadament 6,95 A. La pila d'hidrogen és capaç de proporcionar aproximadament fins a 36 V de tensió, que serien suficients per alimentar el motor, però té una potència de 30 0 W i per tant treballa a una càrrega de 8,33 A, major de la qual el motor pot suportar. Tenint això en compte, la millor solució serà connectar un convertidor del tipus Boost entre la pila d'hidrogen i el motor per tal d'augmentar la tensió d'entrada de 36 V fins a 44 V i així aconseguir reduir el corrent a uns 6, 8 A aproximadament i protegir el motor. En el cas de no aconseguir un correcte funcionament de la pila o el subministrament de potència suficient, sempre existeix la possibilitat de connectar el motor directament a una bateria de 40 V. Inicialment, es va implementar un circuit amb un sketch més senzill, on el control de la velocitat es feia a través d'un potenciòmetre i no des de l'aplicació del mòbil per tal de comprovar únicament, el funcionament del motor i que la velocitat del motor augmentava o disminuïa correctament en funció del valor que l'Arduino rebia. El circuit tenia el següent aspecte:
34 Figura 20 Simulació esquema elèctric: Control velocitat motor amb potenciòmetre Figura 21 Esquema elèctric real: Control velocitat motor amb potenciòmetre
35 A la figura número 21 s’observa com en el cas del control de la velocitat del motor amb potenciòmetre es va col·locar una resistència substituint el motor perquè encara no es disposava d’ell. Figura 22 Programa Arduino: Control velocitat motor amb potenciòmetre Un cop comprovat el correcte funcionament amb un potenciòmetre i ja amb més nocions de programació amb Arduino, es va procedir a realitzar un circuit sense el potenciòmetre on el senyal PWM que enviava la digitalOutput(motor,6) depenia del valor que s’introduís a través del monitor serial d’Arduino. Figura 23 Simulació esquema elèctric: Control velocitat motor definitiu
36 Figura 24 Esquema elèctric real: Control velocitat motor definitu Per tal que l’usuari pogués escollir el tipus d’ajuda que vol rebre del motor, es van establir quatre mètodes de treball: Mode Stop: per condicions inicials, on sense pedaleig el motor es troba parat. Mode Eco: motor treballant a un terç de la seva potència màxima. Mode Normal: motor treballant a dos terços de la seva potència màxima Mode Sport: motor treballant al seu màxim rendiment. Aquests modes de treball, seran llegits pel monitor serial de l’Arduino que enviarà al motor el senyal PWM amb l’amplada de banda que proporcioni la potència corresponent a les característiques del mode de velocitat seleccionat en cada moment. El programa creat per poder controlar aquest senyal a través del monitor serial és el mateix independentment de si aquest rep el valor de la variable received directament escrivint des del serial de l’ordinador o si el rep de l’aplicació mòbil segons el que l’usuari demani comunicant-se amb el serial a través del mòdul Bluetooth.
37 Figura 25 Programa Arduino: control velocitat motor definitiu Primer de tot es va provar tot el sistema enviant el valor de la variable received directament des del monitor serial per confirmar que el programa funcionava correctament i que el motor responia com s’esperava i finalment es va provar d’enviar el tipus de variable desitjada directament des del telèfon mòbil connectat via Bluetooth amb l’Arduino, però com en aquest cas és indiferent des d’on sigui enviat el senyal cap al serial, el funcionament de l’aplicació mòbil per aquest control s’explicarà més tard. 5.2.2 Control temperatura pila d’hidrogen Com ja s'ha esmentat en diverses ocasions al llarg del treball, la zona on volem controlar la temperatura es troba dins la pila d'hidrogen, concretament a la zona dels ventiladors, que disposa d'un sensor de temperatura ja integrat. Es tracta d'un sensor de temperatura del tipus termoresistència on la relació entre la resistència i la temperatura és de ±3.8 °C/1 Ω i per tant, cal llegir el valor de la resistència mesurada entre els dos pins connectats del sensor de temperatura cap a la controladora de la pila i finalment, amb el factor de conversió, convertir els ohms (Ω) en graus (°C). Per poder llegir el valor de la termoresistència era necessari primer soldar dos cables als dos pins de la pila corresponents a la lectura del sensor per tal de poder connectar l’Arduino entre els cables que sortien dels ventiladors i anaven cap a la controladora de la pila. Per aquesta raó es va decidir començar provant de llegir la temperatura amb un termistor d’Arduino.
38 A continuació s’observa l’esquema elèctric que es va dur a terme: Figura 26 Simulació esquema elèctric: Control temperatura termoparell Figura 27 Esquema elèctric real: Control temperatura termoparell El termistor amb el qual es va treballar a les primeres proves va ser el LM35, un termoparell que dóna un valor de temperatura en funció de la caiguda de tensió que llegeix entre els seus dos extrems. La seva sortida és lineal i cada grau Celsius [°C] equival a 10 mv. L'sketch d'Arduino necessari per poder convertir la lectura del sensor en graus Celsius és el següent:
39 Figura 28 Programa Arduino: Control temperatura termoparell Un cop entès millor el funcionament dels diferents tipus de sensors de temperatura, es va prosseguir a fer el control del termistor integrat a la pila d’hidrogen. En aquest cas es tracta d’una termoresistència i no d’un termoparell, fet que va provocar que tant l’esquema elèctric com el programa d’Arduino sofrissin diversos canvis, ja que en el cas dels termoparells tenen 3 pins, el positiu i el negatiu i un tercer que va connectat a una entrada analògica on ens indica directament la tensió entre els seus extrems. En canvi, en el cas de les termoresistències, només consten de dos pins, i és el valor de la resistència qui és directament proporcional a la temperatura en comptes de la tensió. Per aquesta raó, és necessari utilitzar un divisor de tensió per poder calcular el valor de la resistència en tot moment gràcies a la lectura de la caiguda de tensió entre els dos pins. A continuació podem observar el divisor de tensió implementat amb l’Arduino: Figura 29 Simulació esquema elèctric: Lectura temperatura termoresistència En l’esquema elèctric de dalt, observem el divisor de tensió, on la resistència connectada entre els pin Vin i el pin d’entrada analògica A0, és una resistència d’un valor d’ 1 kΩ i la segona resistència, connectada entre la resistència d’1 kΩ i el GND es troba substituint on anirien connectats els pins #4 i #8 de la pila d’hidrogen corresponents al sensor de temperatura.
46 Figura 38 Creació disseny aplicació mòbil De la mateixa manera en la qual s'ha arrossegat el botó a la imatge de dalt, s'han anat arrossegant totes i cadascuna de les files i columnes, així com tots els textos, botons i imatges. El disseny de les aplicacions programades amb Visual Studio es troba organitzat en columnes i files, també conegudes com LinearLayout (Horitzontal) o LinearLayout (Vertical) dins d'altres columnes i files, on es col·loquen aquells textos, botons, etc. amb els que es vol treballar, i és per això que s'obté un disseny final amb el següent aspecte:
47 Figura 39 Disseny final aplicació amb “LinearLayouts” visibles Finalment per acabar amb el que seria únicament la part estètica o el disseny, a la finestra nomenada MainActivity.cs, que és on es desenvoluparan totes les funcions i accions de l’aplicació, s’han de declarar totes aquelles variables declarades prèviament al content_main.xml amb les que necessitarem treballar al llarg del programa per implementar les diferents accions o funcions. Figura 40 Codi aplicació: Declaració variables del content_main.xml al MainActivity.cs 5.3.2 Control velocitat motor Un cop finalitzat el disseny de l’aplicació i declarats tots els elements necessaris a la finestra principal, es procedeix a fer el control del tipus de velocitat del motor. Per tal de poder dur a terme aquest tipus de control, com ja s’ha esmentat abans per explicar el funcionament del control de la velocitat des d’Arduino, s’han declarat 4 mètodes de treball del motor perquè l’usuari pugui escollir de manera pràctica i visual quanta ajuda vol rebre del motor que, a continuació, s’explicaran d’un en un.
48 • Mode Stop Aquesta opció de treball es mostrarà únicament a l’inici, perquè quan l’usuari es trobi parat, encenent l’aplicació i connectant-se al Bluetooth, el motor es trobi inicialment parat. Per poder sortir del Mode Stop és necessari seleccionar un dels altres 3 tipus de mode de treball per indicar que es vol començar a pedalejar i per tant, a rebre ajuda del motor. Com es tracta d’un estat únicament inicial a nivell de codi és molt senzill, només cal declarar la imatge del velocímetre parat com a la imatge inicial dins la finestra content_main.xml. Figura 41 Codi aplicació: Velocitat Mode Stop Figura 42 Disseny aplicació: Velocitat Mode Stop • Mode Eco El mode Eco o Economic que correspon al motor treballant a un terç de la seva potència màxima, funciona de la següent manera des del punt de vista de l’aplicació mòbil:
49 Figura 43 Codi aplicació: Velocitat Mode Eco La variable BtonEco, correspon a la imatge amb la paraula “ECO” escrita en color verd que, com diu al codi, en ser polsada, enviarà la lletra ‘e’ cap al Serial i un cop Arduino la rebi, li enviarà al motor la potència corresponent de la manera en la que s’ha explicat anteriorment a l’apartat del control des d’Arduino. Per altra banda, quan aquesta imatge del tipus botó, sigui polsada, canviarà també la imatge del Layout, ImgVelocidad que hi hagi en aquell moment per la del mode Eco. Figura 44 Disseny aplicació: Velocitat Mode Eco • Mode Normal El mode Normal, que correspon al motor treballant a dos terços de la seva potència màxima, funciona de la mateixa manera que el Mode Eco des del punt de vista de l’aplicació mòbil:
50 Figura 45 Codi aplicació: Velocitat Mode Normal La variable BtonNormal és la que correspon a la imatge amb la paraula “NORMAL” escrita en color blau cel que, com veiem al codi, funciona exactament igual que la variable BtonEco amb l’unica diferència que en ser polsada, enviarà la lletra ‘n’ en comptes de la ‘e’ perquè l’Arduino enviï al motor la potència corresponent a dos terços de la màxima en comptes d’un terç. Per altra banda, quan aquesta imatge del tipus botó, sigui polsada, canviarà també la imatge del Layout, ImgVelocidad que hi hagi en aquell moment per la del mode Normal. Figura 46 Disseny aplicació: Velocitat Mode Normal • Mode Sport El mode Sport és el que correspon al motor treballant a la seva màxima potència i funciona de la mateixa manera que el Mode Eco i el Mode Normal des del punt de vista de l’aplicació mòbil:
51 Figura 47 Codi aplicació: Velocitat Mode Sport La variable BtonSport és la que correspon a la imatge amb la paraula “SPORT” escrita en color blau elèctric que funciona exactament igual que les variable BtonEco i BtonSport amb l’única diferència que en ser polsada, enviarà la lletra ‘s’ perquè l’Arduino enviï al motor la potència màxima. Per altra banda, quan aquesta imatge del tipus botó, sigui polsada, canviarà també la imatge del Layout, ImgVelocidad que hi hagi en aquell moment per la del mode Sport. Figura 48 Disseny aplicació: Velocitat Mode Sport 5.3.3 Lectura temperatura i pressió El control de la temperatura i de la pressió és pràcticament igual l'un de l'altre, però completament diferent amb respecte els tipus de controls que hem vist fins ara, ja que en comptes de tractar-se d'una instrucció que s'envia des de l'aplicació cap a Arduino perquè aquesta la processi i actuï en conseqüència, es tracta d'accions declarades en funció del que l’aplicació rep de l'Arduino. D'altra banda, fins ara s'ha estat treballant amb caràcters individuals com eren la 'e', la 'n' i la 's', però en el cas de la lectura de la temperatura i la pressió, es tracta d'una cadena de diversos caràcters i això provoca que la cadena rebuda pel Visual Studio s'hagi de separar i convertir perquè sigui comprensible. Primer de tot, creem un fil que verifiqui si està arribant alguna dada per part de l'Arduino i guardem la lectura a un buffer declarat prèviament per després poder declarar el nombre de bytes entrants i tenir un control de la cadena que estem rebent.
52 Un cop verificat que el valor dels bytes és major de zero i que per tant contenen informació, es converteix el valor de la informació rebuda a string tal com podem observar en el tros de codi següent: Figura 49 Codi aplicació: Lectura Cadena enviada des d’Arduino Un cop convertit el valor de la informació a string, ja es pot començar a desglossar la cadena rebuda, però primer de tot, s'ha de tenir clar quin és el tipus de cadena que s'envia des de l'Arduino i que és el que el Visual llegeix per tal de poder manipular-la. Després de llegir reiterades vegades la cadena que llegia el visual, es va veure que els valors de la pressió i la temperatura s'enviaven desfasats i que per tant la cadena no sempre tenia el mateix aspecte, és per això que es va modificar la cadena a enviar des de l'Arduino de manera que quedés T:X,S:Y,} on X és el valor de la temperatura i Y el valor de la pressió, ambdós llegits pels sensors connectats a l'Arduino. D'aquesta manera es pot tenir un control total de la cadena utilitzant com a condició inicial que si la cadena rebuda no conté el caràcter '}' llavors ha de seguir rebent noves cadenes fins a trobar-ne una que sí que contingui el caràcter '}', això quasi que assegura que la cadena estigui sencera. Un cop rebuda la suposada cadena sencera, abans de desglossar-la, es comprova que aquesta cadena contingui els caràcters 'T', 'S' i '}' per llavors tenir la certesa total de què la cadena que entri dins la funció per ser desglossada estigui realment sencera. La resta del procediment és més senzill, es tracta de separar la cadena en tantes parts com comes (‘,’) hi hagi per llavors obtenir el 1r string que serà ‘T:X’ i el 2n string que serà ‘P:Y’ i per últim estaria com a 3er el ‘}’ però aquest només s’utilitza a l’inici per assegurar que la cadena es troba completa. Es comença amb el 1r string, eliminant tots els caràcters que no són la X, que és el número de la temperatura, i s’assigna a la variable que el mostrarà per pantalla i per últim, es crea una funció on s’indica que si el valor de la temperatura llegit supera el valor màxim permès per la pila, la imatge de la temperatura òptima visualitzada inicialment ha de ser modificada per alertar que la pila es troba en condicions crítiques.
53 Figura 50 Disseny aplicació: Temperatura òptima Figura 51 Disseny aplicació: Temperatura crítica Per últim, amb el 2n string, s’eliminen també tots els caràcters que no són la Y, s’assigna a la variable que la mostrarà per pantalla i per finalitzar es crea una funció perquè quan el valor de la pressió es trobi dins del rang en el qual la vàlvula ha de permetre l’entrada de l’hidrogen llavors canviï la visualització de la imatge de la vàlvula tancada i indiqui que la vàlvula es troba oberta. Figura 52 Disseny aplicació: Vàlvula tancada
54 Figura 53 Disseny aplicació: Vàlvula oberta Figura 54 Codi aplicació: Lectura valor temperatura i pressió Figura 55 Codi aplicació: Visualització valor temperatura i pressió
55 6 Resultats Fins ara s’han explicat els diferents procediments necessaris per poder desenvolupar cada tipus de control de manera independent en el cas tant d’Arduino com de l’aplicació mòbil. Tot aquest procediment ha sigut per finalment, poder integrar tot en un mateix sistema que funcioni controlant alhora tots els diferents sistemes de control. Arduino: En el cas de l’Arduino es van anar sincronitzant els programes mica en mica per en cas d’error poder saber aproximadament d’on podia venir. Primer de tot es va provar únicament que les lectures del sensor de pressió i de temperatura funcionessin bé i de manera síncrona. Un cop això estava controlat, es va procedir a incorporar el control de l’obertura de la vàlvula d’hidrogen i finalment, el control de la velocitat del motor. Figura 56 Esquema elèctric final: Control motor bicicleta
62 En aquest pressupost s’ha tingut en compte la despesa necessària per dur a terme l'estudi i el pressupost necessari per aplicar les solucions presentades. 8 Anàlisi i valoració de les implicacions ambientals i socials Aquest projecte pretén oferir un mètode de transport amb una afectació mínima al medi ambient, oferint el control d’una bicicleta elèctrica des d’una aplicació mòbil que en comptes d’estar alimentada per una bateria convencional, utilitza l’hidrogen com a combustible. Mitjançant el control de la potència del motor de la bicicleta en funció de les necessitats de l’usuari segons el moment, s’aconsegueix un estalvi de potència i per tant, estalviar energia del motor. A més, el fet que aquesta bicicleta es trobi alimentada per una pila de combustible exempta de qualsevol procés tèrmic o mecànic intermedi, fa que s’aconsegueixi una eficiència major amb un mínim impacte ambiental, ja que atès que el procés no implica la combustió dels reactius, les emissions contaminants són mínimes. Utilitzar l’hidrogen pur com a combustible, aconsegueix emetre només aigua i calor com a subproducte, evitant que es produeixin gasos d'efecte d'hivernacle o que s’emetin cap dels contaminants de l'aire que creen problemes de salut. La bicicleta és el mètode ideal de transport perquè a més de contribuir a la millora de la qualitat de l’aire, genera pocs residus en comparació amb altres vehicles convencionals com podria ser un cotxe. A més, contribueix en la demanda de crear espais verds i ciutats més sostenibles. 9 Conclusions Com s'ha pogut veure al llarg de tot el treball, es pot afirmar amb total certesa que l’objectiu principal del projecte que era crear una aplicació de telèfon mòbil per tal de controlar els paràmetres bàsics d’una bicicleta elèctrica amb pila de combustible PEM d’hidrogen s'ha complert amb èxit, a més de tots els requeriments establerts des d’un inici. S'ha aconseguit controlar tant la velocitat del motor, com la temperatura, la pressió i l'obertura i el tancament de la vàlvula d'entrada de l'hidrogen de la pila de combustible que eren els objectius principals a complir. Per altra banda, s'ha aconseguit també afectar el mínim possible a l'estètica de la bicicleta, ja que tot el sistema electrònic es troba connectat en una mateixa protoboard que anirà col·locada juntament amb la pila d'hidrogen que es trobarà substituint on anava col·locada anteriorment la bateria de la bici i per tant, els cables connectats al motor continuaran connectats en la mateixa ubicació que abans, a la part posterior de la bicicleta. Finalment, com a últim objectiu es demanava que el cost màxim del disseny, el prototip i les proves no fos superior a 7000 € , objectiu que s'ha complert també, ja que el pressupost ha sortit a un cost total de 6.422,42 € , un preu inferior al límit establert. Tot aquest projecte s'ha dut a terme amb molt esforç, ja que malgrat conèixer el llenguatge C++, s'han hagut d'obtenir diversos coneixements de programació tant en Arduino com en Android, duts a terme mitjançant un profund autoaprenentatge amb l'ajuda de fòrums o webs especialitzades. En tot aquest desenvolupament s'han hagut d'aprendre conceptes totalment nous, o adaptacions de llibreries per a les necessitats del projecte, la qual cosa ha suposat un repte, ja que al llarg de la carrera no hi ha hagut aquest autoaprenentatge. El desenvolupament d'aquest projecte m'ha ajudat a consolidar molts dels coneixements adquirits al grau d'Enginyeria Electrònica Industrial i Automàtica, aplicant tota mena de coneixements en electrònica per crear els circuits necessaris per controlar els diferents
63 elements i augmentant encara més els meus coneixements, sobretot en l'àmbit de la programació. Aquest producte es pot continuar en un futur dedicant-li més hores i una mica més de pressupost sobretot en millorar la qualitat d'algun dels materials, a més es podrien millorar els següents aspectes: • Afegir mapes amb diferents propostes de rutes a fer amb la bicicleta segons la ubicació de l'usuari. • Afegir un accés directe a l'empresa de manteniment i reparacions de la bicicleta en cas de necessitat. • Afegir un sensor de velocitat per tal de l'usuari poder visualitzar-la des de l'aplicació i saber en tot moment la velocitat a la qual es troba. Per concloure, cal afegir que en cas de voler llençar el producte al mercat seria necessari fer primer un pla de màrqueting amb un segon prototip per veure la viabilitat econòmica.
64 10. Referències [1] “US552271A - Electrical bicycle - Google Patents.” https://patents.google.com/patent/US552271A/en (accessed Mar. 01, 2021). [2] Bolton, “Electrical bicycle,” Dec. 1895. [3] “US596272A - Electric bicycle - Google Patents.” https://patents.google.com/patent/US596272A/en (accessed Mar. 01, 2021). [4] H. W. Libbey, “UNITED STATES PATENT OFFICE,” Dec. 1897. [5] “Historia de la bicicleta eléctrica ¿Quien invento la bicicleta eléctrica? - EsHoraDeCambiarLaHistoria.es.” https://eshoradecambiarlahistoria.es/historia-de- la-bicicleta-electrica-quien-invento-la-bicicleta-electrica/ (accessed Jun. 20, 2021). [6] “Bicicletas Eléctricas- Como Elegir el Modelo Adecuado 2018-2019.” https://www.bicicletaselectricas.info/ (accessed Jun. 20, 2021). [7] “Bicicleta eléctrica, pedelec o ebike, ¿conoces la diferencia? - Electrobicis.” https://www.electrobicis.com/noticias/bicicleta-electrica-pedelec-ebike-conoces-la- diferencia/ (accessed Feb. 28, 2021). [8] “EUR-Lex - 32002L0024 - ES,” D. Of. n° L 124 09/05/2002 p. 0001 - 0044; [9] “EUR-Lex - 32002L0024 - ES.” https://eurlex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002L0024:ES:HTML (accessed Mar. 22, 2021). [10] “Freno regenerativo La bicicleta eléctrica que se carga por sí misma ¿Realidad o ficción? - Bicicletas Eléctricas.” https://www.bikelec.es/blog/la-bicicleta-electrica- que-se-carga-por-si-misma-realidad-o-ficcion/ (accessed Jun. 20, 2021). [11] “Pilas de Combustible | National Geographic.” https://www.nationalgeographic.es/ciencia/pilas-de-combustible (accessed Mar. 22, 2021). [12] “¿Qué es Arduino? | Arduino.cl - Compra tu Arduino en Línea.” https://arduino.cl/quees-arduino/ (accessed Feb. 24, 2021). [13] “Pines y conectores de Arduino UNO. - Pasión electrónica.” https://pasionelectronica.com/pines-y-conectores-de-arduino-uno/ (accessed Apr. 10, 2021). [14] “Comunicación de Arduino con puerto serie.” https://www.luisllamas.es/arduinopuerto-serie/ (accessed Feb. 26, 2021). [15] “«aplicación», alternativa a «app» | Fundéu.” https://www.fundeu.es/recomendacion/aplicacion-alternativa-a-app/ (accessed Mar. 09, 2021). [16] “Cuál fue la primera aplicación móvil de la historia | Blog Comandia.” https://www.correosecommerce.com/blog/historia-aplicaciones-moviles/ (accessed Mar. 08, 2021).