Samohybné roboty sestavujeme pomocí Arduina. Sestavení samohybných robotů pomocí Arduina Jaké roboty lze sestavit pomocí Arduina

Ahoj všichni. Tento článek je krátký příběh o tom, jak dělat robot jejich ruce. Proč příběh, ptáte se? To je způsobeno skutečností, že pro výrobu takových řemesla je nutné využít značné množství znalostí, které je velmi obtížné prezentovat v jednom článku. Projdeme si proces sestavení, nahlédneme do kódu a nakonec oživíme výtvor ze Silicon Valley. Doporučuji vám zhlédnout video, abyste si udělali představu, s čím byste měli skončit.

Než budete pokračovat, mějte na paměti následující: během výroby řemesla byla použita laserová řezačka. Používání laserové řezačky se můžete vyhnout, pokud máte dostatek zkušeností s prací rukama. Přesnost je klíčem k úspěšnému dokončení projektu!

Krok 1: Jak to funguje?

Robot má 4 nohy, na každé jsou 3 serva, která mu umožňují pohybovat končetinami ve 3 stupních volnosti. Pohybuje se „plazivou chůzí“. Sice je to pomalé, ale je to jedno z nejplynulejších.

Nejprve je potřeba naučit robota pohybovat se dopředu, dozadu, doleva a doprava, poté přidat ultrazvukový senzor, který pomůže detekovat překážky/překážky, a poté modul Bluetooth, díky kterému se ovládání robota dostane na novou úroveň.

Krok 2: Nezbytné díly

Kostra vyrobeno z plexiskla tloušťky 2 mm.

Elektronická část domácího produktu se bude skládat z:

  • 12 serv;
  • arduino nano (lze nahradit jakoukoli jinou deskou arduino);

  • Štít pro ovládání serv;
  • zdroj (v projektu byl použit zdroj 5V 4A);

  • ultrazvukový senzor;
  • hc 05 bluetooth modul;

K výrobě štítu budete potřebovat:

  • deska plošných spojů (nejlépe se společnými vedeními (sběrnicemi) napájení a země);
  • mezideskové kolíkové konektory - 30 ks;
  • zásuvky na desku – 36 ks;

  • dráty.

Nástroje:

  • Laserová řezačka (nebo zručné ruce);
  • Superglue;
  • Tavné lepidlo.

Krok 3: Kostra

Pomocí grafického programu nakreslíme součásti kostry.

Po tomto, kdykoli cenově dostupný způsob vystřihněte 30 dílů budoucího robota.

Krok 4: Montáž

Po oříznutí odstraňte z plexiskla ochranný papírový obal.

Dále začneme sestavovat nohy. Spojovací prvky zabudované do částí skeletu. Zbývá pouze spojit části dohromady. Spojení je poměrně těsné, ale pro větší spolehlivost můžete na upevňovací prvky nanést kapku superglue.

Pak je potřeba upravit serva (přilepit šroub naproti hřídelím serva).

Touto úpravou uděláme robota stabilnějším. Je potřeba upravit pouze 8 serv, zbývající 4 budou připevněny přímo k tělu.

Nohy připevníme ke spojovacímu prvku (zakřivená část) a ten zase k servopohonu na těle.

Krok 5: Výroba štítu

Výroba desky je poměrně jednoduchá, pokud budete postupovat podle fotografií uvedených v kroku.

Krok 6: Elektronika

Připojíme kolíky servopohonu k desce arduino. Závěry by měly být spojeny správné pořadí, jinak nebude nic fungovat!

Krok 7: Programování

Je čas přivést Frankensteina k životu. Nejprve si načteme program feet_init a ujistíme se, že robot je v pozici jako na obrázku. Dále načteme quattro_test, abychom zkontrolovali, zda robot reaguje na základní pohyby, jako je pohyb vpřed, vzad, doleva a doprava.

DŮLEŽITÉ: K arduino IDE musíte přidat další knihovnu. Odkaz na knihovnu je uveden níže:

Robot musí udělat 5 kroků vpřed, 5 kroků vzad, otočit se o 90 stupňů doleva a o 90 stupňů doprava. Pokud Frankenstein udělá všechno správně, jdeme správným směrem.

P. S: Umístěte robota na šálek jako na stojan, abyste ho nemuseli pokaždé dávat na výchozí bod. Jakmile testy ukázaly normální práce robot, můžeme pokračovat v testování umístěním na zem/podlahu.

Krok 8: Inverzní kinematika

Inverzní kinematika je to, co vlastně robota pohání (pokud vás matematická stránka tohoto projektu nezajímá a spěcháte s dokončením projektu, můžete tento krok přeskočit, ale vědět, co robota pohání, se bude vždy hodit).

Jednoduše řečeno, inverzní kinematika nebo zkráceně IR je „část“ trigonometrických rovnic, které určují polohu ostrého konce nohy, úhel každého serva atd., které nakonec určují několik předběžných nastavení. Například délka každého kroku robota nebo výška, ve které se bude tělo nacházet během pohybu/odpočinku. Pomocí těchto předdefinovaných parametrů systém vybere množství, o které by se mělo každé servo posunout, aby bylo možné robota ovládat pomocí daných příkazů.

Závěrečná část článku je o malém robotovi, kterého sestavujeme na podvozek – víko z plastové nádoby na potraviny. Mozkem našeho robota je deska Arduino UNO, motory a servopohon jsou řízeny deskou Driver Motor Shield, senzor překážky je Ultrasonic Sonar - oči jako Valli (z kresleného filmu) - „HC-SR04 Ultrasonic Sensor“. , . Jak vytvořit robota na Arduinu?

9. Připojení baterie a motorů

Při připojování baterie musíte mít naprostou jistotu, že je polarita správná, jak se říká, 7x změřte, jednou připojte. Zkuste se řídit tímto pravidlem - červený vodič je vždy k + napájení, černý vodič je zem, známý také jako mínus, také známý jako GND. Výrobci se snaží dodržovat stejná pravidla. Proto připojíme vodiče vycházející z bateriového prostoru do +M a GND bloku na desce ovládání motoru. Vodiče od běžících motorů připojíme na bloky M1, M2 řídicí desky motoru. Levá strana ve směru jízdy je napojena na blok M1, pravá strana na blok M2. O polaritu motorů se zatím není třeba starat, lze ji změnit, pokud se během testu něco pokazí.

10. Zkontrolujte polaritu a správné připojení modulů

Velmi důležitým a zásadním momentem při sestavování mikrorobota je kontrola správné instalace, zapojení, modulů dle blokového schématu, podívejte se na značení na deskách, zkontrolujte testerem, polaritu zdroje, kdo má tester.

11. Fáze programování Arduina

