Milyen robotokat lehet összerakni arduinóból. Hogyan készítsünk robotot Arduino-n saját kezűleg: házi készítésű Arduino robot otthon

Ebben a cikkben a semmiből építjük meg robotunkat. Amit kapunk, lásd az alábbi fotót. A robot önállóan és okostelefon irányítása alatt is fog vezetni. Megvizsgáljuk saját mobil robotunk elkészítését is a semmiből.

3 DNyomtató

Ha robotot akarok építeni, el kell döntenem, hogy melyik platformra szerelem fel a motorokat, táblákat, akkumulátorokat. Természetesen vásárolhatok kész verziót is, de érdekesebb, ha saját kezűleg elkészíted a platformot. Egy ilyen platform biztosan megfelel az Ön igényeinek. A platform az org-ból készülhet. Üveg, rétegelt lemez, majd megcsinálom műanyagból.

Elmondhatja, hogy kényelmetlen saját maga elkészíteni egy platformot, és sok szerszámra lesz szüksége, a középső lyukasztótól a darálóig. És azt mondom, hogy fantáziára és 3D nyomtatóra van szükségünk.

3d nyomtató? Valószínűleg mindenki ismer egy közönséges irodai nyomtatót, amely képes A4-es formátumra kinyomtatni a számunkra szükséges szöveget. Tehát a 3D nyomtató olyan nyomtató, amely képes kinyomtatni a kívánt részt. Különféle 3D nyomtatók vannak. Van egy FDM technológiás nyomtatóm (rétegről rétegre felhordás). Az interneten megtudhatja, hogy milyen egyéb 3D nyomtatási technológiák állnak rendelkezésre.

Számos 3D nyomtató fut Arduino rendszeren. Ha szeretné, megépítheti saját 3D nyomtatóját. A 3D nyomtató alapötlete, hogy bármit kinyomtathat, de mi egy robot testét nyomtatjuk.

Először is határozzuk meg a platform leírását. Azt akarom, hogy a platform kétkerekű legyen, és bele kell illeszteni egy Arduino-t, a teljesítményt, a motorokat és néhány érzékelőt.

Most papírra kell rajzolnia a platform elrendezését, és el kell helyeznie a szükséges alkatrészeket. Például így.

Amikor az elrendezés készen áll, el kell készítenie a platform 3D-s modelljét. Számos program létezik erre. Általában használom. Nem fogom megtanítani az Iránytűvel való munkavégzést, de ha érdekel, nézz körül az interneten, vagy kérd meg a megjegyzésekben, hogy készíts egy leckét az Iránytűről.

Ezt a platformot találtam ki.

Ezt követően a 3D-s modellt a 3D nyomtató által érthető G-kóddá kell konvertálni. Ehhez speciális programok vannak - szeletelők. A Repetier-Host programot használom a Sli3er szeletelővel. Így néz ki az alkatrész nyomtatásra készen.

És itt a nyomtatott modell.

Nemrég támadt egy ötletünk, és máris előttünk van a kész rész. A 3D nyomtató segítségével egyedi dolgokat készíthet egyetlen példányban. A 3D nyomtató fantasztikus. mindenkinek tanácsolom!

Motorok

Most azon kell gondolkodnunk, hogyan fog mozogni a mobil robotunk. Az első dolog, ami eszembe jut, a kerekek. Tehát csináljuk.

Ha valaki emlékszik, már próbáltuk rákötni a motort az Arduinóra. Aki nem emlékszik, nem tudja vagy nem olvasta, nézze meg. A motor MOSFET-tel történő csatlakoztatásának jelentős hátrányai vannak - lehetetlen gyorsan megváltoztatni a sebességet és a forgásirányt. Ideje megtanítani az Arduinót a motorok valódi irányítására!

Ehhez használhatja az L293D chipet. Az L293D lehetővé teszi két motor egyidejű vezérlését, csatornánként 600 mA áramerősséggel és 1000 mA csúcsárammal, ha pedig kombinálja a csatornákat, akkor akár 1200 mA és 2000 mA csúcsárammal. Az egyesületről alább szólok.

Kezdetnek, mint mindig, érdemes megnézni az adatlapot, hogy kitalálja, hova és mit kell csatlakoztatni. Ha nem ismeri a mikroáramköröket, akkor érdemes elolvasni a cikket.

Kezdjük el. Állítsunk össze egy egyszerű sémát egy motorral, és irányítsuk. Ügyeljen az összeszerelési rajzra.

Ha nem tud angolul, vagy egyszerűen nem érti az adatlapot, akkor itt található a kapcsolat leírása. Remélem mindenki ismeri a mikroáramkörök számozását, vagy egy mikroáramkörökről szóló cikkből tanult.

  • 1. érintkező – A motor forgási sebességéért felelős. A 9-es érintkezőn van egy hasonló.0-tól 255-ig terjedő értékeket vesz fel, ami könnyen rendezhető PWM-mel.Az Arduino ötödik lábához csatlakoztattam az EN-t, ami támogatja a PWM-et.
  • 2. és 7. érintkező – A motor mozgási irányáért felelős. Hasonlóak vannak a 10-es és 15-ös érintkezőkön is. Ha logikai egységet helyezünk az egyik érintkezőre, a motor az egyik irányba forog (a motor csatlakozásától függően), ha logikai egységet alkalmazunk a másikra, akkor a motor forog ellenkező irányba.
  • 3. és 6. érintkező - A motort hozzá kell csatlakoztatni. A polaritás nem fontos, csak a forgásirány függ a csatlakozástól. Hasonló - a 11-es és 14-es csapokon.
  • A 4-es és 5-ös csap le van köszörülve. Szerintem nem kell magyarázat. Hasonló - 12 és 13.
  • 8. érintkező – A motorok teljesítménye. A tápfeszültséget 4,5 és 36 V között kell biztosítani.
  • 16-os érintkező - egy logikai egységet kap az Arduino. 5 volt, ha valami.

