Cum să mutați vasele în jurul raftului bucătăriei folosind un robot?

Dacă sunteți în căutarea unei modalități de a spori dramatic farmecul și funcționalitatea bucătăriei dvs., luați în considerare minimizarea efortului uman de acolo. Efortul uman poate fi minimizat prin realizarea unui robot casnic care va fi prezent în bucătărie și care va transporta ustensilele murdare către chiuvetă și se va opri acolo. Când persoana descarcă ustensilele de la robot, acesta se va întoarce și va aduce mai multe dintre ele. Uneori, în bucătăriile mari, chiuveta de spălat nu este atât de aproape de dulapuri, astfel încât robotul va duce vasele dintr-un loc al raftului în celălalt. O cale pentru robot va fi realizată pe raft folosind banda neagră. Robotul va folosi doi senzori de proximitate în infraroșu pentru a detecta calea și pe baza intrării primite de la senzori, Arduino va direcționa motoarele să se deplaseze cu ajutorul unui driver de motor.



Robot intern

Cum să conectați toate perifericele necesare la realizarea unui robot intern?

Acum, trebuie să adunăm componentele necesare și să începem să realizăm robotul.



Pasul 1: Componente utilizate

  • Arduino uno
  • Senzor IR (x5)
  • DC Motors
  • Urmăriri roți auto
  • Bandă neagră
  • Sârme jumper
  • Baterie DC
  • Pistol de lipit
  • Set șurubelnițe

Pasul 2: Studierea componentelor

Deoarece am făcut deja o listă de componente, să mergem cu un pas înainte și să parcurgem un scurt studiu al funcționării fiecărei componente.



Arduino UNO este o placă de microcontroler care cuprinde un microcip ATMega 328P și este dezvoltată de Arduino.cc. Această placă are un set de pini de date digitale și analogice care pot fi interfațate cu alte plăci sau circuite de expansiune. Această placă are 14 pini digitali, 6 pini analogici și poate fi programată cu Arduino IDE (mediu de dezvoltare integrat) printr-un cablu USB de tip B. Este nevoie de 5V pentru alimentare PE și a Codul C să funcționeze.



Arduino UNO

Driverul de motor L298N este utilizat pentru acționarea motoarelor de curent continuu. L298N este un driver de motor dublu H-Bridge care permite controlul vitezei și direcției a două motoare de curent continuu în același timp. Modulul poate acționa motoare de curent continuu care au tensiuni cuprinse între 5 și 35V, cu curent de vârf de până la 2A. Depinde de tensiunea utilizată la terminalul VCC al motoarelor. În proiectul nostru, pinul de 5V va fi folosit ca intrare, deoarece trebuie să-l conectăm la o sursă de alimentare de 5V pentru ca IC să funcționeze corect. Schema circuitului driverului motorului L298N cu motoarele de curent continuu conectate este prezentat mai jos pentru a înțelege mecanismul driverului motorului L298N. Pentru demonstrație, intrarea este dată de Stare logică în loc de senzori IR.

Diagrama circuitului realizată pe Proteus 8 Professional



Pasul 3: Înțelegerea schemei bloc și a principiului de lucru

În primul rând, vom trece prin diagrama bloc, vom înțelege principiul de funcționare și apoi vom merge spre asamblarea componentelor hardware.

Diagramă bloc

Senzorii pe care îi vom folosi sunt digitali și pot da ieșire fie 0, fie 1. Acești senzori pe care i-am achiziționat oferă 1 pe suprafețe albe și 0 pe suprafețele negre. Senzorii pe care îi achiziționăm oferă valori aleatorii, uneori dau 0 pe suprafețele albe și 1 pe suprafețele negre. Vom folosi cinci senzori în acest robot Există patru condiții în cod pentru cinci senzori.

  1. Înainte pe linie: Când senzorul din mijloc se află pe suprafața neagră, iar restul senzorilor se află pe suprafața albă, se va executa starea înainte și robotul se va deplasa direct înainte. Dacă începem de la Senzor1 și continuă până Senzor5, valoarea pe care fiecare dintre senzori o va da respectiv este (1 1 0 1 1) .
  2. Virați strâns la dreapta: Cand Senzorul 1 și Senzorul 2 sunt pe suprafața albă, iar restul senzorilor sunt pe suprafața neagră, se va executa starea de viraj ascuțit la dreapta, iar robotul va întoarce ascuțit la dreapta. Dacă începem de la Senzor1 și continuă până Senzor5, valoarea pe care fiecare dintre senzori o va da respectiv este (1 1 0 0 0).
  3. Virați strâns la stânga: Cand Senzorul 4 și Senzorul 5 sunt pe suprafața albă, iar restul senzorilor sunt pe suprafața neagră, se va executa starea ascuțită a virajului la stânga, iar robotul va întoarce ascuțit la stânga. Dacă începem de la Senzor1 și continuă până Senzor5, valoarea pe care fiecare dintre senzori o va da respectiv este (0 0 0 1 1) .
  4. Stop: Când toți cei cinci senzori sunt pe suprafața neagră, robotul se va opri și motoarele se vor roti OPRIT. Acest punct cu cinci suprafețe negre va fi lângă chiuvetă, astfel încât mașina de spălat vase ar putea descărca plăcile de la robot pentru spălare.

Vom face o cale pe raftul bucătăriei folosind bandă neagră și acea cale se va termina lângă chiuvetă, așa că robotul se va opri lângă chiuvetă și mașina de spălat vase va descărca plăcile și apoi robotul se va deplasa spre cale și va căuta ustensilele din nou.

