Kā pārvietot traukus ap virtuves plauktu, izmantojot robotu?

Ja meklējat veidu, kā dramatiski palielināt savas virtuves šarmu un funkcionalitāti, apsveriet iespēju samazināt tur cilvēku pūles. Cilvēka piepūli var samazināt, izgatavojot mājas robotu, kas atradīsies virtuvē, un tas netīros traukus vedīs uz izlietni un apstāsies. Kad persona izkrauj traukus no robota, tas atgriezīsies un atnesīs tos vairāk. Dažreiz lielās virtuvēs izlietne nav tik tuvu skapjiem, tāpēc robots traukus aizvedīs no vienas plaukta vietas uz otru. Izmantojot melno lenti, plauktā tiks izveidots robota ceļš. Robots izmantos divus infrasarkano staru tuvuma sensorus, lai noteiktu ceļu, un, pamatojoties uz sensoru saņemto ievadi, Arduino virzīs motorus pārvietoties ar motora vadītāja palīdzību.



Vietējais robots

Kā savienot visas nepieciešamās perifērijas ierīces, lai izveidotu vietējo robotu?

Tagad mums jāsavāc nepieciešamie komponenti un jāsāk ražot robots.



1. solis: izmantotie komponenti

  • Arduino uno
  • IR sensors (x5)
  • DC motori
  • Automašīnu riteņu pakaļdzīšanās
  • Melna lente
  • Džemperu vadi
  • Līdzstrāvas akumulators
  • Līmes pistole
  • Skrūvgriežu komplekts

2. solis: Komponentu izpēte

Tā kā mēs jau esam izveidojuši sastāvdaļu sarakstu, virzīsimies soli uz priekšu un veiciet īsu pētījumu par katra komponenta darbību.



The Arduino UNO ir mikrokontrolleru plate, kas sastāv no mikroshēmas ATMega 328P, un to ir izstrādājis Arduino.cc. Šajā dēlī ir ciparu un analogo datu tapu komplekts, ko var sasaistīt ar citiem paplašināšanas dēļiem vai shēmām. Šajā dēlī ir 14 digitālās tapas, 6 analogās tapas un to var programmēt ar Arduino IDE (integrētā izstrādes vide), izmantojot B tipa USB kabeli. Tas prasa 5 V strāvu IESLĒGTS un a C kods darboties.



Arduino UNO

L298N motora draiveri izmanto līdzstrāvas motoru darbināšanai. L298N ir divējāds H-Bridge motora draiveris, kas ļauj vienlaikus kontrolēt divu līdzstrāvas motoru ātrumu un virzienu. Modulis var darbināt līdzstrāvas motorus, kuru spriegums ir no 5 līdz 35V, ar maksimālo strāvu līdz 2A. Tas ir atkarīgs no sprieguma, kas tiek izmantots motora VCC spailē. Mūsu projektā 5V tapa tiks izmantota kā ieeja, jo mums tas jāpievieno 5V barošanas avotam, lai IC darbotos pareizi. L298N motora draivera shēma ar pieslēgtiem līdzstrāvas motoriem ir parādīts zemāk, lai izprastu L298N motora vadītāja mehānismu. Demonstrācijai ievade tiek sniegta no Loģikas stāvoklis IR sensoru vietā.

Kontūra shēma, kas izveidota vietnē Proteus 8 Professional



3. solis: Bloka diagrammas un darbības principa izpratne

Pirmkārt, mēs izskatīsim blokshēmu, sapratīsim darbības principu un pēc tam virzīsimies uz aparatūras komponentu montāžu.

Blokshēma

