Ako urobiť prekážku tak, že sa nebudete vyhýbať robotu pomocou Arduina?

Svet ide rýchlo ďalej a s ním sa pohybuje aj technológia v oblasti robotiky. Aplikácie robotiky možno vidieť všade na svete. Koncepcia mobilných alebo autonómnych robotov, ktorí sa pohybujú bez akejkoľvek vonkajšej pomoci, je najpútavejšou oblasťou výskumu. Existuje toľko druhov mobilných robotov, napríklad tlmočníci samo lokalizácie a mapovania (SLAM), sledovanie riadkov, roboti Sumo atď. Jedným z nich je robot, ktorý sa vyhýba prekážkam. Používa techniku ​​na zmenu trasy, ak zistí prekážku v ceste.



(Obrázok so súhlasom: Obvodový prehľad)

V tomto projekte je navrhnutý robot vyhýbajúci sa prekážkam založený na Arduine, ktorý bude pomocou ultrazvukového snímača detegovať všetky prekážky v ceste.



Ako sa vyhnúť prekážkam pomocou ultrazvukového snímača?

Keď už vieme abstrakt nášho projektu, poďme o krok vpred a zhromaždme nejaké informácie, aby sme mohli projekt zahájiť.



Krok 1: Zhromaždenie komponentov

Najlepším prístupom k zahájeniu každého projektu je vytvoriť zoznam úplných komponentov na začiatku a prejsť krátkym preštudovaním jednotlivých komponentov. Pomáha nám to vyhnúť sa nepríjemnostiam uprostred projektu. Kompletný zoznam všetkých komponentov použitých v tomto projekte je uvedený nižšie.



  • Podvozok automobilu
  • Batéria

Krok 2: Štúdium komponentov

Teraz, keď máme kompletný zoznam všetkých komponentov, posuňme sa o krok vpred a urobme si krátku štúdiu fungovania všetkých komponentov.

Arduino nano je doska mikrokontroléra vhodná pre prkénko, ktorá sa používa na ovládanie alebo vykonávanie rôznych úloh v obvode. Pálime a Zákonníka C. na Arduino Nano, aby povedal doske mikrokontroléra, ako a aké operácie majú vykonávať. Arduino Nano má úplne rovnakú funkcionalitu ako Arduino Uno, ale v celkom malom rozmere. Mikrokontrolér na doske Arduino Nano je ATmega328p.

Arduino Nano



L298N je vysokoprúdový a vysokonapäťový integrovaný obvod. Jedná sa o duálny full-bridge navrhnutý tak, aby akceptoval štandardnú logiku TTL. Má dva aktivačné vstupy, ktoré umožňujú nezávislé fungovanie zariadenia. Môžu byť pripojené a prevádzkované súčasne dva motory. Rýchlosť motorov sa mení prostredníctvom kolíkov PWM. Pulzná šírková modulácia (PWM) je technika, pri ktorej je možné riadiť tok napätia v ktorejkoľvek elektronickej súčasti. Tento modul má H-mostík, ktorý je zodpovedný za riadenie smeru otáčania v motoroch invertovaním smeru prúdu. Enable pin A a Enable Pin B sa používajú na zmenu otáčok oboch motorov. Tento modul môže pracovať medzi 5 a 35 V a špičkovým prúdom do 2A. Vstupný pin1 a vstupný pin2 a pre prvý motor a vstupný pin3 a vstupný pin4 sú pre druhý motor.

Ovládač motora L298N

Doska HC-SR04 je ultrazvukový senzor, ktorý sa používa na určenie vzdialenosti medzi dvoma objektmi. Skladá sa z vysielača a prijímača. Vysielač prevádza elektrický signál na ultrazvukový signál a prijímač prevádza ultrazvukový signál späť na elektrický signál. Keď vysielač vysiela ultrazvukové vlnenie, odráža sa po zrážke s určitým predmetom. Vzdialenosť sa počíta pomocou času, ktorý trvá ultrazvukový signál od vysielača a vráti sa späť k prijímaču.

Ultrazvukový senzor

Krok 3: Zostavenie komponentov

Teraz, keď už vieme, ako funguje väčšina použitých komponentov, začnime montovať všetky komponenty a vyrobme robota, ktorý sa vyhýba prekážkam.

  1. Vezmite hriadele kolies automobilu a na jeho vrchnú časť prilepte prúžok. Namontujte ultrazvukový snímač do prednej časti šachiet a kryt batérie za šachty.
  2. Upevnite dosku Arduino Nano na prkénko na prkénko a pripevnite motorový pohon hneď za prkénko na dosky, na podvozky. Pripojte aktivačné kolíky oboch motorov k pinom 6 a pinom 9 Arduino nano. Piny In1, In2, In3 a In4 modulu ovládača motora sú pripojené k pinom 2, pin3, pin4 a pin5 Arduino nano.
  3. Trigový a echo kolík ultrazvukového snímača je pripojený k pinom 11 a in10 Arduino nano. Vcc a uzemňovací kolík ultrazvukového snímača sú pripojené k 5 V a zemi uzemnenia Arduino Nano.
  4. Modul ovládača motora je napájaný z batérie. Doska Arduino Nano získava energiu z 5V portu modulu budiča motora a ultrazvukový snímač získava energiu z nano dosky Arduino. hmotnosť a energia batérií sa môžu stať určujúcim faktorom ich výkonu.
  5. Skontrolujte, či sú vaše pripojenia rovnaké, ako je uvedené nižšie v schéme zapojenia.

    Schéma zapojenia

