Start-up: Idea a Start-up


La semana pasada se llevó a cabo en México la 2da edición de Campus Party México. Por cuestiones ajenas a mi y que en realidad no cuestiono ni un poco [es decir, hice cosas realmente memorables esa semana] no asistí. El próximo año espero asistir.

Bien entre los varios recurso que estuvieron, me gustó el siguiente video sobre Starts Up. Con información muy buena para los que estamos en el medio. Disfrútenlo.

Lo próximo...



Lo próxima entrada es posible que trate de control por medio de Matlab utilizando Arduino. Adentrado un poco en esto me encontré con un tutorial muy interesante del señor Giampiero Campa donde por medio de una clase que él había desarrollado es posible manejar las IO de Arduino en Matlab, casi casi en modo nativo. Me agradó mucho ya que crea el perfecto enlace entre estos 2 elementos dejando un amplio rango de aplicaciones, tanto prácticas como meramente fútiles.

En cuanto tenga algo en concreto lo subiré con la explicación y capturas como es costumbre. Saludos a todos y felices vacaciones.

P.D. Gracias a Mr. Campa por tener la amabilidad de enviarme el packcage IO.

Robot Sumo con Arduino 4ta Parte [Video y prueba]

En esta última sección se muestra el funcionamiento del bot al 100% y se prueba con objetos inmóviles y la foto de arriba para que puedan ver como quedó.

Les dejo estos 2 links para que lo vean funcionando.

Espero que les haya servido este tutorial.

Robot Sumo con Arduino 3ra Parte [Sensores]

Esta sección es para explicar los sensores. Utilizamos solo 2 tipos de sensores, los infrarrojos que son los CNY70 y los de impacto que no son otra cosa que interruptores.

Sensores Infrarrojos
La configuración de los CNY70 es la siguiente:
En este diagrama de apoyo la única diferencia es que en vez de conectarse al pin 4 digital de Arduino se conecta a los pines 0 y 1 ANALÓGICOS que son SensDel=IR delantero y SensTras=IR trasero correspondientemente.


Sensores de impacto

Como les comentaba los sensores de impacto son solo interruptores de presión normalmente abiertos, acondicionado de tal manera que parezcan antenas y al chocar con algo y cerrarse el interruptor nos manda la señal de estado lógico alto.

La configuración es la siguiente
La resistencia R es de 220. Pin_digital van conectado a 7 de Arduino.
Se reproduce este circuito para los pines 8, 9 y 10, que son nuestros sensores de impacto. Y se colocan a discreción del diseño como extremidades del robot.


Robot Sumo con Arduino 2da Parte [Motores]


En esta ocasión les traigo la configuración de los motores utilizando un driver de motor L293 que es un puente H. Es muy sencillo de utilizar y configurar.
- Las terminales 3 y 6 son para los conectores del motor derecho.
- Las terminales 11 y 14 son para los conectores del motor izquierdo.
- Terminales 2 y 7 van a las salidas digitales de Arduino, los pines 3 y 4. [M. Derecho]
- Terminales 10 y 15 van a las salidas digitales de Arduino, los pines 5 y 6. [M. Izquierdo]
- El pin 8 es la entrada de voltaje que alimentará a los motores. Si gustan pueden usar Vcc1.

La siguiente tabla explica el funcionamiento de este integrado.
Por esa razón las terminales 1 y 9 van a Vcc y los cambios de estado estarán dados desde el programa de Arduino.

Es todo, es realmente simple. Espero que les haya servido, siguiente entrega los sensores.

Robot Sumo con Arduino 1ra Parte [Código]


Esta es la entrega del código que utilicé para hacer un SumoBot usando arduino. En esta primera parte anexo los códigos, posteriormente incluiré el diagrama de los circuitos y fotos del mismo.

__________________________________________________________________
/*Sumobot sobre piso blanco y círculo negro
el valor de color negro en los sensores infrarrojos
es de 480 .Se usó la comunicación serial para obtener estos valores.

*/

//Declaración de los pines
int motorR1 = 3;
int motorR2 = 4; //motor derecho
int motorL1 = 5;
int motorL2 = 6; //motor izquierdo
int sensFder = 7; //sens frontal derecho
int sensFizq = 8; //sens frontal izquierdo
int sensTder = 9; //sens trasero derechp
int sensTizq = 10; //sens trasero izquierdo
int sensDel = 0; //sens IR delantero
int sensTras = 1; //sens IR trasero


//Declaración de I/O's
void setup()
{
pinMode (motorR1, OUTPUT);
pinMode (motorR2, OUTPUT);
pinMode (motorL1, OUTPUT);
pinMode (motorL1, OUTPUT);
pinMode (sensFder, INPUT);
pinMode (sensFizq, INPUT);
pinMode (sensTder, INPUT);
pinMode (sensTizq, INPUT);
}



void loop()
{
float buf1, buf2, valord, valort;
valord=analogRead(sensDel);
valort=analogRead(sensTras);
buf1=valord*500/1024;
buf2=valort*500/1024;

//El bot se activa al presionar cualquier sensor de impacto

//si toca detecta linea blanca adelante retrocede, gira 4s. a la izquierda
//y continua haca atrás
if(buf1 >= 480) //mayor o igual que 480 es negro
{
atras();
izquierda();
delay(400);
atras();
}

//si detecta linea blanca atras avanza, gira 4s a la izquierda
//y continua haca adelante
if(buf2 >= 480) //mayor o igual de 480 es negro
{
adelante();
izquierda();
delay(400);
adelante();
}


//----------- ACCIONES IMPACTO-------------
if(digitalRead (sensFder)==HIGH )
{
golpeFder();
}

if(digitalRead (sensFizq)==HIGH)
{
golpeFizq();
}

if(digitalRead (sensTder)==HIGH)
{
golpeTder();
}

if(digitalRead (sensTizq)==HIGH)
{
golpeTizq();
}

}


//---------------MOVIMIENTOS--------------
int adelante()
{
digitalWrite (motorR1, LOW);
digitalWrite (motorR2, HIGH);
digitalWrite (motorL1, HIGH);
digitalWrite (motorL2, LOW);
}

int atras()
{
digitalWrite (motorR1, HIGH);
digitalWrite (motorR2, LOW);
digitalWrite (motorL1, LOW);
digitalWrite (motorL2, HIGH);
}

int izquierda()
{
digitalWrite (motorR1, LOW);
digitalWrite (motorR2, HIGH);
digitalWrite (motorL1, LOW);
digitalWrite (motorL2, HIGH);
delay(100);
}

int derecha()
{
digitalWrite (motorR1, HIGH); //L
digitalWrite (motorR2, LOW);
digitalWrite (motorL1, HIGH);
digitalWrite (motorL2, LOW);//L
delay(100);
}

//--------------GOLPES-------------------

int golpeFder()
{
atras();
delay(1000);
derecha();
delay(300);
adelante();
}

int golpeFizq()
{
atras();
delay(1000) ;
izquierda();
delay(300);
adelante();
}

int golpeTder()
{
adelante();
delay(1000);
izquierda();
delay(300);
atras();
}

int golpeTizq()
{
adelante();
delay(1000);
derecha();
delay(300);
atras();
}

__________________________________________________________________