Kiváló! A motor csatlakoztatva van. Most már kódolhat.

#define FRW_BUT 7 //Előre gomb #define BCW_BUT 6 //Vissza gomb #define SPD 5 //Forgási sebesség szabályozás... #define FRW 4 //...forgásirány (előre)... # BCW definiálása 3 / /...forgásirány (hátra) #define SPD_POT A5 int xspeed = 0; //A motor forgási sebességét meghatározó változó int frw_move = 0; //A "forward" parancs változója int bcw_move = 0; //A "back" parancs változója void setup() ( //Tűk tervezése pinMode(SPD, OUTPUT); pinMode(FRW, OUTPUT); pinMode(BCW, OUTPUT); pinMode(SPD_POT, INPUT); pinMode(FRW_BUT, INPUT_PULLUP ); pinMode(BCW_BUT, INPUT_PULLUP) = analogRead(SPD_POT); constrain(xspeed, 0, 1023); xspeed = map(xspeed, 0, 1023, 0, 255); //Határozza meg az előre gomb megnyomását if(!digitalRead(FRW_BUT)) ( frw_move = 1; ) else ( frw_move = 0; ) //A "vissza" gomb megnyomásának meghatározása if(!digitalRead(BCW_BUT)) ( bcw_move = 1; ) else ( bcw_move = 0; ) //A függvény meghívása az adatok L293D-be küldéséhez motor(); ) void motor() ( //Adatok küldése L293D analogWrite(SPD, xspeed); digitalWrite(FRW, frw_move); digitalWrite(BCW,bcw_move); )

Hogyan működik? Egyszerűen működik. A bal gomb megnyomásakor a kerék az egyik, a jobb oldali gomb megnyomására a másik irányba forog. A potenciométer gombjának elforgatásával beállíthatja a motor forgási sebességét. Motoros tesztberendezésünk működését a videó mutatja be.

Z.Y. Igen, tudom, hogy a videó minősége nem túl jó, de igyekszem találni egy megfelelő kamerát, és mielőbb elintézni a felvételi helyet.

Most az L293 csatornák csatlakoztatásáról. Ha erősebb motort szeretne csatlakoztatni, kombinálhatja a csatornákat.

Az első mód a mikroáramkör analóg kimeneteinek párhuzamos csatlakoztatása, ami a maximális áramerősséget kétszeresére növeli. Mínusz - csak egy motor csatlakoztatható egy mikroáramkörhöz.

A második módszer egy másik L293 forrasztása az L293 tetejére. Fogjuk és forrasztjuk az 1-es tűt az 1-es tűhöz, a 2-es tűt a 2-eshez és így tovább. Ez a módszer kétszer növeli az áramerősséget, de az elsőtől eltérően lehetővé teszi két motor egyidejű vezérlését. Lehet, hogy van ötleted - forrasztsak még pár L293-at? Sajnos a mikroáramkörök utólagos forrasztása nem vezet az áramerősség további 600 mA-es növekedéséhez. A növekedés kicsi lesz.

– Eh, ki kell takarítanom a 12 voltos motoromat… Ne idegeskedj. Erősebb motorokhoz az idősebb testvér L293 - L298 alkalmas, de most nem vesszük figyelembe. Ezt egy kicsit később megtesszük.

Motor Pajzs

Egyetértek azzal, hogy egy ilyen vezetékkötegnél nem néz ki túl jól. Hogy megszabaduljon tőle, forraszthatja az áramkört L293-mal egy nyomtatott áramkörre vagy a forrasztási lapra, de mi van, ha nem akar forrasztani, vagy nem tudja, hogyan? Erre vannak kész megoldások pajzsok formájában például az Arduino számára. Az egyikről fogok beszélni - a Motor Shield V1-ről a DK Electronics-tól.

Valójában itt van egy fotó a pajzsról.

Ez a pajzs két L293D-vel rendelkezik, amely lehetővé teszi négy motor egyidejű vezérlését. Két érintkező is van a szervomotorokhoz. A tápellátást vagy a sorkapocs kapja, vagy a jumper felszerelése esetén az Arduino tápegységről. A jumper azt is lehetővé teszi, hogy az Arduino áramellátását a pajzsról vegye le. Van egy speciális könyvtár a pajzs használatához. Letöltheti.

A tábla mínuszaihoz. Szinte minden digitális tűt használnak a pajzs működéséhez, kivéve a 0, 1, 2, 13-at. Mint tudjuk, a 0 és 1 tűket az Arduino firmware-hez használja, ezért jobb, ha nem használja őket.

Van egy jó oldala is. Ha például nem csatlakoztat szervókat, akkor a 9-es és 10-es érintkezők felszabadulnak, és ha nem használjuk egyik motort sem, akkor a 3-as, 5-ös, 6-os, 11-es érintkezők szabadulnak fel, a nem használt motortól függően. És tovább. Továbbra is hat analóg kimenet áll rendelkezésünkre, amelyeket igény szerint digitálisként is használhatunk.

Kezdjük a motorok csatlakoztatásával. A kísérlet kedvéért olyan robotot készítünk, amely előre, hátra halad, és a saját tengelye körül is forog. Platformként a saját fejlesztésemet vettem, amit fent leírtam. Amit a szíved megkíván, azt vehetsz, a lényeg, hogy adottságait tekintve megfelelő legyen.

