Kaip padaryti kliūtį išvengti roboto naudojant „Arduino“?

Pasaulis juda greitai, kartu su juo juda ir technika robotikos srityje. Robotikos taikymas gali būti matomas visur pasaulyje. Mobiliųjų ar autonominių robotų, judančių be jokios išorinės pagalbos, samprata yra labiausiai kylanti tyrimų sritis. Yra tiek daug mobiliųjų robotų tipų, pavyzdžiui, „Self Localization and Mapping“ (SLAM) vertėjai, eismo sekimas, „Sumo Bots“ ir kt. Viena iš jų yra kliūtis, išvengianti roboto. Ji naudojasi technika, kad pakeistų kelią, jei aptinka kokių nors kliūčių.



(Paveikslėlio malonumas: grandinės santrauka)

Šiame projekte sukurtas „Arduino“ pagrindu sukurtas kliūčių išvengiantis robotas, kuris naudos ultragarso jutiklį, kad aptiktų visas kliūtis kelyje.



Kaip išvengti kliūčių naudojant ultragarso jutiklį?

Kai žinome savo projekto santrauką, paženkime žingsnį į priekį ir surenkame informacijos, kad galėtume pradėti projektą.



1 žingsnis: Surinkite komponentus

Geriausias būdas pradėti bet kokį projektą yra sudaryti visų komponentų sąrašą pradžioje ir atlikti trumpą kiekvieno komponento tyrimą. Tai mums padeda išvengti nepatogumų projekto viduryje. Išsamus visų šiame projekte naudojamų komponentų sąrašas pateiktas žemiau.



  • Automobilių ratų važiuoklė
  • Baterija

2 žingsnis: komponentų studijavimas

Dabar, kai turime išsamų visų komponentų sąrašą, eikime vienu žingsniu į priekį ir atlikime trumpą kiekvieno komponento veikimo tyrimą.

„Arduino nano“ yra patogi duonai valdyti mikrovaldiklio plokštė, naudojama skirtingoms grandinės užduotims valdyti ar vykdyti. Mes deginame a C kodas „Arduino Nano“ mikrokontrolerio valdybai pasakyti, kaip ir kokias operacijas atlikti. „Arduino Nano“ turi lygiai tokią pačią funkciją kaip „Arduino Uno“, tačiau yra gana mažo dydžio. „Arduino Nano“ plokštės mikrovaldiklis yra ATmega328p.

„Arduino Nano“



L298N yra didelės srovės ir aukštos įtampos integruotas grandynas. Tai dvigubas viso tilto tiltas, suprojektuotas priimti standartinę TTL logiką. Jame yra du įgalinimo įėjimai, leidžiantys prietaisui veikti savarankiškai. Vienu metu galima sujungti ir valdyti du variklius. Variklių greitis keičiamas per PWM kaiščius. Impulso pločio moduliacija (PWM) - tai technika, kuria galima valdyti įtampos srautą bet kuriame elektroniniame komponente. Šis modulis turi H tiltą, kuris yra atsakingas už variklių sukimosi krypties valdymą, keičiant srovės kryptį. Įjungti kaiščius A ir įjungti kaiščius B naudojami abiejų variklių greičiui pakeisti. Šis modulis gali veikti nuo 5 iki 35 V, o maksimali srovė - iki 2 A. Pirmojo variklio įvesties kaištis1 ir įvesties kaištis2 ir antrojo variklio įvesties kaištis3 ir įvesties kaištis4.

L298N variklio tvarkyklė

HC-SR04 plokštė yra ultragarso jutiklis, naudojamas atstumui tarp dviejų objektų nustatyti. Jis susideda iš siųstuvo ir imtuvo. Siųstuvas paverčia elektrinį signalą ultragarso signalu, o imtuvas ultragarso signalą vėl paverčia elektriniu signalu. Kai siųstuvas siunčia ultragarso bangą, ji atsispindi susidūrus su tam tikru objektu. Atstumas apskaičiuojamas naudojant laiką, kurį ultragarsinis signalas eina iš siųstuvo ir grįžta į imtuvą.

Ultragarsinis jutiklis

3 žingsnis: komponentų surinkimas

Dabar, kai jau žinome daugelio naudojamų komponentų veikimą, pradėkime surinkti visus komponentus ir pagaminkime kliūtį, vengiantį roboto.

  1. Paimkite automobilio ratų atramas ir ant viršaus užklijuokite duonos lentą. Sumontuokite ultragarso jutiklį priekinių dėklų priekyje, o akumuliatoriaus dangtelį - už lovų.
  2. Pritvirtinkite „Arduino Nano“ lentą ant duonos lentos ir pritvirtinkite variklio vairuotoją tiesiai už duonos lentos, ant atramų. Prijunkite abiejų variklių kaiščius prie „Arduino nano“ „Pin6“ ir „Pin9“. Variklio tvarkyklės modulio „In1“, „In2“, „In3“ ir „In4“ kaiščiai yra prijungti prie „Arduino nano“ atitinkamai pin2, pin3, pin4 ir pin5.
  3. Ultragarso jutiklio trigeris ir aido kaištis yra prijungti prie „Arduino nano“ kaiščių 11 ir 10. Ultragarso jutiklio Vcc ir įžeminimo kaištis yra prijungti prie „Arduino Nano“ 5 V ir žemės.
  4. Variklio valdiklio modulį maitina akumuliatorius. „Arduino Nano“ plokštė maitinimą gauna iš variklio tvarkyklės modulio 5V prievado, o ultragarso jutiklis - iš „Arduino nano“ plokštės. baterijų svoris ir energija gali tapti lemiamu jų veikimo veiksniu.
  5. Įsitikinkite, kad jūsų jungtys yra tokios pačios, kaip parodyta žemiau grandinės schemoje.

    Grandinės schema

