Comment déplacer la vaisselle sur l'étagère de votre cuisine à l'aide d'un robot?

Si vous cherchez un moyen d'augmenter considérablement le charme et la fonctionnalité de votre cuisine, pensez à minimiser l'effort humain. L'effort humain peut être minimisé en fabriquant un robot domestique qui sera présent dans la cuisine et qui transportera les ustensiles sales vers l'évier et s'y arrêtera. Lorsque la personne décharge les ustensiles du robot, elle reviendra et en apportera davantage. Parfois, dans les grandes cuisines, l'évier de lavage n'est pas si proche des armoires, le robot transportera la vaisselle d'un endroit à l'autre de l'étagère. Un chemin pour le robot sera fait sur l'étagère à l'aide du ruban noir. Le robot utilisera deux capteurs de proximité infrarouges pour détecter le chemin et en fonction des entrées reçues des capteurs, l'Arduino dirigera les moteurs pour se déplacer à l'aide d'un pilote de moteur.



Robot domestique

Comment connecter tous les périphériques nécessaires à la fabrication d'un robot domestique?

Maintenant, nous devons rassembler les composants nécessaires et commencer à fabriquer le robot.



Étape 1: Composants utilisés

  • Arduino uno
  • Capteur IR (x5)
  • Moteurs à courant continu
  • Poursuites de roue de voiture
  • Ruban noir
  • Fils de cavalier
  • Batterie CC
  • Pistolet à colle
  • Ensemble de tournevis

Étape 2: étude des composants

Comme nous avons déjà dressé une liste de composants, faisons un pas en avant et passons par une brève étude du fonctionnement de chaque composant.



le Arduino UNO est une carte microcontrôleur qui comprend une puce ATMega 328P et est développée par Arduino.cc. Cette carte a un ensemble de broches de données numériques et analogiques qui peuvent être interfacées avec d'autres cartes d'extension ou circuits. Cette carte dispose de 14 broches numériques, 6 broches analogiques et programmable avec l'IDE Arduino (environnement de développement intégré) via un câble USB de type B. Il faut 5 V pour alimenter SUR et un Code C opérer.



Arduino UNO

Le pilote de moteur L298N est utilisé pour faire fonctionner les moteurs à courant continu. Le L298N est un pilote de moteur à double pont en H qui permet de contrôler la vitesse et la direction de deux moteurs à courant continu en même temps. Le module peut piloter des moteurs à courant continu qui ont des tensions comprises entre 5 et 35V, avec un courant de crête jusqu'à 2A. Cela dépend de la tension utilisée à la borne VCC des moteurs. Dans notre projet, la broche 5V sera utilisée comme entrée car nous devons la connecter à une alimentation 5V pour que le circuit intégré fonctionne correctement. Le schéma électrique du pilote de moteur L298N avec les moteurs DC connectés est illustré ci-dessous pour comprendre le mécanisme du pilote de moteur L298N. Pour la démonstration, l'entrée est donnée à partir du État logique au lieu de capteurs IR.

Schéma de circuit réalisé sur Proteus 8 Professional



Étape 3: Comprendre le schéma fonctionnel et le principe de fonctionnement

Dans un premier temps, nous allons parcourir le diagramme, comprendre le principe de fonctionnement et ensuite passer à l'assemblage des composants matériels.

Diagramme