Szükségünk lesz

  • Arduino UNO - Bármilyen más Arduino UNO alaktényező használható. Leonardo vagy Iskra például.
  • Motorpajzs – Ennek a pajzsnak más verziói is működni fognak.
  • Motorok 6V-hoz - Bármelyik választható, amely megfelel a Motor Shield jellemzőinek.
  • 42 mm-es kerekek – a motorokhoz és a platformhoz illeszkedő kerekek
  • Motortartók – A motorokat az emelőkosárhoz kell rögzíteni. Vedd azt, amelyik megfelel a tiédnek.
  • Tápellátás - Vettem egy akkucsomagot, és kb 5 voltot kaptam, ami nem elég a motorok és az Arduino tápellátásához, ezért csatlakoztattam egy DC / DC konvertert és 9 V-ra emeltem a feszültséget. Ha nincs konverter, akkor használhatja a szokásos koronát, ha csatlakoztatja az Arduino tápegységhez.

Ideje összeszerelni a robotunkat.

1. lépés

Összekapcsoljuk az Arduino-t és a Motor Shieldet.

2. lépés

Összeszereljük a motorokat és rögzítjük a platformhoz.

3. lépés

Az áramot egy boost konverteren keresztül gyűjtjük.

Azoknak, akiknek van Crona. Ne felejtsd el a jumpert!

4. lépés

A motorokat Arduino-val rögzítjük a Motor Shieldhez.

5. lépés

Hozzáadjuk az ételt.

6. lépés (opcionális)

Rögzítse a fedelet - az esztétika érdekében.

Van egy kész robotunk. Itt az ideje beprogramozni. Nézzük a kódot.

//Tartalmazza a könyvtárat a Motor Shield használatához #include //Határozza meg a bal oldali motort a 2. sorkapcson AF_DCMotor l_motor(2); //Határozza meg a jobb oldali motort a 3. sorkapcshoz AF_DCMotor r_motor(3); //Változók a sebesség //és mozgási idő meghatározásához int spd = 50; inttime(1000); void setup() ( //A kezdeti sebesség beállítása és a motorok kikapcsolása l_motor.setSpeed(spd); l_motor.run(RELEASE); r_motor.setSpeed(100); r_motor.run(RELEASE); ) void loop() ( // Menet előre: l_motor.run(FORWARD); r_motor.run(FORWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd); késleltetés(idő); // Hajtás hátrafelé l_motor.run(BACKWARD); r_motor. run(BACKWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd); késleltetés(idő); // Pörgetés az óramutató járásával ellentétes irányban l_motor.run(FORWARD); r_motor.run(BACKWARD); l_motor.setSpeed(spd); r_motor . setSpeed(spd); delay(time); // Pörgetés óramutató járásával megegyező irányban r_motor.run(FORWARD); l_motor.run(BACKWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd); késleltetés(idő); )

Kiváló! Ideje ellenőrizni. Itt egy videó a tesztemből. Mi van veled?

– Mondott valamit a robotlapokról? - mondhatják azok, akik elolvassák a tanfolyam 2. részének bevezető leckét. Igen, vannak ilyen díjak. Fontolja meg a Strela robotplatformot.

Robotika álom. (Közel). Leírtam a tábla előnyeit. Egyenesen a lényegre.

Rá van telepítve az idősebb testvér L293 - L298. A tűk pedig hármasban jelennek meg, ami éppen megfelelő sok érzékelő csatlakoztatásához.

Ez a tábla csatlakoztatható az Arduino UNO és a Motor Shield helyett. Ráadásul az Amperka srácai könyvtárat írtak az Arrow-val való munkavégzéshez, ami a motorok vezérlését meglehetősen triviális feladattá teszi.

Aki nem ismeri, hadd mondjam el. Minden normál könyvtárban vannak példák a használatára, és ez alól az Arrow könyvtár sem kivétel. Megtalálásukhoz lépjen a Fájl -> Példák -> Strela fülre. Itt kiválasztjuk a StrelaMotors példát, ahol egy vázlatot hajtanak végre, amely hasonló a Motor Shield használatával készült vázlathoz. Egyébként a Motor Shieldre is van példa. Ha érdekel nézd meg.

Mit tehet még az Arrow-val - lásd alább És továbblépünk a Bluetooth-on keresztüli vezeték nélküli kommunikációra.

Bluetooth

Természetesen jó egy robot, ami körbejárja magát a helyiségben, de én magam szeretném irányítani a robotot. Ehhez meg kell szervezni a kapcsolatot az Arduino és a vezérlőeszköz között.

Vezérlőeszköznek egy okostelefont választottam. A kommunikációt Bluetooth protokollal fogjuk megszervezni, így ideje ismerkedni.

Ez a HC-06 modul. Nem részletezem túlságosan, de ha érdekel, menjünk tovább. Célunk, hogy okostelefonról irányítsuk a robotot. Kezdjük talán.

Először csatlakoztatnia kell a HC-06-ot az Arduino-hoz. Szoftversoros szoftverrel csatlakozunk. Ez a könyvtár lehetővé teszi a soros port emulálását a szükséges lábakon. A kísérlet kedvéért próbáljuk ezt megtenni az A0(RX) és A1(TX) lábakon. Minek? Emlékezzen arra, amit a Motor Shieldről mondtam.

Így kapcsoljuk össze:

  • Vcc - 5V-ra
  • GND a GND
  • RX to TX
  • TX RX-re

A HC-06-ot csatlakoztatom a fent épített robothoz. Ehhez a Motor Shield három csíkját fogjuk használni.

A robot készen áll. Még programozni kell.

