Problemes

Problemes tècnics:

El primer problema tècnic que ens va sorgir va ser, apart de les assumides dificultats de l'elaboració de les peces de fusta que componen el xassís del nostre robot, el trencament d'alguns dels components.

1. Sensor de temperatura Temp36:

Aquest sensor és el que més problemes ens ha causat, tant tècnics com informàtics.
En el cas dels problemes tècnics, el primer de tots va ser la dificultat d'immobilitzar-lo dins el xassís ja que la seva forma dificultava la col·locació d'aquest prop dels ventiladors per tal de poder calcular la variació de temperatura.
Finalment, després de soldar-lo diverses vegades, habilitar el xassís al sensor i d'altres processos, la tercera pota del sensor, la que es connectava a GND, va fer fallida i es trencà arrencant part de la base del sensor.
Vam intentar reanimar-lo soldant trossos de cable amb estany, però després de molts intents, vam deixar-ho ja que cada cop que soldàvem, es malmetia més i es desfeia el plàstic protector. Per aquesta raó l'hem suprimit del projecte tot i que aquest està fet per acollir-lo, tant el cos del robot, com el seu programa.

2. Cables:

El segon problema tècnic va ser la cerca de cables aptes i suficientment resistents per usar-los en les unions. Vam trobar-ne de tres tipus, prefabricats mascle-mascle, prefabricats mascle-femella i cable unifilar en general.
El problema del primer tipus de cable va ser, com es pot apreciar a la fotografia, el trencament d'algun dels extrems. Del segon tipus de cable fou la dificultat de mantenir-los a lloc, tot i que es pogué solucionar. I respecte el tercer tipus de cable, el problema va ser l'esforç de fatiga que podien suportar, ja que si accidentalment o intencionadament es torçava masses vegades, aquest es desprenia de component trencant-se. Això comportava l'eliminació de les restes i la substitució del segment.

3. Relé:

Aquest component en sí sol ha suposat tres problemes dins el nostre projecte.
El primer de tots fou la confusió de no tenir les potes numerades o tan sols indicades, ja que a Internet s'oferien diferents versions del mateix tipus de relé. Com que això no suposava un problema de trencament del relé, vam cercar-ho nosaltres mateixos experimentant amb una de les sortides de l'Arduino i diverses imatges de Google.
El segon problema va ser el trencament definitiu de dues potes del relé per la mateixa raó que els cables, un suport excessiu de tensió i flexió. Cal destacar, que vam fer les proves en una protoboard i això va forçar les potes del component ja que no encaixaven, debilitant-les.
Igual que amb el sensor de temperatura, el vam intentar arreglar i ho vam aconseguir en una ocasió, però finalment es va fondre la càpsula protectora, com s'aprecia a les imatges, engendrant trossos de plàstic fos que impedien la seva reconnexió.
Al ser un component massa important, en vam comprar un altre.
El tercer problema va ser trobar lloc dins el xassís ja que, com hem mencionat més amunt, no encaixa en cap protoboard, per això es troba soldat en molts cables i en un espai flotant dins de l'estructura del robot, clar està, en un lloc segur de ruptures.


4. Desconnexió espontània:

Aquest és probablement el problema més repetit que hem tingut però un dels menys greus. A més a més, ha sigut crític a la resolució d'altres problemes, ja que ens ajudava a trobar algun error que no havíem percebut en el muntatge.
Els cables de tant en tant cedien a alguna força de tensió i es desconnectaven dels pins no soldables dels Arduinos o d'altres components. Normalment succeïa mentre fèiem proves o modificacions, però finalment al tancar el xassís, això es va solucionar.


Problemes informàtics:

Aquest es probablement l'apartat més extens de la nostra pàgina de problemes. Tots són molt diferents l'un de l'altre, així que els separarem en diferents apartats situats a continuació. Exposarem molt breument cada problema per ordre d'aparició i la seva solució ja que són molts i complicats.

1. Problemes amb programació Arduino:

Aquest apartat conté els problemes derivats del programa que dóna vida al nostre robot, per més informació del programa, l'apartat d'Arduino en recull algunes dades.

1. 1. Conducció del L293-D:

El primer problema que va sorgir dins la programació Arduino va ser, necessàriament, el que afectà el primer component que vam incloure en el nostre projecte, en aquest cas els motors i l'inversor de gir L293-D. El problema va ser la dificultat que oferia l'aprenentatge del control de l'inversor ja que a l'inici ens havíem plantejat utilitzar dos servomotors però finalment ens vam decidir per reductores per tal de treure una mica de "suc" a projecte.
La solució va ser la cerca d'un programa que treballes amb l'inversor de gir i el vam adaptar en diverses ocasions fins que el vam incloure al programa definitiu amb cent possibilitats com comentem a l'apartat Processing per Android.