Sensori, kurus mēs izmantosim, ir digitāli, un tie var dot izejas vērtību vai nu 0, vai 1. Šie mūsu iegādātie sensori dod 1 uz baltām virsmām un 0 uz melnajām virsmām. Sensori, kurus mēs iegādājamies, dod nejaušas vērtības, dažreiz arī tās 0 uz baltajām virsmām un 1 uz melnajām virsmām. Šajā robotā mēs izmantosim piecus sensorus. Kodā ir četri nosacījumi pieciem sensoriem.

  1. Uz priekšu līnijā: Kad vidējais sensors atrodas uz melnas virsmas un pārējie sensori atrodas uz baltas virsmas, tiks izpildīts stāvoklis uz priekšu un robots virzīsies taisni uz priekšu. Ja mēs sākam no Sensors1 un turpini līdz Sensors5, vērtība, ko attiecīgi piešķirs katrs sensors (1 1 0 1 1) .
  2. Strauji pagriezieties pa labi: Kad 1. sensors un 2. sensors atrodas uz baltas virsmas, bet pārējie sensori ir uz melnās virsmas, tiks izpildīts asais labās pagrieziena stāvoklis un robots pagriezīsies asi pa labi. Ja mēs sākam no Sensors1 un turpini līdz Sensors5, vērtība, ko attiecīgi piešķirs katrs sensors (1 1 0 0 0).
  3. Straujš pagrieziens pa kreisi: Kad 4. sensors un 5. sensors atrodas uz baltas virsmas un pārējie sensori ir uz melnās virsmas, tiks izpildīts straujais kreisā pagrieziena stāvoklis un robots strauji pagriezīsies pa kreisi. Ja mēs sākam no Sensors1 un turpini līdz Sensors5, vērtība, ko attiecīgi piešķirs katrs sensors (0 0 0 1 1) .
  4. Pietura: Kad visi pieci sensori atrodas uz melnas virsmas, robots apstāsies un motori pagriezīsies IZSLĒGTS. Šis punkts ar piecām melnām virsmām atradīsies netālu no izlietnes, lai trauku mazgājamā mašīna varētu izkraut plāksnes no robota mazgāšanai.

Izmantojot melnu lenti, mēs izveidosim ceļu uz virtuves plaukta, un šis ceļš beigsies netālu no izlietnes, tāpēc robots apstāsies netālu no izlietnes, un trauku mazgājamā mašīna izkraus plāksnes un pēc tam robots virzīsies uz ceļa un meklēs traukus. atkal.

Robota trase

4. solis: darba sākšana ar Arduino

Ja iepriekš neesat pazīstams ar Arduino IDE, neuztraucieties, jo zemāk jūs varat redzēt skaidrus koda ierakstīšanas soļus mikrokontrolleru dēlī, izmantojot Arduino IDE. Arduino IDE jaunāko versiju varat lejupielādēt vietnē šeit un veiciet tālāk norādītās darbības.

  1. Kad Arduino dēlis ir savienots ar datoru, atveriet “Control panel” un noklikšķiniet uz “Hardware and Sound”. Pēc tam noklikšķiniet uz “Ierīces un printeri”. Atrodiet tās ostas nosaukumu, kurai ir pievienota jūsu Arduino dēlis. Manā gadījumā tas ir “COM14”, bet datorā tas var atšķirties.

    Ostas atrašana

  2. Tagad atveriet Arduino IDE. No Rīki iestatiet Arduino dēli uz Arduino / Genuino UNO.

    Dēļu iestatīšana

  3. Tajā pašā izvēlnē Rīks iestatiet porta numuru, kuru redzējāt vadības panelī.

    Portas iestatīšana

  4. Lejupielādējiet zemāk pievienoto kodu un nokopējiet to savā IDE. Lai augšupielādētu kodu, noklikšķiniet uz augšupielādes pogas.

Jūs varat lejupielādēt kodu no Šeit

5. solis: izpratne par kodeksu