A kód elolvasása előtt néhány dolgot tudnia kell. A motorok nem tökéletesek, mint minden más ezen a világon. Még az azonos tételből származó, egymást követő két motor is kissé eltérő lesz, ami befolyásolja az azonos feszültségen lévő fordulatok számának különbségét. Ha a motorokat egyszerűen a motorpajzshoz csatlakoztatjuk, és ugyanazt a sebességet kapjuk, és ez ugyanaz a feszültség, akkor a robot nem egyenesen megy, hanem kicsit vagy sokat oldalra. Ez látható a fenti videón.

Ennek elkerülése érdekében korrekciós tényezőket alkalmazunk. A bal kerekem sokkal gyorsabban pörög, mint a jobb, ezért 0,62-es tényezőt adtam a kompenzációnak. Az együttható értékét kísérleti úton választjuk ki.

// Tartalmazzon könyvtárakat a Motor Shield és a Software Serial #include használatához #beleértve //Tűk meghatározása a SoftwareSerial emulációhoz mySerial(A0, A1); // RX, TX //A bal oldali motor meghatározása a 2. sorkapocshoz AF_DCMotor l_motor(2); //Határozza meg a jobb oldali motort a 3. sorkapcshoz AF_DCMotor r_motor(3); //Változók a sebesség meghatározásához //és a forgási lebegés beállításához spd = 70.0; float corr_l = 0,62; float corr_r = 1; floatrot = 50,0; void setup() ( //A kezdeti sebesség beállítása és a motorok kikapcsolása l_motor.setSpeed(spd); l_motor.run(RELEASE); r_motor.setSpeed(spd); r_motor.run(RELEASE); //Kapcsolat létrehozása a HC-06-tal mySerial .begin(9600); ) void loop() ( //Ha vannak adatok, //hívja a vezérlőfüggvényt if (mySerial.available()) ( drive(); ) ) void drive() ( //Változó bejövő adatok char control = mySerial.read(); //Állítsa be először a sebességet if (((vezérlő - "0") >= 0) && ((vezérlő - "0")<= 9)) { spd = (control - "0") * 25.0; //сохраняем новое значение скорости } else if (control == "q") { spd = 255.0; } //Сравниваем команды, пришедшие со смартфона else if (control == "S") //Если пришла команда "S", стоим { l_motor.run(RELEASE); r_motor. run(RELEASE); } else if (control == "F") //Если пришла команда "F", едем вперед { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "B") //Если пришла команда "B", едем назад { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "I") //Если пришла команда "I", едем вперёд и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "J")//Если пришла команда "J", едем назад и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "G") //Если пришла команда "G", едем вперёд и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "H") //Если пришла команда "H", едем назад и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "R") //Если пришла команда "R", крутимся вправо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(BACKWARD); } else if (control = "L") //Если пришла команда "L", крутимся влево { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); l_motor.run(FORWARD); r_motor.run(BACKWARD); } }

A robotot megkérdezték. Most vegyünk egy okostelefont.

RC vezérlő

Számos különböző alkalmazás létezik az Arduino és az okostelefon Bluetooth-on keresztüli összekapcsolására. A keresésben a kulcsszavak a következők lesznek: Arduino, Bluetooth, RC.

A Bluetooth RC Controller nevű alkalmazást választottam. Célunknak tökéletes. A gomb megnyomásakor az alkalmazás egy char értéket küld a HC-06-nak, amely viszont továbbítja a bejövő értéket az Arduino-nak. A gombra kattintáskor küldött érték saját maga állítja be.

A robottal való kapcsolat létrehozásához kattintson a fogaskerékre, és válassza ki a „Beállítások” elemet A „Beállítások” részben meg kell győződnie arról, hogy a gombok megfelelnek ezeknek az elküldött karaktereknek, vagy módosítani kell az Arduino kódot.

A karakterek beállítása után kapcsolatot létesíthet a HC-06-tal. Kattintson a fogaskerékre, és lépjen a „Csatlakozás az autóhoz” elemhez. Megnyílik egy ablak a párosított eszközökkel. Ebben kiválasztjuk a HC-06-ot. Ha nincs ott, akkor az „Eszközök keresése” funkcióval keressük. Ha az eszköz megtalálható, de nem akar párosítani, lépjen az okostelefonon a Bluetooth lehetőségre, és párosítsa a szokásos módon. Az alapértelmezett jelszó 1234. Ezután lépjen az „Eszközök keresése” elemre, és csatlakozzon.

Amikor a kapcsolat létrejött, a tetején lévő zöld fény kigyullad, és a HC-06 villogása megszűnik. Elkezdhet vezetni. A tetején lévő csík felelős a mozgás sebességéért.

Térjünk vissza az Arrow-hoz. Az Arrow másik előnye a Bluetooth XBee formátum telepítésének lehetősége, és az a jó, hogy a többi tű szabadon marad. És mivel az Arrow-hoz van egy kész könyvtár, ami segít csökkenteni a motorok vezérléséhez szükséges kódot, nagyon érdemes az Arrow segítségével Bluetooth-on keresztül irányítani a robotot.

Ehhez csatlakoztatni kell az XBee-t a Strelához, villogni kell az „ArduinoBluetoothRCCarOnStrela” elnevezésű példák vázlatával, és az RC vezérlőn keresztül csatlakozni az XBee-hez.

Tippek

A robotom készen áll, és akár okostelefonról is parancsra hajt. De nem mehet minden simán. Beszélek néhány problémáról és azok megoldásáról, valamint tanácsokat adok kezdő robotikusoknak.

A kerekek rossz irányba forognak- ez a probléma könnyen kiküszöbölhető a vezetékek átrendezésével a sorkapcsokban vagy programozottan.

