Microbot basado en nano Arduino: 7 pasos (con fotos)

Microbot basado en nano Arduino: 7 pasos (con fotos)

Tabla de contenido:

Anonim

Esta instrucción fue creada para ser ingresada en el Desafío de robots. Si gano, las partes, por supuesto, entrarán en robots como este. Las notas sobre cómo incluir algunos de los componentes en los paquetes de premios se dan en el último paso. Tengo 28 años, así que, por supuesto, no voy a por los premios para estudiantes.

Creé esto como un proyecto simple para aquellos que recién comienzan en robótica. Es relativamente económico, requiere herramientas mínimas y es fácil de construir. Una vez finalizado, tiene una plataforma robótica expandible que cabe en la palma de su mano y se puede programar fácilmente en el entorno Arduino.

Aquí está conduciendo en un triángulo, sin ningún complemento especial

En las instrucciones te mostraré cómo:

  1. Modificar los servos para rotación continua.
  2. Coloca los ejes de la pista en los servos.
  3. Hacer una batería personalizada
  4. Cablealo con unas cuantas conexiones.
  5. Ensamble
  6. Programalo
  7. Personalizar
Estas y otras adiciones se pueden mezclar para hacer su propio micro robot personalizado

Para la plataforma básica se necesitan los siguientes suministros:

un arduino nano

una pequeña batería recargable

Un par de servos de 9 g, modificados para rotación continua.

parte de un conjunto de pistas de Tamiya

un zócalo de inmersión de 40 pines

un borrador de goma

algunos tirantes

Suministros:

Paso 1: Construcción: Modificar los Servos.

Los microservicios modificados para una rotación continua son el corazón de este diseño. Te dan mucho del hardware; Los motores, la caja de cambios, el controlador y los circuitos de control, todo en un paquete pequeño y barato, y en esta implementación también actúan como el marco del robot (visto en el siguiente paso). Hay muchas instrucciones para modificar servos para rotación continua. Pero aquí es cómo lo hice para los servos micro 9g que estoy usando.

Imágenes:

  1. Retire los pequeños tornillos y abra la caja
  2. Cortar los cables del potenciómetro, estos son donde se adjuntarán las resistencias
  3. Si tiene resistencias de montaje en superficie, coloque 5k (1k a 10k debería funcionar) en la almohadilla de cada una de las almohadillas laterales a la almohadilla central, si no tuerce un par de resistencias de orificio pasante como esta
  4. Rompa el tope del potenciómetro con unos alicates pequeños, necesita la olla para su uso como cojinete rotatorio
  5. suelda en las resistencias, si usaste el par de orificios pasantes, te recomiendo que las juntes en una cinta eléctrica como tal. Para el servo que se colocará en la parte frontal, corte una muesca para que el cable salga por el costado para que no salga de debajo del robot.
  6. (no se muestra) Antes de cerrar, coloque un agujero en la parte posterior de la caja opuesta a la ranura para montar la rueda guía (rueda sin dientes).
  7. Use algunos cortadores de ángulo o alicates para quitar cualquier brida de montaje de las cajas y lije o lije las crestas que dejan, esto puede estorbar más adelante.

Paso 2: Construcción: taladrar los cubos al tamaño

  1. Corte los tallos en los cubos para que se adhieran al borde interior de las pistas cuando estén instalados. Esto se puede hacer con una sierra de cuchillo de hobby o una sierra de afrontamiento. ¡Ten cuidado de no cortarte la mano! Por seguridad, sostuve el cubo en una tabla de cortar en su lado con mis dedos en el otro lado de la rueda desde el vástago, y luego la giré contra la tabla de cortar arrastrando el cuchillo a lo largo, de esta manera, si te deslizas, simplemente cortarás el tablero.
  2. Taladre el orificio para el perno que lo sujetará al servo en la tapa de la rueda motriz (las ruedas con dientes). Puede estar usando el tornillo de cubo que vino con el servo. Cualquiera que sea el tornillo que utilice y que se ajuste en la ranura del servo, taladre el orificio para que encaje.
  3. Dado que los pequeños centros de Tamiya no encajan en los extremos del servo, deberá perforarlos a la medida. Como estos son pequeños y ya tienen orificios, no necesita un taladro, pero necesitará algo para sujetarlos. Los servos varían en tamaño de spline, por lo que no puedo darte un tamaño exacto para usar. Le sugeriría que fuera un poco pequeño, y que aumentara hasta que el cubo se ajuste bien, estos estarán transmitiendo el par de torsión. También debe tener cuidado con la profundidad para que los centros no rocen contra el cuerpo del servo. Mida su servo spline y haga que la profundidad del orificio de montaje sea un poco menos que esto. Sugiero el método de colocar una cinta de enmascarar alrededor de su broca a la profundidad que desea detener. Luego, puede sostenerlo al lado del servo spline antes de perforar para confirmar que es un poco menos.
  4. Para instalar los concentradores, el rodillo debe estar conectado con uno de los tornillos del kit de Tamiya, u otro tornillo de la longitud correcta. Obtuve el mío de mi tarro de hardware al azar y no tengo un tamaño específico. Apriételo lo suficiente para que no apriete la rueda.
  5. En el otro lado, use uno de los tornillos que vienen con los servos a través del orificio en la rueda del conductor para ajustarlo.

