Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Dobrý deň, chlapci, v tomto návode urobíte robota vyhýbajúceho sa prekážkam. Tento pokyn zahŕňa zostrojenie robota s ultrazvukovým senzorom, ktorý dokáže detekovať blízke objekty a meniť ich smer, aby sa týmto predmetom vyhýbal. Ultrazvukový senzor bude pripevnený k servomotoru, ktorý neustále skenuje vľavo a vpravo a hľadá predmety, ktoré mu stoja v ceste.
Takže bez ďalších okolkov začnime!
Krok 1: Čo potrebujete v tomto projekte:
Tu je zoznam dielov:
1) Arduino Uno
2) Štít vodiča motora
3) Prevodový motor, rám a sada kolies
4) Servomotor
5) Ultrazvukový senzor
6) Li-ion batéria (2x)
7) Držiak batérie
8) Mužský a ženský prepojovací kábel
9) Spájkovačka
10) Nabíjačka
Krok 2: Schéma zapojenia
Práca:
Pred prácou na projekte je dôležité pochopiť, ako funguje ultrazvukový senzor. Základný princíp fungovania ultrazvukového senzora je nasledujúci:
Použitím externého spúšťacieho signálu je spínací kolík na ultrazvukovom senzore logicky vysoký po dobu najmenej 10 µs. Z modulu vysielača sa odošle zvukový signál. Pozostáva z 8 impulzov s frekvenciou 40 kHz.
Signály sa vrátia späť po dopade na povrch a prijímač tento signál detekuje. Kolík Echo je vysoký od okamihu odoslania signálu a jeho príjmu. Tento čas je možné previesť na vzdialenosť pomocou vhodných výpočtov.
Cieľom tohto projektu je implementácia robota vyhýbajúceho sa prekážkam pomocou ultrazvukového senzora a Arduina. Všetky pripojenia sú vykonané podľa schémy zapojenia. Fungovanie projektu je vysvetlené nižšie.
Keď je robot zapnutý, oba motory robota bežia normálne a robot sa pohybuje dopredu. Počas tejto doby ultrazvukový senzor nepretržite vypočítava vzdialenosť medzi robotom a reflexným povrchom.
Tieto informácie spracováva Arduino. Ak je vzdialenosť medzi robotom a prekážkou menšia ako 15 cm, robot sa zastaví a pomocou servomotora a ultrazvukového senzora skenuje v ľavom a pravom smere novú vzdialenosť. Ak je vzdialenosť na ľavú stranu väčšia ako vzdialenosť na pravej strane, robot sa pripraví na ľavú zákrutu. Najprv však trochu zacúva a potom aktivuje motor ľavého kolesa v opačnom smere.
Podobne, ak je správna vzdialenosť väčšia ako vzdialenosť vľavo, robot pripraví pravé otočenie. Tento proces pokračuje navždy a robot sa pohybuje bez toho, aby narazil na prekážku.
Krok 3: Programovanie Arduino UNO
#zahrnúť
#zahrnúť
#zahrnúť
# define TRIG_PIN A1
# define ECHO_PIN A0
# define MAX_DISTANCE 200
# define MAX_SPEED 255 // nastavuje rýchlosť jednosmerných motorov
# define MAX_SPEED_OFFSET 20
NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DC Motor motora3 (3, MOTOR34_1KHZ);
AF_DC Motor motora4 (4, MOTOR34_1KHZ); Servo myservo;
boolean goesForward = false;
int vzdialenosť = 100; int speedSet = 0;
neplatné nastavenie () {
myservo.attach (10);
myservo.write (115); oneskorenie (2000); vzdialenosť = readPing (); oneskorenie (100); vzdialenosť = readPing (); oneskorenie (100); vzdialenosť = readPing (); oneskorenie (100); vzdialenosť = readPing (); oneskorenie (100); }
prázdna slučka () {
int vzdialenosťR = 0; int vzdialenosťL = 0; oneskorenie (40);
if (vzdialenosť <= 15) {moveStop (); oneskorenie (100); moveBackward (); oneskorenie (300); moveStop (); oneskorenie (200); vzdialenosťR = lookRight (); oneskorenie (200); vzdialenosťL = lookLeft (); oneskorenie (200);
ak (vzdialenosťR> = vzdialenosťL) {
odbočte vpravo(); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } vzdialenosť = readPing (); }
int lookRight () {
myservo.write (50); oneskorenie (500); int vzdialenosť = readPing (); oneskorenie (100); myservo.write (115); vzdialenosť návratu; }
int lookLeft () {
myservo.write (170); oneskorenie (500); int vzdialenosť = readPing (); oneskorenie (100); myservo.write (115); vzdialenosť návratu; oneskorenie (100); }
int readPing () {
oneskorenie (70); int cm = sonar.ping_cm (); ak (cm == 0) {cm = 250; } vrátiť cm; }
void moveStop () {
motor3.run (UVOĽNENIE);
motor4.run (UVOĽNENIE); }
void moveForward () {
if (! goesForward) {
goesForward = true;
motor3.run (Vpred);
motor4.run (Vpred); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) // pomaly zvyšujte rýchlosť, aby ste sa vyhli príliš rýchlemu vybíjaniu batérií {
motor3.setSpeed (speedSet);
motor4.setSpeed (speedSet); oneskorenie (5); }}}
void moveBackward () {
goesForward = false;
motor3.run (BACKWARD);
motor4.run (BACKWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) // pomaly zvyšujte rýchlosť, aby ste sa vyhli príliš rýchlemu vybíjaniu batérií {
motor3.setSpeed (speedSet);
motor4.setSpeed (speedSet); oneskorenie (5); }}
neplatné turnRight () {
motor3.run (Vpred);
motor4.run (BACKWARD); oneskorenie (500);
motor3.run (Vpred);
motor4.run (Vpred); }
neplatný turnLeft () {
motor3.run (BACKWARD);
motor4.run (Vpred); oneskorenie (500);
motor3.run (Vpred);
motor4.run (Vpred); }
1) Stiahnite si a nainštalujte IDE Arduino Desktop
- okná -
- Mac OS X -
- Linux -
2) Stiahnite a prilepte súbor knižnice NewPing (knižnica funkcií ultrazvukových senzorov) do priečinka Knižnice Arduino.
- Stiahnite si NewPing.rar nižšie
- Extrahujte ho do cesty - C: / Arduino / libraries
3) Nahrajte kód na dosku Arduino pomocou kábla USB
Stiahnite si kód:
Krok 4: Skvelé
Teraz je váš robot pripravený vyhnúť sa akýmkoľvek prekážkam …
Rád zodpoviem všetky vaše otázky
E -mail na: [email protected]
Webová stránka:
Prihláste sa na odber môjho kanála YouTube:
Instagram:
Facebook:
Ďakujem:)