Program v Mikrokontrolér Arduino nahráno z počítače pomocí USB kabelu a speciálního programu - prostředí pro programování a úpravu náčrtů (programů) - Arduino IDE. Program můžete získat z webu arduino.cc, sekce Ke stažení, kde si můžete vždy stáhnout nejnovější, nejnovější verzi programu. Po instalaci programovacího prostředí zbývá jen vybrat z nabídky programu ovladače, pro jakou desku chcete použít - v našem případě Arduino UNO a COM port, přes který je Arduino připojeno pomocí emulace USB. Existuje mnoho různých návodů na toto téma, takže tento krok vynecháme (pro jistotu - nabídka Nástroje > Sériový port).

Program pro mikrorobota najdete na našem webu, i když až po registraci, vtip Mini robot na Arduinu. Aby program fungoval, jsou potřeba další knihovny - AFMotor.h, Sevo.h, NewPing.h, všechny jsou v archivu, archiv je potřeba rozbalit do složky nainstalovaného programu Arduino IDE. Pro mě je to adresář c:Program Files (x86)Arduino, knihovny je potřeba umístit do složky c:Program Files (x86)Arduinolibraries. Poté vstupte do adresáře c:Program Files (x86)ArduinolibrariesAPC_4_ROBOT a dvakrát klikněte na APC_4_ROBOT.ino toto je samotná skica, poté se spustí programovací prostředí. Připojení holé desky Arduino Uno(to znamená bez připojených modulů) přes USB kabel do počítače, stiskněte tlačítko se šipkou vpravo, program se začne nahrávat do ovladače. Celý proces trvá pár sekund a pokud je vše správně zapojeno, neměly by svítit žádné červené nápisy a indikátor v pravém dolním rohu dokončí svůj pohyb na 100 %. Program Arduino je nainstalován v řadiči Atmega328.

12. Spuštění robota

Mini robot na Arduinu - připraven k pohybu. Robot Wally

Můžete provést první, dosud zkušební provoz našeho robota. Náš robot nejel správně, jedno kolo se točilo správně a druhé v opačném směru. Musel jsem změnit polaritu vodičů motoru na bloku M2. Ale pak naši malý robot se všemi zákoutími a překážkami místnosti se vypořádal se ctí.

Tento článek věnuji všem začátečníkům, kteří se rozhodli naučit Arduino. V dalším studiu lze pokračovat od první lekce - blikání LED. Materiál s robotem je velmi zajímavý a abych vás zaujal, rozhodl jsem se začít tím, jak postavit robota, který obchází překážky. Co bude dál, bude mnohem jednodušší a půjde jako po másle. Tento robot opravdu funguje. Hodně štěstí všem!

P.S. Byl to docela volný překlad článku nalezeného kdysi dávno na obrovských plochách internetu, samozřejmě spíš gag, protože vše bylo uděláno nově, nákresy byly upraveny, chyběly odkazy na zdroj, protože dokument byl Word.

Něco málo o robotovi. Za prvé, projekt musel být co nejlevnější. Karoserie byla vytvořena bez jakýchkoliv výpočtů a vyvažování, hlavním požadavkem na karoserii byly minimální rozměry. Začněme tedy sestavovat tohoto robota.

Seznam dílů:
1. Sada dílů těla a tlapek z 1,5mm plexiskla.
2. Arduino Mega nebo Uno (používá se Mega) - 1 ks.
3. Mikro servopohon (používá se TowerPro SG90) - 8 ks.
4. Ultrazvukový dálkoměr HC-SR04 - 1 ks.
5. Velikost baterie 18560, 3,7V (používá se TrustFire 2400 mAh) - 2 ks.
6. Držák baterie vel. 18560 (s použitím předělané nádoby - balení) - 1 ks.
7. Stát pro deska s plošnými spoji 25 mm. (používají se takové stojany) - 4 ks.
8. Část prkénka na krájení.
9. Startovací dráty.
10. Šroub DIN 7985 M2, 8 mm. - 18 ks.
11. Matice DIN 934 M2 - 18 ks.

Montáž robota Z-RoboDog:

1. Tělo robota je vyrobeno z průhledného plexiskla o tloušťce 1,5 mm. Všechny díly jsou řezány laserem podle výkresu vytvořeného v CorelDraw:

2. Tělo přilepte sekundové lepidlo. Pevnost lepeného těla bude zcela dostatečná. Při montáži zohledněte polohu otvorů na spodním krytu (podívejte se na foto), nebo ještě lépe desku připevněte a ujistěte se, že vše lícuje. Připevněte boční stěny tak, aby byly otvory pro vodiče blíže zadní stěna. Širší otvor na zadní stěně je pro USB kabel, berte to prosím v úvahu při montáži.


3. Označte a vyvrtejte otvory (vrták 2 mm). Zajistěte serva ke skříni pomocí šroubů a matic (položky 10, 11 ze seznamu). Přední hřídele serva by měly být blíže k přední stěně. Zadní hnací hřídele serva jsou blíže zadní stěně.




4.1. Sbírejte tlapky. Vezměte horní části tlapek (se dvěma otvory). Označte střed dílu. Po umístění kolébky servopohonu označte upevňovací body šrouby a vyvrtejte otvory (vrták 1,5 mm). Upevněte vahadla tak, aby hlavy šroubů byly na straně sedadel. Zajistěte vahadla na různých stranách a sedadla protože šachty předtím byly v opačném směru.


4.2. Označte a vyvrtejte otvory pro montáž serv (vrták 2 mm). Hřídele připojených serv by měly být blíže k úzkému okraji tlapky.


4.3. Aby tlapky neklouzaly, nalepte na ně například gumu. Ale neměli byste lepit přední část tlapky, když pes šlápne, může se zachytit a zaseknout. Nalepil jsem proužky lepící podložky z auta.

5. Označte a vyvrtejte otvory pro připevnění ultrazvukového dálkoměru (vrták 2 mm). Nainstalujte dálkoměr tak, aby kontaktní nohy směřovaly nahoru.

6. Nainstalujte držák baterie tak, aby byl umístěn uprostřed pouzdra. Zajistěte desku Arduino a připojte všechny komponenty. Část prkénka byla použita pro rozvod energie.

Nastavení a spuštění robota Z-RoboDog:

V tomto okamžiku budete muset nainstalovat nohy sami, aby bylo možné kroky kalibrovat. Zásadní problém je v vahadlech, která jsou na hřídelích uchycena jen v určitých polohách. A také samotná serva se mohou lišit v provozních stupních.

Takhle vypadají tlapky mého psa extrémní bodyúhly serva (proměnné zs1, zs2, zs3 atd.). Pokuste se umístit tlapky jako na fotografii. Vizuálně by tlapky měly být ve stejných pozicích.

V hlavním postoji můžete dát i tlapky ven. Pak nezapomeňte přišroubovat vahadla k hřídelím serva.


Softwarová část Z-RoboDog:

Kód je velmi jednoduchý, komentáře se přidávají všude. Všechny pohyby jsou v poli, abych se nepletl v číslech, použil jsem proměnné pro každé servo. Například s1 je servo 1, s2 je servo 2 a tak dále. Pro snazší pochopení vám nabízím toto schéma.

