Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Cześć chłopaki, w tym Instructable zrobisz przeszkodę unikającą robota. Ta instrukcja obejmuje zbudowanie robota z czujnikiem ultradźwiękowym, który może wykrywać pobliskie obiekty i zmieniać ich kierunek, aby ich unikać. Czujnik ultradźwiękowy zostanie przymocowany do serwomotoru, który stale skanuje w lewo i prawo w poszukiwaniu obiektów na swojej drodze.
Więc bez zbędnych ceregieli, zaczynajmy!
Krok 1: Czego potrzebujesz w tym projekcie:
Oto lista części:
1) Arduino Uno
2) Osłona sterownika silnika
3) Motoreduktor, rama i zestaw kół
4) Serwosilnik
5) Czujnik ultradźwiękowy
6) Akumulator litowo-jonowy (2x)
7) Uchwyt baterii
8) Przewód połączeniowy męski i żeński
9) lutownica
10) Ładowarka
Krok 2: Schemat obwodu
Pracujący:
Przed przystąpieniem do pracy nad projektem ważne jest, aby zrozumieć, jak działa czujnik ultradźwiękowy. Podstawowa zasada działania czujnika ultradźwiękowego jest następująca:
Używając zewnętrznego sygnału wyzwalającego, pin Trig na czujniku ultradźwiękowym jest ustawiany na stan logiczny wysoki przez co najmniej 10 µs. Wysyłany jest sygnał dźwiękowy z modułu nadajnika. Składa się z 8 impulsów 40KHz.
Sygnały powracają po uderzeniu w powierzchnię, a odbiornik wykrywa ten sygnał. Pin Echo jest wysoki od momentu wysłania sygnału i odebrania go. Czas ten można przeliczyć na odległość za pomocą odpowiednich obliczeń.
Celem tego projektu jest zaimplementowanie robota omijającego przeszkodę z wykorzystaniem czujnika ultradźwiękowego i Arduino. Wszystkie połączenia są wykonane zgodnie ze schematem połączeń. Działanie projektu wyjaśniono poniżej.
Gdy robot jest włączony, oba silniki robota będą działać normalnie, a robot porusza się do przodu. W tym czasie czujnik ultradźwiękowy stale oblicza odległość między robotem a powierzchnią odbijającą światło.
Informacje te są przetwarzane przez Arduino. Jeśli odległość między robotem a przeszkodą jest mniejsza niż 15 cm, robot zatrzymuje się i skanuje w lewo i w prawo w poszukiwaniu nowej odległości za pomocą serwomotoru i czujnika ultradźwiękowego. Jeśli odległość do lewej strony jest większa niż do prawej strony, robot przygotuje się do skrętu w lewo. Ale najpierw cofa się trochę, a następnie aktywuje silnik lewego koła w odwrotnym kierunku.
Podobnie, jeśli prawa odległość jest większa niż lewa odległość, Robot przygotowuje prawy obrót. Ten proces trwa w nieskończoność, a robot porusza się, nie uderzając w żadną przeszkodę.
Krok 3: Programowanie Arduino UNO
#włączać
#włączać
#włączać
# zdefiniuj TRIG_PIN A1
# zdefiniuj ECHO_PIN A0
# zdefiniuj MAX_DISTANCE 200
# define MAX_SPEED 255 // ustawia prędkość silników prądu stałego
# zdefiniuj MAX_SPEED_OFFSET 20
sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ); Serwo myservo;
boolean idzieForward = false;
odległość wewnętrzna = 100; int speedSet = 0;
pusta konfiguracja () {
myservo.attach(10);
myservo.write(115); opóźnienie (2000); odległość = readPing(); opóźnienie (100); odległość = readPing(); opóźnienie (100); odległość = readPing(); opóźnienie (100); odległość = readPing(); opóźnienie (100); }
pusta pętla () {
int odległośćR = 0; int odległośćL = 0; opóźnienie(40);
if (odległość <= 15) { moveStop(); opóźnienie (100); przesuńWstecz(); opóźnienie(300); przesuńStop(); opóźnienie(200); odległośćR = patrzPrawo(); opóźnienie(200); odległośćL = patrz w lewo(); opóźnienie(200);
if (odległośćR >= odległośćL) {
Skręć w prawo(); przesuńStop(); } else { skręć w lewo(); przesuńStop(); } } else { moveForward(); } odległość = readPing(); }
int patrz w prawo() {
myservo.write(50); opóźnienie (500); int dystans = readPing(); opóźnienie (100); myservo.write(115); odległość powrotu; }
int spójrz w lewo() {
myservo.write(170); opóźnienie (500); int dystans = readPing(); opóźnienie (100); myservo.write(115); odległość powrotu; opóźnienie (100); }
int readPing() {
opóźnienie(70); int cm = sonar.ping_cm(); jeśli (cm == 0) { cm = 250; } powrót cm; }
void przesuńStop() {
motor3.run(RELEASE);
motor4.run(RELEASE); }
void przesuńdo przodu() {
jeśli (!przechodzi do przodu) {
idzieForward = prawda;
motor3.run(DO PRZODU);
motor4.run(DO PRZODU); for (speedSet = 0; speedSet < MAX_SPEED; speedSet += 2) // powoli zwiększaj prędkość, aby uniknąć zbyt szybkiego ładowania baterii {
motor3.setSpeed (speedSet);
motor4.setSpeed(speedSet); opóźnienie(5); } } }
void przesuńWstecz() {
idzieForward = fałsz;
silnik3.uruchom(WSTECZ);
motor4.run(WSTECZ); for (speedSet = 0; speedSet < MAX_SPEED; speedSet += 2) // powoli zwiększaj prędkość, aby uniknąć zbyt szybkiego ładowania baterii {
motor3.setSpeed (speedSet);
motor4.setSpeed(speedSet); opóźnienie(5); } }
nieważne skręt w prawo() {
motor3.run(DO PRZODU);
motor4.run(WSTECZ); opóźnienie (500);
motor3.run(DO PRZODU);
motor4.run(DO PRZODU); }
nieważne skręć w lewo () {
silnik3.uruchom(WSTECZ);
motor4.run(DO PRZODU); opóźnienie (500);
motor3.run (DO PRZODU);
motor4.run(DO PRZODU); }
1) Pobierz i zainstaluj Arduino Desktop IDE
- Windows -
- Mac OS X -
- Linux -
2) Pobierz i wklej plik biblioteki NewPing (biblioteka funkcji czujnika ultradźwiękowego) do folderu bibliotek Arduino.
- Pobierz plik NewPing.rar poniżej
- Wypakuj go do ścieżki - C:\Arduino\libraries
3) Prześlij kod do płytki Arduino za pomocą kabla USB
Pobierz kod:
Krok 4: Świetnie
Teraz twój robot jest gotowy, aby ominąć każdą przeszkodę…
Chętnie odpowiem na wszelkie pytania
Emailme: [email protected]
Strona internetowa:
Subskrybuj mój kanał YouTube:
Instagram:
Facebook:
Dziękuję:)