Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Buscatrazos

Componentes y suministros

Arduino UNO
Uno de los componentes principales.
× 1
Sensor ultrasónico - HC-SR04 (genérico)
Uno de los componentes principales.
× 1
Batería de iones de litio de 1000 mAh
Uno de los componentes principales.
× 2
Cátodo común difuso RGB
Uno de los componentes principales.
× 1
Buzzer
Uno de los suministros necesarios.
× 1
Resistencia de 330 ohmios
Uno de los suministros necesarios.
× 3
Cable USB-A a B
Uno de los suministros necesarios.
× 1
Cables de puente (genéricos)
Uno de los suministros necesarios.
× 20

Herramientas y máquinas necesarias

Arduino Materia 101
Una de las máquinas principales.
Destornillador Digilent
Una de las herramientas necesarias.

Aplicaciones y servicios en línea

Arduino IDE
Una de las aplicaciones principales.
Autodesk Fusion 360
Uno de los servicios en línea.

Acerca de este proyecto

Sinopsis

El documento representa el diseño de un robot que evita obstáculos con la capacidad de detectar objetos en su curso y navegar alrededor de esos objetos tomando una decisión adecuada. Demuestra una unidad robótica basada en Arduino UNO y Adafruit Motor Shield donde el código está escrito en Arduino IDE Software. La evitación de obstáculos es uno de los factores clave considerables para el desarrollo de robots móviles. La implementación del sensor de distancia ultrasónico colocado en el micro-servomotor proporcionó más precisión para detectar los objetos circundantes. Este robot diseñado es diferente a otros robots disponibles debido a la integración de un Zumbador Magnético y un LED Difuso CC RGB mediante el cual ha logrado la capacidad de indicar el procedimiento de detección de objetos y controlar la velocidad de los Motores Reductores de CC en 4 tipos de circunstancias. Como robot autónomo, se ejecutó la potencialidad de maniobrar en condiciones desconocidas sin generar ningún impacto. Además, esta tecnología diseñada se puede implementar para operaciones militares y asistencia humanitaria mejorando la capacidad de detección de objetos en diversos entornos.

Multimedia

Interpretación

Las bibliotecas incluidas agregadas en el código de bloque son las siguientes,

  AFMotor.h 
Servo.h

Las conexiones definidas asignadas en el código en línea son las siguientes,

define BuzzPIN A0

define TrigPIN A1

define EchoPIN A2

define LEDBPIN A3

define LEDGPIN A4

define LEDRPIN A5

define DCMROFF 25

El programa anticipado proporcionado en la arquitectura del robot es el siguiente,

  • Capacidad para detectar objetos en su camino por rangos de distancia predeterminados.
  • Busque un nuevo camino comparativamente a una dirección abierta.
  • Indique la detección de objetos y controle su velocidad.

Todas las operaciones se realizarían de forma autónoma sin el requisito de ningún control externo.

Este proyecto presentó los detalles esenciales para el diseño de un robot móvil que se implementó con la capacidad de evitar obstáculos, navegar por sí solo e indicar el movimiento de los motorreductores de CC al encender el color selectivo de un LED difuso CC RGB en 4 situaciones diferentes. El robot diseñado mostró una variación con respecto a otros robots que evitan obstáculos en términos de indicación de sonido de luz, control de velocidad del motor y técnica de maniobras intensas al detectar obstáculos de 180 grados frente al robot; que fue una tarea difícil de combinar mediante una programación adecuada. El robot fue construido en la plataforma Arduino UNO Rev3 con la ayuda del software Arduino IDE v1.8.5 para la integración del código de ensamblaje adecuado para adquirir las funciones necesarias. Esa integración hizo que el robot fuera capaz de realizar las operaciones requeridas sin interacción humana y con una precisión considerable. Con nuevos desarrollos al combinar una cámara de transmisión y tecnología inalámbrica, este robot se puede usar de manera efectiva para operaciones militares para detectar diferentes tipos de actividades, mientras que sus unidades básicas pueden ser útiles para ayudar a los humanos con discapacidad visual o audible a notificar la ubicación de los objetos circundantes.

Exhibición del proyecto Youth Zest

Código

  • Programa
