¿Cómo mover los platos por el estante de la cocina con un robot?

¿Cómo mover los platos por el estante de la cocina con un robot?

Si está buscando una manera de aumentar drásticamente el encanto y la funcionalidad de su cocina, considere minimizar el esfuerzo humano allí. El esfuerzo humano se puede minimizar haciendo un robot doméstico que estará presente en la cocina y llevará los utensilios sucios hacia el fregadero y se detendrá allí. Cuando la persona descargue los utensilios del robot, regresará y traerá más. A veces, en cocinas grandes, el fregadero de lavado no está tan cerca de los gabinetes, por lo que el robot llevará los platos de un lugar del estante al otro. Se hará un camino para el robot en el estante usando la cinta negra. El robot utilizará dos sensores de proximidad infrarrojos para detectar la ruta y, según la entrada recibida de los sensores, el Arduino dirigirá los motores para que se muevan con la ayuda de un controlador de motor.

Robot domestico



¿Cómo conectar todos los periféricos necesarios en la fabricación de un robot doméstico?

Ahora, necesitamos reunir los componentes necesarios y comenzar a hacer el robot.



Paso 1: componentes utilizados

  • Arduino Uno
  • Sensor de infrarrojos (x5)
  • Motores DC
  • Persecuciones de ruedas de coche
  • Cinta negra
  • Cables de puente
  • Batería DC
  • Pistola de pegamento
  • Juego de destornilladores

Paso 2: estudiar los componentes

Como ya hemos hecho una lista de componentes, avancemos un paso y repasemos brevemente el funcionamiento de cada componente.

los Arduino UNO es una placa de microcontrolador que se compone de un microchip ATMega 328P y está desarrollada por Arduino.cc. Esta placa tiene un conjunto de pines de datos digitales y analógicos que se pueden interconectar con otras placas o circuitos de expansión. Esta placa tiene 14 pines digitales, 6 pines analógicos y se puede programar con Arduino IDE (entorno de desarrollo integrado) a través de un cable USB tipo B. Requiere 5V para alimentar EN y un Código C para operar.



Arduino UNO

El controlador de motor L298N se utiliza para operar motores de CC. El L298N es un controlador de motor de puente en H doble que permite el control de velocidad y dirección de dos motores de CC al mismo tiempo. El módulo puede impulsar motores de CC que tienen voltajes entre 5 y 35 V, con una corriente máxima de hasta 2 A. Depende del voltaje que se usa en el terminal VCC del motor. En nuestro proyecto, el pin de 5V se usará como entrada, ya que necesitamos conectarlo a una fuente de alimentación de 5V para que el IC funcione correctamente. El diagrama de circuito del controlador de motor L298N con los motores de CC conectados   se muestra a continuación para comprender el mecanismo del controlador de motor L298N. Para la demostración, la entrada se da desde el Estado lógico en lugar de sensores IR.

Diagrama de circuito realizado en Proteus 8 Professional



Paso 3: comprensión del diagrama de bloques y el principio de funcionamiento

En primer lugar, revisaremos el diagrama de bloques, comprenderemos el principio de funcionamiento y luego avanzaremos hacia el ensamblaje de los componentes de hardware.

Diagrama de bloques

Los sensores que usaremos son digitales y pueden dar la salida 0 o 1. Estos sensores que hemos comprado están dando 1 sobre superficies blancas y 0 sobre las superficies negras. Los sensores que compramos dan valores aleatorios, a veces dan 0 en las superficies blancas y 1 sobre las superficies negras. Usaremos cinco sensores en este robot. Hay cuatro condiciones en el código para cinco sensores.

  1. Adelante en la línea: Cuando el sensor del medio está en la superficie negra y el resto de los sensores están en la superficie blanca, se ejecutará la condición de avance y el robot se moverá directamente hacia adelante. Si partimos de Sensor1 y proceder hasta Sensor5, el valor que dará cada uno de los sensores respectivamente es (1 1 0 1 1) .
  2. Giro cerrado a la derecha: Cuando el Sensor 1 y Sensor 2 están en la superficie blanca y el resto de los sensores están en la superficie negra, se ejecutará la condición de giro brusco a la derecha y el robot girará brusco a la derecha. Si partimos de Sensor1 y proceder hasta Sensor5, el valor que dará cada uno de los sensores respectivamente es (1 1 0 0 0).
  3. Giro cerrado a la izquierda: Cuando el Sensor 4 y Sensor 5 están en la superficie blanca y el resto de los sensores están en la superficie negra, se ejecutará la condición de giro brusco a la izquierda y el robot girará completamente a la izquierda. Si partimos de Sensor1 y proceder hasta Sensor5, el valor que dará cada uno de los sensores respectivamente es (0 0 0 1 1) .
  4. Detener: Cuando los cinco sensores estén en la superficie negra, el robot se detendrá y los motores girarán. APAGADO. Este punto con cinco superficies negras estará cerca del fregadero para que el lavavajillas pueda descargar los platos del robot para lavarlos.

Haremos un camino en el estante de la cocina usando cinta negra y ese camino terminará cerca del fregadero, por lo que el robot se detendrá cerca del fregadero y el lavavajillas descargará los platos y luego el robot se moverá hacia el camino y buscará los utensilios. otra vez.

Pista de robot

Paso 4: Empezando con Arduino