Track Of Robot

Pasul 4: Noțiuni introductive despre Arduino

Dacă nu sunteți familiarizați cu Arduino IDE înainte, nu vă faceți griji, deoarece mai jos puteți vedea pași clari de ardere a codului pe placa microcontrolerului utilizând Arduino IDE. Puteți descărca cea mai recentă versiune a Arduino IDE de la aici și urmați pașii de mai jos:

  1. Când placa Arduino este conectată la computer, deschideți „Panoul de control” și faceți clic pe „Hardware și sunet”. Apoi faceți clic pe „Dispozitive și imprimante”. Găsiți numele portului la care este conectată placa Arduino. În cazul meu, este „COM14”, dar poate fi diferit pe computer.

    Găsirea portului

  2. Acum deschideți IDE-ul Arduino. Din Instrumente, setați placa Arduino la Arduino / Genuino UNO.

    Placă de setare

  3. Din același meniu Instrument, setați numărul portului pe care l-ați văzut în panoul de control.

    Setarea portului

  4. Descărcați codul atașat mai jos și copiați-l în IDE. Pentru a încărca codul, faceți clic pe butonul de încărcare.

Puteți descărca codul de la Aici

Pasul 5: Înțelegerea codului

Codul este foarte simplu. Acesta este explicat pe scurt mai jos:

  1. La începutul codului, pinii senzorului sunt inițializați și, împreună cu acesta, sunt inițializați și pinii pentru driverul motorului L298N.
    int enable1pin = 10; // Inițializarea pinului PWM pentru intrarea analogică pentru motorul 1 int motor1pin1 = 2; // Inițializarea pinului pozitiv pentru motorul 1 int motor1pin2 = 3; // Inițializarea pinului negativ pentru motorul 1 int enable2pin = 11; // Inițializarea pinului PWM pentru intrarea analogică pentru motorul 2 int motor2pin1 = 4; // Inițializarea pinului pozitiv pentru motorul 2 int motor2pin2 = 5; // Inițializarea pinului negativ pentru motorul 2 int S1 = 12; // Inițializarea pinului 12 pentru senzorul 1 int S2 = 9; // Inițializarea pinului 9 pentru senzorul 2 int S3 = 8; // Inițializarea pinului 8 pentru senzorul 3 int S4 = 7; // Inițializarea pinului 7 pentru senzorul 4 int S5 = 6; // Inițializarea pinului 6 pentru senzorul 5
  2. configurare nulă () este o funcție care este utilizată pentru a seta pinii ca INPUT sau OUTPUT. De asemenea, setează rata de transmisie a Arduino. Rata de transmisie este viteza cu care placa microcontrolerului comunică cu celelalte componente atașate.
    {pinMode (enable1pin, OUTPUT); // Activarea PWM pentru Motor 1 pinMode (enable2pin, OUTPUT); // Activarea PWM pentru Motor 2 pinMode (motor1pin1, OUTPUT); // Setarea motor1 pin1 ca pin pinMode (motor1pin2, OUTPUT); // Setarea motor1 pin2 ca pin pin Mode (motor2pin1, OUTPUT); // Setarea motor2 pin1 ca pin pinMode (motor2pin2, OUTPUT); // Setarea motor2 pin2 ca pin pin de ieșire (S1, INPUT); // Setarea senzorului 1 ca pin pinMode (S2, INPUT); // Setarea senzorului2 ca pin pinMode (S3, INPUT); // Setarea senzorului 3 ca pin pinMode (S4, INPUT); // Setarea senzorului4 ca pin pinMode (S5, INPUT); // Setarea senzorului 5 ca intrare Serial.begin (9600); // Setarea ratei de transmisie}
  3. bucla nulă () este o funcție care rulează din nou și din nou într-un ciclu. În această buclă, oferim instrucțiuni către Arduino UNO ce operațiuni să efectueze. Viteza maximă a motoarelor este de 255 și ambele motoare au viteză diferită. Deci, dacă dorim să deplasăm robotul înainte, să virăm la dreapta etc, trebuie să ajustăm viteza motoarelor. Am folosit pini analogici în cod, deoarece dorim să modificăm viteza celor două motoare în condiții diferite. Puteți regla singur viteza motoarelor.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // Forward on linia {analogWrite (enable1pin, 61); // Motor 1 viteză analogWrite (enable2pin, 63); // Motor 2 viteze digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 setat la High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 setat la Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 setat la High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 setat la Low} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)))) / / Sharp Right Turn {analogWrite (enable1pin, 60); // Motor 1 viteză analogWrite (enable2pin, 80); // Motor 2 viteze digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 setat la High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 setat la Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 setat la Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 setat la Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5)))) / / Sharp Turn la stânga {analogWrite (enable1pin, 80); // Motor 1 viteză analogWrite (enable2pin, 65); // Motor 2 viteze digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 setat la Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 setat la Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 setat la High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 setat la Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)))) // opriți {analogWrite (enable1pin, 0); // Motor 1 viteză analogWrite (enable2pin, 0); // Motor 2 viteze digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 setat la Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 setat la Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 setat la Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 setat la Low}}

Aplicații

  1. Aplicații industriale : Acești roboți pot fi folosiți ca purtători de echipamente automate în industrii care înlocuiesc benzile transportoare tradiționale.
  2. Aplicații interne : Acestea pot fi folosite și la case în scopuri casnice, cum ar fi curățarea podelei, munca în bucătărie etc.
  3. Aplicații de îndrumare : Acești roboți pot fi folosiți în locuri publice, cum ar fi mall-uri, food court-uri, muzee, etc.