Les capteurs que nous utiliserons sont numériques et ils peuvent donner la sortie 0 ou 1. Ces capteurs que nous avons achetés donnent 1 sur des surfaces blanches et 0 sur les surfaces noires. Les capteurs que nous achetons donnent des valeurs aléatoires, parfois ils donnent 0 sur les surfaces blanches et 1 sur les surfaces noires. Nous allons utiliser cinq capteurs dans ce robot Il y a quatre conditions dans le code pour cinq capteurs.

  1. Transférer en ligne: Lorsque le capteur du milieu est sur la surface noire et le reste des capteurs sur la surface blanche, la condition avant s'exécutera et le robot avancera tout droit. Si nous partons de Capteur1 et continuez jusqu'à Capteur5, la valeur que chacun des capteurs donnera respectivement est (1 1 0 1 1) .
  2. Virage serré à droite: Quand le Capteur 1 et Capteur 2 sont sur la surface blanche et le reste des capteurs sont sur la surface noire, la condition de virage serré à droite s'exécutera et le robot tournera brusquement à droite. Si nous partons de Capteur1 et continuez jusqu'à Capteur5, la valeur que chacun des capteurs donnera respectivement est (1 1 0 0 0).
  3. Virage serré à gauche: Quand le Capteur 4 et Capteur 5 sont sur la surface blanche et le reste des capteurs sont sur la surface noire, la condition de virage serré à gauche s'exécutera et le robot tournera brusquement à gauche. Si nous partons de Capteur1 et continuez jusqu'à Capteur5, la valeur que chacun des capteurs donnera respectivement est (0 0 0 1 1) .
  4. Arrêtez: Lorsque les cinq capteurs sont sur la surface noire, le robot s'arrête et les moteurs tournent DE. Ce point avec cinq surfaces noires sera près de l'évier afin que le lave-vaisselle puisse décharger les assiettes du robot pour le lavage.

Nous ferons un chemin sur l'étagère de la cuisine à l'aide de ruban adhésif noir et ce chemin se terminera près de l'évier, de sorte que le robot s'arrêtera près de l'évier et le lave-vaisselle déchargera les assiettes, puis le robot se dirigera vers le chemin et recherchera les ustensiles. encore.

Piste de robot

Étape 4: Premiers pas avec Arduino

Si vous n'êtes pas familier avec Arduino IDE auparavant, ne vous inquiétez pas car ci-dessous, vous pouvez voir des étapes claires de gravure de code sur la carte du microcontrôleur à l'aide de l'IDE Arduino. Vous pouvez télécharger la dernière version d'Arduino IDE à partir de ici et suivez les étapes ci-dessous:

  1. Lorsque la carte Arduino est connectée à votre PC, ouvrez «Panneau de configuration» et cliquez sur «Matériel et audio». Cliquez ensuite sur «Périphériques et imprimantes». Trouvez le nom du port auquel votre carte Arduino est connectée. Dans mon cas, c'est «COM14» mais cela peut être différent sur votre PC.

    Trouver un port

  2. Ouvrez maintenant l'IDE Arduino. Dans Outils, réglez la carte Arduino sur Arduino / Genuino UNO.

    Conseil de réglage

  3. Dans le même menu Outil, définissez le numéro de port que vous avez vu dans le panneau de commande.

    Réglage du port

  4. Téléchargez le code ci-dessous et copiez-le dans votre IDE. Pour télécharger le code, cliquez sur le bouton de téléchargement.

Vous pouvez télécharger le code depuis Ici

Étape 5: Comprendre le code