Programa Arduino
El programa de ensamblaje, para configurar en consecuencia esta máquina autónoma.
 #include  // Agregar Adafruit Motor Shield para la biblioteca del kit Arduino. # Include  // Agregar biblioteca de Servo Motor. # Definir BuzzPIN A0 // Asignar el PIN A0 como BuzzPIN (Conectar el PIN de Arduino UNO "A0" con el PIN de Buzzer "+"). # Definir TrigPIN A1 // Asignar el PIN A1 como TrigPIN (Conectar el PIN de Arduino UNO "A1" con el sensor de sonda ultrasónico "Trig" PIN). # Definir EchoPIN A2 // Asignar PIN A2 como EchoPIN (Conectar el PIN Arduino UNO "A2" con el PIN "Trig" del sensor de sonda ultrasónico). # Definir LEDBPIN A3 // Asignar PIN A3 como LEDBPIN (Conectar Arduino UNO "A3" PIN con PIN de cátodo común difuso RGB "LEDB"). # Definir LEDGPIN A4 // Asignar PIN A4 como LEDGPIN (Conectar PIN de Arduino UNO "A4" con PIN de cátodo común difuso RGB "LEDG"). # Definir LEDRPIN A5 // Asignar PIN A5 como LEDRPIN (Conecte el PIN "A5" de Arduino UNO con el PIN "LEDR" de cátodo común difuso RGB). # Define DCMROFF 25 // Esto establece la compensación para permitir diferencias entre los dos motores de tracción de CC.AF_DCMo tor M1 (1, MOTOR12_64KHZ); // Cree DCMotor # 1 usando la salida M1, establezca la frecuencia PWM de 64kHz.AF_DCMotor M2 (2, MOTOR12_64KHZ); // Cree DCMotor # 2 usando la salida M2, establezca la frecuencia PWM de 64 kHz. Servo SER1; // Crear objeto Servo para controlar Servo.int Search (void) {// Declaración de variable de tipo entero. Duración de flotación =0.0; // Declaración de variable de tipo flotante. flotador CM =0.0; // Declaración de variable de tipo flotante. digitalWrite (TrigPIN, BAJO); // Salida TrigPIN como 0V (nivel lógico bajo). delayMicroseconds (2); // Retraso por 2us, envía 10 us pulso alto al sensor de sonda ultrasónico "TrigPIN". digitalWrite (TrigPIN, ALTO); // Salida TrigPIN como 5V (nivel lógico alto). delayMicroseconds (10); // Retraso de 10us. digitalWrite (TrigPIN, BAJO); // Salida TrigPIN como 0V (nivel lógico bajo). Duración =pulseIn (EchoPIN, HIGH); // Empiece a contar el tiempo, hasta volver a EchoPIN de nuevo a la lógica "Nivel alto" y poner el "Tiempo" en la variable llamada "Duración". CM =(Duración / 58,8); // Convertir la distancia en CM. return CM; // Regresar a CM.} Int RightDistance, LeftDistance; // Distancias a ambos lados.float Distance =0.00; // Declaración de variable de tipo flotante.void setup () {// Bucle de configuración. pinMode (BuzzPIN, SALIDA); // Declare BuzzPIN como "PIN de salida". pinMode (TrigPIN, SALIDA); // Declare TrigPIN como "PIN de salida". pinMode (EchoPIN, ENTRADA); // Declara EchoPIN como "PIN de salida". pinMode (LEDBPIN, SALIDA); // Declare LEDBPIN como "PIN de salida". pinMode (LEDGPIN, SALIDA); // Declare LEDGPIN como "PIN de salida". pinMode (LEDRPIN, SALIDA); // Declare LEDRPIN como "PIN de salida". SER1.attach (10); // Conecta el Servo en el pin 10 (SER1 en el kit Adafruit Motor Shield para Arduino al objeto Servo).} Void loop () {// Bucle principal. SER1.escribir (80); // Le dice al Servo que se coloque a 80 grados (mirando hacia adelante). retraso (100); // Retraso de 0,1 s. Distancia =Buscar (); // Midiendo la distancia en CM. if (Distancia <30) {// Si se encuentra un obstáculo en 30 cm. digitalWrite (BuzzPIN, ALTO); // Salida BuzzPIN como 5V (nivel lógico alto). escritura digital (LEDBPIN, BAJA); // Salida LEDBPIN como 0V (nivel lógico bajo). escritura digital (LEDGPIN, BAJA); // Salida LEDGPIN como 0V (nivel lógico bajo). escritura digital (LEDRPIN, ALTA); // Salida LEDRPIN como 5V (nivel lógico alto). M1.setSpeed ​​(100); // Reduce la velocidad. M2.setSpeed ​​(100); // Reduce la velocidad. ChangePath (); // Si el avance está bloqueado Cambiar de dirección. } else if ((Distancia> =30) &&(Distancia <60)) {// Si se encuentra un obstáculo entre 30 cm y 60 cm. digitalWrite (BuzzPIN, BAJO); // Salida de BuzzPIN como 0V (nivel lógico bajo). escritura digital (LEDBPIN, ALTA); // Salida LEDBPIN como 5V (nivel lógico alto). escritura digital (LEDGPIN, BAJA); // Salida LEDGPIN como 0V (nivel lógico bajo). escritura digital (LEDRPIN, BAJA); // Salida LEDRPIN como 0V (nivel lógico bajo). M1.setSpeed ​​(150); // La velocidad aumenta ligeramente. M2.setSpeed ​​(150); // La velocidad aumenta ligeramente. Adelante (); // El robot se mueve a la dirección de avance. } else if ((Distancia> =60) &&(Distancia <90)) {// Si se encuentra un obstáculo entre 60 cm y 90 cm. digitalWrite (BuzzPIN, BAJO); // Salida de BuzzPIN como 0V (nivel lógico bajo). escritura digital (LEDBPIN, BAJA); // Salida LEDBPIN como 0V (nivel lógico bajo). escritura digital (LEDGPIN, ALTA); // Salida LEDGPIN como 5V (nivel lógico alto). escritura digital (LEDRPIN, BAJA); // Salida LEDRPIN como 0V (nivel lógico bajo). M1.setSpeed ​​(200); // Acelerar. M2.setSpeed ​​(200); // Acelerar. Adelante (); // El robot se mueve a la dirección de avance. } else {// Si el obstáculo no se puede encontrar en 90 cm. digitalWrite (BuzzPIN, BAJO); // Salida de BuzzPIN como 0V (nivel lógico bajo). escritura digital (LEDBPIN, ALTA); // Salida LEDBPIN como 5V (nivel lógico alto). escritura digital (LEDGPIN, ALTA); // Salida LEDGPIN como 5V (nivel lógico alto). escritura digital (LEDRPIN, ALTA); // Salida LEDRPIN como 5V (nivel lógico alto). M1.setSpeed ​​(250); // La velocidad aumenta por completo. M2.setSpeed ​​(250); // La velocidad aumenta por completo. Adelante (); // El robot se mueve a la dirección de avance. }} void ChangePath () {// Bucle de cambio de ruta. Detener (); // Robot Stop. Hacia atrás (); // El robot corre hacia atrás. Detener (); // Robot Stop. SER1.write (12); // Compruebe la distancia a la derecha. retraso (500); // Retraso de 0,5 s. RightDistance =Buscar (); // Establecer la distancia correcta. retraso (500); // Retraso de 0,5 s. SER1.write (160); // Verifica la distancia a la izquierda. retraso (1000); // Retraso de 1 s. LeftDistance =Buscar (); // Establecer la distancia a la izquierda. retraso (500); // Retraso de 0,5 s. SER1.escribir (80); // Regresar al centro. retraso (500); // Retraso de 0,5 s. CompareDistance (); // Encuentra la distancia más larga.} Void CompareDistance () {// Bucle de comparación de distancia. if (RightDistance> LeftDistance) {// Si Derecha está menos obstruida. Gire a la derecha (); // Robot Gire hacia la derecha. } else if (LeftDistance> RightDistance) {// Si la izquierda está menos obstruida. Gire a la izquierda (); // Robot Gire en dirección a la izquierda. } else {// Si ambos están igualmente obstruidos. Giro de vuelta (); // Robot Turn Around. }} void Forward () {// Bucle de avance. M1.run (ADELANTE); // Gire DCMotor # 1 hacia Adelante. M2.run (ADELANTE); // Gire DCMotor # 1 hacia Adelante.} Void Backward () {// Bucle hacia atrás. M1.run (HACIA ATRÁS); // Gire DCMotor # 1 hacia atrás. M2.run (HACIA ATRÁS); // Gire DCMotor # 2 hacia atrás. retraso (500); // Retraso de 1 s.} Void TurnRight () {// Bucle de giro a la derecha. M1.run (HACIA ATRÁS); // Gire DCMotor # 1 hacia atrás. M2.run (ADELANTE); // Gire DCMotor # 2 hacia Adelante. M1.setSpeed ​​(100 + DCMROFF); // Calibre la velocidad del motor DC # 1. retraso (300); // Retraso de 0,7 s.} Void TurnLeft () {// Bucle de giro a la izquierda. M1.run (ADELANTE); // Gire DCMotor # 1 hacia Adelante. M2.run (HACIA ATRÁS); // Gire DCMotor # 2 hacia atrás. M2.setSpeed ​​(100 + DCMROFF); // Calibre la velocidad del motor DC # 2. retraso (300); // Retraso de 0,7 s.} Void TurnAround () {// Bucle de Trun Around. M1.run (ADELANTE); // Gire DCMotor # 1 hacia Adelante. M2.run (HACIA ATRÁS); // Gire DCMotor # 2 hacia atrás. M2.setSpeed ​​(100 + DCMROFF); // Calibre la velocidad del motor DC # 2. retraso (700); // Retraso de 2,1 s.} Void Stop () {// Detiene el bucle. M1.run (LIBERACIÓN); // Suelte DCMotor # 1. M2.run (LIBERACIÓN); // Suelte DCMotor # 2. retraso (100); // Retraso de 0,1 s.} 

Piezas y carcasas personalizadas

Chasis
El chasis del robot, para configurar en consecuencia esta máquina autónoma.

Esquemas

El diagrama de circuito, para configurar en consecuencia esta máquina autónoma.

Proceso de manufactura

  1. Componentes del circuito
  2. Circuito integrado
  3. Envía los datos del sensor de un Arduino a otro usando Firebase
  4. Dados digitales Arduino
  5. Sensor de temperatura múltiple
  6. Controlador de juego Arduino
  7. MotionSense
  8. MOSMusic
  9. ¿Qué es la microelectrónica?
  10. Componentes de la máquina de perforación
  11. Componentes del motor de combustión interna