viernes, 11 de abril de 2014

Lab 4.1: Wireless Messaging

Per Aurora Ripoll i Jose Ángel Mohedano

OBJECTIU: Reproduïr les diferents notes musicals amb el teclat i mostrar els resultats per la pantalla LiquidCrystal mitjançant la connexió de dues XBees.


Material necessari:
- Placa Arduino UNO
- Placa Protoboard
- 2 XBees Explorer
- 2 Digi XBee
- Cables connectors


Part I: Xat simple

Esteblim la connectivitat inal·làmbrica entre un XBee Coordinador i un XBee Router. Per fer això caldrà instal·lar:
- el Software X-CTU: http://goo.gl/uAmiYa
- els drivers per l'FTDI: http://goo.gl/HE6LJX 

Una vegada muntat cada Digi XBee amb un XBee Explorer es connecten a ordinadors diferents, obrim el software i iniciem la configuració. S'exploren el ports de connexió per desobrir si hi ha moduls ràdio connectats a l'ordinador. Un cop identificats establim els rols de connexió:

Primerament comencem amb el coordinador:
- Cliquem damunt 'update firmware' on seleccionem 'XB24-ZB' al bloc de Product Family, 'XBee Coordinator AT' al bloc Function set i '22A7' al bloc de Firmware version.

- Un cop configurat el coordinador, anem a l'alte ordenador on tenim conectada l'altra DigiXBee i seguim el mateix procediment pero seleccionant 'XBee Router AT' al bloc de Function set


Una vegada arribat a aquest punt ja podem iniciar la conversa entre els dos, cliquem a tots dos Programes l'icona de enllaç i procedim a fer un test d'enviament i recepció de dades.
Un cop aconseguit això, decidim probar si podem interactuar de forma totalment remota amb la nostra placa Arduino; realitzant el següent experiment.



Part II : Escala musical remota
Mantenim els rols de configuració entre els dos XBee.

1) Muntatge del circuit
Material necessari(adicional):
- Resistència de 150 kOhms
- 1 LED
- Buzzer
- Pantalla LiquidCrystal - drivers
- mòdul I2C

Per poder utilitzar la pantalla LiquidCrystal hem descarregat els drivers actualitzats al directori per defecte `Arduino/ Libraries/LiquidCrystal` i darrerament, des del mateix entorn d'Arduino: > Sketch > ImportarLibrería > LiquidCrystal.
La conexió del cablejat s'indica a continuació.


2) Disseny del codi


//S’inclouent les llibreries necessàries

#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR2W.h>
#include <LiquidCrystal_SR3W.h>
#include <Wire.h>  
#include <LiquidCrystal_I2C.h>


// Definim l’adreça LCD I2C

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  


int BELL = 5;                            // PIN 5   
int duracion= 500;                       // Duració del to (0.5 seg)

void setup() {
  pinMode(BELL, OUTPUT);
  Serial.begin(9600);
  lcd.begin(16,2);
}

void loop() {


// Definim les característiques específiques per cada nota

  
  if (Serial.available() >0) {         

      char valueSerial = Serial.read(); 


// DO

    if(valueSerial =='<'){               // Correspon a la tecla ‘<’
      analogWrite(BELL,150);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 654.06, duracion);      // Freq.DO 10: 654.06 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla
      lcd.print("DO");                   // ‘DO’es mostra per pantalla
    }


      //RE

    else if(valueSerial =='Z'){          // Correspon a la tecla ‘Z’       
      analogWrite(BELL,150);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 734.16, duracion);      // Freq.RE 10: 734.16 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla    
lcd.print("RE");                   // ‘RE’es mostra per pantalla


    }

      //MI

    else if(valueSerial =='X'){          // Correspon a la tecla ‘X’
     
      analogWrite(BELL,30);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 824.07, duracion);      // Freq.MI 10: 824.07 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla     
lcd.print("MI");                   // ‘MI’es mostra per pantalla


    }

      //FA

    else if(valueSerial =='C'){          // Correspon a la tecla ‘C’
     
      analogWrite(BELL,30);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 873.07, duracion);      // Freq.FA 10: 873.07 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla     
      lcd.print("FA");                   // ‘FA’es mostra per pantalla
    }
     
      //SOL

    else if(valueSerial =='V'){          // Correspon a la tecla ‘V’
    
      analogWrite(BELL,30);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 979.99, duracion);      // Freq.SOL 10: 979.99 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla
      lcd.print("SOL");                  // ‘SOL’es mostra per pantalla
    }


      //LA

    else if(valueSerial =='B'){          // Correspon a la tecla ‘B’
  
      analogWrite(BELL,30);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 1100, duracion);        // Freq.LA 10: 1100 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla
      lcd.print("LA");                   // ‘LA’es mostra per pantalla
    }

      //SI

    else if(valueSerial =='N'){          // Correspon a la tecla ‘N’
     
      analogWrite(BELL,30);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 1230, duracion);        // Freq.SI 10: 1230 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla
      lcd.print("SI");                   // ‘SI’es mostra per pantalla
    }

      //DO’
   
    else if(valueSerial =='M'){          // Correspon a la tecla ‘M’
     
      analogWrite(BELL,30);
      delay(10);
      analogWrite(BELL, 0);
      tone(BELL, 1300, duracion);        // Freq.SI 10: 1300 Hz 
      lcd.clear();
      lcd.setCursor(7,0);                // Posició del caràcter a la pantalla
      lcd.print("DO'");                  // ‘DO’’es mostra per pantalla
    }
    
  }
}

3) Demostració





No hay comentarios:

Publicar un comentario