1. 2. Control del sensor d'ultrasons:

Aquest va ser un problema molt fàcil de solucionar ja que només suposava el mal funcionament de les plaques quan aquest es trobava desactivat o quan detectava distàncies.
La solució va ser fàcil, vam assegurar que no es pogués desconnectar espontàniament i vam el·liminar els "delays" que feien entrar el programa en bucle. Per aquesta raó al nostre programa només apareixen "delays" quan fem referència al piezo per tal de mantenir el seu so durant 0,1 segons.
Eliminant els altres, el sensor d'ultrasons va tornar a funcionar correctament ja que funciona enviant pulsacions i rebent-les amb un temps determinat. Com que aquest es veia afectat, deixava de funcionar i afectava indirectament al control dels Arduinos i tot el que hi estigués connectat.

1. 3. Control Bluetooth:

El problema respecte el Bluetooth ha sigut el tercer més crític de tot el projecte ja que impedia qualsevol tipus de comunicació amb el robot mitjançant el control remot.
Amb aquest problema hi havia dues possibilitats, que l'error es trobés en la connexió dels pins, la més comuna, i que les dues plaques es trobessin en un estat insà de sobrecàrrega degut a una mala alimentació. Aquest segon només ens va passar en dues ocasions ja que al estar les dues connectades al mateix mòdul, les dues necessitaven rebre la mateixa tensió i intensitat.
Aquest problema s'ha solucionat revisant innumerables vegades la connexió del mòdul i tots els altres components.

1. 4. Excés de condicionals:

L'excés de condicionals va ser el problema que més canvis radicals ens va obligar a realitzar sobre el nostre projecte. Una placa d'Arduino es veu limitada per la seva capacitat de entendre i dur a terme les ordres programades. L'estructura més bàsica dels programes són els condicionals i això va portar a que amb les cent possibilitats de moviment i tots els sensors, l'Arduino MEGA-ADK es veiés sobrepassat i no funcionés correctament tot i haver revisat moltíssimes vegades el muntatge. Finalment ho vam solucionar amb l'addició d'una segona placa, un Arduino UNO amb la Basic Education Shield. Vam estructurar els programes de tal manera que una no interferís amb l'altre, funcionant les dues independentment. El MEGA s'ocupa exclusivament dels motors i el sensor d'ultrasons, per tant, del moviment, mentre que l'UNO s'encarrega de tota a resta amb molts menys condicionals. Les dues comparteixen Bluetooth i piezo per tal de compartir la informació rebuda.

1. 5. Control del sensor de temperatura:

El sensor de temperatura, com sempre, s'afegeix als problemes informàtics ja que les seves lectures eren inexactes i no permetia el correcte funcionament de l'automatisme dels ventiladors. Amb el càlcul de la temperatura real i molts ajustaments de programa i les equacions que el feien funcionar vam aconseguir que engegués i apagués els motors al detectar un canvi de temperatura. Ho vam provar amb gel per tal d'accelerar el procés i vam concloure que el programa funcionava, per això segueix intrínsec en el programa Processing i Arduino tot i haver suprimit el sensor del projecte.

1. 6. Control del sensor de llum i dels LEDs:

El sensor automàtic de llum va ser molt difícil d'elaborar ja que les resistències del muntatge no eren les més adequades, per això vam haver d'adaptar moltíssim tot el funcionament i després d'innumerables canvis de programes, vam aconseguir una il·luminació correcta.
Aquesta il·luminació té diverses possibilitats, una barra desplaçable que en controla la il·luminació, un interruptor que activa una automatització d'encesa parcial, un altre que n'activa una de completa i un altre que desactiva tot l'anterior.

1. 7. Error de comunicació:

Un dels últims problemes que va aparèixer va ser la incapacitat d'enviar o rebre res als Arduinos mitjançant els ordinadors, cosa que ens va espantar ja que crèiem que havíem cremat les plaques. Finalment tot va resultar en una actualització inesperada per part dels creadors del software Arduino. Després d'una intensa actualització, tot va tornar a ser com era.

2. Problemes amb programació Processing:

Aquest apartat conté els problemes derivats del programa que controla el nostre robot, per més informació del programa, l'apartat de Processing per Android en recull algunes dades.

2. 1. Creació bàsica de l'aplicació:

En aquest cas el problema, més que un problema, va ser la dificultat de l'elaboració ja que crear una aplicació des de zero sense tenir un precedent va ser realment complicat. Filmant ens vam decantar per un control mitjançant un joystick de cent posicions, vuit interruptors On/Off i una barra desplaçable de deu posicions. el problema sorgia al desplaçar les parts mòbils, o sigui, que sortien dels seus límits i no es sincronitzaven amb el que tècnicament hauria d'ocórrer, que seguís el camí del dit...

