Disseny d'interacció: Arduino

download Disseny d'interacció: Arduino

of 20

  • date post

    09-Jan-2017
  • Category

    Technology

  • view

    227
  • download

    0

Embed Size (px)

Transcript of Disseny d'interacció: Arduino

  • Grau en Multimdia Curs 2013/14 2n Semestre

    Disseny d'InteracciPAC2 Arduino

    AutorJordi Zango Novell

    jzango@uoc.edu

    Data de lliurament25/04/2014

    mailto:jzango@uoc.edu

  • ndex1. Objectiu.............................................................................................................3

    2. Procs...............................................................................................................4

    2.1.El disseny a obtenir....................................................................................4

    2.2.Els components..........................................................................................4

    2.3.Fase 1. Sensor de so ms un LED............................................................5

    2.4.Fase 2. Afegir LEDs i establir llindars de so...............................................6

    2.5.Fase 3. Afegir LEDs per a condicions de poca llum...................................8

    2.6.Fase 4. Afegir sensor LDR.......................................................................10

    2.7.Fase 5 i ltima. Incorporar Ethernet Shield..............................................13

    2.8.Vdeo del disseny.....................................................................................17

    2.9.Vista del disseny final...............................................................................18

    3. Conclusi........................................................................................................19

    4. Fonts...............................................................................................................20

    5. Llicncia..........................................................................................................20

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 2

  • 1. Objectiu

    1. ObjectiuL'objectiu principal d'aquest treball s aprofundir en el disseny i realitzaci d'unprojecte d'electrnica digital, orientat a resoldre tasques senzilles.

    El disseny a desenvolupar es far amb Arduino i ha d'incorporar l's d'un mnimde dos sensors i un actuador.

    El prototip s'haur de realitzar emprant la placa de proves (protoboard) i s'ha dedocumentar esquemticament el conjunt amb l'eina Fritzing.

    A ms de documentar el procs en aquest document, tamb s'haur de penjarun vdeo on es vegi el disseny en funcionament (a la plataforma Vimeo).

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 3

  • 2. Procs

    2. ProcsDonat que fins trobar-me amb aquesta assignatura no coneixia Arduino, m'hasemblat que el millor era afrontar aquest projecte en etapes successives peranar aconseguint petites parts funcionals i no seguir endavant fins que cadauna d'elles sigui operativa.

    D'aquesta manera em ser ms fcil entendre el que estic fent i depurarpossibles errors.

    2.1. El disseny a obtenirEl que em proposo fer s un circuit que respongui al so ambiental. D'aquestamanera, he pensat emprar tres LEDs (verds) que s'encendran en funci delnivell de so que es capti, tot i emprant tres trams o llindars per activar-los deforma successiva i de menys a ms volum.

    Tanmateix, vull incorporar un sensor de llum de manera que, a ms dels LEDsprincipals de color verd, s'encenguin altres tres ms de color vermell en casque la llum ambiental no superi un llindar determinat.

    s a dir, hi haur 3 LEDs verds que s'encendran o no en funci del volum delso d'ambient i 3 LEDs vermells que tamb faran el mateix per noms en casque gaireb s'estigui a les fosques.

    Finalment, i tenint en ment explorar alternatives de cara al projecte final del'assignatura, he decidit tamb experimentar per a veure com establircomunicaci entre l'Arduino i un ordinador.

    2.2. Els componentsAquesta s la llista de components que he emprat:

    1 placa Arduino UNO rev.3 1 protoboard 1 cable connexi USB 3 LEDs de color verd 3 LEDs de color vermell 6 resistncies de 470 Ohms 1 resistncia de 1K Ohms 1 sensor LDR (sensor de llum) 1 sensor de so 13 cables de connexi 1 Ethernet Shield

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 4

  • 2. Procs

    2.3. Fase 1. Sensor de so ms un LED

    Per a comprovar com funciona el sensor de so, primer implemento un circuitamb aquest sensor i noms un LED que s'activar al sobrepassar un llindar devolum.

    int led = 8;int llindar = 400;int volum; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { volum = analogRead(A0); if(volum>=llindar){ digitalWrite(led, HIGH); } else{ digitalWrite(led, LOW); }}

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 5

  • 2. Procs

    2.4. Fase 2. Afegir LEDs i establir llindars de so

    Un cop comprovat el funcionament del sensor LDR amb un LED, afegeixo dosLEDs ms i estableixo tres marges de llindar de so per a que s'encenguinprogressivament.

    int ledVerd1 = 8;int ledVerd2 = 9;int ledVerd3 = 10;int llindar1 = 300;int llindar2 = 600;int llindar3 = 900;

    int volum; void setup() { Serial.begin(9600); pinMode(ledVerd1, OUTPUT); pinMode(ledVerd2, OUTPUT); pinMode(ledVerd3, OUTPUT); } void loop() { volum = analogRead(A0); if(volum>llindar1){ digitalWrite(ledVerd1, HIGH); } else{

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 6

  • 2. Procs

    digitalWrite(ledVerd1, LOW); }

    if(volum>llindar2){ digitalWrite(ledVerd2, HIGH); } else{ digitalWrite(ledVerd2, LOW); }

    if(volum>llindar3){ digitalWrite(ledVerd3, HIGH); } else{ digitalWrite(ledVerd3, LOW); } }

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 7

  • 2. Procs

    2.5. Fase 3. Afegir LEDs per a condicions de poca llum

    Incorporo els LEDs vermells per a que s'encenguin conjuntament amb els decolor verd.

    int ledVerd1 = 8;int ledVerd2 = 9;int ledVerd3 = 10;int ledVermell1 = 11;int ledVermell2 = 12;int ledVermell3 = 13;int llindar1 = 300;int llindar2 = 600;int llindar3 = 900;

    int volum; void setup() { Serial.begin(9600); pinMode(ledVerd1, OUTPUT); pinMode(ledVerd2, OUTPUT); pinMode(ledVerd3, OUTPUT); pinMode(ledVermell1, OUTPUT); pinMode(ledVermell2, OUTPUT); pinMode(ledVermell3, OUTPUT);

    } void loop() {

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 8

  • 2. Procs

    volum = analogRead(A0); if(volum>llindar1){ digitalWrite(ledVerd1, HIGH); digitalWrite(ledVermell1, HIGH); } else{ digitalWrite(ledVerd1, LOW); digitalWrite(ledVermell1, LOW); }

    if(volum>llindar2){ digitalWrite(ledVerd2, HIGH); digitalWrite(ledVermell2, HIGH); } else{ digitalWrite(ledVerd2, LOW); digitalWrite(ledVermell2, LOW); }

    if(volum>llindar3){ digitalWrite(ledVerd3, HIGH); digitalWrite(ledVermell3, HIGH); } else{ digitalWrite(ledVerd3, LOW); digitalWrite(ledVermell3, LOW); } }

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 9

  • 2. Procs

    2.6. Fase 4. Afegir sensor LDR

    Afegeixo el sensor de llum (LDR) i separo l'activaci dels LEDs vermells per aque es doni noms quan la llum estigui per sota d'un llindar determinat (afosques).

    /*Disseny d'interaccioPAC2 - ArduinoUniversitat Oberta de CatalunyaCurs 2013-2014, 2n Semestreper Jordi Zango Novell*///Definicio de constants//========================================//LEDs verdsconst int ledVerd1 = 8;const int ledVerd2 = 9;const int ledVerd3 = 10;

    //LEDs vermellsconst int ledVermell1 = 11;const int ledVermell2 = 12;const int ledVermell3 = 13;

    //Sensorsconst int sensorSo = A0;const int sensorLlum = A2;

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 10

  • 2. Procs

    //Llindars per a lectures analogiquesconst int llindarSo1 = 192;const int llindarSo2 = 195;const int llindarSo3 = 197;const int llindarLlum = 100;

    //Variables globals//=================int volum; //Per a lectura del soint llum; //Per a lectura de la llum

    //Rutina de inicialitzacio//=========================void setup() { //Iniciar lectura port serial , a 9600 baudis Serial.begin(9600); //Definicio de modes per als pins dels LEDs pinMode(ledVerd1, OUTPUT); pinMode(ledVerd2, OUTPUT); pinMode(ledVerd3, OUTPUT); pinMode(ledVermell1, OUTPUT); pinMode(ledVermell2, OUTPUT); pinMode(ledVermell3, OUTPUT); }

    //Bucle principal//===============void loop() { //Lectures analogiques volum = analogRead(sensorSo); llum = analogRead(sensorLlum); //Mode depuracio //Serial.println(volume); //delay(100); /* En cada tram, si es supera el llindar de so, encendre el LED verd corresponent al tram i (en cas de no haver-hi prou llum) tambe el LED vermell */ //Primer tram de so if(volum>llindarSo1){ digitalWrite(ledVerd1, HIGH); if (llumllindarSo2){ digitalWrite(ledVerd2, HIGH);

    Disseny d'Interacci - PAC2per Jordi Zango Novell (jzango@uoc.edu) 11

  • 2. Procs

    if (llumllindarSo3){ digitalWrite(ledVerd3, HIGH); if (llum

  • 2. Procs

    2.7. Fase 5 i ltima. Incorporar Ethernet Shield

    Finalment, afegeixo l'Ethernet Shield. En aquest cas, per tractar-se d'un shield,noms cal encastar el shield damunt de l'Arduino i tornar a fer les mateixesconnexions que ja havia fet.

    Les modificacions ms importants tenen a veure amb el programari, on s'ha dedefinir la connexi de l'Arduino com si es tracts d'un servidor web i configurarla pgina HTML a mostrar.

    /*Disseny d'interaccioPAC2 - ArduinoUniversitat Oberta de CatalunyaCurs 2013-2014, 2n Semestreper Jordi Za