Si no está familiarizado con Arduino IDE antes, no se preocupe porque a continuación, puede ver pasos claros para grabar código en la placa del microcontrolador usando Arduino IDE. Puede descargar la última versión de Arduino IDE desde aquí y siga los pasos a continuación:

  1. Cuando la placa Arduino esté conectada a su PC, abra 'Panel de control' y haga clic en 'Hardware y sonido'. Luego haga clic en 'Dispositivos e impresoras'. Busque el nombre del puerto al que está conectada su placa Arduino. En mi caso es “COM14” pero puede ser diferente en tu PC.

    Encontrar puerto

  2. Ahora abra el IDE de Arduino. Desde Herramientas, configure la placa Arduino en Arduino / Genuino UNO.

    Tablero de ajuste

  3. Desde el mismo menú de Herramientas, configure el número de puerto que vio en el panel de control.

    Puerto de configuración

  4. Descargue el código adjunto a continuación y cópielo en su IDE. Para cargar el código, haga clic en el botón de carga.

Puede descargar el código desde aquí

Paso 5: Comprensión del código

El código es muy simple. Se explica brevemente a continuación:

  1. Al comienzo del código, los pines del sensor se inicializan y, junto con eso, también se inicializan los pines para el controlador de motor L298N.
    int enable1pin = 10; // Inicializando el pin PWM para la entrada analógica del motor 1 int motor1pin1 = 2; // Inicializando el pin positivo para el motor 1 int motor1pin2 = 3; // Inicializando el pin negativo para el motor 1 int enable2pin = 11; // Inicializando el pin PWM para la entrada analógica del motor 2 int motor2pin1 = 4; // Inicializando el pin positivo para el motor 2 int motor2pin2 = 5; // Inicializando el pin negativo para el motor 2 int S1 = 12; // Pin de inicialización 12 para el sensor 1 int S2 = 9; // Inicializando el pin 9 para el sensor 2 int S3 = 8; // Inicializando Pin 8 para Sensor 3 int S4 = 7; // Inicializando Pin 7 para Sensor 4 int S5 = 6; // Inicializando el pin 6 para el sensor 5
  2. configuración vacía () es una función que se utiliza para configurar los pines como INPUT o OUTPUT. También establece la velocidad en baudios del Arduino. La tasa de baudios es la velocidad a la que la placa del microcontrolador se comunica con los otros componentes conectados.
    {pinMode (enable1pin, OUTPUT); // Habilitando PWM para Motor 1 pinMode (enable2pin, OUTPUT); // Habilitando PWM para Motor 2 pinMode (motor1pin1, OUTPUT); // Configurando motor1 pin1 como salida pinMode (motor1pin2, OUTPUT); // Configuración de motor1 pin2 como salida pinMode (motor2pin1, OUTPUT); // Estableciendo motor2 pin1 como salida pinMode (motor2pin2, OUTPUT); // Estableciendo motor2 pin2 como salida pinMode (S1, INPUT); // Configuración de sensor1 como entrada pinMode (S2, INPUT); // Configuración de sensor2 como entrada pinMode (S3, INPUT); // Configurando sensor3 como entrada pinMode (S4, INPUT); // Configurando sensor4 como entrada pinMode (S5, INPUT); // Establecer sensor5 como entrada Serial.begin (9600); // Configuración de la velocidad en baudios}
  3. bucle vacío () es una función que se ejecuta una y otra vez en un ciclo. En este bucle le damos instrucciones al Arduino UNO qué operaciones realizar. La velocidad máxima de los motores es 255 y ambos motores tienen velocidades diferentes. Entonces, si queremos mover el robot hacia adelante, girar a la derecha, etc., necesitamos ajustar la velocidad de los motores. Hemos utilizado pines analógicos en el código porque queremos variar la velocidad de los dos motores en diferentes condiciones. Puede ajustar la velocidad de sus motores por su cuenta.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // Reenviar la línea {analogWrite (enable1pin, 61); // Motor 1 velocidad analogWrite (enable2pin, 63); // Motor de 2 velocidades digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 configurado en High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 configurado en Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 configurado en High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 configurado en Bajo} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Giro agudo a la derecha {analogWrite (enable1pin, 60); // Motor 1 velocidad analogWrite (enable2pin, 80); // Motor de 2 velocidades digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 configurado en High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 configurado en Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 configurado en Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 configurado en Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Giro agudo a la izquierda {analogWrite (enable1pin, 80); // Motor 1 velocidad analogWrite (enable2pin, 65); // Motor de 2 velocidades digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 configurado en Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 configurado en Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 configurado en High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 configurado en Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // detener {analogWrite (enable1pin, 0); // Motor 1 velocidad analogWrite (enable2pin, 0); // Motor de 2 velocidades digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 configurado en Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 configurado en Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 configurado en Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 configurado en Low}}

Aplicaciones

  1. Aplicaciones industriales : Estos robots se pueden utilizar como transportadores de equipos automatizados en industrias que reemplazan las cintas transportadoras tradicionales.
  2. Aplicaciones domesticas : También se pueden utilizar en el hogar con fines domésticos como limpieza de suelos, trabajos de cocina, etc.
  3. Aplicaciones de orientación : Estos robots se pueden utilizar en lugares públicos como centros comerciales, patios de comidas, museos, etc. para proporcionar una guía de ruta.