Kako premikati posodo po kuhinjski polici z robotom?

Če iščete način, kako dramatično povečati čar in funkcionalnost vaše kuhinje, razmislite o zmanjšanju človeškega truda tam. Človeški napor lahko zmanjšamo tako, da naredimo domačega robota, ki bo prisoten v kuhinji in bo nosil umazan pribor proti umivalniku in se tam ustavil. Ko oseba odstrani posodo iz robota, se bo vrnil in prinesel več. Včasih v velikih kuhinjah pomivalno korito ni tako blizu omar, zato bo robot posodo pospravil z enega mesta na drugo polico. Pot za robota bo narejena na polici s črnim trakom. Robot bo za zaznavanje poti uporabil dva infrardeča bližinska senzorja, Arduino pa bo na podlagi vhodnih podatkov, pridobljenih s senzorjev, s pomočjo voznika motorja usmerjal motorje k gibanju.



Domači robot

Kako povezati vse potrebne zunanje naprave pri izdelavi domačega robota?

Zdaj moramo zbrati potrebne komponente in začeti izdelovati robota.



1. korak: Uporabljene komponente

  • Arduino uno
  • IR senzor (x5)
  • Enosmerni motorji
  • Chase avtomobilskih koles
  • Črni trak
  • Jumper žice
  • Enosmerna baterija
  • Pištola za lepilo
  • Komplet izvijačev

2. korak: Preučevanje komponent

Ker smo že sestavili seznam komponent, pojdimo korak naprej in si oglejmo kratko študijo o delovanju vsake komponente.



The Arduino UNO je plošča mikrokrmilnika, ki jo sestavlja mikročip ATMega 328P in jo je razvil Arduino.cc. Ta plošča ima nabor digitalnih in analognih podatkovnih zatičev, ki jih je mogoče povezati z drugimi razširitvenimi ploščami ali vezji. Ta plošča ima 14 digitalnih zatičev, 6 analognih zatičev in jih je mogoče programirati z Arduino IDE (integrirano razvojno okolje) prek USB kabla tipa B. Za napajanje potrebuje 5V VKLOPLJENO in a Koda C upravljati.



Arduino UNO

Motorni gonilnik L298N se uporablja za upravljanje enosmernih motorjev. L298N je dvojni gonilnik motorja H-Bridge, ki omogoča nadzor hitrosti in smeri dveh enosmernih motorjev hkrati. Modul lahko poganja enosmerne motorje z napetostjo med 5 in 35 V z največjim tokom do 2A. To je odvisno od napetosti, ki se uporablja na priključku VCC motorjev. V našem projektu bo 5V zatič uporabljen kot vhod, saj ga moramo za pravilno delovanje IC povezati z napajalnikom 5V. Shema vezja gonilnika motorja L298N s priključenimi enosmernimi motorji je spodaj prikazan za razumevanje mehanizma gonilnika motorja L298N. Za predstavitev je vnos podan iz Logična država namesto IR senzorjev.

Shema vezja, izdelana na Proteus 8 Professional



3. korak: Razumevanje blokovnega diagrama in načela dela

Najprej bomo pregledali blokovni diagram, razumeli načelo dela in se nato pomaknili k sestavljanju komponent strojne opreme.

Blok diagram