A Bluetooth modul nem működik- ellenőriznie kell az égő piros LED jelenlétét a modulon. Ha nem világít, ellenőrizze, hogy a Bluetooth modul megfelelően van-e csatlakoztatva. Ha a LED világít, de a kapcsolat létrejött, meg kell győződnie arról, hogy a modul RX-je csatlakozik-e a kártya TX-jéhez és fordítva, valamint próbálja ki a modul és az Arduino párosításának módját a szabványon keresztül. Bluetooth interfész.

A robot nem vezet egyenesen- Kicsit feljebb írtam ezt a problémát, amikor a Bluetoothról és a Motor Shieldről beszéltem.

Vezetés közben a robot hirtelen leáll, és elveszíti a kapcsolatotHC-06- Probléma van az áramellátással. Tudjuk, hogy az Arduinonak legalább 7 V-ra van szüksége a stabil működéshez, és azt is tudjuk, hogy a motorok nagyon jól esznek. Ha a multiméter szondákat a feszültségellátás kapcsaihoz viszi, és kikapcsolt motorokkal méri a feszültséget, majd bekapcsolja, láthatja, hogy a multiméter feszültsége csökken. Ezenkívül a feszültség különböző módon csökkenhet.

Ha olyan táp van rákötve, ami nem tud elegendő áramot adni a motoroknak, akkor nagyon leeshet a feszültség, például 9-ről 5 V-ra, és az Arduinónak már nem lesz elég 5 V, és újraindul. A megoldás egy erősebb tápegység csatlakoztatása. Hogyan kell kiszámítani, az alábbiakban elmondom.

Ha erősebb áramforrást csatlakoztat, akkor a feszültségesés csak néhány milliszekundum lehet, de ez elegendő lehet a vezérlő újraindításához. A megoldás a tápvezetékekkel párhuzamosan legalább 1000 uF-os kondenzátor beépítése, a kapacitás kísérletileg meghatározható. A kondenzátort 3300 uF-ra és 16V-ra tettem. Ne felejtse el megnézni a kondenzátor maximális feszültségét.

Ha a tápegység elég erős, a feszültségesés nem haladja meg a 0,2 V-ot.

Néhány tipp kezdő robotikának

A robot elrendezésének megkezdésekor elsőként a tápegység teljesítményének kiszámításáról és a megfelelő áramforrás kiválasztásáról kell gondoskodni. Kár lesz, ha 4 AAA elem nem táplálja a 4 db 6V-os motort, és nincs helye több tápegységnek.

A teljesítmény kiszámításához motorok, táblák, érzékelők jellemzőit keressük. A fizika során tudjuk, hogy a teljesítmény a P = IU képlettel számítható, ahol I az áramerősség, U a feszültség. Ezzel a képlettel és jellemzőkkel könnyen kiszámítható a kész készülék teljesítményfelvétele, a táp teljesítményfelvételének és üzemi feszültségének ismeretében pedig az áramerősség ismeretében megtudhatja a készülék működéséhez szükséges optimális áramerősséget. erősség, a kiválasztott akkumulátorból meghatározhatja a szükséges akkumulátor kapacitást és a készülék működési idejét.

Mint mondtam, mindig kitűzni kell egy konkrét célt, amelynek elérésekor a projekt befejezettnek tekinthető. Ennek a gondolatnak vannak árnyalatai. Ha a projekt elég nagy, akkor a cél elérése nem olyan egyszerű, különösen kódíráskor. Miután írtam egy nagy kódot, azt gondoltam: „Most mindent megírok, és megnézem! Amikor megpróbáltam lefordítani a kódot, nem fordult le azonnal, mivel több hiba is előfordult. Eltávolítottam a hibákat, de csak a kód nem működött úgy, ahogy szerettem volna. Szinte a nulláról kellett mindent átírnom, fokozatosan hozzáadva a kódot, és ellenőrizve a kapott kód működőképességét. Tehát azt tanácsolom, hogy tedd ugyanezt.

Ha a cél egy három karakterből álló "jelszó" létrehozása, akkor ne programozza egyszerre mind a hármat. Jobb, ha egy jelszót készít egy karakterből, ellenőrizze, majd kettőből, ellenőrzés után pedig háromból. Ez segít nekem.

A robot próba és hiba útján jön létre. Nem lehet egyszer programozni, hogy a műveletet tökéletesen hajtsák végre. Ugyanazok a tuning koefficiensek vannak a kerekeken, így nem szabad feladni, ha valami nem sikerül, és ha egyáltalán nem sikerül, akkor fordulhat a kedves emberekhez a fórumokon, vagy írhat nekem, mi biztosan segít!

Következtetés

A robotika fantasztikus! Azt hiszem, hamarosan a robotok elfoglalják, sőt már meg is jelennek az emberek életében. Elkészítettük a legegyszerűbb, okostelefonról irányítható robotautót, később komolyabb projektekkel is foglalkozunk, de egyelőre - hamarosan találkozunk!

A cikk utolsó része egy kis robotról szól, amelyet egy alvázra szerelünk össze - egy műanyag élelmiszertartály fedelére. Robotunk agya az Arduino UNO tábla, a Driver Motor Shield tábla vezérli a motorokat és a szervót, az akadályérzékelő - Ultrahangos szonár - olyan szemek, mint Wally (a rajzfilmből) - "HC-SR04 Ultrasonic Sensor". , . Hogyan készítsünk robotot Arduino-n?

9. Az akkumulátor és a motorok csatlakoztatása