Tlapky jsou v diagramu očíslovány, každá část tlapky je spojena se servopohonem, který ji pohybuje. Pro každou tlapku jsou také uvedeny směry pohybu, znaménka plus a mínus označují, kam se tlapka bude pohybovat, když se úhel zvětšuje nebo zmenšuje. Výchozí úhly byly rohy hlavního sloupku (s1, s2, s3 atd.). Například, pokud potřebujete prodloužit 2. nohu, musíte zvětšit úhel s3 a s4, v poli to bude vypadat takto (s1, s2, s3+100, s4+50, s5, s6, s7, s8) . Tady je celý náčrt. Kód byl napsán na základě mých znalostí, dejte mi prosím vědět, pokud jsem zvolil špatnou cestu implementace.

Video:


Skica v archivu: Nemáte přístup ke stahování souborů z našeho serveru

S Arduinem je velmi snadné vyrábět různé stroje dálkové ovládání, jednoduché senzory a logika. Proto je tato řada neuvěřitelně populární. Prodává se mnoho kompatibilních senzorů a rozšiřujících desek. Internet je plný hotových softwarových knihoven a open source projektů pro všechny příležitosti. Téměř všechny otázky, které budete mít v procesu zvládnutí Arduina, již někdo položil a vždy najdete odpověď.

Začneme někde? Hlavní otázkou je výběr ovladače. Existuje mnoho revizí Arduina, stejně jako klony třetích stran postavené na těchto verzích. Zde jsou pro nás možná dvě nejzajímavější třídy:

  • Arduino Uno - nejlepší volba pro začátečníka nejjednodušší, cenově dostupná a nejběžnější deska. Základem je čip ATmega328 s taktovací frekvencí 16 MHz, 32 KB flash paměti, 2 KB RAM a 1 KB EEPROM. Uno má 14 digitálních vstupů/výstupů, které lze použít k ovládání senzorů a serv a dalších zařízení;
  • Arduino Mega / Mega 2560 je deska, která se hodí, když předem víte, že projekt bude složitý. Hlavním rozdílem je větší počet vstupů/výstupů (48 v Mega, 54 v Mega 2560). K dispozici je také mnohem více paměti: 8 KB RAM, 4 KB EEPROM a flash paměť 128 a 256 KB (v Mega a Mega 2560). Desky se od sebe také liší čipem, rychlostí USB a některými dalšími charakteristikami.

Nechybí samozřejmě ani Arduino Pro, Arduino LilyPad a mnoho dalších. Nyní se ale zaměřme na první dva modely. V našem případě je vše docela jednoduché: Mega je potřeba pro robota se spoustou nohou.

První kód

Nejprve si nainstalujme Arduino IDE (arduino.cc) – jedná se o multiplatformní bezplatné vývojové prostředí. Nyní, když připojíme naše Arduino, můžeme zkusit napsat první kód jednoduchý příklad: Program blikání LED. Většina Arduino řadičů to má a jsou připojeny na pin 13. Mimochodem, ve světě Arduina se programům obvykle říká skici. Zde je text skici s komentáři:

// Dejme tomuto pinu název LED: const int LED = 13; void setup() ( // Inicializace digitálního pinu // pro výstup: pinMode(LED, OUTPUT); ) void loop() ( // Aplikujte logickou jednu úroveň // na pin 13 (rozsvícení LED): digitalWrite(LED , HIGH) ; // Pozastavení provádění náčrtu // na sekundu: delay(1000) // Aplikujte úroveň logické nuly // na pin 13 (zhasněte LED): digitalWrite(LED, LOW); / Pozastavení provádění skici // na sekundu: delay(1000);

Věnujte pozornost funkcím nastavení a smyčky. Musí být přítomny v jakékoli skice Arduina. Nastavení je vyvoláno jednou po zapnutí nebo po restartu regulátoru. Pokud chcete, aby byl kód proveden pouze jednou, měli byste jej umístit sem. Nejčastěji se jedná o všelijaké postupy pro inicializaci něčeho. Naše skica není výjimkou: digitální piny Arduino mohou fungovat jako vstupy i výstupy. Ve funkci nastavení říkáme, že pin 13 bude fungovat jako digitální výstup ovladače.

Jakmile funkce setup dokončí svou práci, automaticky se spustí uzavřená smyčka, v rámci které bude funkce smyčky vyvolána. Jsme povinni napsat, co tam chceme dělat. A my chceme na pin 13 aplikovat logickou jednu úroveň (5 V), to znamená rozsvítit LED, pak počkat jednu sekundu (1000 v milisekundách), pak aplikovat úroveň logické nuly (0 V) a znovu počkat jednu sekundu. Další volání do smyčky vše zopakuje.

Nyní nahrajeme naši skicu do ovladače. Ne, nepotřebujeme programátora. Arduino řadiče kromě našich skic obsahují speciální program - bootloader, který zejména řídí načítání kódu z počítače. K nahrání skici tedy potřebujeme pouze USB kabel a položku nabídky Soubor → Nahrát (Ctrl + U) v Arduino IDE.

Klíčová otázka

Kolik nohou vlastně potřebujeme? Pojďme definovat mnoho konfigurací chodících robotů. Podle počtu nohou:

  • dvounožec - dvounožec (prototyp - člověk);
  • čtyřnožec - čtyřnohý (prototyp - většina savců);
  • hexapod - šestinohý (prototyp - většina hmyzu);
  • octopod - osminohý (prototyp - pavouci, štíři, krabi a další členovci).

Kromě počtu nohou je důležitá také konfigurace každé z nich. Hlavní charakteristikou nohy je počet stupňů volnosti neboli rozměry volnosti (DOF). Míra volnosti je schopnost otáčet se nebo ohýbat kolem jedné osy (méně často se po ní pohybovat dopředu). Je zřejmé, že pokud existuje pouze jeden stupeň svobody, pak na takové noze daleko nedojdete. Dva stupně volnosti (2DOF) nohy již umožňují pohyb vícenohým robotům, ačkoli 2DOF umožňuje volný pohyb pouze špičky nohy v jedné rovině. A noha 3DOF pohybuje „chodidlem“ ve 3D prostoru (pokud samozřejmě nejsou všechny tři osy rovnoběžné). Nechybí ani 4DOF nohy, které jednoduše zvyšují flexibilitu a rozsah pohybu nohy. Hmyz má nejčastěji nohy 4DOF.

Co to pro nás znamená? U levných amatérských robotů je každý stupeň volnosti realizován jedním motorem, přesněji servopohonem, neboli serv. Konfigurace nohou jednoznačně určuje, kolik těchto serv je potřeba. Takže 3DOF hexapod bude vyžadovat 18 serv a 4DOF spider bude vyžadovat 32. Neznepokojujte se množstvím, malá serva používaná v amatérských rádiem řízené modely, velmi levné. Najdete je v internetových obchodech vyhledáním mikroservo.