Kods ir ļoti vienkāršs. Tas ir īsumā paskaidrots zemāk:

  1. Koda sākumā tiek inicializēti sensora tapas un līdz ar to tiek inicializēti arī motora draivera L298N tapas.
    int iespējot1pin = 10; // PWM tapas inicializēšana 1. motora analogajai ieejai int motor1pin1 = 2; // Pozitīvās tapas inicializēšana 1. motoram int motor1pin2 = 3; // Negatīvās tapas inicializēšana 1. motoram int enable2pin = 11; // PWM tapas inicializēšana analogai ieejai motoram 2 int motor2pin1 = 4; // Pozitīvās tapas inicializēšana 2. motoram int motor2pin2 = 5; // Negatīvās tapas inicializēšana 2. motoram int S1 = 12; // Inicializēt tapu 12 1. sensoram int S2 = 9; // 9. tapas inicializēšana 2. sensoram int S3 = 8; // 8. sensora inicializēšana 3. sensoram int S4 = 7; // Inicializēt tapu 7 sensoram 4 int S5 = 6; // Inicializē 6. tapu 5. sensoram
  2. anulēt iestatīšanu () ir funkcija, ko izmanto, lai iestatītu tapas kā INPUT vai OUTPUT. Tas arī nosaka Arduino pārraides ātrumu. Bauda ātrums ir ātrums, kādā mikrokontrolleru plate sazinās ar pārējiem pievienotajiem komponentiem.
    {pinMode (enable1pin, OUTPUT); // PWM iespējošana motoram 1 pinMode (enable2pin, OUTPUT); // PWM iespējošana motoram 2 pinMode (motor1pin1, OUTPUT); // motor1 pin1 iestatīšana kā izejas pinMode (motor1pin2, OUTPUT); // motor1 pin2 kā izejas pinMode iestatīšana (motor2pin1, OUTPUT); // motor2 pin1 iestatīšana kā izejas pinMode (motor2pin2, OUTPUT); // motor2 pin2 iestatīšana kā izejas pinMode (S1, INPUT); // Sensora1 iestatīšana kā ievades pinMode (S2, INPUT); // Sensora2 iestatīšana kā ievades pinMode (S3, INPUT); // Sensora 3 iestatīšana kā ievades pinMode (S4, INPUT); // Sensora 4 iestatīšana kā ievades pinMode (S5, INPUT); // Sensora 5 iestatīšana kā ievade Serial.begin (9600); // Pārraides ātruma iestatīšana}
  3. void loop () ir funkcija, kas ciklā darbojas atkal un atkal. Šajā ciklā mēs dodam norādījumus Arduino UNO, kādas darbības veikt. Pilns motoru apgriezienu skaits ir 255, un abiem motoriem ir atšķirīgs ātrums. Tātad, ja mēs vēlamies virzīt robotu uz priekšu, pagriezieties pa labi utt., Mums jāpielāgo motoru ātrums. Mēs kodā esam izmantojuši analogās tapas, jo mēs vēlamies mainīt divu motoru ātrumu dažādos apstākļos. Jūs pats varat pielāgot savu motoru ātrumu.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5)) // Pārsūtīt tālāk līnija {analogWrite (enable1pin, 61); // Motora 1 ātruma analogWrite (enable2pin, 63); // Motors 2 ātrumu digitalWrite (motor1pin1, HIGH); // Motora 1 kontakta 1 iestatījums ir High digitalWrite (motor1pin2, LOW); // Motora 1 tapa 2 ir iestatīta uz Low digitalWrite (motor2pin1, HIGH); // Motora 2 kontaktu 1 iestatījums ir High digitalWrite (motor2pin2, LOW); // 2. motora 2. kontakts ir iestatīts uz Zema}, ja (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Strauji pagriezieties pa labi {analogWrite (enable1pin, 60); // Motora 1 ātruma analogWrite (enable2pin, 80); // Motors 2 ātrumu digitalWrite (motor1pin1, HIGH); // Motora 1 kontakta 1 iestatījums ir High digitalWrite (motor1pin2, LOW); // Motora 1 tapa 2 ir iestatīta uz Low digitalWrite (motor2pin1, LOW); // Motora 2 kontaktu 1 iestatījums ir Low digitalWrite (motor2pin2, LOW); // 2. motora 2. kontakts ir iestatīts uz Zema}, ja ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Strauji pagriezieties pa kreisi {analogWrite (enable1pin, 80); // Motora 1 ātruma analogWrite (enable2pin, 65); // Motors 2 ātrumu digitalWrite (motor1pin1, LOW); // Motora 1 kontakta 1 iestatījums ir Low digitalWrite (motor1pin2, LOW); // Motora 1 tapa 2 ir iestatīta uz Low digitalWrite (motor2pin1, HIGH); // Motora 2 kontaktu 1 iestatījums ir High digitalWrite (motor2pin2, LOW); // 2. motora 2. kontakts ir iestatīts uz Zema}, ja ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)) // apstājas {analogWrite (enable1pin, 0); // Motora 1 ātrums analogWrite (enable2pin, 0); // Motors 2 ātrumu digitalWrite (motor1pin1, LOW); // Motora 1 kontakta 1 iestatījums ir Low digitalWrite (motor1pin2, LOW); // Motora 1 tapa 2 ir iestatīta uz Low digitalWrite (motor2pin1, LOW); // Motora 2 kontaktu 1 iestatījums ir Low digitalWrite (motor2pin2, LOW); // 2. motora 2. tapa ir iestatīta uz Zema}}

Pieteikumi

  1. Rūpnieciskie pielietojumi : Šos robotus var izmantot kā automatizētus aprīkojuma nesējus nozarēs, kas aizstāj tradicionālās konveijera lentes.
  2. Iekšzemes lietojumi : Tos var izmantot arī mājās mājas vajadzībām, piemēram, grīdas tīrīšanai, virtuves darbiem utt.
  3. Norāžu pieteikumi : Šos robotus var izmantot sabiedriskās vietās, piemēram, tirdzniecības centros, pārtikas laukumos, muzejos utt., Lai sniegtu ceļa norādes