Az akkumulátor csatlakoztatásakor teljesen biztosnak kell lennie a polaritás helyességében, ahogy mondják, mérje meg 7-szer, dugja be egyszer. Próbáld meg ezt a szabályt betartani - a piros vezeték mindig a + tápra van, a fekete vezeték földelve van, ez mínusz, ez GND. A gyártók ugyanazokat a szabályokat igyekeznek betartani. Ezért az elemtartóból érkező vezetékeket a + M és a GND blokkhoz kötjük, a motorvezérlő kártyán. Csatlakoztatjuk a hajtómotorok vezetékeit a motorvezérlő kártya M1, M2 blokkjaihoz. A menetirány szerinti bal oldal az M1 blokkhoz, a jobb oldal az M2 blokkhoz kapcsolódik. A motorok polaritása miatt még nem kell aggódni, a teszt során lehet változtatni, ha valami elromlik.

10. Ellenőrizze a modulok polaritását és helyes csatlakoztatását

A mikrorobot összeszerelésének nagyon fontos és döntő momentuma a blokkvázlat szerinti helyes beépítés, csatlakozások, modulok ellenőrzése, a táblákon lévő jelölések megnézése, tesztelővel, a táp polaritása, kinek van tesztere. .

11. Arduino programozási lépés

A programot számítógépről töltik fel az Arduino mikrokontrollerre, egy USB-kábel és egy speciális program - a vázlatok (programok) programozási és szerkesztési környezete - az Arduino IDE segítségével. A programot az arduino.cc weboldal Letöltés szakaszáról szerezheti be, ahonnan mindig letöltheti a program legfrissebb verzióját. A programozási környezet telepítése után már csak az illesztőprogram menüjéből kell kiválasztani, hogy melyik kártyához szeretné használni - esetünkben az Arduino UNO-t, és azt a COM-portot, amelyen keresztül az Arduino USB-emuláción keresztül csatlakozik. Nagyon sok mindenféle kézikönyv létezik ebben a témában, ezért ezt a szakaszt kihagyjuk (minden esetre - az Eszközök > Soros port menü).

A mikrorobot programja elérhető honlapunkról, de csak regisztráció után, egy vicc Mini Robot az Arduino-n. A program működéséhez további könyvtárakra van szükség - AFMotor.h, Sevo.h, NewPing.h, ezek mind az archívumban vannak, ki kell csomagolnia az archívumot a telepített Arduino IDE program mappájába. Nekem ez a c: Program Files (x86) Arduino könyvtár, a könyvtárakat a c: Program Files (x86) Arduino libraries mappába kell elhelyezni. Ezután lépjen a c:Program Files (x86)ArduinolibrariesAPC_4_ROBOT könyvtárba, és kattintson duplán az APC_4_ROBOT.ino-ra, ez maga a vázlat, majd elindul a programozási környezet. A csupasz Arduino Uno kártyát (azaz csatlakoztatott modulok nélkül) USB kábelen keresztül csatlakoztatjuk a számítógéphez, nyomjuk meg a jobbra nyíló gombot, a program elkezdi feltölteni a vezérlőre. Az egész folyamat néhány másodpercet vesz igénybe, és ha minden megfelelően van csatlakoztatva, akkor egyetlen piros felirat sem világíthat, és a jobb alsó sarokban lévő jelző 100% -ban befejezi a mozgást. Az Arduino program az Atmega328 vezérlőben van telepítve.

12. A robot indítása

Mini robot Arduino-on – készen áll a mozgásra. Robot Wally

Lehetőség van robotunk első, még próbaüzemére. A robotunk nem ment rendesen, az egyik kerék rendesen forgott, a másik pedig az ellenkező irányba. Meg kellett változtatnom a motor vezetékeinek polaritását az M2 blokkon. De aztán a mi kis robotunk becsülettel megbirkózott a szoba minden sarkával és akadályával.

Ezt a cikket minden kezdőnek ajánlom, aki úgy dönt, hogy megtanulja az Arduinót. A további tanulmányozás az első leckétől folytatható - a LED villogása. A robot anyaga nagyon érdekes, és hogy felkeltsem az érdeklődésedet, úgy döntöttem, hogy azzal kezdem, hogy pontosan hogyan építsek olyan robotot, amely megkerüli az akadályokat. A többi sokkal könnyebb lesz, és úgy fog menni, mint a karikacsapás. Ez a robot tényleg működik. Sok szerencsét mindenkinek!

P.S. Meglehetősen szabad fordítása volt egy cikknek, amit valamikor régen, az internet hatalmas kiterjedésén találtak, persze inkább gag, mert mindent új módon csináltak, a rajzokat véglegesítették, nem volt hivatkozás a forrásra. , mert a dokumentum Word dokumentum volt.

Kedves olvasóink, cikksorozatot nyitunk egy Arduino alapú robot létrehozásáról. Feltételezzük, hogy az olvasó kezdő, és csak alapvető ismeretekkel rendelkezik a témában. Igyekszünk mindent a lehető legrészletesebben és érthetőbben megfogalmazni.

Tehát egy bevezetés a problémába:

Kezdjük a koncepcióval: olyan robotot akarunk, amely képes önállóan mozogni a helyiségben, miközben elkerüli az összes akadályt, amellyel találkozik. A feladat kitűzve.

Most nézzük meg, mire van szükségünk:

  1. Platform (tok). Itt vannak lehetőségek: csinálj mindent magad, vásárolj alkatrészeket és szereld össze, vagy vásárolj készen. Válassza ki, ami tetszik

A készlet általában tartalmaz egy platformot és egy motort két hajtott kerékhez (hernyó), valamint egy akkumulátorrekeszt. Vannak opciók az összkerékhajtáshoz - négykerekű motoron. Kezdőknek javasoljuk a tank típusú platformok használatát

