Creando un tren con juguetes y un arduino – Parte 2

Ayer compré un tren de juguete y le puse motor, pilas e interruptor. Hoy estuve trabajando en una “pista” (no logré hacer vías, se resbalaba el plástico de las ruedas). Y luego, en una barrera automática.

Para trabajar sobre una superficie que pueda cambiar de lugar (para liberar la mesa), usé unas baldosas grandes que tengo en casa. En ellas fui pegando distintas cosas para guiar el tren, empezando por un tapacanto de melamina que tenía guardado:

Después de varias pruebas llegué a la solución pegando precintos mediante cinta de papel, pero podrían usarse muchas otras soluciones.

Una vez que el trencito ya funcionaba correctamente armé la barrera con el Arduino:

¿Qué se necesita?

  • Placa Arduino
  • Protoboard (placa de prueba / placa sin soldaduras)
  • Cables
  • Servo motor
  • Sensor ultrasónico (distancia)
  • Optativo: un buzzer, batería de 9v y conector Plug Jack para conectarlo al Arduino y usar la barrera sin la computadora

Conexiones

Lo ideal para hacer este montaje es ya haber utilizado por separado cada uno de los tres elementos: el servo motor, el buzzer y el sensor de distancia / ultrasónico.

  • El servo: va conectado al pin 9, a tierra y a VCC (aquí explicación sobre cómo conectar un servo)
    • cable anaranjado: va a un pin de tipo PWD (los de la tilde de la eñe), en este caso al 9
    • cable color marrón: GND (tierra)
    • cable color rojo: +5v
  • El sensor ultrasónico:
    • VCC – a 5v
    • TRIG – al pin 12
    • ECHO – al pin 13
    • GND – a gnd
  • El buzzer
    • Pin 10 (el positivo)
    • GND (el negativo)
Esquema de conexiones armado en Tinkercad (simulador de circuitos)
Esquema de conexiones armado en Tinkercad (simulador de circuitos)

Programa

Aquí comparto el código utilizado para que la barrera se levante cuando el sensor ultrasónico detecta algo cerca:

#include <Servo.h>
#define PIN_TRIG 12
#define PIN_ECO 13
int buzzer = 10;

int tones[ ] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440,466, 494};
                //DO, DO#, RE, RE#, MI, FA, FA#, SOL, SOL#, A, A#, B
                //Estas son las frecuencias que corresponden a cada nota, para usar en el buzzer
Servo myservo;
int pos = 0;
void setup() {
  Serial.begin (9600);
  pinMode(PIN_TRIG, OUTPUT);
  pinMode(PIN_ECO, INPUT);
  pinMode(buzzer, OUTPUT);
  myservo.attach(9);
}

void loop() {
//Este fragmento de código es para tomar la información del sensor ultrasónico HC-SR04
long duracion, distancia;
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);

duracion=pulseIn(PIN_ECO, HIGH);
distancia=(duracion/2)/29;
//Aquí hacemos que la distancia se muestre en el "Monitor Serial"
Serial.println(distancia);
//Acá ponemos una condición: si la distancia es menor a doce cm, que suene el buzzer y se baje la barrera
if (distancia < 12) {
  //suena el buzzer en la frecuencia indicada por la matriz que está en 
        tone(buzzer, tones[8]);
        delay(50);
        noTone(buzzer);    
        delay(50);
        tone(buzzer, tones[8]);
        delay(50);
        noTone(buzzer);    
        delay(50);
  for (pos = 130; pos >= 0; pos -= 1) { // Lleva la variable pos desde 130 grados hasta 0, de uno en uno
    myservo.write(pos);              // pone el servo en la posición indicada por la variable pos
    delay(15);                       // espera 15ms 
  }      
  delay(1000);
  for (pos = 0; pos <= 130; pos += 1) { // lleva la variable pos desde 0 hasta 130
    myservo.write(pos);              // pone el servo en la posición indicada por la variable pos
    delay(15);                       // espera 15ms
  }
  
        
}
}

Creando un tren con juguetes y un arduino – Parte 1

Ayer fui al supermercado y vi que vendían un trencito y sus vagones. Me compré algunos, porque ya venía pensando en crear un trencito con una barrera y más cosas interesantes.

Locomotora y vagones de juguetes comprados en el supermercado
Locomotora y vagones de juguetes compradas en el supermercado

Busqué entre todas mis cajitas de “cosas que me servirían para robótica” y elegí un motorreductor, un interruptor, y un portapilas para dos pilas doble A.

También puede hacerse con un motor DC pero seguramente sería bastante más complicado armarlo porque el motorreductor amarillo clásico de Arduino ya viene con dos ruedas que encajan perfectamente. Yo soldé varias conexiones, pero también puede utilizarse cinta de papel (se desarma a cada rato, por eso es mejor soldar, pero no es imprescindible si no se sabe cómo hacerlo).

Del portapilas salen dos cables. Uno se suelda al motor y el otro al interruptor. Y se agrega otro cable desde el interruptor hasta el motor.
Portapila con un cable soldado al interruptor, y el otro suelto, que se conecta al motor. Del interruptor sale otro cable que se conecta al otro extremo del motor.
Portapila, interruptor y motor ya soldados. Para mantener el equilibrio, le agregué dos rueditas del tren original, sostenidas con un palito de brochette.
Portapila, interruptor y motor ya soldados. Para mantener el equilibrio, le agregué dos rueditas del tren original, sostenidas con un palito de brochette. Todo pegado con cinta de papel para el prototipo. Si funciona, trabajo en emprolijar y hacer más firmes los armados.

Safari: mirando los objetos cotidianos desde otro lugar

El presente material es un trabajo realizado para la diplomatura UXDI (Experiencia de Usuario y Diseño Interactivo). A quienes estén interesados/as en el tema, les recomiendo esta diplomatura, es excelente.

Paralelamente, para quienes visitan este blog, se trata de un ejemplo de cómo se puede aprovechar el Branching Scenario de H5P.