K programování serv stačí vědět, že již mají ovladač, který dělá hlavní práci. A vše, co je potřeba, je dodat energii a digitální signál, který ovladači řekne, do jaké polohy chceme natočit hnací hřídel. Informace o jejich designu lze snadno najít. Jejich protokol je nejjednodušší ze všech digitálních komunikačních protokolů: pulzně šířková modulace - PWM (anglicky PWM). Všechna jednoduchá serva mají konektor se třemi piny: zem, +5 V (napětí se může lišit v závislosti na velikosti a výkonu) a signálový vstup. Arduino ovladače mohou mít dva různými způsoby generovat takový signál. Prvním je hardwarové PWM, které může samotný čip vyvést na několik svých digitálních I/O pinů. Druhým je software. Software umožňuje současně přijímat více různých signálů PWM než hardware. Pro Arduino je k dispozici pohodlný obal - knihovna Servo. Umožňuje používat 12 serv současně na většině malých ovladačů (Uno, Due, Nano) a 48 serv na Arduino Mega a podobně. Signální kolík serva je připojen k digitálnímu kolíku Arduino. Ground and power - samozřejmě k zemi a napájení, ty mohou být společné pro všechny serv. U třívodičových servosmyček je černá nebo hnědá zem, uprostřed je obvykle červená +5 V a nakonec bílá nebo žlutá je signál. Ze softwarového hlediska je ovládání extrémně jednoduché:

Servo myservo; // Servo na pinu 9 Arduina myservo.attach(9); // Otočení o 90º myservo.write(90);

Většina serv dokáže otočit hřídel o 180° a pro ně je průměrná poloha 90°. Pro zjednodušení připojení serv k desce Arduino existuje řada řešení. Nejkanoničtější z nich je Sensors Shield. Instalací na Uno a napájením svorek pro serva můžete připojit jejich konektory přímo do něj.

Baterie

Další důležitou otázkou je výživa. Pokud máte pokročilou desku, která umožňuje napájet celý systém přes jedno napájecí vedení (a servomotory nebudou rušit chod regulátoru), pak si vystačíte s jedním zdrojem. Výběr je obrovský, nejlepší jsou samozřejmě Li-Ion/Li-Po brikety pro modely rádií. Ale také potřebují vhodné nabíječky. Pokud máte jednodušší ovladač (Uno/Due/Nano), můžete jej napájet samostatně, například 9voltovou „Kronou“ a připojit serva k hlavní výkonné baterii. Tímto způsobem budou mít serva rozhodně dostatek výkonu. V případě lithiové baterie musíte napětí hlídat ještě pečlivěji než obvykle, aby nedošlo k nadměrnému vybití (přípustná napětí by měla být vyjasněna pro konkrétní typ baterie). K tomuto účelu má robot Sleipnir, o kterém bude řeč dále, připojen také malý digitální voltmetr.

Udělej si sám robot brouk

Kit

  • Ovladač Arduino Uno: 1150 rub.
  • Tři servomotory. Použil jsem HXT500, 200 rub. za kus
  • Přihrádka na baterie pro Krona s vypínačem: 50 rub.
  • Baterie "Krona": 145 rub.
  • IR přijímač: 90 rub.
  • Ocelový drát o průměru přibližně 1,5 mm. Například jsem použil rozbitou metlu na šlehání vajec

Celkem: 2035 rublů.

DmitryDzz: Chci vás pozvat k výrobě malého dálkově ovládaného šestinohého robotického brouka založeného na ovladači Arduino Uno. Nohy budou mít jeden stupeň volnosti a ovládání bude probíhat pomocí běžného TV dálkového ovladače.

Musím říct, že to jsou ceny drahých moskevských obchodů. V čínských internetových obchodech to vše vyjde na polovinu. Počítání dodávky. Je pravda, že podle mých zkušeností budete muset počkat dva týdny až tři měsíce.

Jednodušší způsob je vzít si sadu konstruktorů, protože v prvních krocích nebude jeden ovladač stačit. Nyní mnoho obchodů nabízí takové sady. Existuje například skvělý internetový obchod „Amperka“. Zde vám nabídne několik podobných stavebnic, lišících se obsahem a samozřejmě cenou. Stačila mi ta nejjednodušší - „Matryoshka X“. Obsahuje řadič Arduino Uno, USB kabel pro připojení k počítači a prototypovací desku ( nenahraditelná věc!), sada propojek, LED diod, rezistorů a dalších drobností.

Ve stejném obchodě je sekce „Wiki“, kde dokonce najdete nádherné krátké videonávody přeložené do ruštiny. Určitě si je prohlédněte. A samozřejmě existuje fórum, kde se vám pravděpodobně pokusí pomoci.

Jaké nástroje budete potřebovat:

  • páječku a vše potřebné k pájení. Nebudete muset mnoho pájet a nebudete potřebovat žádné speciální dovednosti;
  • tavná lepicí pistole a tyče k ní;
  • kleště pro práci s drátem.

Pokud jste vše posbírali, můžeme začít!

Řízení

Přejděme k prvnímu kroku: musíme se naučit interakci s dálkovým ovladačem a zjistit kódy pro stisknutí některých jeho tlačítek. Tyto kódy budou později užitečné pro náčrt ovládání robota.

V této fázi budete také potřebovat IR přijímač a bylo by hezké mít prototypovací desku. Naprostá většina IR dálkových ovladačů pracuje na nosných frekvencích 36 kHz, 38 kHz nebo 40 kHz (Panasonic, Sony). Výjimkou jsou dálkové ovladače Sharp (56 kHz), Bang & Olufsen (455 kHz) a možná někdo ještě exotičtější. Proto jsme docela Jakékoliv bude stačit IR přijímač na 36, ​​38 nebo 40 kHz. Frekvence nemusí přesně odpovídat nosné frekvenci signálu. V tomto případě se sníží citlivost přijímače, ale v praxi jsem při používání IR přijímače TSOP2136 (36 kHz - poslední dvě číslice jsou frekvence) a dálkového ovladače Sony (40 kHz) nezaznamenal žádné nepohodlí.

Infračervené přijímače TSOP21xx, TSOP22xx, TSOP312xx jsou tedy vhodné pro většinu dálkových ovladačů. Poslední dvě číslice mohou být 36, 37, 38 nebo 40. Před zapnutím IR přijímače zkontrolujte zapojení jeho kontaktů - jsou pouze tři: +5V (napájení), GND (zem), Vs (výstup). Sestavíme obvod jako na obrázku (zapojení pro TSOP2136).


Jak vidíte, připojili jsme výstup IR přijímače k ​​analogovému vstupu ovladače A0.

Takto vypadá kód náčrtu:

#include "IRremote.h" // Analogový vstup ovladače, // ke kterému je připojen IR přijímač: const int IR_PIN = A0; // Vytvoření objektu IR přijímače: IRrecv irecv(IR_PIN); void setup() ( Serial.begin(9600); Serial.println("připraveno"); // Začněte poslouchat IR signály: irecv.enableIRIn(); ) void loop() ( // Popište strukturu výsledků, / / ve kterém budou // přijaté a dekódované // IR příkazy umístěny: decode_results results // Pokud je IR příkaz přijat a // úspěšně dekódován, pak // odešle přijatý kód na sériový // port ovladače: if; (irrecv.decode (&results)) ( Serial.println(results.value); irecv.resume(); ) )