Két hajtott kerék és egy harmadik támaszték.

  1. Ezután szükségünk van egy távolságmérőre. Sonar (más néven távolságmérő, más néven Ultrahangos modul) Távolságmérőként kezdetben az ultrahang és az infravörös közötti választás volt. Mivel az ultrahang jellemzői sokkal jobbak (a maximális hatótáv körülbelül 4-5 méter, szemben a 30-60 cm-rel), és az ára körülbelül ugyanaz, a választás az Ultrasonicra esett. A leggyakoribb modell a HC-SR04.

  1. Mozdonyvezető.

Hogyan legyen? Az első dolog, ami eszembe jut, hogy a mikrokontroller kimenetére rakjunk egy tranzisztort, és abból tápláljuk a motorokat. Ez minden bizonnyal jó, de nem fog működni, ha a másik irányba akarjuk elindítani a motort ... De H jól ellátja a feladatot - egy híd, ami egy kicsit bonyolultabb áramkör, mint egy tranzisztorpár. De ebben az esetben nagyon sok van belőlük kész integrált áramkörök formájában, így szerintem nem kell újra feltalálni a kereket - veszünk egy készet. Ráadásul az ára is kedvező - 2-3 dollár... Menjünk tovább. Ezekre a célokra veszünk egy L293D chipet, vagy még jobb, egy Motor Shieldet az alapján.

Motorpajzs az L298N chipen

  1. Hanggenerálás - Piezo Buzzer

A hang létrehozásának legegyszerűbb módja piezo emitter használata.

A piezokerámia sugárzók (piezoelektromos emitterek) olyan elektroakusztikus hangvisszaadó eszközök, amelyek piezoelektromos hatást alkalmaznak. (a dielektromos polarizáció fellépésének hatása mechanikai feszültségek hatására (közvetlen piezoelektromos hatás). Létezik inverz piezoelektromos hatás is - mechanikai alakváltozások előfordulása elektromos tér hatására.

Közvetlen piezo effektus: piezo öngyújtókban a szikraközön nagy feszültség eléréséhez;

Inverz piezoelektromos hatás: piezoelektromos emitterekben (nagy frekvenciákon hatásos és kis méretű);)

A piezo emittereket széles körben használják különféle elektronikai eszközökben - ébresztőórák, telefonok, elektronikus játékok, háztartási készülékek. A piezokerámia emitter egy fémlemezből áll, amelyen egy piezoelektromos kerámiaréteg van lerakva, amelynek külső oldalán vezetőképes bevonat van. A lemez és a bevonat két érintkező. A piezo hangjelző piezoelektromos mikrofonként vagy érzékelőként is használható.

Ez minden, amire szükségünk van először. Kezdetben külön leckék formájában megfontoljuk, hogyan szereljük össze és tegyük külön-külön ezeket az alkatrészeket működőképessé.

2. lecke

3. lecke. Arduino és Motor Shield L298N alapján

4. lecke

5. lecke

Sziasztok. Ez a cikk egy rövid történet arról, hogyan csináld robot az övék kezek. Miért egy történet, kérdezed? Mindez annak a ténynek köszönhető, hogy az ilyenek gyártásához iparművészet jelentős mennyiségű tudás felhasználása szükséges, amit nagyon nehéz egy cikkben bemutatni. Végigsétálunk az építési folyamaton, belepillantunk a kódba, és végül életre keltjük a Szilícium-völgy létrehozását. Azt tanácsolom, hogy nézze meg a videót, hogy elképzelése legyen arról, mi történjen a végén.

Mielőtt továbblépne, vegye figyelembe a következőket, hogy a gyártás során iparművészet lézervágót használt. Elutasíthatja a lézervágót, ha elegendő tapasztalata van a kézzel végzett munkában. A pontosság a kulcs a projekt sikeres befejezéséhez!

1. lépés: Hogyan működik?

A robotnak 4 lába van, mindegyiken 3 szervóval, amelyek lehetővé teszik, hogy 3 szabadsági fokban mozgassa a végtagjait. „Kúszó járással” mozog. Legyen lassú, de az egyik legsimább.

Először meg kell tanítani a robotot előre, hátra, balra és jobbra mozogni, majd hozzáadni egy ultrahangos szenzort, amely segít észlelni az akadályokat / akadályokat, és ezt követően egy Bluetooth modult, aminek köszönhetően a robotvezérlés új szintre lép.

2. lépés: Szükséges alkatrészek

Csontváz 2 mm vastag plexiből készült.

A házi készítésű termék elektronikus része a következőkből áll:

  • 12 szervó;
  • arduino nano (bármilyen más arduino táblával helyettesíthető);

  • Pajzs szervovezérléshez;
  • tápegység (a projektben 5V 4A tápegységet használtak);

  • ultrahangos érzékelő;
  • hc 05 bluetooth modul;

A pajzs készítéséhez szüksége lesz:

  • áramköri kártya (lehetőleg közös tápvezetékekkel (busszal) és földeléssel);
  • inter-board tűs csatlakozók - 30 db;
  • aljzatok táblánként - 36 db;

  • vezetékek.

Eszközök:

  • Lézervágó (vagy ügyes kezek);
  • Pillanatragasztó;
  • Forró ragasztó.

3. lépés: Csontváz

Rajzoljuk meg egy grafikus programmal a váz alkotórészeit.

Ezt követően bármilyen elérhető módon kivágjuk a leendő robot 30 részét.

4. lépés: Összeszerelés

Vágás után távolítsa el a védőpapír bevonatot a plexiről.

