Kuidas liigutada nõusid roboti abil köögiriiuli ümber?

Kui otsite võimalust oma köögi võlu ja funktsionaalsust dramaatiliselt suurendada, kaaluge sealsete inimlike jõupingutuste minimeerimist. Inimeste jõupingutusi saab minimeerida, kui valmistada köögis olev kodumaine robot, mis kannab määrdunud riistu valamu poole ja peatub seal. Kui inimene robotilt köögiriistad maha laadib, tuleb see tagasi ja toob neid juurde. Mõnikord pole suurtes köökides pesumasin valamutele nii lähedal, nii et robot viib nõud ühest riiuli kohast teise. Roboti jaoks tehakse rada musta lindi abil riiulile. Robot kasutab tee tuvastamiseks kahte infrapuna-lähedusandurit ja anduritelt saadud sisendi põhjal suunab Arduino mootorid mootori juhi abil liikuma.



Kodune robot

Kuidas ühendada kõik vajalikud lisaseadmed koduroboti valmistamisel?

Nüüd peame koguma vajalikud komponendid ja alustama roboti valmistamist.



1. samm: kasutatud komponendid

  • Arduino uno
  • IR-andur (x5)
  • Alalisvoolumootorid
  • Auto ratta tagaajamine
  • Must lint
  • Hüppaja juhtmed
  • Alalisvoolu patarei
  • Liimipüstol
  • Kruvikeeraja komplekt

2. samm: komponentide uurimine

Kuna oleme juba koostanud komponentide loendi, liigutagem samm edasi ja tehkem lühike uurimus iga komponendi töö kohta.



The Arduino UNO on mikrokontrolleri plaat, mis koosneb mikrokiibist ATMega 328P ja mille on välja töötanud Arduino.cc. Sellel plaadil on digitaalsete ja analoogandmete tihvtide komplekt, mida saab liidestada teiste laiendusplaatide või -ahelatega. Sellel plaadil on 14 digitaalset tihvti, 6 analoognõela ja see on programmeeritav B-tüüpi USB-kaabli abil Arduino IDE-ga (integreeritud arenduskeskkond). Toitmiseks on vaja 5V PEAL ja a C kood tegutsema.



Arduino UNO

Alalisvoolumootorite käitamiseks kasutatakse mootorijuhti L298N. L298N on kahekordne H-silla mootorijuht, mis võimaldab korraga juhtida kahte alalisvoolumootorit. Moodul võib juhtida alalisvoolumootoreid, mille pinge on vahemikus 5 kuni 35 V, tippvooluga kuni 2A. See sõltub mootorite VCC terminalis kasutatavast pingest. Meie projektis kasutatakse sisendina 5V tihvti, kuna IC peab korralikult töötama selle ühendamiseks 5V toiteallikaga. L298N mootorijuhi lülitusskeem ühendatud alalisvoolumootoritega on allpool näidatud mootorijuhi L298N mehhanismi mõistmiseks. Demonstratsiooniks antakse sisend Loogikaolek IR-andurite asemel.

Proteus 8 Professionalil tehtud vooluringi skeem



3. samm: plokkskeemi ja tööpõhimõtte mõistmine

Esiteks vaatame läbi plokkskeemi, mõistame tööpõhimõtet ja seejärel liigume riistvarakomponentide kokkupaneku suunas.

Blokeeri skeem

Andurid, mida me kasutame, on digitaalsed ja nad võivad anda väljundiks kas 0 või 1. Need meie ostetud andurid annavad 1 valgetel pindadel ja 0 mustadel pindadel. Andurid, mida me ostame, annavad juhuslikke väärtusi, mõnikord ka 0 valgetel pindadel ja 1 mustadel pindadel. Selles robotis kasutame viit andurit. Viie anduri jaoks on koodis neli tingimust.

  1. Edasi liinil: Kui keskmine andur on mustal pinnal ja ülejäänud andurid on valgel pinnal, täidetakse ettepoole suunatud seisund ja robot liigub otse edasi. Kui me alustame sellest Andur1 ja jätkake kuni Andur5, väärtus, mida vastavalt iga andur annab (1 1 0 1 1) .
  2. Pöörake järsult paremale: Kui Andur 1 ja Andur 2 on valgel pinnal ja ülejäänud andurid mustal pinnal, siis rakendub terava parempöörde tingimus ja robot pöörab paremale. Kui me alustame sellest Andur1 ja jätkake kuni Andur5, väärtus, mida vastavalt iga andur annab (1 1 0 0 0).
  3. Pöörake järsult vasakule: Kui Andur 4 ja Andur 5 on valgel pinnal ja ülejäänud andurid mustal pinnal, siis rakendub terava vasakpöörde tingimus ja robot pöörab järsu vasakule. Kui me alustame sellest Andur1 ja jätkake kuni Andur5, väärtus, mida vastavalt iga andur annab (0 0 0 1 1) .
  4. Peatus: Kui kõik viis andurit on mustal pinnal, peatub robot ja mootorid pöörlevad VÄLJAS. See viie musta pinnaga punkt asub valamu lähedal, nii et nõudepesumasin saaks plaadid robotilt pesemiseks maha laadida.