2. 2. Funcionament de l'estructura:

Una cosa és la creació de les formes i el seu funcionament correcte de l'aplicació i l'altre el seu funcionament dins del programa. En aquest cas es va presentar la dificultat de que cada posició tingués una coordenada correcte i es desplacés en el mateix moment en què s'interactuava amb l'aplicació.

2. 3. Funcionament de l'aplicació:

En aquest apartat trobem el problema que se'ns va presentar al esperar que al funcionar correctament la imatge que ens apareix a la pantalla, el programa interior funcionés com s'esperava, però era massa bo per ser veritat. Quan vam revisar-ho, vam veure tots els errors comesos, el Bluetooth enviava ordres constants i infinites, excedint qualsevol capacitat d'emmagatzematge.
Van sorgir molts més problemes, però després de dies de treball, tot va acabar funcionant.

2. 4. Inclusió de la programació per Android:

Després que tot funcionés, se'ns presentà el problema de la inclusió d'algunes peces de codi per tal que el programa funcionés amb Android. La dificultat en sí no va ser aquesta, sinó que això suposava que deixaria d'anar per sempre a l'ordinador, cosa que ens va limitar moltíssim a l'hora de crear, per això totes les especificacions dins el programa es troben condicionades per la mida de pantalla del dispositiu.

2. 5. Exportació de l'aplicació als dispositius:

Un cop tot va estar llest, quan vam voler exportar als mòbils, aquests es negaven a acceptar una aplicació no oficial o penjada a la Play Store. Per aquesta raó ens vam veure obligats a "hackejar" els dispositius mitjançant l'opció oculta de "mode de desenvolupador" que tots els dispositius tenen. Aquest es desbloqueja clicant un nombre concret de vegades en un lloc específic d'un cert menú que es troba en una petita pestanya del menú d'ajustaments. Si no ho especifiquem, es perquè no ho recomanem. Després d'això, tot va funcionar.

2. 6. Millora de l'estètica:

Un cop tot va estar llest i el codi enviava els bytes correctes, vam afegir un petit interruptor verd-vermell al costat de cada interruptor  On/Off i símbols sobre aquests a més del joystick i la barra d'il·luminació. Les imatges no respectaven les mides que imposàvem, cosa que també va portar dies de feina fins que tot va acabar funcionant de nou.

2. 7. Rebel·lia del Bluetooth: 

De cop i volta, un dia, el Bluetooth va decidir deixar de funcionar quan intentàvem la comunicació i, després de moltes proves, vam arribar a diverses conclusions:
1. No es pot tenir una altra aplicació oberta de fons al mòbil.
2. No es pot tenir la llanterna encesa.
3. No es pot tenir la càmera encesa.
4. No es pot tenir la música encesa.
5. S'ha d'insistir innumerables cops fins que el llum del Bluetooth es queda fix.
6. S'ha de vigilar no prémer algun botó del mòbil per error.
...
Hi ha molts més problemes, però ho vam solucionar amb una opció que tenen tots els dispositius, esborrar l'historial d'aplicacions i, després, activar correctament el Bluetooth del robot, el del mòbil i, finalment, iniciar l'aplicació les vegades necessàries fins que la comunicació comencés.
Aquest problema és ocasionat al fer servir un muntatge amb un mòdul Bluetooth que realment s'adapta a qualsevol dispositiu, per això es difícil aconseguir l'estabilitat que, un cop aconseguida, aguanta indefinidament, fins i  tot a una distància de pisos d'alçada, més potent que molts altres dispositius.

3. Problemes externs a la programació:

Aquest apartat conté els problemes derivats dels components i alguns dels seus problemes, per més informació del programa, els apartats de components i problemes en recullen algunes dades.

3. 1. Lectures incorrectes dels sensors:

Aquest ha sigut un dels problemes que més ens ha sorgit però que també ens ha sigut fàcil de resoldre. A vegades el sensor d'ultrasons feia l'impossible per tal de no seguir les nostres ordres, igual que les resistències LDR, realment no podem concretar per què succeïa, ja que cada vegada la raó era diferent. Una desconnexió espontània, una ruptura de cables, algun error a les plaques, o, fins i tot, un objecte massa a prop del receptor ultrasònic.

3. 2. Rebel·lia dels motors:

Aquest ha sigut un dels problemes que més ens ha preocupat ja que tot i que tot el programa era correcte, els motors no funcionaven correctament, funcionant quan no tocava o no reaccionant a les ordres. Això comportava que haguéssim de revisar totes les connexions i fer alguns canvis al muntatge, tot i que la majoria de vegades ocorria per culpa de l'alimentació, problema que esmentem més endavant.

