Kako preprečiti robotom preprečevanje ovir z uporabo Arduina?

Svet se hitro premika, tehnologija pa se z njim premika tudi na področju robotike. Aplikacije robotike si lahko ogledate povsod po svetu. Koncept mobilnih ali avtonomnih robotov, ki se gibljejo brez kakršne koli zunanje pomoči, je najbolj poglobljeno področje raziskav. Obstaja toliko vrst mobilnih robotov, na primer tolmači za samolokalizacijo in kartiranje (SLAM), sledenje črti, Sumo boti itd. Robot, ki se mu izogibajo, je eden izmed njih. Uporabi tehniko za spremembo poti, če zazna kakršno koli oviro na svoji poti.



(Vljudnost slike: Povzetek kroga)

V tem projektu je zasnovan robot za izogibanje oviram, ki temelji na Arduinu in bo z ultrazvočnim senzorjem zaznal vse ovire na svoji poti.



Kako se izogniti oviram z uporabo ultrazvočnega senzorja?

Ker poznamo povzetek našega projekta, stopimo korak naprej in zberemo nekaj informacij za začetek projekta.



1. korak: Zbiranje komponent

Najboljši pristop za začetek katerega koli projekta je, da na začetku naredite seznam celotnih komponent in si ogledate kratko študijo vsake komponente. To nam pomaga, da se izognemo nevšečnostim sredi projekta. Spodaj je podan popoln seznam vseh komponent, uporabljenih v tem projektu.



  • Šasija avtomobilskih koles
  • Baterija

2. korak: Preučevanje komponent

Ko imamo zdaj popoln seznam vseh komponent, pojdimo korak naprej in si oglejmo kratko študijo o delovanju vseh komponent.

Arduino nano je mikrokrmilniška plošča, prijazna do plošče, ki se uporablja za nadzor ali izvajanje različnih nalog v vezju. Zažgemo a Koda C na Arduino Nano, da mikrokrmilniku pove, kako in katere operacije je treba izvesti. Arduino Nano ima popolnoma enako funkcionalnost kot Arduino Uno, vendar v precej majhni velikosti. Mikrokrmilnik na plošči Arduino Nano je ATmega328p.

Arduino Nano



L298N je visokonapetostno in visokonapetostno integrirano vezje. Je dvojni polni most, zasnovan tako, da sprejema standardno logiko TTL. Ima dva vhoda za omogočanje, ki omogočata napravi, da deluje neodvisno. Dva motorja je mogoče hkrati povezati in upravljati. Hitrost motorjev se spreminja skozi zatiče PWM. Modulacija impulzne širine (PWM) je tehnika, pri kateri je mogoče nadzorovati pretok napetosti v kateri koli elektronski komponenti. Ta modul ima H-most, ki je odgovoren za nadzor smeri vrtenja v motorjih z obračanjem smeri toka. Enable pin A in Enable Pin B se uporabljata za spreminjanje hitrosti obeh motorjev. Ta modul lahko deluje med 5 in 35V in največjim tokom do 2A. Vhodni zatič1 in vhodni zatič2 in za prvi motor ter vhodni zatič3 in vhodni zatič4 sta za drugi motor.

L298N Motor voznik

Plošča HC-SR04 je ultrazvočni senzor, ki se uporablja za določanje razdalje med dvema predmetoma. Sestavljen je iz oddajnika in sprejemnika. Oddajnik pretvori električni signal v ultrazvočni signal, sprejemnik pa ultrazvočni signal nazaj v električni signal. Ko oddajnik pošlje ultrazvočni val, se ta po trčenju z določenim predmetom odbije. Razdalja se izračuna z uporabo časa, ki ga ultrazvočni signal potrebuje, da gre od oddajnika in se vrne v sprejemnik.

Ultrazvočni senzor

3. korak: Sestavljanje komponent

Zdaj, ko že poznamo delovanje večine uporabljenih komponent, začnimo sestavljati vse komponente in ustvarimo robota, ki se izogiba oviram.

  1. Vzemite avtomobilske šasije in na njegov vrh nalepite ploščo. Ultrazvočni senzor pritrdite na sprednji del ohišja in pokrovček baterije za ohišjem.
  2. Pritrdite ploščo Arduino Nano na plošči in pritrdite gonilnik motorja tik za ploščo, na ohišja. Povežite zatiče Enable bothe motorjev na Pin6 in Pin9 Arduino nano. Zatiči In1, In2, In3 in In4 modula gonilnika motorja so priključeni na pin2, pin3, pin4 in pin5 na Arduino nano.
  3. Trig in echo zatič ultrazvočnega senzorja sta priključena na pin11 in in10 Arduino nano. Vcc in ozemljitveni zatič ultrazvočnega senzorja sta priključena na 5 V in ozemljitev Arduino Nano.
  4. Modul krmilnika motorja napaja baterija. Plošča Arduino Nano dobi napajanje iz 5V vrat modula gonilnika motorja, ultrazvočni senzor pa iz nano plošče Arduino. teža in energija baterij lahko postaneta odločilni dejavnik njene učinkovitosti.
  5. Prepričajte se, da so vaše povezave enake, kot je prikazano spodaj na vezju.

    Shema vezja