Paso 3: Construcción: hacer la batería

Cualquier batería que encaje en el chasis funcionaría.

Fui con NiCd porque tenía algunas baterías de teléfonos inalámbricas viejas con 1/3 de pilas AAA en ellas que podía hacer en los paquetes de aproximadamente 5 V que necesitaba. Cada celda es 1.2, así que usé 4 para obtener 4.8 v. Tampoco se requieren circuitos especiales para cargar.

Si puedes conseguir un LiPoly y un cargador, como el tipo que venden en eBay para los helicópteros Syma 107, creo que eso también funcionaría bien.

Las fotos explican cómo hice esto mejor que las palabras pueden:

  1. Imagen de la batería como es, tuve más de uno de estos
  2. Retire la envoltura retráctil
  3. Córtalos cuando sea necesario, para que puedan doblarse en forma.
  4. Coloca la cuarta celda, tomada de otro paquete en su lugar.
  5. Doblarlo para darle forma
  6. Envuélvelo en cinta aislante.
  7. Imagina cómo encaja en el chasis.
Para esta batería, el método de carga más sencillo es conectar clips Gator a las salidas de un cargador de NiCd de 1.5-9V y a los cables de la batería. Consulte el diagrama de cableado en el paso 4 para ver cómo se puede lograr esto cuando se ensambla.

Paso 4: Construcción: Conecte los cables al zócalo

Se utiliza un zócalo para montar el Arduino Nano en el robot, además de hacer que el Arduino sea extraíble para que se pueda usar en otros proyectos, esto simplifica la conexión al resto de la máquina. Alternativamente, puede comprar una pequeña placa para el pan por $ 4 (como se muestra en la segunda imagen a continuación de sparkfun.com) y amárrelo en la parte superior de manera similar para obtener un diseño más modular.

En mi caso, conecté los servos a D11 y D10, pero podría usar cualquiera de las salidas PWM, como se muestra en la primera imagen a continuación. Luego conecté la batería a una clavija libre en el zócalo entre las clavijas que conecté a la alimentación del arduino (Vin) y los servos, para poder encenderlos y apagarlos con puentes. Rompí las patas del zócalo hacia afuera para que sean fáciles de acceder para las expansiones. Tenga en cuenta que esta ubicación también hace que la conexión USB y los botones de reinicio sean fácilmente accesibles, al final del robot.

Para cargar la batería, se puede aplicar energía colocando los puentes en la posición de apagado (almacenados en el otro lado del zócalo) y conectando los cables de carga a la batería +, y a tierra. Nuevamente, para esta batería, el método de carga más sencillo es conectar clips de cocodrilo a las salidas de un cargador de NiCd de 1.5-9V. Si está utilizando un tipo diferente de carga de la batería en consecuencia.

Paso 5: Construcción: Ensamble el Microbot

Aquí es donde entra el borrador. Si tiene los conjuntos de servo / ruedas ensamblados en el paso 2, puede colocarles las correas con el servo que tiene un cable que viene del lado vertical y el otro tendido con su extremo largo apuntando hacia la vertical, como se muestra en la primera imagen. Colóquelos en tensión ligera, de modo que las correas sean casi planas pero no enseñadas, y mida la separación entre los servos. Cortar una sección de borrador para cuña en este espacio. Esto funciona como una suspensión, lo que le permite al marco cierta flexibilidad mientras lo mantiene en su lugar bajo la mayoría de las fuerzas que encontrará. Es la parte blanca de la foto.

