lunes, 2 de febrero de 2015

RC_Bluetooth

La aplicación RC_Bluetooth puede controlar dispositivos de Radio Control mediante el bluetooth de  su teléfono o tablet android. En el siguiente vídeo pueden observar  el funcionamiento de la aplicación y en la información del vídeo se encuentra el link de descarga en la tienda Amazon AppStore, para que puedan obtener la aplicación gratis. Se les agradece realizar el review de la aplicación y la correspondiente valoración. 


Para descargar la aplicación:


10 comentarios:

  1. Bastante sencillo de usar y con una amplia gama de usos. En mi caso la utilice para conectar mi teléfono con la computadora a través de bluetooth de forma que ñp que mande del teléfono sea recibido en la pc. Utilizando un programa en processing logre diseñar figuras y logre moverlas a través del programa. Esta se puede usar tanto para la pc cono también algun proyecto que requiera mover algún dispositivo

    ResponderEliminar
    Respuestas
    1. import processing.serial.*;
      Serial Mesa6; // Nombre del puerto
      //Limite
      int xf1= 600;
      int xf2= -50;
      int yf1= -50;
      int yf2 = 600;

      int XFC1= 650;
      int XFC2= - 50;
      int YFC1= -50;
      int YFC2= 650;

      int LXT1 = -50;
      int LXT2 = 50;
      int LXT3 = 0;

      int RXT1= 550;
      int RXT2 = 650;
      int RXT3 = 600;

      int UYT1= 0;
      int UYT2 = 0;
      int UYT3 = -50;

      int DYT1= 650 ;
      int DYT2= 650;
      int DYT3= 600;

      //Cuadrado
      int x=300;
      int y=300;

      //Circulo
      int y1=300;
      int x1=300;

      //Triangulo
      int xt1 = 250;
      int yt1= 300;
      int xt2 = 350;
      int yt2 = 300;
      int xt3 = 300;
      int yt3= 250;


      int direccion; // Valor recibido del puerto serial
      int figura;
      int w=0; //Variable para cambiar la figura mediante el boton X
      void setup() {
      size(600, 600);
      Mesa6 = new Serial(this, Serial.list()[1], 9600);

      }

      void draw (){
      background(3,202,255);





      println(Serial.list());

      if ( w == 1) {
      rectan(x,y);
      text ("Dicecion Cuadrado Y: " + y, 10,30);
      text ("Dicecion Cuadrado X: " + x, 10,40); }
      else
      if ( w == 2) {
      circu(x1,y1);
      text ("Dicecion Circulo Y: " + y1, 10,30);
      text ("Dicecion Circulo X: " + x1, 10,40);}
      else
      if ( w==3) {
      triangulo(xt1,yt1,xt2,yt2,xt3,yt3);
      text ("Dicecion Triangulo Y1: " + yt1, 10,10);
      text ("Dicecion Triangulo X1: " + xt1, 10,20);
      text ("Dicecion Triangulo Y2: " + yt2, 10,30);
      text ("Dicecion Triangulo X2: " + xt2, 10,40);
      text ("Dicecion Triangulo Y3: " + yt3, 10,50);
      text ("Dicecion Triangulo X3: " + xt3, 10,60);

      }

      while(Mesa6.available() > 0){
      direccion = 0;
      direccion = Mesa6.read();

      if (direccion == 'x') {
      w= w+1;
      if (w > 3) { w=0; }

      }

      }
      }



      void rectan(int g, int b){
      rect(g,b,50,50);
      if (direccion == 'U') {
      y=y-50;

      direccion = 'F';

      }

      else {
      if ( direccion == 'D') {
      y=y+50;


      direccion = 'F';
      }
      }

      if ( direccion == 'L') {
      x=x-50;

      direccion = 'F';
      }

      else {
      if ( direccion == 'R') {
      x=x+50;

      direccion = 'F';
      }
      }

      //Borde
      if ( x == xf2 ){ x = x+50;}
      if ( x == xf1) { x = x-50;}
      if ( y == yf1) { y = y+50;}
      if ( y == yf2) { y = y-50;}


      }

      Eliminar

    2. void circu(int f, int v){
      ellipse(f,v,50,50);

      if (direccion == 'U') {
      y1=y1-50;
      text ("Direccion Circu Y: " + y, 10,30);
      text ("Direccion Circu X: " + x, 10,40);
      direccion = 'F';

      }

      else {
      if ( direccion == 'D') {
      y1=y1+50;
      text ("Direccion Circu Y: " + y, 10,30);
      text ("Direccion Circu X: " + x, 10,40);
      direccion = 'F';
      }
      }

      if ( direccion == 'L') {
      x1=x1-50;
      text ("Direccion Circu Y: " + y, 10,30);
      text ("Direccion Circu X: " + x, 10,40);
      direccion = 'F';
      }

      else {
      if ( direccion == 'R') {
      x1=x1+50;
      text ("Dicecion Cuadrado Y: " + y, 10,30);
      text ("Dicecion Cuadrado X: " + x, 10,40);
      direccion = 'F';
      }
      }

      if ( x1 == XFC2 ){ x1 = x1+50;}
      if ( x1 == XFC1) { x1 = x1-50;}
      if ( y1 == YFC1) { y1 = y1+50;}
      if ( y1 == YFC2) { y1 = y1-50;}
      }

      void triangulo(int k, int l,int n,int j,int i,int o){
      triangle(k,l,n,j,i,o);

      if (direccion == 'U') {
      yt1=yt1-50;
      yt2=yt2-50;
      yt3=yt3-50;

      direccion = 'F';

      }

      else {
      if ( direccion == 'D') {
      yt1=yt1+50;
      yt2=yt2+50;
      yt3=yt3+50;


      direccion = 'F';
      }

      }

      if ( direccion == 'L') {
      xt1=xt1-50;
      xt2=xt2-50;
      xt3=xt3-50;


      direccion = 'F';
      }

      else {
      if ( direccion == 'R') {
      xt1=xt1+50;
      xt2=xt2+50;
      xt3=xt3+50;

      direccion = 'F';
      }
      }
      //LIMITES DEL BORDE
      // IZQUIERDA
      if ( xt1 == LXT1){ xt1 = xt1+50;}
      if ( xt2 == LXT2){ xt2 = xt2+50;}
      if ( xt3 == LXT3){ xt3 = xt3+50;}
      // DERECHA
      if ( xt1 == RXT1){ xt1 = xt1-50;}
      if ( xt2 == RXT2){ xt2 = xt2-50;}
      if ( xt3 == RXT3){ xt3 = xt3-50;}
      // ARRIBA
      if ( yt1 == UYT1){ yt1 = yt1+50;}
      if ( yt2 == UYT2){ yt2 = yt2+50;}
      if ( yt3 == UYT3){ yt3 = yt3+50;}
      //ABAJO
      if ( yt1 == UYT1){ yt1 = yt1+50;}
      if ( yt2 == UYT2){ yt2 = yt2+50;}
      if ( yt3 == UYT3){ yt3 = yt3+50;}
      }

      Eliminar
    3. Programa utilizado para la prueba de esta app a traves de PROCESSING 2

      Eliminar
  2. Excelente aplicacion!
    Funciono perfectamente conectandola vía bluetooth con una pantalla gráfica de Processing, en la cual era necesaria, debido a que se disponía de tres figuras (cuadrado, triangulo y circulo) cada una de ellas iba cambiando cada vez que se le daba un click al boton rojo de esta app.
    Ademas cuando se recibia un click en cada una de las flechas, en processing la figura que se tenia elegida se movia hacia arriba, abajo, izquierda y derecha, segun fuece el caso.
    Para la programacion en processing, se utililazaron dos switch(). El primero de ellos tenia cada uno de los casos en los cuales se recibian los valores que enviaba la app del profjmunoz a travez del puerto serial, para que cada vez que se presionara alguna de las flechas realizara el movimiento elegido, para esto se realiazaron condiciones if() capaces de controlar que la figura no saliera de la pantalla, en el caso del boton central de la app se coloco un contador el cual era capaz de hacer el cambio de la figura en el orden de cuadrado-circulo-triangulo, la programacion necesaria para este contador se observa en el segundo switch(), en el cual las figuras son dibujadas en cada uno de los casos enumerados, en ellos se visualiza como estan ubicadas cada una de las figuras para que sean dibujadas en la pantalla grafica justo en el centro de la misma, tambien estan las variaciones de fondos y rellenos de las figuras.

    A continuacion les dejo un link en el cual obtendran imagenes del proyecto y la programacion.https://drive.google.com/file/d/0BwDQ6y87zjPMLWdkOEkzMFYyTDg/view?usp=sharing

    ResponderEliminar
  3. Buena aplicación!
    Excelente funcionamiento entre el celular y la Pc mediante bluetooth, la cual se utilizo para un proyecto realizado en Processing, que consistía en cambiar 3 figuras, triangulo, cuadrado y circulo, pulsando el botón en el centro de la aplicación, ademas de que las figuras podían desplazarse dependiendo de la dirección que uno le indique. Nos permitió perfectamente el desarrollo del proyecto.

    ResponderEliminar
  4. La aplicación RC Bluetooth es una aplicación la cual te permite controlar mediante vía bluetooth de nuestro dispositivo móvil a otros dispositivos. En este caso se utilizo esta aplicación para comunicar vía inalámbrica una computadora y un dispositivo celular enviando ciertos comandos los cuales logran cumplir con lo planteado en dicha programación realizada en processing. En este caso se mostrara los siguientes comandos que permitirán crear tres figuras ( cuadrado, circulo y triangulo), moviéndolas en 4 posiciones (arriba, abajo, derecha e izquierda); agregando que mediante la pulsación o envió de la letra x cambiara la figura en el orden antes mencionado:

    import processing.serial.*;

    int registro;
    int x = 300;
    int y = 300;
    int cont= 0;

    void setup() {

    size(600,600);
    smooth();
    stroke(0, 0, 0);
    fill(255,0,0);
    rectMode(CENTER);
    ellipseMode(CENTER);

    Serial port;

    println (Serial.list ());
    port = new Serial (this, Serial.list () [3], 9600);
    println (port);
    };
    void draw(){

    background(10, 255, 100);
    switch(cont)
    {
    case(0):
    fill(255,0,0);
    rect(x,y,50,50);
    break;

    case(1):
    fill(255,0,0);
    ellipse(x,y,50,50);
    break;

    case(2):
    fill(255,0,0);
    triangle(x-25, y+25,x,y-25,x+25,y+25);
    break;
    }
    };
    void serialEvent(Serial port) {

    while (port.available ()> 0) {
    registro = port.read ();
    println (registro);

    }

    if (registro == 'U'){
    if(y>26){
    y=y-1;
    }
    println("registro");
    }
    else if(registro=='D'){
    if(y<573){
    y=y+1;
    }
    }
    else if(registro=='L'){
    if(x>26){
    x=x-1;
    }
    }
    else if(registro=='R'){
    if(x<573){
    x=x+1;
    }
    }

    print("x = ");
    println(x);
    print("y = ");
    println(y);

    if(registro == 'x') {
    if(cont<2) {
    cont++;
    }
    else{
    cont = 0;
    }
    }
    }


    Utilizando la librería import processing.serial.*; permitirá recibir los datos a nuestra computadora. Declarando ciertas variables que ayudaran a cumplir ciertos eventos; colocando las imágenes en el medio de la pantalla con la función rectMode(CENTER). Imprimiendo en pantalla los puertos disponibles o el puerto que estará utilizando nuestro dispositivo bluetooth de nuestra computadora.
    Destacando el contador el cual almacenara las imágenes a la hora de recibir una “x” en nuestra programación. Con esta simple programación y el uso de la aplicación rc bluetooth encontraras un divertido y sencillo juego.



    ResponderEliminar
  5. meson 2.

    En esta ocasión hicimos uso de la aplicación RC_Bluetooth para incorporarla a nuestro proyecto el cual constaba que las opciones representadas en esta, arriba, abajo, derecha, izquierda se mostrara mediante el movimiento de una figura, que también cambiaría su forma si se presionara el botón central de esta aplicación desde mi dispositivo Android.
    Para poder visualizar el desplazamiento y cambio de las figuras se realizó una programación adicción en la aplicación Processing.

    import processing.serial.*;

    int Horizontal = 150;
    int Vertical = 150;
    int Entrada;
    int contador = 1;


    void setup()
    {
    Serial myPort;

    size(600,600);
    println(Serial.list());
    myPort = new Serial (this, Serial.list()[3], 9600);
    println(myPort);

    }
    void draw (){
    background(190,43,87);


    if(contador == 1)
    {
    translate(Horizontal, Vertical);
    rect(Horizontal-25,Vertical-25,50,50);
    fill(255,157,52);
    stroke(0,0,0);

    }

    if(contador == 2)
    {
    translate(Horizontal, Vertical);
    ellipse(Horizontal,Vertical,50,50);
    fill(23,187,167);
    stroke(0,0,0);
    }

    if(contador == 3)
    {
    translate(Horizontal,Vertical);
    triangle(Horizontal-25,Vertical+25,Horizontal,Vertical-25,Horizontal+25,Vertical+25);
    //triangle(Horizontal+25,Vertical-25,Horizontal,Vertical+25,Horizontal-25,Vertical-25);
    fill(255,0,0);
    stroke(0,0,0);
    }
    }

    void serialEvent(Serial myPort) {

    if (myPort.available ()>0){
    Entrada = myPort.read();
    println(Entrada);

    if( Entrada== 'U' || Entrada== 'u'){
    if(Vertical>=13){
    Vertical--;
    }
    }
    else if(Entrada == 'D'|| Entrada == 'd'){
    if(Vertical<=286){
    Vertical++;
    }
    }
    else if(Entrada == 'L'|| Entrada == 'l'){
    if(Horizontal>=13){
    Horizontal--;
    }
    }
    else if(Entrada == 'R' || Entrada == 'r'){
    if(Horizontal<=286){
    Horizontal++;
    }
    }

    print("Horizontal = ");
    println(Horizontal);
    print("Vertical = ");
    println(Vertical);

    if(Entrada == 'x') {
    if(contador<3) {
    contador++;
    }
    else{
    contador = 1;
    }
    }
    }
    }

    void keyPressed( )
    {

    if(key == 'u' || key == 'U'){


    Vertical--;
    println(key);
    }
    else if(key == 'd' || key == 'D'){
    Vertical++;
    }
    else if(key == 'l' || key == 'L'){
    Horizontal--;
    }
    else if(key == 'r' || key == 'R'){
    Horizontal++;
    }
    }

    En esta programación se incorpora una importante librería como lo fue import processing.serial.*; el cual permitió trabajar con la función relacionada al serial, en otras palabras asignarle un valor de Com al puerto a utilizar, donde previamente se crea en una lista las opciones disponibles, así mismo guardar en una variable los datos que lleguen al puerto. De igual manera se utilizaron diferentes comandos que se emplearon para darle color a los bordes, fondo, línea y una función translate lo cual como su palabra lo indica traslada la figura y realiza una expansión en la pantalla. Para realizar los diferentes movimientos deseados se trabajó con la función if para que según el dato que llegara al puerto la figura se posicionara de acuerdo a lo indicado y de esta misma manera se utilizó esta función para crear un contador el cual iría en incremento según las vez sea presionado una tecla específica y me permitiera controlar las opciones. Donde la comunicación entre el pc y el dispositivo Android.

    ResponderEliminar
  6. Excelente aplicación, descargue esta app en mi celular con sistema android para usarla con un programa que diseñe en processing en mi pc, el programa que cree esta conformado por tres figuras las cuales desplazo en las coordenadas "x" y "y" , ademas de esto las figuras se muestran solo una por vez, cambiando estas con el boton central rojo que contiene la aplicación.
    Esta aplicación funciona como un control remoto, esta consta de de 4 flechas de direccionamiento en los ejes "x" y "y" , también nos permite comunicarnos con algún dispositivo externo por medio de la función bluetooth que posee.

    Para la comunicación entre mi celular y la pc utilice el bluetooth del celular y un dispositivo bluetooth que conecte a mi pc por medio del puerto USB, para que la comunicacion fuese efectiva tuve que mencionar el puerto serial al cual configure mi dispositivo bluetooth en el programa realizado en processing ademas de esto fue de vital importancia nombrar los comandos que estan especificados en las instrucciones del rc bluetooth, todo esto para que las acciones ejecutadas en la aplicación se vieran reflejas en mi programa. Aquí les dejo el codigo del programa que realice, este funciona totalmente siempre y cuando le asignes el numero de puerto serial en processing que te asigna la pc en el bluetooth( el numero de puerto serial es configurable).

    Grupo de trabajo: Mesa 5
    Integrantes: Mariyan Mendez
    Luis Palocz
    Esteban Blanco

    int x=300;
    int y=300;
    int xo=300;
    int yo=300;

    float h ;
    int chuto=1;


    int x1=270;
    int y1=350;
    int x2=330;
    int y2=350;
    int x3=300;
    int y3=300;

    import processing.serial.*;

    Serial loszerpa; // Create object from Serial class
    int beso; // Data received from the serial port


    void setup(){

    size(600,600);
    rectMode(CENTER);
    colorMode(HSB, 100);
    println(Serial.list());


    loszerpa = new Serial(this, Serial.list()[1], 9600);



    }

    void draw(){




    h = random(100);
    background(255);
    stroke(#ffffff);

    if ( chuto==1){
    cuadrado(x,y);
    }
    else
    if(chuto==2){
    circulo(xo,yo);
    }
    else
    if (chuto==3){
    triangl( x1,y1, x2,y2, x3,y3);
    }



    while( loszerpa.available() > 0){
    beso=loszerpa.read();
    if( beso == 'x'){
    chuto = chuto+1;
    if (chuto > 3)
    { chuto =1;

    }


    }



    }





    }




    void cuadrado(int h, int u) {
    rect(h,u,50,50);
    translate(width/2, height/2);



    if(beso == 'U'){

    if (y>60) {
    y=y-40; }
    beso = 'z';
    }
    else if(beso == 'D'){

    if (y<540){
    y=y+40; }
    beso = 'z';
    }

    else if(beso == 'R'){

    if(x<540) {
    x=x+40;}
    beso = 'z';

    }



    else if(beso == 'L'){

    if(x>60){
    x=x-40;}
    beso = 'z';
    }



    }




    void circulo(int h, int u){
    ellipse(h,u,50,50);
    translate(width/2, height/2);


    if(beso == 'U'){

    if(yo>60){
    yo=yo-40; }
    beso = 'z';

    }
    else if(beso == 'D'){

    if(yo<540){
    yo=yo+40;}
    beso = 'z';

    }
    else if(beso == 'R'){

    if(xo<540){
    xo=xo+40;}
    beso = 'z';

    }


    else if(beso == 'L'){

    if(xo>60){
    xo=xo-40;}
    beso = 'z';

    }



    }


    void triangl(int h, int u, int e, int m, int l, int p){
    triangle(h,u,e,m,l,p);



    if(beso == 'U'){
    if(y1>120){
    y1=y1-40;
    y2=y2-40;
    y3=y3-40;}
    beso = 'z';

    }
    else if(beso == 'D'){

    if(y2<580){
    y1=y1+40;
    y2=y2+40;
    y3=y3+40;}
    beso = 'z';

    }
    else if(beso == 'R'){

    if(x3<540){
    x1=x1+40;
    x2=x2+40;
    x3=x3+40;}
    beso = 'z';

    }


    else if(beso == 'L'){

    if(x2>120){
    x1=x1-40;
    x2=x2-40;
    x3=x3-40; }
    beso = 'z';

    }
    }




    ResponderEliminar
  7. Con la utilización de la aplicación RC Bluetooth del Profesor José Muñoz, fuimos capaces de controlar a través de un Android y un Arduino Mega 2560, el generador de funciones Hp 33120A.
    La programación utilizada en arduino se basó en recibir comandos desde el teléfono o Tablet, cada comando constaba de la señal, frecuencia, amplitud y componente continúa con la que se deseaba trabajar o visualizar en el osciloscopio, para recibir los datos en el arduino se declaró una cadena tipo string en la cual se guardaba cada comando. El string se dividió en substring para poder realizar la comparación del comando que se recibía del Android con el comando que se iba a enviar al generador directamente. Una vez que se comparaba cada substring se guardaban en otra cadena tipo string la cual sería enviada al generador para que se visualizara las señales. Entre las funciones utilizadas tenemos: SENO, CUADRADA, TRIANGULO, RAMPA, RUIDO, USER; también se trabajaron con funciones de tipo SHAPE, la cual permite cambiar la señal, la frecuencia, la amplitud y la componente continua, cada una independientemente.
    A continuación se observa parte de la programación y como se trataron los comandos:
    https://drive.google.com/file/d/0BwDQ6y87zjPMYVBUeUJiU29wdVk/view?usp=sharing
    En el siguiente video se demuestra como aparecieron los datos en el generador:
    http://youtu.be/R0Zcg7tITQU
    Proyecto elaborado por DANAE PAEZ, RUBEN CORTEZ
    Estudiantes de Telecomunicaciones en el IUT Dr Federico Rivero Palacios, Caracas-Venezuela

    ResponderEliminar