Skica využívá speciální knihovnu IRremote.h, která dekóduje signály z široké škály IR dálkových ovladačů. Tato knihovna je otevřený projekt, můžete si jej stáhnout ze stránky https://github.com/shirriff/Arduino-IRremote. A abychom jej mohli připojit k našemu projektu, musíme provést tři kroky:

  • zkopírujte adresář knihovny do adresáře libraries, který se naopak nachází v instalačním adresáři Arduino IDE;
  • restartujte IDE;
  • přidejte řádek #include "IRremote.h" na začátek našeho náčrtu.

Nyní bude mít skica k dispozici funkce dekódování IR signálu. Ale abychom viděli přijaté kódy, použijeme také objekt Serial. S jeho pomocí přeneseme kódy do počítače přes sériový port (stejný USB kabel). Ve funkci setup inicializujeme objekt Serial. "9600" je 9600 baudů - rychlost, která bude použita pro přenos dat. Po inicializaci můžeme zapisovat na sériový port pomocí funkce println. Chcete-li zobrazit výsledek tohoto výstupu na vašem počítači v Arduino IDE, vyberte položku nabídky Nástroje → Sériový monitor (Ctrl + Shift + M). Jen se ujistěte, že je nastavena na 9600 baudů.

Ovladač tedy přijímá napájení přes USB kabel a přes něj přenáší data. Načtěte skicu, spusťte Serial Monitor a začněte mačkat tlačítka dálkového ovládání. Kódy by se měly objevit v okně Serial Monitor. Protokoly dálkového ovládání se liší, někdy to může být jeden kód, někdy několik. V každém případě můžete vždy vybrat kódy, které jsou jedinečné pro každé tlačítko dálkového ovladače.

Potřebujeme 13 tlačítek dálkového ovládání. Použil jsem následující:

  • 1 - plynulé odbočení doleva;
  • 2 - pohyb vpřed;
  • 3 - plynulé odbočení vpravo;
  • 4 - na místě odbočit vlevo;
  • 5 - zastávka;
  • 6 - na místě odbočit vpravo;
  • 7 - pohyb vzad s pravou zatáčkou;
  • 8 - zpětný pohyb;
  • 9 - pohyb vzad s levou zatáčkou;
  • modré tlačítko - velmi pomalé;
  • žlutá - pomalá;
  • zelená - rychlá;
  • červená - velmi rychlá.

Zapište si kódy těchto tlačítek, později je budete potřebovat pro náčrt ovládání robota.

Algoritmus pohybu

Náčrt ovládání robota je k dispozici na naší stránce projektu (bit.ly/1dEwNDC). Nezapomeňte změnit hodnoty konstant pro kódy stisknutých tlačítek na dálkovém ovladači na kódy vašeho dálkového ovladače (konstanty IR_COMMAND_XXX_CODES v souboru ir_command_codes.h).

Na náčrt se nebudeme podrobně dívat, myslím, že komentáře v kódu jsou dostatečné, ale jedna otázka stále stojí za zvážení.

Pohyby hmyzu jsou velmi zajímavé. A i když jsou všichni tito brouci velmi blízko pádu na zem, z nějakého důvodu jsou vždy stabilní: v každém okamžiku stojí na hladině alespoň tři nohy (dvě na jedné straně a jedna na druhé). A zatímco tyto nohy přitahují brouka k jednomu cíli, ostatní tři jsou vytaženy nahoru, aby tento pohyb opakovaly. Naším úkolem je udělat něco podobného.

Naše robotická štěnice má tři servomotory uspořádané v řadě kolmo k pohybu. U levého a pravého servomotoru směřuje osa hřídele nahoru au centrálního servomotoru dopředu. Úkolem například levého serva je pumpovat dvě nohy najednou: levou přední a levou zadní. Mimochodem, jsou spolu pevně spojeny a přilepeny ke kolébce tohoto serva. Úkolem centrálního serva je zvednout buď levou stranu brouka, nebo pravou. Proto jsou centrální levá a pravá noha, které jsou jedinou částí ve tvaru U, připevněny k vahadle tohoto motoru.

Náčrt by měl zajistit, aby se robot pohyboval dopředu, dozadu, plynule zatáčel v pohybu a otáčel na místě. Také bych chtěl ovládat rychlost brouka. Abychom tyto pohyby popsali programově, budeme potřebovat matematiku. Podívejte se na diagram.


Modré kruhy označují nohy robotického brouka stojícího na hladině a bílé kruhy označují nohy ve vzduchu. Vezměte prosím na vědomí, že při pohybu vpřed nebo vzad se levý a pravý servomotor musí pohybovat přesně stejně. A při otáčení na místě by se motory měly točit různými směry (symetricky). Další zajímavostí je, že pohyb vpřed a vzad se liší pouze fází centrálního servomotoru.

Jak se to tedy implementuje? Pamatujeme si, že regulátor neustále volá funkci smyčky. To znamená, že do této funkce musíme umístit kód, který určí aktuální polohu serv a na tuto pozici je nastaví. Každý servomotor musí vykonávat oscilační pohyby. Polohu servomotoru v čase t můžeme vypočítat pomocí následujícího vzorce:

X = hřích (2πt/T),

kde X je požadovaná poloha servomotoru, A je amplituda kmitání, T je doba kmitání.

V závislosti na časovém okamžiku t tedy dostaneme změnu hodnoty X v rozsahu od –A do +A. Servomotory lze polohovat od 0 do 180°. Proto je pro nás lepší oscilovat kolem „nulové“ polohy 90°. A pokud chceme poskytnout oscilace s periodou 1 s kolem polohy 90° s amplitudou 30°, pak se vzorec převede do následující podoby:

X = 90 + 30 sin (2πt/1000),

kde t je čas v milisekundách, který uplynul od začátku oscilací. Pro řízení rychlosti robotického brouka můžeme měnit periodu oscilací. Čím větší, tím nižší rychlost.

Nyní se ještě jednou vraťme k našemu diagramu, protože výše napsaný vzorec ještě není dokončen. Jak zajistit buď synchronní nebo protisměrný pohyb levého a pravého servomotoru? Jak změnit fázi centrálního servomotoru? Do našeho vzorce musíme přidat fázi oscilace. Posunutím argumentu sinusu o hodnotu π například pro pravý motor bude fungovat v protifázi k levému, tedy tak, jak potřebujeme, aby se otočil na místě. Náš vzorec bude nyní vypadat takto:

X = 90 + 30 sin(2πt/1000 + Φ),

kde Φ je fáze kmitání, hodnota je od 0 do 2π.

Podívejte se na tabulku, abyste pochopili, jaké by měly být fáze kmitání servomotorů pro každý typ pohybu.