Ezután folytassa a lábak összeszerelésével. A csontváz részeibe épített rögzítők. Már csak a darabok összerakása van hátra. A csatlakozás meglehetősen szoros, de a nagyobb megbízhatóság érdekében egy csepp szuperragasztót kenhet a rögzítőelemekre.

Ezután módosítani kell a szervókat (a szervo tengelyekkel szemben egy csavart ragasztani).

Ezzel a finomítással stabilabbá tesszük a robotot. A finomítást csak 8 szervónál kell elvégezni, a maradék 4 közvetlenül a testhez lesz rögzítve.

A lábakat az összekötő elemhez (ívelt rész) rögzítjük, azt viszont a testen lévő szervóhoz.

5. lépés: A pajzs készítése

A tábla elkészítése meglehetősen egyszerű, ha követi a lépésben bemutatott képeket.

6. lépés: Elektronika

Rögzítse a szervócsapokat az arduino táblán. A tűket a megfelelő sorrendben kell csatlakoztatni, különben semmi sem fog működni!

7. lépés: Programozás

Ideje életre kelteni Frankensteint. Először töltsük be a legs_init programot, és győződjön meg arról, hogy a robot a képen látható helyzetben van. Ezután töltse be a quattro_test fájlt, hogy megbizonyosodjon arról, hogy a robot reagál-e az alapvető mozgásokra, például előre, hátra, balra és jobbra.

FONTOS: Egy további könyvtárat kell hozzáadnia az arduino IDE-hez. A könyvtár linkje az alábbiakban található:

A robotnak 5 lépést kell tennie előre, 5 lépést hátra, 90 fokkal balra, 90 fokkal jobbra kell fordulnia. Ha Frankenstein mindent jól csinál, akkor jó irányba haladunk.

P. S: helyezze fel a robotot a csészére, mint állványra, hogy minden alkalommal ne az eredeti helyére állítsa. Miután a tesztek kimutatták a robot normál működését, a földre/padlóra helyezve folytathatjuk a tesztelést.

8. lépés: Inverz kinematika

Az inverz kinematika az, ami valójában irányítja a robotot (ha nem érdekli ennek a projektnek a matematikai oldala, és sietsz a projekt befejezésével, kihagyhatod ezt a lépést, de a robot meghajtóinak ismerete mindig hasznos lesz).

Egyszerűen fogalmazva, az inverz kinematika vagy röviden IK a trigonometrikus egyenletek "része", amely meghatározza a láb éles végének helyzetét, az egyes szervók szögét stb., amelyek végül meghatároznak néhány előzetes beállítást. Például a robot egyes lépéseinek hossza vagy az a magasság, amelyen a test elhelyezkedik mozgás / pihenés közben. Ezekkel az előre meghatározott paraméterekkel a rendszer kivonja azt a mennyiséget, amennyit minden szervót el kell mozgatni, hogy adott parancsokkal vezérelhesse a robotot.

Egyszerű robotok létrehozásával kezdik el az arduino tanulását. Ma az arduino uno legegyszerűbb robotjáról fogok beszélni, amely, mint egy kutya, követi a kezét vagy bármely más tárgyat, amely visszaveri az infravörös fényt. Ezenkívül ez a robot szórakoztatja a gyerekeket. A 3 éves unokaöcsém szívesen játszott a robottal :)

Azzal kezdem, hogy felsorolom azokat az alkatrészeket, amelyekre szükség lesz az építkezés során - Arduino UNO;

Infravörös távolságmérők;

- 3 voltos motorok sebességváltóval és kerekekkel;

- csatlakozók 3A akkumulátorokhoz;

-akkumulátor (ha nincs elég elem);

- Relé a motorok vezérléséhez;

Nos, és egyéb anyagok, amelyekre szükség lesz a létrehozási folyamatban.
Először elkészítjük az alapot. Úgy döntöttem, hogy fából készítem. Egy fa deszkát úgy fűrészeltem, hogy a motorok tökéletesen illeszkedjenek a résekbe


Ezután egy fa deszkával rögzítem a motorokat, csavarom ezt a rudat

Tovább a házra helyeztem egy arduino-t, egy relét, egy brainboard-ot, távolságmérőket, és az alváz alá egy forgót

Most mindent a séma szerint csatlakoztatunk

A végén a következő vázlatot töltjük be az arduino-ba:

Const int R = 13; //tűk, amelyekhez az IR távolságmérők csatlakoznak const int L = 12; belső motor L = 9; //tűk, amelyekre a relé csatlakozik in motorR = 11; int gombÁllapot = 0; void setup() ( pinMode(R,INPUT); pinMode(L,INPUT); pinMode(motorR,OUTPUT); pinMode(motorL,OUTPUT); ) void loop() ( ( buttonState = digitalRead(L); if (buttonState) == HIGH)( digitalWrite(motorR,HIGH); ) else ( digitalWrite(motorR,LOW); ) ) (( gombState = digitalRead(R); if (buttonState == HIGH)( digitalWrite(motorL,HIGH); ) else ( digitalWrite(motorL,LOW); ) ) ) )

A működés elve nagyon egyszerű. A bal oldali távolságmérő a jobb kerékért, a jobb pedig a balért felelős

A világosabbá tétel érdekében megtekinthet egy videót, amely bemutatja a létrehozási folyamatot és a robot működését

Ez a robot nagyon egyszerű, és bárki elkészítheti. Segít megérteni, hogyan működnek az olyan modulok, mint a relék és az infravörös távolságmérők, és hogyan használhatók a legjobban.

Remélem tetszett ez a kézműves, ne feledje, hogy a kézművesek menők!