Hogyan lehet robotokat használva mozgatni az ételeket a konyhapolcon?

Ha arra törekszik, hogy drámai módon növelje konyhája varázsát és funkcionalitását, fontolja meg az emberi erőfeszítések minimalizálását. Az emberi erőfeszítés minimalizálható egy házi robot készítésével, amely jelen lesz a konyhában, és amely piszkos edényeket visz a mosogató felé, és ott megáll. Amikor az illető kirakja az edényeket a robotról, az visszatér, és többet hoz belőlük. Néha a nagy konyhákban a mosogató nincs olyan közel a szekrényekhez, így a robot a polc egyik helyéről a másik felé viszi az edényeket. A polcon a fekete szalag segítségével elkészítik a robot elérési útját. A robot két infravörös közelségi szenzort használ az út felismerésére, és az érzékelőktől kapott bemenet alapján az Arduino egy motorvezető segítségével irányítja a motorokat a mozgásra.



Belföldi robot

Hogyan lehet összekapcsolni az összes szükséges perifériát egy hazai robot elkészítésével?

Most össze kell gyűjtenünk a szükséges alkatrészeket, és el kell kezdenünk a robot gyártását.



1. lépés: Használt alkatrészek

  • Arduino uno
  • IR érzékelő (x5)
  • DC motorok
  • Autó kerék üldözés
  • Fekete szalag
  • Jumper huzalok
  • DC akkumulátor
  • Ragasztópisztoly
  • Csavarhúzó készlet

2. lépés: Az alkatrészek tanulmányozása

Mivel már elkészítettük az összetevők listáját, lépjünk előre, és végezzünk egy rövid tanulmányt az egyes alkatrészek működéséről.



A Arduino UNO egy mikrokontroller kártya, amely egy ATMega 328P mikrochipből áll, és az Arduino.cc fejlesztette ki. Ez a kártya digitális és analóg adatcsapokkal rendelkezik, amelyek összekapcsolhatók más bővítőkártyákkal vagy áramkörökkel. Ez a kártya 14 digitális érintkezővel, 6 analóg tűvel rendelkezik, és az Arduino IDE (Integrált fejlesztői környezet) programozható B típusú USB kábelen keresztül. 5 V feszültség szükséges TOVÁBB és a C kód működtet.



Arduino UNO

Az L298N motorvezérlő az egyenáramú motorok működtetésére szolgál. Az L298N egy kettős H-Bridge motor meghajtó, amely két egyenáramú motor sebességének és irányának szabályozását teszi lehetővé egyszerre. A modul 5 és 35 V közötti feszültségű egyenáramú motorokat képes meghajtani, csúcsárama legfeljebb 2 A. Ez attól függ, hogy milyen feszültséget használ a motor VCC kapcsa. Projektünkben az 5 V-os tűt fogjuk bemenetként használni, mivel az IC megfelelő működéséhez 5 V-os tápegységre kell csatlakoztatnunk. Az L298N motorvezérlő kapcsolási rajza csatlakoztatott egyenáramú motorokkal az alábbiakban látható az L298N motorvezérlő mechanizmusának megértéséhez. A bemutatáshoz a bemenet az Logikai állapot infravörös érzékelők helyett.

Áramköri rajz a Proteus 8 Professional készüléken



3. lépés: A blokkdiagram és a működési elv megértése

Először áttekintjük a blokkdiagramot, megértjük a működési elvet, majd a hardverkomponensek összeállítása felé haladunk.

Blokk diagramm