Shromáždění

Nyní sestavíme robota na prototypovou desku a nahrajeme kontrolní skicu.

To je velmi důležitá etapa před montáží. Zkuste odpojit kabel USB a napájet prkénko pomocí baterie Krona. Zkontrolujte všechny fáze pohybu a ujistěte se, že vše funguje. Po sestavení robota bude výměna čehokoli (například výměna nefunkčního servomotoru) obtížnější.


Nyní přejděme k samotné montáži. Základní nosný prvek- toto je přihrádka na baterie. Doporučuji využít přihrádku uzavřený typ a vždy s vypínačem.

Nejjednodušší způsob, jak zajistit části brouků, je horkým lepidlem. Začněte se servomotory. Odstraňte nepotřebné upevňovací uši a spojte stroje k sobě. Poté přilepte tuto sestavu tří „serva“ ke krytu prostoru pro baterie. Nezapomeňte, že přihrádka na baterie se musí při výměně baterie volně otevřít.

Nejjednodušší způsob je přilepit ovladač k přihrádce, ale tato možnost se mi moc nelíbí, protože budu muset Arduino Uno dát broukovi navždy. Můžete si proto zkomplikovat život a využít konektory Arduino k uchycení bateriového prostoru. Na dno přihrádky nalepte kolíkovou spojku s roztečí mezi kolíky 2,54 mm. Měl by být umístěn tak, aby zapadl do zdířky ovladače v oblasti digitálních pinů 8–11. Stejně je zatím nebudeme potřebovat. Pokud nemáte po ruce konektor, postačí kancelářská sponka ve tvaru U.

Vodiče vycházející z prostoru pro baterie musí být připojeny k pinům Vin a přilehlému GND. Nepleťte si polaritu! Plus „koruny“ na Vin, mínus na GND. Aby byl zajištěn spolehlivý kontakt vodičů s konektory Arduino, můžete špičku vodiče jednoduše pocínovat silnější, ale jako zástrčku jsem použil krátký kus kancelářské sponky. A oblast pájení jsem zakryl smršťovací bužírkou.


Konektory z kabelů servopohonu by měly být odříznuty, napájecí vodiče (+5 V - obvykle červený a GND - černý nebo hnědý) by měly být spojeny a vyvedeny do 5V zásuvek a sousední GND na ovladači. Připojíme se o něco později. Vodiče řídicího signálu (obvykle žluté) jsou připojeny k digitálním výstupům regulátoru: levý servomotor na pin 2, střední na pin 4, pravý na pin 7.

„+“ a „–“ IR přijímače lze jednoduše zapojit do konektoru Arduino (5V a sousední GND). Pravda, ohnout je na polovinu, zdvojnásobit jejich tloušťku. Dříve připojené silové vodiče servomotorů připájeme na stejné silové nohy IR přijímače. Je nepravděpodobné, že výstup signálu IR přijímače dosáhne analogového vstupu ovladače A0 a budete jej muset zvýšit pomocí drátu.

Několik tipů na výrobu nohou. Nejprve si připravte levou a pravou „předozadní“ nohu. Ujistěte se, že jsou symetrické (pozor na délky a úhly ohybu). Nohy začněte lepit až poté, co se ujistíte, že jsou serva nastavena do polohy „nula“ (90°).

Je lepší instalovat střední pár nohou jako poslední. Doporučuji vám nejprve prodloužit střední nohy a po instalaci je oříznout na požadovanou délku. V poloze „nula“ by mělo být všech šest nohou na povrchu. Švih středních nohou s amplitudou 15° by neměl zasahovat do „předozadních“ obratů.

co bude dál?

Robozhuk je hotová mobilní platforma založená na jednom z nejpopulárnějších a nejdostupnějších ovladačů. Projekt je otevřen: https://github.com/beetle-ringo/arduino. Vytvořte v GitHubu rozvětvení (větev) a přidejte vlastní funkcionalitu. Dejte průchod své fantazii – přidejte IR LED a robot je připraven na robotickou bitvu. Připojte dálkoměry, hmatové senzory, gyroskop... Naučte robota vyhýbat se překážkám nebo chodit po čáře, zkuste na něj nainstalovat webovou kameru. Nápadů může být milion a vždy si můžete vybrat ten nejzajímavější.

Robot Sleipnir

Kit

  • Ovladač Arduino Uno Dagu Spider Robot: 2530 rub.
  • Servopohony SG90 9g (16 kusů) 1150 rub.
  • Baterie LiPo baterie, 7,4 V, 1800 mAh RUR 490
  • Rádiový modul 4pinový Bluetooth RF Transceiver RUR 270
  • Indikátor napětí (volitelný) DC 3,3–30 V Červený LED panelový měřič RUR 100
  • Hliníkový roh. Na nejbližším stavebním trhu 135 rublů.
  • Šrouby a matice. Na nejbližším bleším trhu 35 rublů.

Celkem: 4710 rublů.

*Komponenty byly zakoupeny v různých časech a mnoho položek lze optimalizovat

poconoco: Zkusme sestavit nestandardní konfiguraci – osminohého 2DOF robota. 2DOF nohy jsou mnohem jednodušší na programování a mám spoustu nevyužitých serv. A co je nejdůležitější, bude možné jej pojmenovat na počest osminohého koně boha Odina Sleipnira (vždycky o tom snil!).

Náš Sleipnir bude mít čtyři nohy na každé straně se dvěma klouby. Každý kloub je servopohon, což znamená osm serv na každé straně. Pro zjednodušení se všech osm kloubů na jedné straně koně bude otáčet ve stejné rovině. I když to není vůbec nutné. Navíc, pokud jsou nohy na jedné straně mírně „šachovnicové“, takže se dvě sousední nohy nemohou dotýkat, bude to ještě lepší, umožní vám to udělat širší krok a cval.


Elegantním a funkčním, ale zdaleka ne nejlevnějším řešením je použití vlastní řídicí desky optimalizované pro připojení velkého množství serv. Narazil jsem na Dagu Spider Robot Controller - to je stejné Arduino Mega, ale na desce s předpájenými 3pinovými konektory, kam můžete okamžitě připojit těch 48 serv bez jakýchkoli štítů. Ideální pro vícenohé roboty na Arduinu.

Řízení

Budeme ovládáni přes Bluetooth. K tomu existují různá hardwarová řešení. Jedná se o shieldy a samostatné karty se sériovým rozhraním UART (jako běžný COM port, pouze s úrovní signálu 5 V). Zdálo se mi, že nejpraktičtější byla nejmenší karta s rozhraním UART. Připojuje se k odpovídajícím UART/sériovým pinům portu Arduino. Všimněme si dvou nuancí: na Uno/Due/Nano a podobných je pouze jeden takový port a také se používá pro firmware přes USB. Proto může být nutné během aktualizace firmwaru vypnout modul Bluetooth. A druhá nuance - nezapomeňte, že RX pin modulu je připojen k TX pinu Arduina a TX k RX. Takové věci se v UART dějí.