La batería encaja en el hueco entre los servos verticales y planos y el zócalo se encuentra en la parte superior (segunda imagen). Asegúrese de que las patas de los enchufes estén aplastadas hacia afuera para facilitar el acceso. Luego use una o dos bridas para atar todo el conjunto, asegúrese de que la hebilla esté en la parte delantera o trasera, no debajo o encima del zócalo, no quiere que impida la distancia al suelo o se conecte a la Arduino. Si está utilizando la variante mini-breadboard, es posible que tenga que archivar el canal del medio un poco más profundo para que se pueda colocar el cierre de cremallera.

Finalmente, conecta ese Arduino (tercera imagen), puedes hacer los puentes simplemente doblando un poco de alambre pelado con unos alicates.

Paso 6: Programación: Funcionamiento básico

Esto está construido con un Arduino para que pueda programarlo para hacer lo que quiera. Aquí están los fundamentos. Las siguientes expansiones se cubren a continuación. Para probar cosas, puede cargar el código y mover los puentes tanto a la posición de encendido.

Realmente, el código básico para construir es simplemente esto:

// --------------------------- Start Code

#incluir // Carga comandos para crear objetos Servo que generan señales PWM

Servo leftDrive; // crear un objeto servo para controlar un servo

Servo rightDrive; // otro objeto servo para el lado izquierdo

configuración del vacío ()

{

leftDrive.attach (11); // une el servo en el pin 9 al objeto servo

rightDrive.attach (10); // une el servo en el pin 9 al objeto servo

}

bucle de vacío ()

{

// Aquí ponemos comandos que impulsan los servos.

// usa los comandos

//rightDrive.write(número 0-180);

//leftDrive.write(cualquier número 0 a 180);

// para configurar los servos, girar 0 está lleno de una manera, 180 está lleno de la otra, 90 debería estar cerca de la parada

// el camino hacia adelante depende de tus servos

}

// código final -------------------------------------

Así que eso te da una idea de lo simple que puede ser esto.

Aquí hay un ejemplo de código básico para simplemente conducir en un cuadrado. Tenga en cuenta que el video fue con los retrasos establecidos en 600, lo que dio como resultado un triángulo, 450 le da más de un cuadrado. (el código comienza después de esta línea):

//------------------------------------------------------------------------------------------

#incluir // Carga comandos para crear objetos Servo que generan señales PWM

Servo leftDrive; // crear un objeto servo para controlar un servo

Servo rightDrive; // otro objeto servo para el lado izquierdo

int pos = 0; // variable para almacenar la posición del servo

configuración del vacío ()

{

leftDrive.attach (11); // une el servo en el pin 9 al objeto servo

rightDrive.attach (10); // une el servo en el pin 9 al objeto servo

}

bucle de vacío ()

{

// ejemplo de rutina, unidades en un cuadrado

girar a la derecha();

impulsar();

girar a la derecha();

impulsar();

girar a la derecha();

impulsar();

girar a la derecha();

impulsar();

}

// las siguientes funciones son ejemplos, podrías hacer fácilmente el robot

// muévete en caminos curvos o a velocidades variables cambiando estos números

// 0 es full forward, 90 es stop y 180 es full reversa. El caso puede ser el

// opuesto a tu compilación

// gira a la derecha unos 90 grados

void turnRight ()

{

leftDrive.write (0);

rightDrive.write (180);

retraso (450);

}

// gira a la izquierda unos 90 grados

void turnLeft ()

{

leftDrive.write (180);

rightDrive.write (0);

retraso (450);

}

// conduce directamente durante 1 segundo

void driveForward ()

{

leftDrive.write (180);

rightDrive.write (180);

retraso (1000);

}

// maneja hacia atrás durante 1 segundo

void driveBackward ()

{

leftDrive.write (0);

rightDrive.write (0);

retraso (1000);

}

// código final ---------------------------------------------