Az általunk használt érzékelők digitálisak és 0 vagy 1 értékű kimenetet adhatnak. Ezek az érzékelők, amelyeket megvásároltunk, adnak 1 fehér felületeken és 0 a fekete felületeken. Az általunk vásárolt érzékelők véletlenszerű értékeket adnak, néha adnak is 0 a fehér felületeken és 1 a fekete felületeken. Öt érzékelőt fogunk használni ebben a robotban. Négy feltétel van a kódban öt érzékelőhöz.

  1. Előre a vonalon: Amikor a középső érzékelő a fekete felületen van, a többi érzékelő pedig a fehér felületen, akkor az előre haladó állapot végrehajtódik, és a robot egyenesen előre halad. Ha abból indulunk ki Érzékelő1 és folytassa addig 5. érzékelő, az az érték, amelyet az egyes érzékelők adni fognak (1 1 0 1 1.) .
  2. Élesen jobbra: Amikor az 1. érzékelő és 2. érzékelő a fehér felületen vannak, a többi érzékelő pedig a fekete felületen van, az éles jobbra fordulási feltétel végrehajtódik, és a robot élesen jobbra fordul. Ha abból indulunk ki Érzékelő1 és folytassa addig 5. érzékelő, az az érték, amelyet az egyes érzékelők adni fognak (1 1 0 0 0).
  3. Éles balra: Amikor az 4. érzékelő és 5. érzékelő a fehér felületen vannak, a többi érzékelő pedig a fekete felületen van, az éles balra fordulás feltétel végrehajtásra kerül, és a robot élesen balra fordul. Ha abból indulunk ki Érzékelő1 és folytassa addig 5. érzékelő, az az érték, amelyet az egyes érzékelők adni fognak (0 0 0 1 1.) .
  4. Álljon meg: Amikor az öt érzékelő mind a fekete felületen van, a robot leáll, és a motorok megfordulnak KI. Ez az öt fekete felületű pont a mosogató közelében lesz, így a mosogatógép kirakhatja a lemezeket a robotról mosáshoz.

A szalagot fekete szalaggal fogjuk megtenni a konyhai polcon, és ez az út a mosogató közelében ér véget, így a robot megáll a mosogató közelében, és a mosogatógép kirakja a tányérokat, majd a robot az ösvény felé halad és az eszközök után kutat. újra.

Robot nyomon követése

4. lépés: Az Arduino használatának megkezdése

Ha még nem ismeri az Arduino IDE-t, ne aggódjon, mert az alábbiakban a kód égetésének világos lépéseit láthatja a mikrokontroller táblán az Arduino IDE használatával. Az Arduino IDE legújabb verzióját innen töltheti le itt és kövesse az alábbi lépéseket:

  1. Amikor az Arduino kártya csatlakozik a számítógépéhez, nyissa meg a „Vezérlőpult” elemet, majd kattintson a „Hardver és hang” elemre. Ezután kattintson az „Eszközök és nyomtatók” elemre. Keresse meg annak a portnak a nevét, amelyhez Arduino táblája csatlakozik. Az én esetemben ez a „COM14”, de lehet, hogy más lesz a számítógépén.

    Port keresése

  2. Most nyissa meg az Arduino IDE-t. Az Eszközök közül állítsa az Arduino táblát a következőre: Arduino / Genuino UNO.

    Tábla beállítása

  3. Ugyanabban az Eszköz menüben állítsa be a portszámot, amelyet a kezelőpanelen látott.

    Port beállítása

  4. Töltse le az alább mellékelt kódot, és másolja be az IDE-be. A kód feltöltéséhez kattintson a feltöltés gombra.

A kódot innen töltheti le Itt

5. lépés: A kód megértése

