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.
- 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) .
- 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).
- 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) .
- 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:
- 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
- Sada otvorite Arduino IDE. Iz alata postavite ploču Arduino na Arduino / Genuino UNO.
Odbor za postavljanje
- Iz istog izbornika Alat postavite broj porta koji ste vidjeli na upravljačkoj ploči.
Postavka porta
- 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:
- 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
- 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}
- 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
- Industrijske primjene : Ovi se roboti mogu koristiti kao automatizirani nosači opreme u industrijama koji zamjenjuju tradicionalne transportne trake.
- Domaće primjene : Mogu se koristiti i u kućama za kućne svrhe kao što su čišćenje poda, kuhinjski poslovi itd.
- Zahtjevi za smjernice : Ovi se roboti mogu koristiti na javnim mjestima poput trgovačkih centara, prehrambenih terena, muzeja itd. Za pružanje smjernica