Programování Bluetooth není o nic složitější než serva lze číst bajt po bajtu, což budeme používat:

Char cmd; Serial.begin(9600); if (Serial.available()) cmd = Serial.read();

Pokud se používá Arduino Mega a Bluetooth je připojen k druhému portu, pak se místo Serial zapíše Serial1. Je pozoruhodné, že nemusíte používat Bluetooth, ale můžete robota ovládat přímo přes USB. A v kódu výše se nic nezmění! Jedná se pouze o práci se sériovým portem a není pro nás důležité, zda tam visí BT vysílač nebo USB Serial konvertor.

Druhá strana Bluetooth

Většina pohodlný způsob připojení jsou standardní linuxové nástroje. K práci budeme potřebovat nástroje sdptool, rfcomm (součást balíčku bluez v repozitářích Ubuntu) a také minicom (tak se balíček nazývá). Pokyny pro práci s těmito nástroji lze nalézt na internetu.

Algoritmus pohybu


Pro hexapoda by byla nejjednodušší chůze tato: nohy jsou rozděleny do dvou skupin po třech nohách a jedna ze skupin je zcela na zemi, druhá je ve vzduchu, přeuspořádaná dopředu. To není zdaleka jediná možná chůze. Ve vzduchu můžete držet jen dvě tlapky, nebo dokonce jednu a dalších čtyři nebo pět na zemi. Existuje také mnoho způsobů chůze pro octapod. Vezmeme ten nejjednodušší, také se dvěma skupinami po čtyřech nohách.

Co tedy musíme udělat, abychom mohli pracovat s 16 servy a zvolenou chůzí? Správná odpověď je číst o inverzní kinematice (IR). Délka článku nám nedovoluje téma široce rozvádět, ale na internetu je dostatek materiálu. IR zkrátka řeší problém najít potřebné řídicí signály, aby systém v prostoru zaujal požadovanou pozici. Pro nohu to znamená, že na základě souřadnic bodu, kam má noha zasáhnout, by měly být určeny úhly serv, které je k tomu potřeba nastavit. A ovládáním souřadnic chodidel můžete ovládat polohu těla. Nohy máme 2DOF, osy jsou rovnoběžné, takže chodidlo se pohybuje vždy ve stejné rovině. Problém IR je v tomto případě redukován na 2D prostor, což jej značně zjednodušuje.

Nechť je místním počátkem souřadnic O pro každou nohu hřídel horního serva, to znamená kyčle. A máme souřadnice bodu A, kam noha potřebuje zasáhnout. Pak je snadné vidět, že musíte vyřešit problém s nalezením průsečíků dvou kruhů (viz schéma nohou jedné strany, tam na samém pravou nohu toto je znázorněno). Po nalezení průsečíku B kružnic (volbou kterékoli z nich) je snadné vypočítat požadované úhly pomocí převodu z kartézských souřadnic na polární. V kódu vypadá řešení tohoto problému takto:

Float A = -2 * x; float B = -2 * y; float C = sqr(x) + sqr(y) + sqr(hipLength) - sqr(shinLength); float X0 = -A * C / (sqr(A) + sqr(B)); float Y0 = -B * C / (sqr(A) + sqr(B)); float D = sqrt(sqr(hipDélka) - (sqr(C) / (sqr(A) + sqr(B)))); float mult = sqrt(sqr(D) / (sqr(A) + sqr(B))); float ax, ay, bx, by; ax = X0 + B * mult; bx = X0 - B* mult; ay = Y0 - A * mult; by = Y0 + A * mult; // nebo bx pro jiný průsečík float jointLocalX = ax; // nebo by pro jiný průsečík float jointLocalY = ay; float hipPrimaryAngle = polarAngle(jointLocalX, jointLocalY); plovoucí hipAngle = hipPrimaryAngle - hipStartAngle; float shinPrimaryAngle = polarAngle (x - jointLocalX, y - jointLocalY); float shinAngle = (shinPrimaryAngle - hipAngle) - shinStartAngle;

kde x a y jsou souřadnice bodu, kam potřebujete dosáhnout nohou; hipStartAngle - úhel, ve kterém je „kyčel“ zpočátku natočen (se servem ve střední poloze), podobně - shinStartAngle. Mimochodem, v těchto výpočtech jsou úhly samozřejmě v radiánech, ale je třeba je přenést na objekty Servo ve stupních. Kompletní funkční kód firmwaru včetně tohoto kusu je zveřejněn na GitHubu, viz odkaz na konci článku. Toto je část IR, ale kromě toho potřebujete trochu více poměrně jednoduchého kódu k použití tohoto IR na všech nohách (viz funkce feetReachTo(), legWrite()). Budete také potřebovat kód, který skutečně implementuje chůzi – pohyb jedné sady nohou „vzad“ (takže se robot pohybuje dopředu), zatímco druhá sada nohou je zvednuta a posunuta dopředu pro další krok, viz funkce stepForward(). S danými parametry to trvá jeden krok. S těmito parametry mimochodem můžete udělat krok zpět, navzdory názvu funkce. Pokud je tato funkce volána ve smyčce, robot vykročí vpřed.

Nyní přijímáte příkazy a interpretujete je. Do programu přidáme stav:

Stav výčtu ( STOP, FORWARD, BACKWARD, FORWARD_RIGHT, FORWARD_LEFT );

A v hlavní prováděcí smyčce loop() se podíváme na aktuální stav (stavová proměnná) a vytáhneme stepForward(), pokud se pohybujeme vpřed (s rotací nebo bez ní), a znovu stepForward(), ale se záporným argumentem xamp, pokud se potřebujeme posunout zpět. Zatáčky budou zpracovány v legWrite() a pro otočení doprava nohy na pravé straně zůstanou stát (zatímco leví řadí). Tady je takový koňský tank. Brutální, ale velmi jednoduché a funguje to. Hladkou rotaci lze provést pouze pomocí 3DOF nohou, příklad toho lze vidět v úložišti buggybug.

Přepnout (stav) ( case FORWARD: case FORWARD_RIGHT: case FORWARD_LEFT: stepForward(h, dh, xamp, xshift); break; case BACKWARD: stepForward(h, dh, - xamp, xshift); break; )