Entonces, el punto de esto es ser una plataforma. Hacer que un robot solo maneje puede ser divertido, pero lo más divertido siempre es hacer tus propias cosas. Como este es un arduino, hay un código de ejemplo para agregar todo tipo de controles, dispositivos y sensores para personalizar tu bot.

Paso 7: Personalízalo

La idea que estoy compartiendo aquí es cómo hice una plataforma robótica de control simple y compacta. Siento que mostrarte exactamente qué hacer con él no tendría mucho sentido, puedes hacer lo que quieras con él.

Dicho esto, haré algunas sugerencias sobre cómo podría expandir este robot sin reinventar la rueda. Se sugieren otros Instructables para entrar en los detalles de bajo nivel de estas características, y se proporcionan enlaces para comprarlos cuando estén disponibles. No hice estos Instructables, pero se integrarán bien, eso es lo bueno de una comunidad en línea después de todo:

Pinza

La forma más fácil de agregar una pinza es con otro micro servo, uno que no esté modificado para una rotación continua. Usted agregaría su control al código simplemente adjuntando otro servo y dándole un comando de posición, como se ve en el paso 6.

Aquí hay un ejemplo que cabría en:

El mismo método podría usarse para agregar una cuchara u otro manipulador también.

Si solo quieres comprar uno, algo como esto funcionaría bien:

Jameco pinza de 1.3 pulgadas

Radio control

Una cosa divertida para agregar a cualquier robot, hay montones de tutoriales sobre cómo hacer esto con un Arduino.

Puedes hacerlo con diente azul (fácil pero caro)

O podrías usar un XBee (fácil y menos costoso)

Dado que el XBee es más ancho que el Arduino nano y no se puede enchufar, sugeriría colocarlo sobre el nano y cablearlo a su alrededor.

Los ejemplos del código necesario están ampliamente disponibles, aquí hay una biblioteca XBee para arduino.

Por supuesto, podrías obtener una tabla XBee / Arduino nano, como esta de la tienda de robots, y tu robot tendría una cola elegante.

Puede hacerlo con un receptor transmisor simple (más barato, pero requiere saber lo que está haciendo):

Detectar movimiento (PIR)

Esto es realmente muy fácil, un sensor PIR compara el mapa infrarrojo de su entorno con uno que ha construido a lo largo del tiempo. Así se detectan los cambios. Se pueden encontrar por $ 10 en varias tiendas, incluyendo sparkfun y robotshop

Estos tienen todo integrado, y el pin de salida se eleva durante unos segundos cuando se detecta movimiento. Todo lo que hace es darle energía a la batería y conectar la salida a un pin de entrada en el Arduino. Luego establece una interrupción o verifica el estado del pin. Como se ve en la personalización de la plataforma anterior. Esto le permite a su robot reaccionar cuando alguien se acerca.

Detección de rango ultrasónico

Los buscadores de rango ultrasónicos son una forma económica de detectar la distancia en una dirección con una confiabilidad decente en el rango de aproximadamente 0,1 a 10 metros. Ellos marcan los pulsos ultrasónicos a aproximadamente 10Hz y detectan cuánto tiempo tardan en regresar. La mayoría recoge obstáculos en un tramo cónico, por lo que pueden ser engañados por cosas que no están realmente en el camino. No es LADAR o visión por computadora, pero cuesta 1/1000 tanto.

Esto también está en la personalización del robot que se muestra aquí. Utilicé un buscador de rango HC-SR04 y esta biblioteca. Acabo de recibir eso de eBay por $ 6.

También hay soporte para el buscador de rango PING:

E incluso si usas el más barato que usé, esto puede ayudarte a entender cómo funciona.

GPS

Si quiere darle a su robot un sentido de su lugar en el mundo, aquí hay un código de ejemplo para usar un módulo GPS de paralaje en Arduino Playground.

Pasos futuros

Estoy planeando algunos proyectos divertidos con estos. Una de ellas será agregar cámaras inalámbricas, control remoto y pequeñas pinzas, y luego hacer pequeños cursos de obstáculos para que exploren en equipos.

Otro proyecto divertido sería montar un Kinect en el techo y hacer que un montón de estos con tecnología inalámbrica actúen como un enjambre en formación.

