Com moure plats pel prestatge de la cuina amb un robot?

Si busqueu una manera d’incrementar dràsticament l’encant i la funcionalitat de la vostra cuina, penseu a minimitzar l’esforç humà. Es pot minimitzar l’esforç humà fent un robot domèstic que estarà present a la cuina i que portarà els estris bruts cap a la pica i s’aturarà allà. Quan la persona descarregui els estris del robot, tornarà i en portarà més. De vegades, a les cuines grans, la pica no està tan a prop dels armaris, de manera que el robot portarà els plats des d’un lloc del prestatge cap a l’altre. Es farà un camí per al robot a la prestatgeria mitjançant la cinta negra. El robot utilitzarà dos sensors de proximitat d’infrarojos per detectar el recorregut i, basat en l’entrada rebuda dels sensors, l’Arduino dirigirà els motors a moure’s amb l’ajuda d’un conductor de motor.



Robot domèstic

Com connectar tots els perifèrics necessaris per fabricar un robot domèstic?

Ara, hem de reunir els components necessaris i començar a fabricar el robot.



Pas 1: components utilitzats

  • Arduino Un
  • Sensor IR (x5)
  • Motors DC
  • Persecucions de rodes de cotxes
  • Cinta Negra
  • Jumper Wires
  • Bateria de CC
  • Pistola de cola
  • Joc de cargols

Pas 2: estudiar els components

Com ja hem fet una llista de components, anem a fer un pas endavant i fem un breu estudi del funcionament de cada component.



El Arduino UN és una placa de microcontrolador formada per un microxip ATMega 328P i desenvolupada per Arduino.cc. Aquesta placa té un conjunt de pins de dades digitals i analògics que es poden connectar amb altres plaques o circuits d’expansió. Aquesta placa té 14 pins digitals, 6 pins analògics i es pot programar amb l’Arduino IDE (entorn de desenvolupament integrat) mitjançant un cable USB tipus B. Requereix 5V per alimentar-se ACTIVAT i a Codi C operar.



Arduino UN

El controlador de motor L298N s’utilitza per accionar motors de corrent continu. El L298N és un controlador de motor doble pont H que permet controlar la velocitat i la direcció de dos motors de corrent continu alhora. El mòdul pot accionar motors de corrent continu que tenen tensions entre 5 i 35V, amb un pic màxim de corrent de fins a 2A. Depèn de la tensió que s’utilitza al terminal VCC dels motors. Al nostre projecte, el pin de 5V s’utilitzarà com a entrada ja que hem de connectar-lo a una font d’alimentació de 5V perquè el CI funcioni correctament. El diagrama del circuit del controlador del motor L298N amb els motors de corrent continu connectats es mostra a continuació per entendre el mecanisme del controlador del motor L298N. Per a la demostració, l'entrada es dóna des del fitxer Estat lògic en lloc de sensors IR.

Diagrama de circuits realitzat a Proteus 8 Professional



Pas 3: entendre el diagrama de blocs i el principi de treball

En primer lloc, revisarem el diagrama de blocs, comprendreem el principi de funcionament i, a continuació, anirem cap al muntatge dels components del maquinari.

Diagrama de blocs

Els sensors que farem servir són digitals i poden donar sortida 0 o 1. Aquests sensors que hem comprat donen 1 sobre superfícies blanques i 0 a les superfícies negres. Els sensors que comprem donen valors aleatoris, de vegades donen 0 a les superfícies blanques i 1 a les superfícies negres. Utilitzarem cinc sensors en aquest robot Hi ha quatre condicions al codi per a cinc sensors.

  1. Reenviar en línia: Quan el sensor central es troba a la superfície negra i la resta de sensors a la superfície blanca, s’executarà la condició cap endavant i el robot es mourà cap endavant. Si partim de Sensor1 i continuar fins Sensor5, el valor que donaran respectivament cadascun dels sensors és (1 1 0 1 1) .
  2. Gireu completament a la dreta: Quan el Sensor 1 i Sensor 2 es troben a la superfície blanca i la resta de sensors a la superfície negra, s’executarà la condició de gir a la dreta pronunciada i el robot girarà a la dreta. Si partim de Sensor1 i continuar fins Sensor5, el valor que donaran respectivament cadascun dels sensors és (1 1 0 0 0).
  3. Gireu completament a l'esquerra: Quan el Sensor 4 i Sensor 5 es troben a la superfície blanca i la resta de sensors es troben a la superfície negra, s’executarà la condició de gir pronunciada a l’esquerra i el robot girarà a l’esquerra. Si partim de Sensor1 i continuar fins Sensor5, el valor que donaran respectivament cadascun dels sensors és (0 0 0 1 1) .
  4. Atura: Quan tots els cinc sensors estan a la superfície negra, el robot s'aturarà i els motors giraran DESACTIVAT. Aquest punt amb cinc superfícies negres estarà a prop de la pica perquè el rentaplats pugui descarregar les plaques del robot per rentar-les.

Farem un camí al prestatge de la cuina amb cinta negra i aquest camí acabarà a prop de l’aigüera, de manera que el robot s’aturarà a prop de l’aigüera i el rentaplats descarregarà les plaques i després el robot es mourà cap al camí i buscarà els estris de nou.

Track Of Robot

Pas 4: Introducció a Arduino

