Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 0 visitas.| 3553018 Visitas (desde Dic. 2011), hoy: 287 Visitas 8695 Pag. Vistas , ultimos 36 dias: 11165 Visitas. 37845 Pag. Vistas. Tu IP: 3.133.141.166
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

Construye tu robot por menos de 20€ con Arduino. Arduino Robot Ps (17)

Arduino Robot Ps

Una vuelta de tuerca…

Habiendo programado nuestro pequeño robot para sus “primeros pasos” el peque de la casa me ha preguntado: “¿y por que no puedo usar el mando de la tele para moverlo?”

A lo que he respondido y por que no?

Me he puesto manos a la obra, y en lugar de utilizar el mando del TV, me he dicho, “y si usamos directamente el teléfono por bluethooth y nos evitamos las interferencias infrarrojas y poder usarlo en la calle con un amplio radio de alcance? …

Aquí la solución:

0Image00001

Un modulo BT HC-05 para el arduino (ebay 1,65€)

Antes de implementar el programa definitivo, debemos probar el funcionamiento del Arduino con el puerto serie virtual que se genera en la comunicación entre el programa y la placa Arduino, para ello, utilizaremos un nuevo código, que nos permitirá revisar las ordenes que enviamos desde el puerto serie de la aplicación y verificar el movimiento en el robot.

Elevamos el robot del suelo para que queden las ruedas en el aire y enviamos el siguiente programa:

1/*********************************************************************************************
2 
3  Tutorial: Robot Ps
4  Autor: www.pesadillo.com - 12 Agosto 2015
5 
7 
8  Experimento... Implementamos un sistema de control remoto por Bluetooth. En lugar de que el
9  robot realice una tarea programada, controlaremos sus movimientos.
10  PRIMERA PARTE: Mediante la consola de puerto serie del programador Arduino (monitor serie) enviaremos los
11  comandos para verificar el funcionamiento del programa sobre el Arduino Robot Ps
12 
13 ********************************************************************************************/
14#define MOTOR1_CTL1  8  // I1
15#define MOTOR1_CTL2  9  // I2
16 
17#define MOTOR2_CTL1  6  // I3
18#define MOTOR2_CTL2  7  // I4
19 
20int speakerPin = 13;  // declaro pin para speaker
21 
22char Bluetooth; //crear variable que almacena los datos recibidos por el puerto serie
23String inputString=""; //definimos a nulo la cadena de texto
24 
25void setup()
26{
27  // Setup pins for motor 1
28   pinMode(MOTOR1_CTL1,OUTPUT);
29   pinMode(MOTOR1_CTL2,OUTPUT);
30 
31  // Setup pins for motor 2
32   pinMode(MOTOR2_CTL1,OUTPUT);
33   pinMode(MOTOR2_CTL2,OUTPUT);
34 
35   // set the speaker pin mode to output
36   pinMode(speakerPin, OUTPUT);
37   Serial.begin(9600);   // set the baud rate to 9600, same should be of your Serial Monitor
38}
39 
40//pitidos (subproceso)
41void pitido(char pitidos_num)
42{
43// el sibproceso pitido(3) Haría 3 pitidos)
44   for (int pip=0; pip<pitidos_num; pip++)
45     {
46     for (int i=300; i>0; i--)
47     {
48        digitalWrite(speakerPin, HIGH);
49        delayMicroseconds(200);
50        digitalWrite(speakerPin, LOW);
51        delayMicroseconds(200);
52 
53     }
54        delay (50);
55     }
56}
57 
58// Antes de nada, obtenemos la lista de comandos de la aplicacion para manejar el robot
59// La nuestra utiliza los siguientes caracteres:
60//F = Arriba
61//L = Izquierda
62//R = Derecha
63//D = Abajo
64//E = Stop (aqui utilizaremos el pitido)
65 
66//Empieza el ciclo
67void loop()
68{
69 
70if(Serial.available()){//Si hay datos en el puerto serie
71  while(Serial.available())
72    {
73      char inChar = (char)Serial.read(); //lee la entrada de datos
74      inputString += inChar;        //compone la cadena como la recibe por el puerto serie
75    }
76    Serial.println(inputString); //damos saliada a la cadena de texto almacenada.
77    while (Serial.available() > 0)
78    { Bluetooth = Serial.read() ; }      // borrar buffer (datos almacenados) del puerto serie
79 
80  // avance
81  if (inputString=="F") //En caso de recibir
82  {
83   digitalWrite(MOTOR1_CTL1,LOW);
84   digitalWrite(MOTOR1_CTL2,HIGH);
85   digitalWrite(MOTOR2_CTL1,LOW);
86   digitalWrite(MOTOR2_CTL2,HIGH);
87   //delay (tarea[i]); No utilizamos los delay ya que funcionara mientras reciba el comando por el puerto serie
88  }
89  //giro derecha
90  if (inputString=="R")
91  {
92   digitalWrite(MOTOR1_CTL1,LOW);
93   digitalWrite(MOTOR1_CTL2,HIGH);
94   digitalWrite(MOTOR2_CTL1,HIGH);
95   digitalWrite(MOTOR2_CTL2,LOW);
96   //delay (tarea[i]);
97  }
98  //giro izquierda
99  if (inputString=="L")
100  {
101   digitalWrite(MOTOR1_CTL1,HIGH);
102   digitalWrite(MOTOR1_CTL2,LOW);
103   digitalWrite(MOTOR2_CTL1,LOW);
104   digitalWrite(MOTOR2_CTL2,HIGH);
105   //delay (tarea[i]);
106  }
107  //atras
108  if (inputString=="D")
109  {
110   digitalWrite(MOTOR1_CTL1,HIGH);
111   digitalWrite(MOTOR1_CTL2,LOW);
112   digitalWrite(MOTOR2_CTL1,HIGH);
113   digitalWrite(MOTOR2_CTL2,LOW);
114   //delay (tarea[i]);
115  }
116  //para
117  if (inputString=="E")
118  {
119   digitalWrite(MOTOR1_CTL1,LOW);
120   digitalWrite(MOTOR1_CTL2,LOW);
121   digitalWrite(MOTOR2_CTL1,LOW);
122   digitalWrite(MOTOR2_CTL2,LOW);
123   pitido(2);
124   //delay (tarea[i]);
125  }
126 
127  inputString = "";//Poner vaciar variable
128  //cerramos la recepcion datos serie
129  }
130 
131//fin del ciclo del programa
132}

Una vez realizada la programación, nos vamos a HERRAMIENTAS / MONITOR SERIE y enviamos las letras escogidas para efectuar los diferentes movimientos… veremos que el robot interpreta el comando recibido por el puerto serie y lo ejecuta.

En la siguiente entrada, realizaremos la conexión del modulo e implantaremos el nuevo programa.

En este punto, he de mencionar que todo lo publicado hasta ahora en este “paso a paso” funciona perfectamente, intentar utilizar códigos de terceros o recopilados de foros me ha llevado a callejones sin salida y pérdidas de tiempo.

Escribe un comentario

Tu comentario