En general, voy a utilizarlos como base para muchos proyectos, y de esta forma voy a entrar en más detalles sobre los posibles complementos. Me complacería mucho ver esto utilizado en otros Instructables y ampliado. Después de todo, a veces quieres usar un robot, pero no quieres escribir sobre cómo desarrollar las cosas básicas.

Segundo premio en el

Desafío del robot

4 personas hicieron este proyecto!

  • srijan sehdev lo hizo!

  • lunacava lo hizo!

  • lunacava lo hizo!

  • TrevorB23 lo hizo!

¿Hiciste este proyecto? ¡Compártelo con nosotros!

Recomendaciones

  • Máquina clasificadora de tornillo

  • PCB BOT (Siguiendo línea, Robot controlado por Bluetooth y para evitar obstáculos en una sola PCB)

  • Clase de internet de las cosas

  • Concurso de jardinería

  • Desafío IoT

  • Concurso de carpintería

145 discusiones

0

AndyGadget

Hace 7 años en Introducción

Realmente, realmente limpio!

Es difícil hacer un robot estrecho cuando usas servos de rotación continua debido a la altura de la caja de cambios, pero has superado esto con las pistas y el método de montaje asimétrico.

Solo para aclarar, ¿ha perforado un orificio para el piñón loco en la cubierta inferior del servo en línea con el eje? Debe haber estado bastante apretado allí, las tablas de esos servos de 9 g no dejan mucho espacio.

3 respuestas 0

Paul hace cosas AndyGadget

Responder hace 7 años sobre Introducción

Para montar el rodillo, lo hice tal como lo dijiste, se atornilla en un agujero perforado en la cubierta posterior opuesta al eje. Tenía que asegurarme de no colocar el tornillo demasiado profundo para que no golpeara el tablero, pero en los que estaba usando el tablero estaba inclinado para que no estuviera demasiado cerca de la pared posterior en ese momento. Me he dado cuenta de que con estos baratos no siempre es la misma inclinación, pero en los lugares donde se instalaron, de modo que el lado más cercano está en el extremo, quiero montar la rueda, solo la inclino hacia el otro lado antes de ponlo de nuevo cuando haga la modificación.

0

srijan sehdev Paul hace cosas

Responder hace 2 años.

¿Pero por qué los servos no reciben señal?

0

Paul hace cosas srijan sehdev

Responder hace 2 años.

Supongo que debería haberlo mencionado, puede mover la conexión del servo y luego cambiar el pin que se está utilizando para PWM en su código. Compruebe el esquema de su Arduino dado para averiguar qué pines son compatibles con PWM.

www.arduino.cc/en/Main/arduinoBoardNano

De acuerdo con esto, el Nano Board puede PWM 6 pines, son 3,5,6,9,10,11. También hay bibliotecas como esta que te permiten ejecutar un servo en cualquier pin de salida:

arduiniana.org/libraries/pwmservo/

0

Vishalsa hace 1 año

¿CONTROLAMOS ESTE ROBOT USANDO MÓVIL / WIFI TAMBIÉN?

2 respuestas 0

Keersop Vishalsa Responder hace 7 meses.

Hola hola, Esta es mi primera prueba para hacer un nanobot y mi primera prueba para usar un arduino. Leí el proyecto original en http: //www.instructables.com/id/Arduino-Nano-base …

pero me falta la parte de la lista y soy un novato. ¿Puedes decirme qué partes usaste?

Saludos cordiales Arnold

0

Paul hace cosas Vishalsa Responder hace 1 año

Si esto es una pregunta, ¿podría ser más específico?

0

srijan sehdev

hace 1 año

¿Se puede usar un controlador de motor l9110 con este proyecto?

2 respuestas 0

Paul hace cosas srijan sehdev

Responder hace 1 año

Claro, será muy similar a usar un L298 o L293 como se muestra aquí

www.instructables.com/id/Arduino-DC-motor-speed-and-direction-L293D/

Así que termina siendo un proyecto completamente diferente. La razón para usar estos pequeños servos es que usted obtiene el controlador, el controlador, el motor y la caja de cambios en un solo paquete. Si está utilizando estos controladores, puede (y debe) utilizar un motor de CC en lugar de un servo.