3. 3. Incapacitat de l'Arduino MEGA-ADK:

Com hem comentat en alguns apartats, l'Arduino MEGA-ADK es veia col·lapsat per la quantitat de condicionals que se li exigien, condicionals crítics pel funcionament dels programes i del projecte en sí. Per aquesta raó vam experimentar eliminant línies de codi, canviant-ne... Finalment vam decidir dividir la tasca en dues plaques independents i així vam afegir l'Arduino UNO com a ajudant, totalment independent, encarregat de tot el que no fos la conducció, ja que realment conté molts menys condicionals.
El canvi va ser fructífer i ens va ajudar molt, a més de permetre'ns afegir certs aspectes que no teníem pensats.

3. 4. Funcionament erroni de l'alimentació:

El funcionament erroni de l'alimentació ha sigut el segon problema més crític del nostre projecte ja que suposava la disfuncionalitat total del projecte. Al principi vam utilitzar un porta-piles de quatre per fer totes les proves i, com que l'ordinador alimentava correctament, el problema va passar desapercebut. Més endavant, quan vam incorporar el porta-piles de vuit per alimentar les dues plaques, res funcionava, aquestes es veien afectades per la divisió d'intensitat i al alimentar els motors, tot el circuit queia i es desconnectava automàticament.
Per aquesta raó vam afegir un segon porta-piles de vuit per tal que un alimentes l'UNO i l'altre el MEGA. Amb això vam trobar la solució, tot i que els motors no tenien força suficient com per moure's i, després de moltes modificacions i la reincorporació del port-piles de quatre, aquest problema només apareix quan les piles s'esgoten.

3. 5. "ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ":

Aquest ha sigut el pitjor i més crític problema que ha planejat sobre els nostres caps durant tota l'elaboració del projecte.
Per algú que no ha tractat mai amb Arduino, el Monitor Serial es una petita pantalla en què l'Arduino es comunica amb l'ordinador mitjançant un cable, cosa que ens permet veure a temps real què és el que rep o envia o el que vulguem. El problema sorgeix quan, inexplicablement, un dia, després de tenir-ho tot, al enviar ordres, apareixien innumerables "ÿ". Això provocava que la placa deixés de funcionar, encenent-ho tot i rebentant la memòria interior d'aquesta, impedint qualsevol tipus de comunicació. L'única forma de trencar la tendència infinita a enviar "ÿ" era eliminant l'alimentació.
El primer cop que va aparèixer, va ser quan vam connectar el Bluetooth i, per tant, relacionàvem el problema amb això, però ens equivocàvem. Vam solucionar-lo i dies després va tornar a aparèixer amb el mal funcionament del sensor ultrasònic, cosa que pensàvem que podia ser una segona causa, però tampoc.
Quan va aparèixer per enèsim cop, vam descobrir que res tenia a veure amb els sensors, ja que succeïa cada vegada que els motors s'havien d'encendre.
Vam revisar moltíssimes vegades les connexions, sense trobar el problema. Cada cop que l'inversor funcionava, les plaques perdien "consciència". Quan vam aconseguir solucionar-ho, vam veure que el problema tornava a ser l'alimentació, ja que els motors robaven l'alimentació dels Arduinos i al tornar-la a GND, es produïa una estranya sobrecàrrega. Per això l'últim apartat de problemes el dediquem a un petit concepte que teniem clar des del principi però que no ens ha sigut gaire útil.

3. 6. Tema de grounds:

A l'inici del projecte el nostre professor de tecnologia ens va indicar que havíem de tenir molt en compte que tots els grounds que utilitzéssim, però això ha degenerat en moltíssims problemes ja que sempre connectàvem tots els grounds junts i succeïa que moltíssimes vegades, al voler engegar només una de les plaques, tot se n'anava en orris ja que l'altra xuclava el corrent i provocava tal mal funcionament que ens vèiem obligats a separar-les cada vegada.
Per aquesta raó, després de pensar-hi molt, vam crear dos circuits, un per l'Arduino MEGA-ADK i l'altre per l'Arduino UNO. La solució va ser que l'interruptor On/Off fos el que estigués connectat a l'alimentació d'ambdós en els seus respectius GND. Llavors, si l'interruptor està apagat, no hi ha corrent i si s'encén, si. Apart, si alimentem amb un sol cable, només funciona la placa connectada ja que el circuit no és comú a no ser que l'interruptor tanqui el circuit i, com que l'alimentació tampoc es troba en funcionament, no succeeix cap curtcircuit ni mal funcionament.