Le code est très simple. Il est expliqué brièvement ci-dessous:

  1. Au début du code, les broches du capteur sont initialisées et avec cela, les broches du pilote de moteur L298N sont également initialisées.
    int enable1pin = 10; // Initialisation de la broche PWM pour l'entrée analogique pour le moteur 1 int motor1pin1 = 2; // Initialisation de la broche positive pour le moteur 1 int motor1pin2 = 3; // Initialisation de la broche négative pour le moteur 1 int enable2pin = 11; // Initialisation de la broche PWM pour l'entrée analogique pour le moteur 2 int motor2pin1 = 4; // Initialisation de la broche positive pour le moteur 2 int motor2pin2 = 5; // Initialisation de la broche négative pour le moteur 2 int S1 = 12; // Initialisation de la broche 12 pour le capteur 1 int S2 = 9; // Initialisation de la broche 9 pour le capteur 2 int S3 = 8; // Initialisation de la broche 8 pour le capteur 3 int S4 = 7; // Initialisation de la broche 7 pour le capteur 4 int S5 = 6; // Initialisation de la broche 6 pour le capteur 5
  2. void setup() est une fonction utilisée pour définir les broches comme INPUT ou OUTPUT. Il définit également la vitesse de transmission de l'Arduino. Le débit en bauds est la vitesse à laquelle la carte microcontrôleur communique avec les autres composants connectés.
    {pinMode (enable1pin, OUTPUT); // Activation de PWM pour le moteur 1 pinMode (enable2pin, OUTPUT); // Activation de PWM pour le moteur 2 pinMode (motor1pin1, OUTPUT); // Réglage du pin1 du moteur1 comme pinMode de sortie (motor1pin2, OUTPUT); // Réglage du pin2 du moteur1 comme pinMode de sortie (motor2pin1, OUTPUT); // Réglage du pin1 du moteur2 comme pinMode de sortie (motor2pin2, OUTPUT); // Réglage du pin2 du moteur2 comme pinMode de sortie (S1, INPUT); // Réglage de sensor1 comme entrée pinMode (S2, INPUT); // Réglage de sensor2 comme entrée pinMode (S3, INPUT); // Réglage de sensor3 comme entrée pinMode (S4, INPUT); // Réglage de sensor4 comme entrée pinMode (S5, INPUT); // Réglage de sensor5 comme entrée Serial.begin (9600); // Réglage du débit en baud}
  3. boucle vide () est une fonction qui s'exécute encore et encore dans un cycle. Dans cette boucle, nous donnons des instructions à l'Arduino UNO sur les opérations à effectuer. La vitesse maximale des moteurs est de 255 et les deux moteurs ont des vitesses différentes. Donc, si nous voulons faire avancer le robot, tourner à droite, etc., nous devons ajuster la vitesse des moteurs. Nous avons utilisé des broches analogiques dans le code parce que nous voulons faire varier la vitesse des deux moteurs dans des conditions différentes. Vous pouvez régler vous-même la vitesse de vos moteurs.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // En avant la ligne {analogWrite (enable1pin, 61); // Moteur 1 vitesse analogWrite (enable2pin, 63); // Moteur 2 vitesses digitalWrite (motor1pin1, HIGH); // La broche 1 du moteur 1 est réglée sur High digitalWrite (motor1pin2, LOW); // La broche 2 du moteur 1 est réglée sur Low digitalWrite (motor2pin1, HIGH); // Moteur 2 pin 1 réglé sur High digitalWrite (motor2pin2, LOW); // Broche 2 du moteur 2 sur Low} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Tourner brusquement à droite {analogWrite (enable1pin, 60); // Moteur 1 vitesse analogWrite (enable2pin, 80); // Moteur 2 vitesses digitalWrite (motor1pin1, HIGH); // La broche 1 du moteur 1 est réglée sur High digitalWrite (motor1pin2, LOW); // La broche 2 du moteur 1 est réglée sur Low digitalWrite (motor2pin1, LOW); // Moteur 2 pin 1 réglé sur Low digitalWrite (motor2pin2, LOW); // Moteur 2 pin 2 réglé sur Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Tourner brusquement à gauche {analogWrite (enable1pin, 80); // Moteur 1 vitesse analogWrite (enable2pin, 65); // Moteur 2 vitesses digitalWrite (motor1pin1, LOW); // La broche 1 du moteur 1 est réglée sur Low digitalWrite (motor1pin2, LOW); // La broche 2 du moteur 1 est réglée sur Low digitalWrite (motor2pin1, HIGH); // Moteur 2 pin 1 réglé sur High digitalWrite (motor2pin2, LOW); // Moteur 2 pin 2 réglé sur Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // arrêt {analogWrite (enable1pin, 0); // Vitesse du moteur 1 analogWrite (enable2pin, 0); // Moteur 2 vitesses digitalWrite (motor1pin1, LOW); // La broche 1 du moteur 1 est réglée sur Low digitalWrite (motor1pin2, LOW); // La broche 2 du moteur 1 est réglée sur Low digitalWrite (motor2pin1, LOW); // Moteur 2 pin 1 réglé sur Low digitalWrite (motor2pin2, LOW); // Moteur 2 pin 2 réglé sur Low}}

Applications

  1. Applications industrielles : Ces robots peuvent être utilisés comme porte-équipements automatisés dans les industries remplaçant les bandes transporteuses traditionnelles.
  2. Applications domestiques : Ceux-ci peuvent également être utilisés à la maison à des fins domestiques comme le nettoyage des sols, les travaux de cuisine, etc.
  3. Applications de guidage : Ces robots peuvent être utilisés dans les lieux publics comme les centres commerciaux, les aires de restauration, les musées, etc. pour fournir des indications sur les chemins