Show Posts
Pages: [1] 2 3
1  International / Español / Re: ¿Que tipo de Xbee me recomendais? on: July 18, 2013, 05:09:19 am
Gracias por la informacion, yo comprare ese que ha salido de 63mw que alcanza hasta 1,5 km aproximadamente
2  International / Español / Re: ¿Que tipo de Xbee me recomendais? on: July 17, 2013, 05:15:20 pm
Muchas gracias Sergegsx!
3  International / Español / ¿Que tipo de Xbee me recomendais? on: July 17, 2013, 02:17:56 pm
Buenas tardes,

Estoy pensando en realizar un proyecto que me permitar la realizacion de una comunicacion inalambrica para recopilar diferentes tipos de datos (datos sencillos, como podria ser temperatura). He mirado por Internet que existen los Xbee normales y los PRO, éstos últimos, pueden abarcar distancias de 1500 metros aproximadamente. Tambien he visto que hay los de Serie 1 y Serie 2 que no son compatibles entre si pero los de serie 1 sirven para redes peer-to-peer o peer-to-multipoint mientras que los de serie 2 sirven para redes mesh o utilizarlos de repetidor. Mi pregunta a todo este rollo es la siguiente:

¿Que tipo de estos me recomendariais para utilizarlo? (Quiero uno que me sirva para todo y sino es posible por lo menos que abarque una compatibilidad para realizar proyectos del 80%)

Gracias!!!
4  International / Proyectos / Re: Problemas con servos on: September 24, 2012, 07:05:20 am
Hola a todos de nuevo!

Mirad he borrado todo el codigo y estoy trabajando con dos servos exclusivamente, a ver si analizando el problema asi, se puede solucionar. Quiero poner dos servos a 90 grados, pero que no se muevan como me esta ocurriendo. El codigo es el siguiente:

#include <Servo.h>

int direccion = 6;
int radar = 5;
Servo servoDireccion, servoRadar;
void setup()
{
  servoDireccion.attach(direccion);
  servoRadar.attach(radar);
}

void loop()
{
  servoDireccion.write(90);
  delay(100);
  servoRadar.write(90);
  delay(100);
}

Como se puede observar los dos servos tendrian que estar a 90 grados y bien quietecitos, pues lo unico que hacen es coger y moverse como si un garbanzon esta en la boca de un viejo...
5  International / Proyectos / Re: Problemas con servos on: September 24, 2012, 04:48:19 am
Recuerda que al usar la librería servo se deshabilita el pwm en los pins 9 y 10. En la Arduino Mega los pins que se deshabilitan son el 11 y 12. No sé si la cosa puede venir por aquí.

Hola Cheyenne, estoy utilizando la Arduino Mega para Android. Utilizo los pines 5 y 6 porque tengo dos pero solo utilizo un servo porque como el problema no lo soluciono... Pero vaya uso el 5 o el 6.
6  International / Proyectos / Problemas con servos on: September 24, 2012, 04:30:20 am
Hola a todos!

Estoy haciendo un vehiculo explorador que tiene una base metalica con dos motores DC en la parte trasera y un servo en la parte delantera con una rueda central que hace que gire hacia el lado derecho/izquierdo o no gire y se quede de manera central. Con el tema de las ruedas traseras no tengo ningun problema porque cuando quiero que gire hacia un lado o hacia otro, le bajo la velocidad con la sentencia "analogwrite(motorX, valor)". El problema esta con el servo, que cuando mano la señal para que gire en un sentido u otro, se bloquea todo el codigo. El codigo que llevo incorporado es uno para el GPS+SD+ultrasonido, mas el que he comentado de controlar la velocidad. He probado con alimentaciones externas para cada cosa y sigue sin ir, y problema de programacion no es porque siempre pasa cuando introduzco el attach para el servo.

Muchas gracias chicos!

Javier
7  International / Español / Re: Se me bloquea los servos al incorporar GPS on: September 10, 2012, 12:20:19 pm
He probado alimentar los circuitos a parte y que la conexion de informacion se haga mediante Arduino, es decir, que los pines de 5V y GND de la placa no los utilizo. Os voy adjuntar el codigo haber si es problema de codigo pero no lo creo...

