Kako pomicati posuđe oko vaše kuhinjske police pomoću robota?

Ako tražite način da dramatično pojačate šarm i funkcionalnost vaše kuhinje, razmislite o tome da tamo smanjite ljudski napor. Ljudski napor može se umanjiti izradom domaćeg robota koji će biti prisutan u kuhinji i koji će prljavi pribor nositi prema umivaoniku i tamo se zaustaviti. Kad osoba istovari posuđe s robota, vratit će se i donijeti ih više. Ponekad u velikim kuhinjama umivaonik nije toliko blizu ormarića, pa će robot odnijeti posuđe s jednog mjesta na policu. Put za robota napravit će se na polici pomoću crne trake. Robot će koristiti dva infracrvena senzora blizine za otkrivanje puta, a na temelju ulaza primljenih od senzora, Arduino će upravljati motorima da se kreću uz pomoć vozača motora.



Domaći robot

Kako povezati svu potrebnu perifernu opremu u izradi domaćeg robota?

Sada moramo prikupiti potrebne komponente i početi izrađivati ​​robota.



Korak 1: Korištene komponente

  • Arduino uno
  • IR senzor (x5)
  • Istosmjerni motori
  • Potjere kotača automobila
  • Crna traka
  • Jumper žice
  • DC baterija
  • Pištolj za ljepilo
  • Set odvijača

Korak 2: Proučavanje komponenata

Kako smo već napravili popis komponenata, pomaknimo se korak naprijed i prođite kroz kratku studiju rada svake komponente.



The Arduino UNO je ploča mikrokontrolera koja se sastoji od mikročipa ATMega 328P i koju je razvio Arduino.cc. Ova ploča ima skup digitalnih i analognih podatkovnih pinova koji se mogu povezati s drugim pločama za proširenje ili sklopovima. Ova ploča ima 14 digitalnih pinova, 6 analognih pinova i programabilnih s Arduino IDE (integriranim razvojnim okruženjem) putem USB kabela tipa B. Za napajanje je potrebno 5V NA i a C kod operirati.



Arduino UNO

Motorni pogon L298N koristi se za upravljanje istosmjernim motorima. L298N je dvostruki pokretač motora H-Bridge koji omogućuje istovremeno upravljanje brzinom i smjerom dva istosmjerna motora. Modul može pokretati istosmjerne motore koji imaju napone između 5 i 35 V, s vršnom strujom do 2A. Ovisi o naponu koji se koristi na VCC terminalu motora. U našem projektu, 5V pin će se koristiti kao ulaz jer ga trebamo spojiti na 5V napajanje kako bi IC ispravno radio. Shema spoja pogonskog sklopa motora L298N s povezanim istosmjernim motorima prikazano je dolje za razumijevanje mehanizma pokretačkog programa motora L298N. Za demonstraciju se daje podatak iz Logičko stanje umjesto IR senzora.

Kružni dijagram izrađen na Proteus 8 Professional



Korak 3: Razumijevanje blok dijagrama i principa rada

Prvo ćemo proći kroz blok dijagram, razumjeti princip rada, a zatim krenuti prema sastavljanju hardverskih komponenata.

Blok dijagram

Senzori koje ćemo koristiti su digitalni i mogu dati izlaz 0 ili 1. Ovi senzori koje smo kupili daju 1 na bijelim površinama i 0 na crnim površinama. Senzori koje kupujemo daju slučajne vrijednosti, ponekad daju 0 na bijelim površinama i 1 na crnim površinama. U ovom ćemo robotu upotrijebiti pet senzora. U kodu za pet senzora postoje četiri uvjeta.

  1. Prosljeđivanje na liniji: Kad je srednji senzor na crnoj površini, a ostali senzori na bijeloj površini, izvršit će se uvjet naprijed i robot će se pomaknuti ravno naprijed. Ako krenemo od Senzor1 i nastavi do Senzor5, vrijednost koju će dati svaki od senzora je (1 1 0 1 1) .
  2. Oštro skretanje udesno: Kada Senzor 1 i Senzor 2 su na bijeloj površini, a ostatak senzora na crnoj površini, izvršit će se uvjet oštrog desnog skretanja i robot će skrenuti oštro udesno. Ako krenemo od Senzor1 i nastavi do Senzor5, vrijednost koju će dati svaki od senzora je (1 1 0 0 0).
  3. Oštro skretanje ulijevo: Kada Senzor 4 i Senzor 5 su na bijeloj površini, a ostatak senzora na crnoj površini, izvršit će se uvjet oštrog lijevog skretanja i robot će skrenuti oštro ulijevo. Ako krenemo od Senzor1 i nastavi do Senzor5, vrijednost koju će dati svaki od senzora je (0 0 0 1 1) .
  4. Stop: Kad se svih pet senzora nađe na crnoj površini, robot će se zaustaviti i motori će se okrenuti ISKLJUČENO. Ta će se točka s pet crnih površina nalaziti blizu sudopera kako bi perilica posuđa mogla istovariti ploče s robota za pranje.

Na kuhinjskoj polici napravit ćemo put crnom trakom i taj će put završiti u blizini sudopera, pa će se robot zaustaviti u blizini umivaonika, a perilica posuđa će istovariti tanjure, a zatim će se robot kretati prema stazi i tražiti pribor opet.

Trag robota

Korak 4: Početak rada s Arduinom