Teeme köögi riiulil musta lindi abil tee ja see rada lõpeb valamu lähedal, nii et robot peatub valamu lähedal ja nõudepesumasin laadib plaadid maha ja seejärel liigub robot tee poole ja otsib nõusid uuesti.

Roboti rada

4. samm: Arduinoga alustamine

Kui te pole Arduino IDE-ga varem tuttav, ärge muretsege, sest allpool näete Arduino IDE abil mikrokontrolleri plaadil koodi kirjutamise selgeid samme. Arduino IDE uusima versiooni saate alla laadida siit siin ja järgige alltoodud samme:

  1. Kui Arduino tahvel on arvutiga ühendatud, avage „Juhtpaneel“ ja klõpsake „Riistvara ja heli“. Seejärel klõpsake nuppu „Seadmed ja printerid”. Leidke selle sadama nimi, millega teie Arduino tahvel on ühendatud. Minu puhul on see COM14, kuid see võib teie arvutis olla erinev.

    Sadama leidmine

  2. Nüüd avage Arduino IDE. Tööriistade seast määrake Arduino tahvel olekuks Arduino / Genuino UNO.

    Laua määramine

  3. Valige samas menüüs Tööriist pordi number, mida nägite juhtpaneelil.

    Pordi seadistamine

  4. Laadige alla lisatud kood ja kopeerige see oma IDE-sse. Koodi üleslaadimiseks klõpsake üleslaadimise nuppu.

Koodi saate alla laadida aadressilt Siin

5. samm: koodeksist aru saamine