4 žingsnis: darbo su „Arduino“ pradžia

Jei dar nesate susipažinę su „Arduino IDE“, nesijaudinkite, nes žingsnis po žingsnio procedūra, kaip nustatyti ir naudoti „Arduino IDE“ su mikrovaldiklio plokšte, paaiškinta toliau.

  1. Atsisiųskite naujausią „Arduino IDE“ versiją iš Arduino.
  2. Prijunkite „Arduino Nano“ plokštę prie nešiojamojo kompiuterio ir atidarykite valdymo skydą. valdymo skydelyje spustelėkite Aparatūra ir garsas . Dabar spustelėkite Prietaisai ir spausdintuvai. Čia raskite prievadą, prie kurio prijungta jūsų mikrovaldiklio plokštė. Mano atveju taip yra COM14 bet skirtinguose kompiuteriuose yra kitaip.

    Rasti uostą

  3. Spustelėkite meniu Įrankis. ir nustatykite lentą „Arduino Nano“ iš išskleidžiamojo meniu.

    Nustatymo lenta

  4. Tame pačiame meniu Įrankis nustatykite prievadą į prievado numerį, kurį anksčiau pastebėjote Prietaisai ir spausdintuvai .

    Uosto nustatymas

  5. Tame pačiame meniu Įrankis nustatykite procesorių į „ATmega328P“ (senas įkrovos įrankis).

    Procesorius

  6. Atsisiųskite žemiau pridėtą kodą ir įklijuokite jį į „Arduino IDE“. Spustelėkite įkelti mygtuką, kad įrašytumėte kodą savo mikrovaldiklio plokštėje.

    Įkelti

Norėdami atsisiųsti kodą, paspauskite čia.

5 žingsnis: supraskite kodą

Kodas yra gerai komentuojamas ir savaime suprantamas. Bet vis tiek tai paaiškinta toliau

1. Kodo pradžioje inicializuojami visi „Arduino Nano“ plokštės kaiščiai, prijungti prie ultragarso jutiklio ir variklio tvarkyklės modulio. Pin6 ir Pin9 yra PWM kaiščiai, kurie gali keisti įtampos srautą, kad būtų galima pakeisti roboto greitį. Du kintamieji, trukmė, ir atstumas yra inicijuojami saugoti duomenis, kurie vėliau bus naudojami ultragarso jutiklio ir kliūties atstumui apskaičiuoti.

int enable1pin = 6; // Pirmojo variklio kaiščiai varikliui1pin1 = 2; int variklis1pin2 = 3; int enable2pin = 9; // Antrojo variklio kaiščiai int motor2pin1 = 4; int variklis2pin2 = 5; const int trigPin = 11; // Ultragarsinio Sesnoro paleidimo kaištis const int echoPin = 10; // Ilgas ultragarso Sesnor aidas; // kintamieji, skirti apskaičiuoti atstumą plūduriuojantį atstumą;

2. negaliojanti sąranka () yra funkcija, naudojama nustatyti visus smeigtukus, kaip ĮVADAS ir IŠĖJIMAS. Šioje funkcijoje apibrėžta perdavimo sparta. „Baud Rate“ yra ryšio greitis, kuriuo mikrovaldiklio plokštė bendrauja su joje integruotais jutikliais.

negaliojanti sąranka () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (enable1pin, OUTPUT); pinMode (enable2pin, OUTPUT); pinMode (motor1pin1, OUTPUT); pinMode (motor1pin2, OUTPUT); pinMode (motor2pin1, OUTPUT); pinMode (motor2pin2, OUTPUT); }

3. tuščia kilpa () yra funkcija, vykdoma pakartotinai ciklo metu. Šioje funkcijoje mikrovaldiklio lentai nurodome, kaip ir kokias operacijas atlikti. Pirmiausia, paleidimo kaištis yra nustatytas siųsti signalą, kurį aptiks aido kaištis. Tada apskaičiuojamas ir išsaugomas kintamajame laikas, kurį ultragarso signalas praleidžia iš jutiklio ir atgal trukmė. Tada šis laikas naudojamas pagal formulę kliūties ir ultragarso jutiklio atstumui apskaičiuoti. Tada taikoma sąlyga, kad jei atstumas yra didesnis nei 5 cm, robotas judės į priekį tiesia linija, o jei atstumas yra mažesnis nei 50 cm, robotas pasuks staigų dešinį posūkį.

void loop () {digitalWrite (trigPin, LOW); // Ultragarsinio signalo delsos siuntimas ir aptikimasMikrosekundės (2); „digitalWrite“ (trigPin, HIGH); vėlavimasMikrosekundės (10); „digitalWrite“ (trigPin, LOW); trukmė = pulseIn (echoPin, HIGH); // Skaičiuojant ultragarso bangos imamą laiką, kad atspindėtų atstumo atstumas = 0,034 * (trukmė / 2); // Apskaičiuojant atstumą tarp jūsų apiplėšimo ir kliūties. if (atstumas> 50) // Judėti pirmyn, jei atstumas didesnis nei 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); „digitalWrite“ (motor1pin1, HIGH); „digitalWrite“ (motor1pin2, LOW); „digitalWrite“ (motor2pin1, HIGH); „digitalWrite“ (motor2pin2, LOW); } dar jei (atstumas<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); }

Programos

Taigi čia buvo procedūra, kaip padaryti kliūtį, vengiant robotą. Ši kliūčių vengianti technologija gali būti paduota ir kitose srityse. Kai kurios iš šių programų yra tokios.

  1. Sekimo sistema.
  2. Atstumo matavimo tikslai.
  3. Tai galima naudoti automatiniuose dulkių valymo robotuose.
  4. Tai gali būti naudojama aklųjų žmonėms skirtose lazdose.