Pequeño vagabundo
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
| ||||
|
Aplicaciones y servicios en línea
|
Acerca de este proyecto
Antecedentes
Mi sobrino (9 años) y mi sobrina (7 años) se volvieron locos cuando vieron un video de un robot para evitar obstáculos que construí hace un tiempo.
Lamentablemente, el tutorial para ese nunca llegará, ya que es anterior a la muerte de mi disco duro y al descubrimiento de los beneficios de las copias de seguridad y DropBox, GitHub, etc. :)
Así que decidí ver si podía pensar en algo que fuera a la vez (un poco) educativo y divertido. Simplifiqué mi juguete tanto como pude y se me ocurrió este pequeño vehículo.
El chasis es una caja que originalmente contenía palitos de cangrejo. Resulta que el tamaño era perfecto. (Gracias papá por masticarlos por la caja llena:D) Un recipiente de margarina probablemente también sería del tamaño correcto.
Como descargo de responsabilidad, describiré aquí cómo construimos esos robots y dejamos que los niños hagan casi todo el trabajo ellos mismos. No recomiendo, de ninguna manera, hacerlo. Depende de usted, como padre / tutor / tía / tío / niñera responsable ... determinar si se puede confiar en cada niño en cuestión para las diversas tareas. Aunque no era realmente necesario, se obligó a los niños a usar gafas protectoras cuando trabajaban en los robots. Las cajas que usamos estaban hechas de plástico muy suave, así que dejé que mi sobrino y mi sobrina las cortaran ellos mismos después de una sesión informativa sobre los peligros de apuntar con el cuchillo para alfombras hacia ellos mismos o sus propias extremidades. pequeño destornillador eléctrico inalámbrico para limitar las posibles lesiones.
Me complace informar que el botiquín médico que tenía en espera aún no se ha utilizado. :)
Pero para reiterar, ¡TÚ eres el adulto!
Circuito
Hice el circuito un poco más complicado de lo que podría tener conectando ambos servos de la forma en que lo hice.
Para los niños ... Sigo diciendo eso, pero los 'niños' incluían a mi hermana (35 años) y mi mamá (65 años), quienes disfrutaron la tarde de Robots-and-Crafts tanto como la hijos reales. :)
Entonces, para mi audiencia, imprimí la imagen en una página A4 tratando de mantener la escala de la placa de pruebas 1:1 con el mundo real y les di todos los cables de puente del color y la longitud correctos.
Una vez que el circuito está ensamblado, simplemente cargue el programa en el Arduino. Incluí comentarios en el código para ayudarlo a modificar un poco el código, si es necesario. Si todo está conectado correctamente, los servos deberían comenzar a girar y los LED parpadearán. Y si coloca la mano frente al sensor, un servo servo se detendrá y el otro girará brevemente en la otra dirección.
¡Todo listo!
Ensamblaje
Es hora de tomar su 'chasis' y hacerle agujeros.
En la parte delantera, marque la posición de su sensor y corte los agujeros para los 'ojos'.
En el costado, mida bien dónde desea que vayan las ruedas y corte un agujero en el costado, en el borde de la parte inferior de la caja, lo suficientemente grande para que el servo entre, pero lo suficientemente pequeño para que los soportes de montaje no entren. mediante.
Con una broca pequeña, taladre 2 pequeños orificios para los LED.
En la parte inferior de la caja, hacia atrás, atornille la rueda giratoria (o péguela con pegamento caliente).
Ahora está listo para poner todo en la caja y pegar el material en su lugar.
Monte las ruedas en los servos una vez que se haya fijado el pegamento.
¡Decora la caja! (¡Y publica fotos en ellos! ¡Sería genial!)
Ponga las pilas y observe cómo el pequeño rover se mueve por la habitación al azar hasta que se agotan. O te cansas del ruido. ¡O el perro lo agarra! :D
Código
- LittleRover
LittleRover Arduino
Esta es la versión del código para el sensor ultrasónico de 4 pines#include/ * Si tiene un sensor con solo 3 pines, Descomente la línea 6 y comente la línea 7 * /// int distanciaR =A0; // Disparar la distancia de pinint =6; // Activar pinint pingDelay =10; // longitud del pulso del sensor ultrasónicoint distanceR =A0; // Echo pinint led1 =8, led2 =9; // LEDsServo leftPower; Servo rightPower; unsigned long flashTime; unsigned long nextSensorTime; float obstacleDist =0.0f; void setup () {//Serial.begin(115200); leftPower.attach (3); rightPower.attach (5); leftPower.write (90); rightPower.write (90); pinMode (led1, SALIDA); pinMode (led2, SALIDA); retardo (1000);} bucle vacío () {LED (); / * Esto evita que el sensor agote la batería demasiado rápido al limitar las comprobaciones a 5 veces por segundo. Puede aumentar este número para comprobar con menos frecuencia, pero luego podría chocar contra la pared ... * / if (millis () - nextSensorTime> 200) {nextSensorTime =millis (); / * Hago 2 lecturas aquí porque a veces el sensor se confunde y no devuelve nada ... * / float reading1 =TakeReading (); retraso (100); lectura flotante2 =TakeReading (); Serial.println (lectura1); Serial.println (lectura2); // Entonces tomamos la mayor distancia para obstacleDist obstacleDist =reading1> =reading2? lectura1:lectura2; // Si la distancia es inferior a 10 cm, gire; de lo contrario, siga recto. if (obstacleDist <10.0f) {//Serial.println("turn "); turno(); } else {//Serial.println("forward "); adelante(); }}} LED vacíos () {if (millis () - flashTime> 1000) flashTime =millis (); if (millis () - flashTime <500) {digitalWrite (led1, LOW); digitalWrite (led2, ALTO); } else if (millis () - flashTime> 500) {digitalWrite (led1, HIGH); digitalWrite (led2, BAJO); }} void forward () {/ * Si encuentra que su robot está retrocediendo, cambie el 135 y el 45 alrededor. * / leftPower.write (135); rightPower.write (45);} void turn () {/ * Si quieres que tu robot gire hacia el otro lado, quita el comentario de las líneas 92-93 a continuación y comenta 95-96 * / //leftPower.write(90); //rightPower.write(135); leftPower.write (45); rightPower.write (90); delay (350);} float TakeReading () {unsigned long echo =0; resultado flotante =0.0f; pinMode (distancia, SALIDA); digitalWrite (distancia, BAJA); delayMicroseconds (2); digitalWrite (distancia, ALTA); delayMicroseconds (pingDelay); digitalWrite (distancia, BAJA); pinMode (distanciaR, ENTRADA); escritura digital (distancia R, ALTA); echo =pulseIn (distanciaR, ALTA, 38000); resultado =echo / 58.138; devolver resultado;}
Esquemas
littlerover_87IypZOgwm.fzzProceso de manufactura