Krok 4: Začíname s Arduino

Ak ešte nemáte skúsenosti s Arduino IDE, nebojte sa, pretože nižšie je vysvetlený krok za krokom postup nastavenia a používania Arduino IDE s doskou mikrokontroléra.

  1. Stiahnite si najnovšiu verziu Arduino IDE z Arduino.
  2. Pripojte dosku Arduino Nano k notebooku a otvorte ovládací panel. na ovládacom paneli kliknite na Hardvér a zvuk . Teraz kliknite na Zariadenia a tlačiarne. Tu nájdite port, ku ktorému je pripojená doska vášho mikrokontroléra. V mojom prípade to tak je COM14 ale na rôznych počítačoch je to iné.

    Hľadá sa prístav

  3. Kliknite na ponuku Nástroj. a nastavte dosku na Arduino Nano z rozbaľovacej ponuky.

    Nastavovacia doska

  4. V rovnakej ponuke nástrojov nastavte port na číslo portu, ktoré ste pozorovali predtým v priečinku Zariadenia a tlačiarne .

    Nastavuje sa port

  5. V tej istej ponuke nástrojov nastavte procesor na ATmega328P (starý bootloader).

    procesor

  6. Stiahnite si nižšie priložený kód a vložte ho do svojho Arduino IDE. Klikni na nahrať tlačidlo na vypálenie kódu na doske vášho mikrokontroléra.

    Nahrať

Ak chcete stiahnuť kód, kliknite tu.

Krok 5: Porozumenie Kódexu

Kódex je dobre komentovaný a je zrozumiteľný. Ale napriek tomu je to vysvetlené nižšie

1. Na začiatku kódu sa inicializujú všetky piny dosky Arduino Nano, ktoré sú pripojené k ultrazvukovému snímaču a modulu ovládača motora. Pin6 a Pin9 sú piny PWM, ktoré môžu meniť tok napätia a meniť rýchlosť robota. Dve premenné, trvanie, a vzdialenosť sa inicializujú na uloženie údajov, ktoré sa neskôr použijú na výpočet vzdialenosti ultrazvukového snímača a prekážky.

int enable1pin = 6; // Kolíky pre prvý motor int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // Kolíky pre druhý motor int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Spúšťací kolík ultrazvuku Sesnor const int echoPin = 10; // Echo Pin Of Ultrazvukové Sesnor dlhé trvanie; // premenné na výpočet vzdialenosti float distance;

2. nastavenie neplatnosti () je funkcia, ktorá sa používa na nastavenie všetkých použitých pinov, ako VSTUP a VÝKON. Prenosová rýchlosť je definovaná v tejto funkcii. Prenosová rýchlosť je rýchlosť komunikácie, ktorou doska mikrokontroléra komunikuje so senzormi, ktoré sú s ňou integrované.

void setup () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (enable1pin, VÝSTUP); pinMode (enable2pin, OUTPUT); pinMode (motor1pin1, VÝSTUP); pinMode (motor1pin2, VÝSTUP); pinMode (motor2pin1, VÝSTUP); pinMode (motor2pin2, VÝSTUP); }

3. neplatná slučka () je funkcia, ktorá beží opakovane v cykle. V tejto funkcii povieme doske mikrokontroléra, ako a aké operácie je potrebné vykonať. Tu sa najskôr nastaví spúšťací kolík na vysielanie signálu, ktorý bude detekovaný echovým kolíkom. Potom sa vypočíta čas, ktorý trvá ultrazvukový signál na cestu zo senzora a späť k senzoru, a uloží sa do premennej trvanie. Potom sa tento čas použije vo vzorci na výpočet vzdialenosti prekážky a ultrazvukového snímača. Potom sa použije podmienka, že ak je vzdialenosť väčšia ako 5 cm, robot sa bude pohybovať vpred po priamke a ak je vzdialenosť menšia ako 50 cm, urobí robot ostrou pravou zákrutou.

void loop () {digitalWrite (trigPin, LOW); // Posielanie a detekcia oneskorenia ultrazvukového signáluMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); // Výpočet času prijatého ultrazvukovou vlnou na odrážanie zadnej vzdialenosti = 0,034 * (doba / 2); // Výpočet vzdialenosti medzi tebou a robotom. if (vzdialenosť> 50) // Posunúť dopredu, ak je vzdialenosť väčšia ako 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } else if (vzdialenosť<50) // Sharp Right Turn if the distance is less than 50cm { digitalWrite(enable1pin, HIGH); digitalWrite(enable2pin, HIGH); digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); } delay(300); }

Aplikácie

Takže tu bol postup na výrobu robota, ktorý sa vyhýba prekážkam. Túto technológiu na vyhýbanie sa prekážkam možno žalovať aj v iných aplikáciách. Niektoré z týchto aplikácií sú nasledujúce.

  1. Sledovací systém.
  2. Účely merania vzdialenosti.
  3. Toto je možné použiť v robotoch na automatické vysávanie.
  4. Toto je možné použiť v tyčinkách pre nevidiacich.