A kód nagyon egyszerű. Az alábbiakban röviden kifejtjük:

  1. A kód kezdetekor az érzékelő csapjai inicializálódnak, és ezzel együtt az L298N motorvezérlő csapjai is inicializálásra kerülnek.
    int enable1pin = 10; // PWM-pin inicializálása analóg bemenethez az 1. motorhoz int motor1pin1 = 2; // Pozitív tű inicializálása az 1. motorhoz int motor1pin2 = 3; // Negatív tű inicializálása az 1. motorhoz int enable2pin = 11; // PWM-pin inicializálása analóg bemenethez a 2. motorhoz int motor2pin1 = 4; // Pozitív csap inicializálása a 2. motorhoz int motor2pin2 = 5; // A 2. motor negatív csapjának inicializálása int S1 = 12; // Az 1. érzékelő 12. érintkezőjének inicializálása int S2 = 9; // 9. érintkező inicializálása a 2. érzékelőhöz int S3 = 8; // 8. érintkező inicializálása a 3. érzékelőhöz int S4 = 7; // A 7. érzékelő inicializálása a 4. érzékelőhöz int S5 = 6; // A 6. érintkező inicializálása az 5. érzékelőhöz
  2. void setup () egy olyan funkció, amely a csapok INPUT vagy OUTPUT beállítására szolgál. Beállítja az Arduino átviteli sebességét is. Az átviteli sebesség az a sebesség, amellyel a mikrokontroller kártya kommunikál a többi csatlakoztatott alkatrésszel.
    {pinMode (enable1pin, OUTPUT); // PWM engedélyezése az 1-es motorhoz pinMode (enable2pin, OUTPUT); // PWM engedélyezése a 2-es motorhoz pinMode (motor1pin1, OUTPUT); // A motor1 pin1 beállítása kimeneti pinMode-nak (motor1pin2, OUTPUT); // A motor1 pin2 beállítása kimeneti pinMode (motor2pin1, OUTPUT); // A motor2 pin1 beállítása kimeneti pinMode (motor2pin2, OUTPUT); // A motor2 pin2 beállítása kimeneti pinMode (S1, INPUT); // Az 1. érzékelő beállítása bemeneti pinMode (S2, INPUT); // A 2. érzékelő beállítása bemeneti pinMode (S3, INPUT); // A 3. érzékelő beállítása bemeneti pinMode (S4, INPUT); // A 4. érzékelő beállítása bemeneti pinMode-ként (S5, INPUT); // Az 5. érzékelő beállítása Serial.begin (9600) bemenetként; // Az adatátviteli sebesség beállítása}
  3. void loop () olyan funkció, amely újra és újra fut egy ciklusban. Ebben a körben utasításokat adunk az Arduino UNO-nak, milyen műveleteket kell végrehajtani. A motorok teljes fordulatszáma 255, és mindkét motor sebessége eltérő. Tehát, ha előre akarjuk vinni a robotot, forduljunk jobbra stb., Akkor be kell állítanunk a motorok fordulatszámát. Analóg csapokat használtunk a kódban, mert a két motor fordulatszámát különböző körülmények között szeretnénk változtatni. Ön egyedül állíthatja be motorjainak fordulatszámát.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5)) // Továbbítás az {analWrite (enable1pin, 61) sor; // Motor 1 sebességes analóg írása (enable2pin, 63); // Motor 2 sebességes digitalWrite (motor1pin1, HIGH); // 1. motor 1. tűje magas digitalWrite értékre van állítva (motor1pin2, LOW); // Az 1. motor 2. érintkezője alacsony digitalWrite értékre van állítva (motor2pin1, HIGH); // Az 1. motor 1. érintkezője High digitalWrite értékre van állítva (motor2pin2, LOW); // A 2. motor 2. tűje alacsonyra van állítva, ha (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Élesen jobbra fordul {analWrite (enable1pin, 60); // Motor 1 sebességes analóg írása (enable2pin, 80); // Motor 2 sebességes digitalWrite (motor1pin1, HIGH); // 1. motor 1. tűje magas digitalWrite értékre van állítva (motor1pin2, LOW); // Az 1. motor 2. érintkezője Low digitalWrite értékre van állítva (motor2pin1, LOW); // Az 1. motor 1. érintkezője alacsony digitalWrite értékre van állítva (motor2pin2, LOW); // A 2. motor 2. tűje alacsony értékre áll, ha ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5)) / / / Élesen balra fordul {analWrite (enable1pin, 80); // Motor 1 sebesség analóg írása (enable2pin, 65); // Motor 2 sebességes digitalWrite (motor1pin1, LOW); // Az 1. motor 1. érintkezője alacsony digitalWrite értékre van állítva (motor1pin2, LOW); // Motor 1 tűs 2 beállítása Low digitalWrite (motor2pin1, HIGH); // Az 1. motor 1. érintkezője High digitalWrite értékre van állítva (motor2pin2, LOW); // A 2. motor 2. tűje alacsonyra van állítva, ha ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5)) // leáll {analogWrite (enable1pin, 0); // Motor 1 sebességes analóg írása (enable2pin, 0); // Motor 2 sebességes digitalWrite (motor1pin1, LOW); // Az 1. motor 1. érintkezője alacsony digitalWrite értékre van állítva (motor1pin2, LOW); // Az 1. motor 2. érintkezője Low digitalWrite értékre van állítva (motor2pin1, LOW); // Az 1. motor 1. érintkezője alacsony digitalWrite értékre van állítva (motor2pin2, LOW); // A 2. motor 2. tűje alacsonyra van állítva}}

Alkalmazások

  1. Ipari alkalmazások : Ezek a robotok automatizált eszközhordozóként használhatók a hagyományos szállítószalagok helyettesítésére szolgáló iparágakban.
  2. Hazai alkalmazások : Ezeket otthonokban is fel lehet használni háztartási célokra, például padlótisztítás, konyhai munka stb.
  3. Útmutató alkalmazások : Ezek a robotok nyilvános helyeken, például bevásárlóközpontokban, éttermi bíróságokon, múzeumokban stb. Használhatók útvonaltervezés céljából