Senzorji, ki jih bomo uporabili, so digitalni in lahko dajo izhod bodisi 0 bodisi 1. Ti senzorji, ki smo jih kupili, dajejo 1. na belih površinah in 0 na črnih površinah. Senzorji, ki jih kupimo, dajo naključne vrednosti, včasih pa tudi 0 na belih površinah in 1. na črnih površinah. V tem robotu bomo uporabili pet senzorjev. Koda za pet senzorjev vsebuje štiri pogoje.

  1. Posreduj naprej: Ko je srednji senzor na črni površini, preostali senzorji pa na beli površini, se zažene naprej in robot se premakne naravnost naprej. Če začnemo od Senzor 1 in nadaljujte do Senzor5, vrednost, ki jo bo dal vsak senzor (1 1 0 1 1) .
  2. Ostro desno: Ko Senzor 1 in Senzor 2 so na beli površini, ostali senzorji pa na črni površini, se bo izvajal pogoj ostrega desnega zavoja in robot ostro desno. Če začnemo od Senzor 1 in nadaljujte do Senzor5, vrednost, ki jo bo dal vsak senzor (1 1 0 0 0).
  3. Ostri levi ovinek: Ko Senzor 4 in Senzor 5 so na beli površini, ostali senzorji pa na črni površini, se bo izvajal pogoj ostrega levega zavoja in robot ostro levo. Če začnemo od Senzor 1 in nadaljujte do Senzor5, vrednost, ki jo bo dal vsak senzor (0 0 0 1 1) .
  4. Stop: Ko je vseh pet senzorjev na črni površini, se bo robot ustavil in motorji se bodo obrnili IZKLOPLJENO. Ta točka s petimi črnimi površinami bo blizu pomivalnega korita, tako da bo pomivalni stroj lahko razložil plošče z robota za pranje.

Na kuhinjski polici bomo naredili pot s črnim trakom in ta pot se bo končala v bližini pomivalnega korita, zato se bo robot ustavil v bližini pomivalnega korita, pomivalni stroj pa bo razložil krožnike, nato pa se bo robot premaknil proti poti in poiskal pripomočke ponovno.

Track of Robot

4. korak: Uvod v Arduino

Če z Arduino IDE prej niste seznanjeni, ne skrbite, ker spodaj vidite jasne korake zapisovanja kode na plošči mikrokrmilnika z uporabo Arduino IDE. Najnovejšo različico Arduino IDE lahko prenesete s spletnega mesta tukaj in sledite spodnjim korakom:

  1. Ko je plošča Arduino povezana z računalnikom, odprite »Nadzorna plošča« in kliknite »Strojna oprema in zvok«. Nato kliknite »Naprave in tiskalniki«. Poiščite ime vrat, na katera je priključena vaša plošča Arduino. V mojem primeru je 'COM14', vendar je v vašem računalniku morda drugačen.

    Iskanje pristanišča

  2. Zdaj odprite Arduino IDE. V orodju nastavite ploščo Arduino na Arduino / Genuino UNO.

    Nastavitvena plošča

  3. V istem meniju Orodja nastavite številko vrat, ki ste jo videli na nadzorni plošči.

    Nastavitev vrat

  4. Prenesite spodnjo kodo in jo kopirajte v svoj IDE. Če želite naložiti kodo, kliknite gumb za prenos.

Kodo lahko prenesete iz Tukaj

5. korak: Razumevanje kodeksa