Ako prije niste bili upoznati s Arduino IDE-om, ne brinite jer u nastavku možete vidjeti jasne korake sagorijevanja koda na ploči mikrokontrolera pomoću Arduino IDE-a. Najnoviju verziju Arduino IDE-a možete preuzeti sa stranice ovdje i slijedite korake u nastavku:

  1. Kad je ploča Arduino spojena na vaše računalo, otvorite 'Upravljačka ploča' i kliknite 'Hardver i zvuk'. Zatim kliknite 'Uređaji i pisači'. Pronađite naziv priključka na koji je spojena vaša Arduino ploča. U mom slučaju to je 'COM14', ali na vašem se računalu može razlikovati.

    Pronalaženje luke

  2. Sada otvorite Arduino IDE. Iz alata postavite ploču Arduino na Arduino / Genuino UNO.

    Odbor za postavljanje

  3. Iz istog izbornika Alat postavite broj porta koji ste vidjeli na upravljačkoj ploči.

    Postavka porta

  4. Preuzmite dolje priloženi kôd i kopirajte ga u svoj IDE. Da biste prenijeli kôd, kliknite gumb za prijenos.

Kôd možete preuzeti s Ovdje

Korak 5: Razumijevanje kodeksa

Kod je vrlo jednostavan. U nastavku je ukratko objašnjeno:

  1. Na početku koda inicijaliziraju se pinovi senzora, a uz to se inicijaliziraju i pinovi za motorni pogon L298N.
    int enable1pin = 10; // Inicijalizacija PWM pina za analogni ulaz za motor 1 int motor1pin1 = 2; // Iniciranje pozitivnog klina za motor 1 int motor1pin2 = 3; // Inicijalizacija negativnog pina za motor 1 int enable2pin = 11; // Inicijalizacija PWM pina za analogni ulaz za motor 2 int motor2pin1 = 4; // Inicijalizacija pozitivnog klina za motor 2 int motor2pin2 = 5; // Inicijalizacija negativnog klina za motor 2 int S1 = 12; // Iniciranje pina 12 za senzor 1 int S2 = 9; // Iniciranje pina 9 za senzor 2 int S3 = 8; // Iniciranje pina 8 za senzor 3 int S4 = 7; // Iniciranje pina 7 za senzor 4 int S5 = 6; // Inicijalizacija pina 6 za senzor 5
  2. void postavljanje () je funkcija koja se koristi za postavljanje pinova kao ULAZ ili IZLAZ. Također postavlja brzinu prijenosa podataka Arduino. Brzina prijenosa je brzina kojom ploča mikrokontrolera komunicira s ostalim priključenim komponentama.
    {pinMode (enable1pin, OUTPUT); // Omogućavanje PWM-a za motor 1 pinMode (enable2pin, OUTPUT); // Omogućavanje PWM-a za motor 2 pinMode (motor1pin1, OUTPUT); // Postavljanje motora1 pin1 kao izlaznog pinMode (motor1pin2, OUTPUT); // Postavljanje motora1 pin2 kao izlaznog pinMode (motor2pin1, OUTPUT); // Postavljanje motora2 pin1 kao izlaznog pinMode (motor2pin2, OUTPUT); // Postavljanje motora2 pin2 kao izlaznog pinMode (S1, INPUT); // Postavljanje senzora1 kao ulaznog načina rada (S2, INPUT); // Postavljanje senzora2 kao ulaznog načina rada (S3, INPUT); // Postavljanje senzora3 kao ulaznog načina rada (S4, INPUT); // Postavljanje senzora4 kao ulaznog načina rada (S5, INPUT); // Postavljanje senzora5 kao ulaza Serial.begin (9600); // Postavljanje brzine prijenosa}
  3. petlja void () je funkcija koja se iznova i iznova izvodi u ciklusu. U ovoj petlji dajemo upute Arduinu UNO-u koje operacije treba izvršiti. Puna brzina motora je 255, a oba motora imaju različitu brzinu. Dakle, ako želimo robota pomaknuti prema naprijed, skrenuti udesno itd. Moramo prilagoditi brzinu motora. U kodu smo koristili analogne pinove jer želimo mijenjati brzinu dva motora u različitim uvjetima. Možete sami prilagoditi brzinu svojih motora.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // Prosljeđivanje dalje redak {analogWrite (enable1pin, 61); // Analogni zapis brzine motora 1 (enable2pin, 63); // motor brzine 2 brzine digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 postavljen na High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 postavljen na Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 postavljen na High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 postavljen na Low} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Oštro skretanje udesno {analogWrite (enable1pin, 60); // Analogni zapis brzine motora 1 (enable2pin, 80); // motor brzine 2 brzine digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 postavljen na High digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 postavljen na Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 postavljen na Low digitalWrite (motor2pin2, LOW); // 2 pin 2 motora postavljen na Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Oštro skretanje ulijevo {analogWrite (enable1pin, 80); // Analogni zapis brzine motora 1 (enable2pin, 65); // Motor 2 brzine digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 postavljen na Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 postavljen na Low digitalWrite (motor2pin1, HIGH); // Motor 2 pin 1 postavljen na High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 postavljen na Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // stop {analogWrite (enable1pin, 0); // Analogni zapis brzine motora 1 (enable2pin, 0); // Motor 2 brzine digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 postavljen na Low digitalWrite (motor1pin2, LOW); // Motor 1 pin 2 postavljen na Low digitalWrite (motor2pin1, LOW); // Motor 2 pin 1 postavljen na Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 postavljen na Low}}

Prijave

  1. Industrijske primjene : Ovi se roboti mogu koristiti kao automatizirani nosači opreme u industrijama koji zamjenjuju tradicionalne transportne trake.
  2. Domaće primjene : Mogu se koristiti i u kućama za kućne svrhe kao što su čišćenje poda, kuhinjski poslovi itd.
  3. Zahtjevi za smjernice : Ovi se roboti mogu koristiti na javnim mjestima poput trgovačkih centara, prehrambenih terena, muzeja itd. Za pružanje smjernica