Si tiene sus propios motores y una forma de conducir las pistas con ellos (generalmente una caja de cambios y otros detalles mecánicos), parece que el I9110 funcionará bien. Dice que tiene 800 mA por canal, que es más que el L293D que muchas personas usan (500 mA si recuerdo bien). Pero necesitarás dos ya que parece ser solo un canal.

Vea el tutorial de mi robot lego para ver un ejemplo de cómo usar el L298N para conducir motores de CC en un robot de tanque similar. Aunque eso es con un microcontrolador PIC y es ordenado por un receptor remoto RC.

0

srijan sehdev Paul hace cosas

Responder hace 1 año

Gracias

0

Voltrex085

hace 1 año

Entonces, si quisiera convertir este robot en uno autónomo como sugirió, ¿qué programa / código de Arduino usaría para él?

0

srijan sehdev

Hace 2 años

#incluir

int rSpeed ​​= 0;

int lspeed = 0;

Servo rightservo;

Servo leftservo;

configuración vacía () {

Comienzo en serie (9600);

rightservo.attach (11);

leftservo.attach (10);

rightservo.write (90);

leftservo.write (90);

}

bucle de vacío () {

if (serial.available ()> 0) {

comando = Serial.read ();

detener();

switch (comando) // estas son las letras y números que la aplicación envía al módulo Bluetooth

caso 'F':

adelante();

rspeed = 200;

velocidad 1 = 200;

descanso;

case'l ':

izquierda();

descanso;

case'r ':

Correcto();

descanso;

caso 'D'

rightservo.write (90); // si se desconecta, apague los motores

leftservo.write (90);

descanso;

}

}

void forward () // define que es forward

{

rightservo.write (rspeed = 200);

leftservo.write (lspeed = 200);

}

void back () // define lo que está al revés

{

rightservo.write (lspeed);

leftservo.write (rspeed);

}

void left () // define lo que queda

{

rightservo.write (rspeed);

leftservo.write (rspeed);

}

void right () // define lo que es correcto

{

rightservo.write (lspeed);

leftservo.write (lspeed);

}

void stop () // define que es stop

{

rightservo.write (90);

leftservo.write (90);

}

¿Son correctos estos códigos?

0

TrevorB23

Hace 2 años

Compré una tonelada de sensores. No estoy seguro de qué capacidades obtendrá el Iron Midget, pero estoy bastante seguro de que va a arrastrar un remolque lleno de las entrañas de una pistola láser como una pieza de artillería.

1 respuesta 0

Paul hace cosas TrevorB23

Responder hace 2 años.

¡Me gusta! Es genial ver a otro construido. Después de 5 años y tantos puntos de vista, estoy considerando una actualización. Tal vez el control remoto y una cámara. También parece que ahora puedes comprar microservos continuos listos para usar, y tal vez podría mejorar la forma en que se sacan los pines. Cuando hice esto, acababa de salir de la universidad y ahora soy ingeniero en SpaceX, debería poder mejorar al menos un poco: P

0

srijan sehdev

Hace 2 años

¿Qué pasa si conecto el cable de señal al pin digital incorrecto?

1 respuesta 0

Paul hace cosas srijan sehdev

Responder hace 2 años.

Si conecta el cable de la señal de servo al pin incorrecto, entonces el robot no se moverá. Los servos se quedan quietos cuando no reciben señal. El voltaje más alto en este robot es de 5 V, por lo que no es suficiente para brindar por nada, sin importar cómo se conecte.

0

robt33

hace 3 años

¿Cuál es la hipótesis de este robot?

3 respuestas 0

Paul hace cosas robt33

Responder hace 2 años.

No entiendo la pregunta. Supongo que si se considera al robot como un experimento, la hipótesis es "apuesto a que podría usar estos microservos para hacer un pequeño tanque muy simple" y la conclusión fue que sí podría.

0

robt33 Paul hace cosas

Responder hace 2 años.

¿Cómo podría atornillar la otra rueda en la parte trasera como la que no es el conductor?

0

Paul hace cosas robt33

Responder hace 2 años.

No hay truco especial para eso. Acabo de encontrar un tornillo que tenía el tamaño correcto para que la rueda loca gire y la longitud correcta para pasar dentro y dentro del plástico en el otro lado, pero no demasiado lejos para evitar entrar en los engranajes. Luego perforé un pequeño agujero en el estuche y até la rueda con él.