Char příkaz; while (Serial1.available()) příkaz = Serial1.read(); přepínač (příkaz) ( případ "w": stav = VPŘED; přerušení; případ "s": stav = ZPĚT; přerušení; případ "d": stav = VPŘED_VPRAVO; přerušení; případ "a": stav = VPŘED_DOLEVA; přerušení; výchozí : stav = STOP;

Tady jsou hlavní body firmwaru u konce, zbytek jsou nejrůznější drobnosti. I když pravděpodobně existuje ještě jeden důležitý bod- možnost jemného doladění serv. I při nejpečlivější montáži, pokud přikážete všem servům, aby se otočily o 90°, některé z nich stejně skončí s mírně vychýleným úhlem. Proto potřebujeme schopnost to upravit. Jak jsem to udělal, lze vidět v metodách hipsWrite() a shinsWrite() a v polích jemného ladění hipsTune a shinsTune.

Shromáždění

Pro takové návrhy nepotřebujete nic zvláštního: stačí list plexiskla vhodné tloušťky (z nejbližšího hardwarového blešího trhu) a skládačka nebo pilka na vyříznutí dílů. A samozřejmě vrták na vrtání otvorů. Místo plexiskla můžete použít překližku (pak lze na finální konstrukci udělat i zapamatovatelný nápis pomocí vypalovačky). Můžete také použít plechy nebo rohy z hliníku. Se Sleipnirem jsem šel přesně cestou použití hliníkového rohu s 1 cm žebrováním (koupený někde ve stavebním supermarketu).


Základem bude obdélníkový rám. Končetiny - 4centimetrové pruhy. Vyplatí se také zásobit se spoustou malých šroubů a matic. Roh nařežeme na požadované kusy, vyřízneme drážky pro serva a vyvrtáme otvory pro montážní šrouby a šrouby. design lepší čas spíše ukázat než popsat. Velikosti mohou být libovolné, roboty musí být různé. Ale pamatujte: čím delší nohy, tím více bude muset servo tlačit na páku a tím větší zátěž bude mít. Až po nemožnost otáčení a dokonce rozbití. Ale 4–5 cm není problém.

U levných lehkých robotů se často neobtěžují se samostatným kloubovým kloubem pro končetiny a veškerá zátěž padá výhradně na hnací hřídel serva. Na nízká hmotnost to není vůbec kritické. A kdy větší váhu Za zvážení stojí serva s kovovými převody a hřídelí s kuličkovým ložiskem.

Každé servo je obvykle dodáváno s několika šrouby a sadou nástavců, které lze přišroubovat na hřídel pro různé aplikace. Naší nejlepší volbou je jeden „horn“ (nebo houkačka), který vám umožní připevnit tyč k servu. Osy dvou serv jsou tedy připojeny k jedné tyči a tyč se stává „kyčlí“. V tomto případě je jedno servo připojeno k tělu a druhé se stává součástí bérce. Vyplatí se k němu připojit další tyč, jen aby se prodloužila nebo aby byla končetina zajímavější. Trochu pečlivé práce - a platforma je připravena (praktické sady šroubováků, klíčů, pinzet, nůžek na drát atd. proces výrazně urychlují).

co bude dál?

Celý projekt je k dispozici na https://github.com/poconoco/sleipnir. Popsal jsem jednu z nepraktičtějších konfigurací - hodně 2DOF nohou, vysoké, úzké, snadno padnoucí na bok. Zkuste vyrobit lepšího robota s 3DOF nohami. Se 4DOF nohami. S drápy nebo čelistmi. Jako příklad inverzní kinematiky 3DOF můžete použít repozitář buggybug - tam je firmware hexapod. Můžete také vyrábět inteligentní roboty, nikoli řízené, instalací senzorů vzdálenosti místo Bluetooth a naučit robota vyhýbat se stěnám a překážkám. Pokud takový senzor nasadíte na servopohon a otočíte s ním, můžete skenovat oblast téměř sonarem.

Naši milí čtenáři, otevíráme sérii článků věnovaných vytvoření robota založeného na Arduinu. Předpokládá se, že čtenář je začátečník a má pouze základní znalosti o předmětu. Pokusíme se vše prezentovat co nejpodrobněji a nejjasněji.

Takže úvod do problému:

Začněme konceptem: chceme robota, který se může samostatně pohybovat po místnosti a přitom se vyhýbat všem překážkám, se kterými se na cestě setká. Úkol byl stanoven.

Nyní pojďme zjistit, co potřebujeme:

  1. Platforma (tělo). Zde jsou možnosti: udělejte si vše sami, kupte si díly a sestavte je, nebo si kupte hotové. Vyberte si, co se vám líbí

Stavebnice obvykle obsahuje plošinu a jeden motor pro dvě hnací kola (housenka) a přihrádku na baterie. K dispozici jsou možnosti pohonu všech kol - s motorem pro 4 kola. Pro začátečníky doporučujeme vzít platformy tankového typu

Dvě hnací kola a třetí opěrné kolo.

  1. Dále potřebujeme dálkoměr. Sonar (také znám jako dálkoměr, alias ultrazvukový modul) Jako dálkoměr byl zpočátku výběr mezi ultrazvukovým a infračerveným. Vzhledem k tomu, že ultrazvukové charakteristiky jsou výrazně lepší (maximální dosah cca 4-5 metrů oproti 30-60 cm) a cena je přibližně stejná, padla volba na Ultrasonic. Nejběžnějším modelem je HC-SR04.

  1. Řidič motoru.

co mám dělat? První, co vás napadne, je dát na výstup mikrokontroléru tranzistor a z něj napájet motory. To je samozřejmě dobré, ale nebude to fungovat, pokud chceme otočit motor jiným směrem... Ale H-můstek, který je trochu víc složitý obvod než dvojice tranzistorů. Ale v tomto případě je jich spousta ve formě hotových integrovaných obvodů, takže si myslím, že není třeba znovu vymýšlet kolo - koupíme hotové. Navíc cena 2-3 dolary... Jdeme dál. Pro tyto účely si pořídíme čip L293D, nebo ještě lépe na něm založený Motor Shield.

Štít motoru na čipu L298N

  1. Generování zvuku - piezo emitor

Nejvíce jednoduchá možnost generování zvuku je použití piezo emitoru.

Piezokeramické zářiče (piezozářiče) jsou zařízení pro elektroakustickou reprodukci zvuku, která využívají piezoelektrický jev. (vliv vzniku polarizace dielektrika pod vlivem mechanických namáhání (přímý piezoelektrický jev). Existuje také inverzní piezoelektrický jev - vznik mechanických deformací pod vlivem elektrického pole.

Přímý piezoelektrický efekt: v piezo zapalovačích k získání vysokého napětí přes jiskřiště;

Reverzní piezoelektrický efekt: v piezozářičích (účinné při vysokých frekvencích a mají malé rozměry);)

Piezo zářiče jsou široce používány v různých elektronických zařízení- budíky, telefony, elektronické hračky, domácí spotřebiče. Piezokeramický zářič se skládá z kovové destičky, na které je nanesena vrstva piezoelektrické keramiky, která má na vnější straně vodivý povlak. Deska a sprej jsou dva kontakty. Piezozářič lze také použít jako piezoelektrický mikrofon nebo senzor.

To je vše, co zpočátku potřebujeme. Nejprve se v samostatných lekcích podíváme na to, jak sestavit a zprovoznit tyto díly samostatně.

Lekce 2. Práce s ultrazvukovým senzorem pro měření vzdálenosti (dalekoměr)

Lekce 3. Arduino a Motor Shield založené na L298N

Lekce 4. Reprodukce zvuku - piezo emitor

Lekce 5. Sestavení robota a ladění programu