Kood on väga lihtne. Allpool on seda lühidalt selgitatud:

  1. Koodi alguses lähtestatakse anduri tihvtid ja koos sellega initsialiseeritakse ka mootorijuhi L298N tihvtid.
    int enable1pin = 10; // PWM-i tihvti initsialiseerimine mootori 1 analoogsisendi jaoks int mootor1pin1 = 2; // Mootori 1 positiivse tihvti initsialiseerimine mootor1pin2 = 3; // Mootori 1 negatiivse tihvti initsialiseerimine int enable2pin = 11; // PWM-i tihvti initsialiseerimine mootori 2 analoogsisendi jaoks int motor2pin1 = 4; // Mootori 2 positiivse tihvti initsialiseerimine int motor2pin2 = 5; // Mootori 2 negatiivse tihvti initsialiseerimine int S1 = 12; // Anduri 1 tihvti 12 lähtestamine int S2 = 9; // Anduri 2 tihvti 9 initsialiseerimine int S3 = 8; // Anduri 3 tihvti 8 lähtestamine int S4 = 7; // Anduri 4 tihvti 7 initsialiseerimine int S5 = 6; // Anduri 5 tihvti 6 lähtestamine
  2. kehtetu seadistamine () on funktsioon, mida kasutatakse tihvtide seadmiseks sisendiks või väljundiks. See määrab ka Arduino baudikiiruse. Baudi kiirus on kiirus, millega mikrokontrolleri plaat suhtleb teiste ühendatud komponentidega.
    {pinMode (enable1pin, OUTPUT); // PWM-i lubamine mootori 1 pinMode jaoks (enable2pin, OUTPUT); // PWM-i lubamine mootori 2 pinMode jaoks (motor1pin1, OUTPUT); // mootori1 tihvti1 seadmine väljundiks pinMode (mootor1pold2, OUTPUT); // mootori1 pin2 seadmine väljundiks pinMode (motor2pin1, OUTPUT); // mootori2 pin1 seadmine väljundiks pinMode (motor2pin2, OUTPUT); // mootori2 pin2 seadmine väljundiks pinMode (S1, INPUT); // anduri1 seadistamine sisendiks pinMode (S2, INPUT); // anduri2 seadistamine sisendiks pinMode (S3, INPUT); // anduri 3 seadistamine sisendiks pinMode (S4, INPUT); // anduri4 seadistamine sisendiks pinMode (S5, INPUT); // anduri 5 seadmine sisendiks Serial.begin (9600); // Pöördekiiruse määramine}
  3. void loop () on funktsioon, mis töötab tsüklis ikka ja jälle. Selles ringis anname Arduino UNO-le juhised, mida teha. Mootorite täiskiirus on 255 ja mõlemal mootoril on erinev kiirus. Seega, kui tahame robotit edasi liikuda, pöörake paremale jne, peame mootorite kiirust reguleerima. Oleme koodis kasutanud analoognõelu, kuna soovime muuta kahe mootori kiirust erinevates tingimustes. Mootorite kiirust saate ise reguleerida.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // Edasi edasi rida {analogWrite (enable1pin, 61); // Mootor 1 kiirusega analogWrite (enable2pin, 63); // Mootor 2-kiiruseline digitalWrite (mootor1pin1, HIGH); // Mootori 1 tihvti 1 väärtuseks on seatud High digitalWrite (motor1pin2, LOW); // Mootori 1 tihvti 2 väärtuseks on seatud Low digitalWrite (motor2pin1, HIGH); // Mootori 2 tihvti 1 väärtuseks on seatud High digitalWrite (motor2pin2, LOW); // Mootori 2 kontakti 2 väärtuseks on seatud Madal}, kui (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Pöörake järsult paremale {analogWrite (enable1pin, 60); // Mootor 1 kiirusega analogWrite (enable2pin, 80); // Mootor 2-kiiruseline digitalWrite (mootor1pin1, HIGH); // Mootori 1 tihvti 1 väärtuseks on seatud High digitalWrite (motor1pin2, LOW); // Mootori 1 tihvti 2 väärtuseks on seatud Low digitalWrite (mootor2pold1, LOW); // Mootori 2 tihvti 1 väärtuseks on seatud Low digitalWrite (motor2pin2, LOW); // Mootori 2 kontakti 2 väärtuseks seatakse Madal}, kui ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Järsult vasakpöörde {analogWrite (enable1pin, 80); // Mootor 1 kiirusega analogWrite (enable2pin, 65); // Mootor 2-käiguline digitalWrite (mootor1pin1, LOW); // Mootori 1 tihvti 1 väärtuseks on seatud Low digitalWrite (motor1pin2, LOW); // Mootori 1 tihvti 2 väärtuseks on seatud Low digitalWrite (motor2pin1, HIGH); // Mootori 2 tihvti 1 väärtuseks on seatud High digitalWrite (motor2pin2, LOW); // Mootori 2 tihvti 2 väärtuseks seatakse Madal}, kui ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)) // seiskub {analogWrite (enable1pin, 0); // Mootor 1 kiirusega analogWrite (enable2pin, 0); // Mootor 2-käiguline digitalWrite (mootor1pin1, LOW); // Mootori 1 tihvti 1 väärtuseks on seatud Low digitalWrite (motor1pin2, LOW); // Mootori 1 tihvti 2 väärtuseks on seatud Low digitalWrite (mootor2pold1, LOW); // Mootori 2 kontakti 1 väärtuseks on seatud Low digitalWrite (motor2pin2, LOW); // 2. mootori 2. tihvt on seatud madalale}}

Rakendused

  1. Tööstusrakendused : Neid roboteid saab kasutada automatiseeritud seadmekandjatena tööstustes, mis asendavad traditsioonilisi konveierilinde.
  2. Kodused rakendused : Neid saab kasutada ka kodustes majapidamistarbetes, näiteks põranda puhastamiseks, köögitöödeks jne.
  3. Juhendamisrakendused : Neid roboteid saab teejuhiste pakkumiseks kasutada avalikes kohtades, nagu kaubanduskeskused, toiduväljakud, muuseumid jne