Si abans no esteu familiaritzat amb Arduino IDE, no us preocupeu, perquè a continuació podeu veure passos clars de gravació de codi a la placa del microcontrolador mitjançant Arduino IDE. Podeu descarregar la versió més recent d'Arduino IDE des de aquí i seguiu els passos següents:

  1. Quan la placa Arduino estigui connectada al vostre PC, obriu el 'Tauler de control' i feu clic a 'Maquinari i so'. A continuació, feu clic a 'Dispositius i impressores'. Cerqueu el nom del port al qual està connectada la vostra placa Arduino. En el meu cas, és 'COM14', però pot ser diferent al vostre PC.

    Buscant Port

  2. Ara obriu l'IDE Arduino. A Eines, configureu la placa Arduino a Arduino / Genuí UN.

    Taula de configuració

  3. Des del mateix menú d'eines, configureu el número de port que heu vist al tauler de control.

    Configuració del port

  4. Baixeu-vos el codi adjunt a continuació i copieu-lo al vostre IDE. Per carregar el codi, feu clic al botó de càrrega.

Podeu descarregar el codi des de Aquí

Pas 5: entendre el codi

El codi és molt senzill. A continuació s’explica breument:

  1. Al començament del codi, s’inicialitzen els pins del sensor i, juntament amb això, també s’inicialitzen els pins del controlador de motor L298N.
    int enable1pin = 10; // Inicialització del pin PWM per a entrada analògica per al motor 1 int motor1pin1 = 2; // Inicialització del pin positiu per al motor 1 int motor1pin2 = 3; // Inicialització del pin negatiu per al motor 1 int enable2pin = 11; // Inicialització del pin PWM per a entrada analògica per al motor 2 int motor2pin1 = 4; // Inicialització del pin positiu per al motor 2 int motor2pin2 = 5; // Inicialització del pin negatiu per al motor 2 int S1 = 12; // Inicialització del pin 12 per al sensor 1 int S2 = 9; // Inicialització del pin 9 per al sensor 2 int S3 = 8; // Inicialització del pin 8 per al sensor 3 int S4 = 7; // Inicialització del pin 7 per al sensor 4 int S5 = 6; // Inicialització del pin 6 per al sensor 5
  2. configuració nul·la () és una funció que s’utilitza per configurar els pins com INPUT o OUTPUT. També estableix la velocitat en bauds de l'Arduino. La velocitat de transmissió és la velocitat a la qual la placa de microcontrolador es comunica amb els altres components connectats.
    {pinMode (enable1pin, OUTPUT); // Habilitació de PWM per a Motor 1 pinMode (enable2pin, OUTPUT); // Habilitació de PWM per a Motor 2 pinMode (motor1pin1, OUTPUT); // Configuració del motor1 pin1 com pinMode de sortida (motor1pin2, OUTPUT); // Configuració del motor1 pin2 com pinMode de sortida (motor2pin1, OUTPUT); // Configuració del motor2 pin1 com a pinMode de sortida (motor2pin2, OUTPUT); // Configuració del motor2 pin2 com pinMode de sortida (S1, INPUT); // Configuració del sensor1 com a pinMode d’entrada (S2, INPUT); // Configuració del sensor2 com pinMode d’entrada (S3, INPUT); // Configuració del sensor3 com pinMode d’entrada (S4, INPUT); // Configuració del sensor4 com pinMode d’entrada (S5, INPUT); // Configuració del sensor5 com a entrada Serial.begin (9600); // Configuració de la velocitat de transmissió}
  3. bucle buit () és una funció que s'executa una i altra vegada en un cicle. En aquest bucle, donem instruccions a Arduino UNO quines operacions cal dur a terme. La velocitat màxima dels motors és de 255 i els dos motors tenen velocitat diferent. Per tant, si volem avançar el robot, gireu a la dreta, etc., hem d’ajustar la velocitat dels motors. Hem utilitzat pins analògics al codi perquè volem variar la velocitat dels dos motors en diferents condicions. Podeu ajustar la velocitat dels vostres motors pel vostre compte.
    bucle buit () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // Endavant la línia {analogWrite (enable1pin, 61); // Motor 1 velocitat analogWrite (enable2pin, 63); // Motor 2 velocitats digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 definit a High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ajustat a Low digitalWrite (motor2pin1, HIGH); // Motor 2 pins 1 configurat a High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 set to Low} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)))) / / Gireu completament a la dreta {analogWrite (enable1pin, 60); // Motor 1 velocitat analogWrite (enable2pin, 80); // Motor 2 velocitats digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 definit a High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ajustat a Low digitalWrite (motor2pin1, LOW); // Motor 2 pins 1 establert a Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 set to Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5)))) / / Gireu completament a l'esquerra {analogWrite (enable1pin, 80); // Motor 1 velocitat analogWrite (enable2pin, 65); // Motor 2 velocitats digitalWrite (motor1pin1, BAIX); // Motor 1 pin 1 definit com a Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ajustat a Low digitalWrite (motor2pin1, HIGH); // Motor 2 pins 1 configurat a High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 set to Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // stop {analogWrite (enable1pin, 0); // Motor 1 velocitat analogWrite (enable2pin, 0); // Motor 2 velocitats digitalWrite (motor1pin1, BAIX); // Motor 1 pin 1 definit com a Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 ajustat a Low digitalWrite (motor2pin1, LOW); // Motor 2 pins 1 establert a Low digitalWrite (motor2pin2, LOW); // Motor 2 pins 2 definit com a baix}}

Aplicacions

  1. Aplicacions industrials : Aquests robots es poden utilitzar com a portadors d'equips automatitzats en indústries que substitueixen les cintes transportadores tradicionals.
  2. Aplicacions domèstiques : També es poden utilitzar a les llars amb finalitats domèstiques, com ara neteja de terres, treballs de cuina, etc.
  3. Aplicacions d’orientació : Aquests robots es poden utilitzar en llocs públics, com ara centres comercials, zones de menjar, museus, etc.