Koda je zelo preprosta. Spodaj je na kratko razloženo:

  1. Na začetku kode se inicializirajo zatiči senzorja, hkrati pa se zaženejo tudi zatiči motornega gonilnika L298N.
    int enable1pin = 10; // Inicializacija zatiča PWM za analogni vhod za motor 1 int motor1pin1 = 2; // Inicializacija pozitivnega zatiča za motor 1 int motor1pin2 = 3; // Inicializacija negativnega zatiča za motor 1 int enable2pin = 11; // Inicializacija PWM zatiča za analogni vhod za motor 2 int motor2pin1 = 4; // Inicializacija pozitivnega zatiča za motor 2 int motor2pin2 = 5; // Inicializacija negativnega zatiča za motor 2 int S1 = 12; // Inicializacija zatiča 12 za senzor 1 int S2 = 9; // Inicializacija zatiča 9 za senzor 2 int S3 = 8; // Inicializacija zatiča 8 za senzor 3 int S4 = 7; // Inicializacija zatiča 7 za senzor 4 int S5 = 6; // Inicializacija zatiča 6 za senzor 5
  2. void setup () je funkcija, ki se uporablja za nastavitev zatičev kot VHOD ali IZHOD. Določa tudi hitrost prenosa podatkov Arduino. Hitrost prenosa je hitrost, s katero plošča mikrokrmilnika komunicira z drugimi pritrjenimi komponentami.
    {pinMode (enable1pin, OUTPUT); // omogočanje PWM za motor 1 pinMode (enable2pin, OUTPUT); // omogočanje PWM za motor 2 pinMode (motor1pin1, OUTPUT); // Nastavitev motor1 pin1 kot izhodnega pinMode (motor1pin2, OUTPUT); // Nastavitev motor1 pin2 kot izhodnega pinMode (motor2pin1, IZHOD); // Nastavitev motor2 pin1 kot izhodnega pinMode (motor2pin2, OUTPUT); // Nastavitev motor2 pin2 kot izhodnega pinMode (S1, INPUT); // Nastavitev senzorja1 kot vhodnega pinMode (S2, INPUT); // Nastavitev senzorja2 kot vhodnega pinMode (S3, INPUT); // Nastavitev senzorja3 kot vhodnega pinMode (S4, INPUT); // Nastavitev senzorja4 kot vhodnega pinMode (S5, INPUT); // Nastavitev senzorja5 kot vhodnega Serial.begin (9600); // Nastavitev hitrosti prenosa}
  3. void loop () je funkcija, ki se vedno znova izvaja v ciklu. V tej zanki dajemo navodila Arduino UNO, katere operacije naj izvajajo. Polna hitrost motorjev je 255 in oba motorja imata različno hitrost. Torej, če želimo robota premakniti naprej, zavijemo desno itd., Moramo prilagoditi hitrost motorjev. V kodi smo uporabili analogne nožice, ker želimo spremeniti hitrost obeh motorjev v različnih pogojih. Hitrost svojih motorjev lahko prilagodite sami.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // naprej naprej vrstica {analogWrite (enable1pin, 61); // motor 1 hitrost analogWrite (enable2pin, 63); // motor 2 hitrosti digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 nastavljen na High digitalWrite (motor1pin2, LOW); // motor 1 pin 2 nastavljen na Low digitalWrite (motor2pin1, HIGH); // motor 2 pin 1 nastavljen na High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 nastavljen na Low} if (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Ostro zavijanje v desno {analogWrite (enable1pin, 60); // motor 1 hitrost analogWrite (enable2pin, 80); // motor 2 hitrosti digitalWrite (motor1pin1, HIGH); // Motor 1 pin 1 nastavljen na High digitalWrite (motor1pin2, LOW); // motor 1 pin 2 nastavljen na Low digitalWrite (motor2pin1, LOW); // motor 2 pin 1 nastavljen na Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 nastavljen na Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Ostro zavijanje v levo {analogWrite (enable1pin, 80); // motor 1 hitrost analogWrite (enable2pin, 65); // motor 2 hitrosti digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 nastavljen na Low digitalWrite (motor1pin2, LOW); // motor 1 pin 2 nastavljen na Low digitalWrite (motor2pin1, HIGH); // motor 2 pin 1 nastavljen na High digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 nastavljen na Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // stop {analogWrite (enable1pin, 0); // motor 1 hitrost analogWrite (enable2pin, 0); // motor 2 hitrosti digitalWrite (motor1pin1, LOW); // Motor 1 pin 1 nastavljen na Low digitalWrite (motor1pin2, LOW); // motor 1 pin 2 nastavljen na Low digitalWrite (motor2pin1, LOW); // motor 2 pin 1 nastavljen na Low digitalWrite (motor2pin2, LOW); // Motor 2 pin 2 nastavljen na Low}}

Aplikacije

  1. Industrijske aplikacije : Ti roboti se lahko uporabljajo kot avtomatizirani nosilci opreme v industrijah, ki nadomeščajo tradicionalne tekoče trakove.
  2. Domače aplikacije : Uporabljajo se lahko tudi v domovih za gospodinjske namene, kot so čiščenje tal, kuhinjska dela itd.
  3. Vloge za usmerjanje : Te robote lahko uporabljate na javnih mestih, kot so nakupovalna središča, prehrambena igrišča, muzeji itd., Za zagotavljanje vodenja poti