4. korak: Uvod v Arduino

Če še niste seznanjeni z Arduino IDE, ne skrbite, ker je v nadaljevanju razložen podroben postopek za nastavitev in uporabo Arduino IDE z mikrokrmilnikom.

  1. Prenesite najnovejšo različico Arduino IDE iz Arduino.
  2. Povežite ploščo Arduino Nano s prenosnikom in odprite nadzorno ploščo. na nadzorni plošči kliknite Strojna oprema in zvok . Zdaj kliknite na Naprave in tiskalniki. Tu poiščite vrata, na katera je priključena plošča vašega mikrokrmilnika. V mojem primeru je COM14 v različnih računalnikih pa je drugače.

    Iskanje pristanišča

  3. Kliknite meni Orodje. in nastavite ploščo na Arduino Nano iz spustnega menija.

    Nastavitvena plošča

  4. V istem meniju Orodja nastavite vrata na številko vrat, ki ste jo opazili prej v Naprave in tiskalniki .

    Nastavitev vrat

  5. V istem meniju orodja nastavite procesor na ATmega328P (stari zagonski nalagalnik).

    Procesor

  6. Prenesite spodnjo kodo in jo prilepite v svoj Arduino IDE. Kliknite na naložite za zapisovanje kode na ploščo mikrokrmilnika.

    Naloži

Če želite prenesti kodo, Klikni tukaj.

5. korak: Razumevanje kodeksa

Koda je dobro komentirana in samoumevna. A vseeno je razloženo spodaj

1. Na začetku kode se inicializirajo vsi zatiči plošče Arduino Nano, ki so povezani z ultrazvočnim senzorjem in modulom gonilnika motorja. Pin6 in Pin9 sta PWM zatiča, ki lahko spreminjata pretok napetosti in spreminjata hitrost robota. Dve spremenljivki, trajanje, in razdalja se inicializirajo za shranjevanje podatkov, ki bodo kasneje uporabljeni za izračun razdalje ultrazvočnega senzorja in ovire.

int enable1pin = 6; // zatiči za prvi motor int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // zatiči za drugi motor int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Sprožilni zatič ultrazvočnega Sesnorja const int echoPin = 10; // Echo Pin Of Ultrasonic Sesnor dolgotrajno; // spremenljivke za izračun razdalje plavajoče razdalje;

2. void setup () je funkcija, ki se uporablja za nastavitev vseh uporabljenih zatičev, kot VHOD in IZHOD. V tej funkciji je definirana hitrost prenosa. Hitrost prenosa je hitrost komunikacije, s katero plošča mikrokrmilnika komunicira z vgrajenimi senzorji.

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

3. void loop () je funkcija, ki se ponavlja v ciklu. V tej funkciji mikrokrmilniški plošči povemo, kako in katere postopke je treba izvesti. Tu je najprej nastavljen sprožilni zatič, ki pošilja signal, ki ga zazna echo pin. Nato se čas, ki ga ultrazvočni signal porabi za pot od senzorja in nazaj do njega, izračuna in shrani v spremenljivko trajanje. Potem se ta čas uporabi v formuli za izračun razdalje ovire in ultrazvočnega senzorja. Nato se uporabi pogoj, da se bo robot, če je razdalja večja od 5 cm, pomaknil naprej po ravni črti in če bo razdalja manjša od 50 cm, bo robot zavil ostro desno.

void loop () {digitalWrite (trigPin, LOW); // Pošiljanje in zaznavanje zakasnitve ultrazvočnega signalaMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); trajanje = pulseIn (echoPin, HIGH); // izračun časa, ki ga ultrazvočni val zajame za odsev povratne razdalje = 0,034 * (trajanje / 2); // Izračunavanje razdalje med robotom in oviro. if (razdalja> 50) // Premakni se naprej, če je razdalja večja od 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } sicer če (razdalja<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); }

Aplikacije

Tu je bil torej postopek, kako narediti robota, ki se izogiba oviram. To tehnologijo, ki se izogiba oviram, lahko tožimo tudi v drugih aplikacijah. Nekatere od teh aplikacij so naslednje.

  1. Sistem za sledenje.
  2. Namen merjenja razdalje.
  3. To se lahko uporablja pri avtomatskih robotih za sesanje.
  4. To lahko uporabite v palicah za slepe osebe.