// Librerias para el GPS, modulo SD y servo
#include <SoftwareSerial.h>
#include <SD.h>
#include <Servo.h>

// Definicion de constantes
#define rxPin 4
#define txPin 2
#define MEM_PW 8

// Definicion de variables
const int pingPin = 3;
int pos = 0;
int i = 0;
int indices[13];
int cont = 0;
int conta = 0;
int k = 0;
char inBuffer[300] = "";
char *p;
byte byteGPS = 0;

SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
File myFile;
Servo myservo, myservo2;

void setup() {
 
  // initialize serial communication:
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  myservo.attach(5);
  myservo2.attach(6);
 
  //setup for mySerial port
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  mySerial.begin(4800);

  //setup for Serial port
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  pinMode(MEM_PW, OUTPUT);
  digitalWrite(MEM_PW, HIGH);

  if (!SD.begin(53)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  if (SD.exists("GPS1.csv")) {
    Serial.println("exists.");
  }
  else {
    Serial.println("doesn't exist.");
  }

  // open a new file and immediately close it:
  // setup the GPS module en la posicion
  Serial.println("Configurando GPS...");
  delay(1000);
  mySerial.println("$PSTMNMEACONFIG,0,4800,64,1");     // configure NMEA sentences to show only GGA sentence
  delay(100);

  // command for setting time and position
  mySerial.println("$PSTMINITGPS,4315.280,N,0255.267,W,0016.0,24,01,2008,17,15,00");
}

void loop()
{
    for(int j = 0; j<=1000;j++)
  {
   // nothing happens after setup finishes.
  byteGPS = 0;
  i = 0;
  while(byteGPS != 42){          // read the GGA sentence
    byteGPS = mySerial.read();
    inBuffer=byteGPS;
    i++;
  }
  k = 0;
//Serial.println("Escribiendo en el fichero...");
  //while(inBuffer[k] != 42){
      myFile = SD.open("GPS1.CSV", FILE_WRITE); //{
     
      //Serial.println(inBuffer[k]); // write the GGA sentence
      //inBuffer[k]= p[k];
     
      //myFile.print(inBuffer[k]);
      if (strncmp(inBuffer, "$GPRMC",6) == 0)
      {
       Serial.print(inBuffer[k]);
       /*if(inBuffer[k]=='W')
       {
         Serial.println();
       }*/
        Serial.print(inBuffer[7]);
        Serial.print(inBuffer[8]);
        Serial.print(':');
        Serial.print(inBuffer[9]);
        Serial.print(inBuffer[10]);
        Serial.print(':');
        Serial.print(inBuffer[11]);
        Serial.print(inBuffer[12]);
        Serial.print(inBuffer[17]);
        Serial.print(inBuffer[20]);
        Serial.print(inBuffer[21]);
        Serial.print(inBuffer[22]);
        Serial.print(inBuffer[23]);
        Serial.print(inBuffer[24]);
        Serial.print(inBuffer[25]);
        Serial.print(inBuffer[26]);
        Serial.print(inBuffer[27]);
        Serial.print(inBuffer[28]);
        Serial.print(inBuffer[31]);
        Serial.print(inBuffer[32]);
        Serial.print(inBuffer[33]);
        Serial.print(inBuffer[34]);
        Serial.print(inBuffer[35]);
        Serial.print(inBuffer[36]);
        Serial.print(inBuffer[37]);
        Serial.print(inBuffer[38]);
        Serial.print(inBuffer[39]);
        Serial.println();
         myFile.print(inBuffer[7]);
        myFile.print(inBuffer[8]);
        myFile.print(':');
        myFile.print(inBuffer[9]);
        myFile.print(inBuffer[10]);
        myFile.print(':');
        myFile.print(inBuffer[11]);
        myFile.print(inBuffer[12]);
        myFile.print(inBuffer[17]);
        myFile.print(inBuffer[20]);
        myFile.print(inBuffer[21]);
        myFile.print(inBuffer[22]);
        myFile.print(inBuffer[23]);
        myFile.print(inBuffer[24]);
        myFile.print(inBuffer[25]);
        myFile.print(inBuffer[26]);
        myFile.print(inBuffer[27]);
        myFile.print(inBuffer[28]);
        myFile.print(inBuffer[31]);
        myFile.print(inBuffer[32]);
        myFile.print(inBuffer[33]);
        myFile.print(inBuffer[34]);
        myFile.print(inBuffer[35]);
        myFile.print(inBuffer[36]);
        myFile.print(inBuffer[37]);
        myFile.print(inBuffer[38]);
        myFile.print(inBuffer[39]);
      //  myFile.print(inBuffer[40]);
      //  myFile.print(inBuffer[41]);
        myFile.println();
      }
myFile.close();
      //Serial.println("done.");
    //}
    /*else {
      // if the file didn't open, print an error:
      Serial.println("error opening test.txt");
    }*/
    k++;
   

    // establish variables for duration of the ping,
    // and the distance result in inches and centimeters:
    long duration, inches, cm;

    // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
    // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
    pinMode(pingPin, OUTPUT);
    digitalWrite(pingPin, LOW);
    delayMicroseconds(2);
    digitalWrite(pingPin, HIGH);
    delayMicroseconds(5);
    digitalWrite(pingPin, LOW);

    // The same pin is used to read the signal from the PING))): a HIGH
    // pulse whose duration is the time (in microseconds) from the sending
    // of the ping to the reception of its echo off of an object.
    pinMode(pingPin, INPUT);
    duration = pulseIn(pingPin, HIGH);

    // convert the time into a distance
    inches = microsecondsToInches(duration);
    cm = microsecondsToCentimeters(duration);
/*
    Serial.print(inches);
    Serial.print("in, ");
    Serial.print(cm);
    Serial.print("cm");
    Serial.println();
*/
    delay(100);
    if(cm<=70)
    {
//      digitalWrite(13,HIGH);
      myservo.write(130);
      delay(1000);
      long durationI, inchesI, cmI;

      // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
      // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
      pinMode(pingPin, OUTPUT);
      digitalWrite(pingPin, LOW);
      delayMicroseconds(2);
      digitalWrite(pingPin, HIGH);
      delayMicroseconds(5);
      digitalWrite(pingPin, LOW);

      // The same pin is used to read the signal from the PING))): a HIGH
      // pulse whose duration is the time (in microseconds) from the sending
      // of the ping to the reception of its echo off of an object.
      pinMode(pingPin, INPUT);
      durationI = pulseIn(pingPin, HIGH);

      // convert the time into a distance
      inchesI = microsecondsToInches(durationI);
      cmI = microsecondsToCentimeters(durationI);
      delay(100);

      //digitalWrite(13,LOW);
      myservo.write(30);
      delay(1000);

      long durationD, inchesD, cmD;

      // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
      // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
      pinMode(pingPin, OUTPUT);
      digitalWrite(pingPin, LOW);
      delayMicroseconds(2);
      digitalWrite(pingPin, HIGH);
      delayMicroseconds(5);
      digitalWrite(pingPin, LOW);

      // The same pin is used to read the signal from the PING))): a HIGH
      // pulse whose duration is the time (in microseconds) from the sending
      // of the ping to the reception of its echo off of an object.
      pinMode(pingPin, INPUT);
      durationD = pulseIn(pingPin, HIGH);

      // convert the time into a distance
      inchesD = microsecondsToInches(durationD);
      cmD = microsecondsToCentimeters(durationD);
     
      myservo.write(100);
      delay(1000);
   
      delay(100);
      if(cmI<cmD)
      {
        Serial.println("girar izquierda");
        myservo2.write(140);
        delay(1000);
      }
      if(cmI>=cmD)
      {
        Serial.println("girar derecha");
              digitalWrite(13,HIGH);
        myservo2.write(60);
        delay(1000);
      }
    }
    if(cm>=71)
    {
      //myservo.write(100);
      myservo2.write(100);
            digitalWrite(13,LOW);
    }
  }
}

long microsecondsToInches(long microseconds)
{
  // According to Parallax's datasheet for the PING))), there are
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  // second).  This gives the distance travelled by the ping, outbound
  // and return, so we divide by 2 to get the distance of the obstacle.
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}
8  International / Español / Re: Se me bloquea los servos al incorporar GPS on: September 10, 2012, 04:35:44 am
Hola!

Te explico, alimento la placa de arduino con pilas. Luego desde los pines de 5V y GND saco su positivo y negativo respectivamente y los conecto a un pcb donde conecto todos los sensores, servos, modulos etc... que requieren esos 5V.
9  International / Español / Se me bloquea los servos al incorporar GPS on: September 10, 2012, 02:59:32 am
Buenos dias,

Estoy haciendo un robot explorador autonomo, dicho robot, lleva incorporado un modulo gps, un modulo sd (para guardar el track por donde va circulando), y un par de servos que uno se encarga de llevar la direccion mediante una rueda loca y el otro se encarga de mover el sensor de proximidad para detectar objetos. Si trabajo con el modulo gps, sd por separado, funciona correctamente y si trabajo con los servos y el sensor de proximidad tambien funciona correctamente, el problema bien cuando junto el codigo que el gps bloquea literalmente el funcionamiento de los servos y el sensor de proximidad. Alguien sabe porque pasa esto?
Otro dato que se me olvida es que utilizo un placa Arduino Mega 2560 ADK for android.

Gracias!!
10  International / Español / Re: ¿Como mover un vehiculo hacia a un punto con GPS? on: May 23, 2012, 10:02:18 am
Muchas gracias!! Es cierto que los libros no muerden, pero si alguien me puede orientar mejor que mejor! Gracias de todos modos.
11  International / Español / Re: ¿Como mover un vehiculo hacia a un punto con GPS? on: May 22, 2012, 03:33:24 pm
Bufff no se si esa seria una buena opcion, a priori para que si pero el problema de eso seria que estaria continuamente valorando y para moverse a lo mejor 10 metros se podria tirar dos horas, digo yo no se. La idea parece buena, pero otra cosa como le digo yo al arduino o de que manera le ordeno que vaya alli?
12  International / Español / Re: ¿Como mover un vehiculo hacia a un punto con GPS? on: May 22, 2012, 12:37:29 pm
Y como podria plasmar eso en programacion. Mi problema es que no se bien como enfocarlo no se desde donde puedo empezar
13  International / Español / ¿Como mover un vehiculo hacia a un punto con GPS? on: May 22, 2012, 09:51:22 am
Buenas tardes,

Estoy trabajando con un modulo GPS que va instalado en una placa de Arduino UNO, hace algun tiempo consegui almacenar la informacion de las coordenadas por donde pasaba mi vehiculo, pero ahora tengo que conseguir que vaya desde un punto A hacia un punto B. El punto A ya se sabe porque sera desde donde parte, el problema viene que no se como hacer para ir hacia el punto B que tambien seria una coordenada conocida. Alguna idea que veais factible?

Gracias!!
14  International / Español / Re: DUDA: Elección de sensores de proximidad on: May 11, 2012, 11:26:49 am
Gracias miniduino y nayma!!!

Creo que me voy a decantar por este que cubre un rango de 3 cm a 4m asi que supongo que lo podre ajustar a mis necesidades. Lo del barco es cierto que es mas complejo pero como con el tutor aun no hemos llegado a un acuerdo... pues me toca hacer las cosas asi.

http://www.cooking-hacks.com/index.php/shop/sensors/proximity/ultra-sonic-range-module.html

15  International / Español / Re: DUDA: Elección de sensores de proximidad on: May 10, 2012, 11:01:23 am
Si es un coche, deberia detectar a si a bote pronto, paredes, piedras mas grandes que el y no se si fuese posible que detectera el terreno (pero eso ya se va de madre)

Y si es un barco, no se que puede haber en un lago, como no detecte animales (patos), algun puentecillo de esos donde la gente se hecha fotos... no se me ocurre nada mas.

En temas de velocidad se movera como mucho a no ser que mi tutor me diga lo contrario entre 2 a 5 kmh como mucho y el barco lo mismo pero en nudos.

El tamaño tampoco sabemos cual sera pero supongo que lo que ocupa una protoboard (10x15) o asi.
Pages: [1] 2 3