Spisu treści:
- Krok 1: Sprzęt
- Krok 2: Plik obrazu schematu obwodu
- Krok 3: Fritzing File schematu obwodu
- Krok 4: Kod nadajnika
- Krok 5: Kod odbiorcy
- Krok 6: Pliki INO
- Krok 7: Link do bibliotek
Wideo: Bezprzewodowy samochód sterowany gestami: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
W tym samouczku nauczymy się, jak zrobić samochód sterowany gestami lub dowolnego robota. Ten projekt ma dwie części, jedna część to jednostka nadajnika, a druga to jednostka odbiornika. Jednostka nadawcza jest w rzeczywistości zamontowana na rękawicach, a jednostka odbiorcza jest umieszczona wewnątrz samochodu lub dowolnego robota. Teraz nadszedł czas na zrobienie ładnego samochodu. Chodźmy!
Krok 1: Sprzęt
Jednostka nadajnika
1. Arduino Nano.
2. Moduł czujnika MPU6050.
3. Nadajnik RF 433 MHz.
4. Dowolny typ 3-ogniwowej baterii 11,1 V (tutaj użyłem baterii pastylkowej).
5. Płyta Vero.
6. Rękawiczki ręczne.
Jednostka odbiorcza
1. Arduino Nano lub Arduino Uno.
2. Moduł sterownika silnika L298N.
3. 4-kołowa rama robota wraz z silnikami.
4. Odbiornik RF 433.
5. 3-ogniwowa bateria Li-po 11,1 V.
6. Płyta Vero.
Inni
1. Klej w sztyfcie i pistolet.
2. Przewody połączeniowe.
3. Śrubokręty
4. Zestaw lutowniczy.
itp.
Krok 2: Plik obrazu schematu obwodu
Krok 3: Fritzing File schematu obwodu
Krok 4: Kod nadajnika
#włączać
#włączać
#włączać
MPU6050 mpu6050 (drut);
długi zegar = 0;
char *kontroler;
pusta konfiguracja()
{ Szeregowy.początek(9600); Wire.początek(); mpu6050.begin(); mpu6050.calcGyroOffsets (prawda); vw_set_ptt_inverted (prawda); // vw_set_tx_pin(10); vw_setup(4000);// szybkość przesyłania danych Kbps
}
pusta pętla()
{ ////////////////////////////////////////////////////////////////////////////////////////////////
mpu6050.aktualizacja();
if(millis() - timer > 1000)
{ Serial.println("==================================================== ======”); Serial.print("temp: ");Serial.println(mpu6050.getTemp()); Serial.print("accX: ");Serial.print(mpu6050.getAccX()); Serial.print("\taccY: ");Serial.print(mpu6050.getAccY()); Serial.print("\taccZ: ");Serial.println(mpu6050.getAccZ()); Serial.print("gyroX: ");Serial.print(mpu6050.getGyroX()); Serial.print("\tgyroY: ");Serial.print(mpu6050.getGyroY()); Serial.print("\tgyroZ: ");Serial.println(mpu6050.getGyroZ()); Serial.print("accAngleX: ");Serial.print(mpu6050.getAccAngleX()); Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY()); Serial.print("gyroAngleX: ");Serial.print(mpu6050.getGyroAngleX()); Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY()); Serial.print("\tgyroAngleZ: ");Serial.println(mpu6050.getGyroAngleZ()); Serial.print("angleX: ");Serial.print(mpu6050.getAngleX()); Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY()); Serial.print("\tangleZ: ");Serial.println(mpu6050.getAngleZ()); Serial.println("============================================== ====\n"); zegar = mili(); }
/////////////////////////////////////////////////////////////////////////////////////
if (mpu6050.getAccAngleX()30) { kontroler="X2"; vw_send((uint8_t *)kontroler, strlen(kontroler)); vw_wait_tx(); // Poczekaj, aż cała wiadomość zniknie Serial.println("FORWARD"); } else if (mpu6050.getAccAngleY()>40) { kontroler="Y1"; vw_send((uint8_t *)kontroler, strlen(kontroler)); vw_wait_tx(); // Poczekaj, aż cała wiadomość zniknie Serial.println("LEWO"); } else if (mpu6050.getAccAngleY()<-40) { controller="Y2"; vw_send((uint8_t *)kontroler, strlen(kontroler)); vw_wait_tx(); // Poczekaj, aż cała wiadomość zniknie Serial.println("PRAWO"); } else if (mpu6050.getAccAngleX()-10 && mpu6050.getAccAngleY()-10) { controller="A1"; vw_send((uint8_t *)kontroler, strlen(kontroler)); vw_wait_tx(); // Poczekaj, aż cała wiadomość zniknie Serial.println("STOP"); } }
Krok 5: Kod odbiorcy
#włączać
wewn LA = 3;
int LB = 11; int RA = 5; int RB = 6; void setup() { Serial.begin(9600); vw_set_ptt_inverted (prawda); // Wymagane dla DR3100 vw_set_rx_pin(12); vw_setup(4000); // Bity na sekundę pinMode(13, OUTPUT); pinMode(LA, WYJŚCIE); pinMode(LB, WYJŚCIE); pinMode(RA, WYJŚCIE); pinMode(RB, WYJŚCIE); vw_rx_start(); // Uruchom odbiornik PLL z programem Serial.println("Wszystko OK");
}
void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; bufor uint8_t = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Bez blokowania
{ if((buf[0]=='X')&&(buf[1]=='1')) { Serial.println("WSTECZ"); do tyłu(); opóźnienie (100); //wyłączony(); } else if((buf[0]=='X')&&(buf[1]=='2')) { Serial.println("DALEJ"); Naprzód(); opóźnienie (100); //wyłączony(); }
else if((buf[0]=='Y')&&(buf[1]=='1'))
{ Serial.println("LEWO"); lewo(); opóźnienie (100); //wyłączony(); }
else if((buf[0]=='Y')&&(buf[1]=='2'))
{ Serial.println("PRAWY"); Prawidłowy(); opóźnienie (100); //wyłączony(); } else if((buf[0]=='A')&&(buf[1]=='1')) { Serial.println("STOP"); wyłączony(); opóźnienie (100); } } else { Serial.println("Nie odebrano sygnału"); } }
nieważne do przodu()
{ analogZapis(LA, 70); analogZapis(LB, 0); analogZapis(RA, 70); analogZapis(RB, 0); }
nieważne wstecz ()
{ analogZapis(LA, 0); analogZapis(LB, 70); analogZapis(RA, 0); analogZapis(RB, 70); }
nieważne w lewo ()
{ analogZapis(LA, 0); analogZapis(LB, 70); analogZapis(RA, 70); analogZapis(RB, 0); }
nieważne prawo ()
{ analogZapis(LA, 70); analogZapis(LB, 0); analogZapis(RA, 0); analogZapis(RB, 70); }
unieważnienie ()
{ analogZapis(LA, 0); analogZapis(LB, 0); analogZapis(RA, 0); analogZapis(RB, 0); }
Krok 6: Pliki INO
Krok 7: Link do bibliotek
Wirtualna biblioteka przewodów:
MPU6050_tockn Biblioteka:
Biblioteka przewodów:
Zalecana:
Samochód sterowany gestami: 5 kroków (ze zdjęciami)
Samochód sterowany gestami: Roboty odgrywają ważną rolę w automatyzacji we wszystkich sektorach, takich jak budownictwo, wojsko, medycyna, produkcja itp. Po stworzeniu kilku podstawowych robotów, takich jak samochód sterowany za pomocą Bluetooth, opracowałem ten oparty na akcelerometrze ges
Play Station Zdalnie sterowany bezprzewodowy samochód z nadrukiem 3D: 7 kroków (ze zdjęciami)
Zdalnie sterowany bezprzewodowy samochód z nadrukiem 3D Play Station: Kto nie lubi gier? Wyścigi i walki w wirtualnym świecie Play Station i Xbox
Samochód sterowania gestami za pomocą Mpu6050 i Arduino: 7 kroków (ze zdjęciami)
Samochód do sterowania gestami za pomocą Mpu6050 i Arduino: oto samochód do sterowania gestami za pomocą kontrolera ręcznego, wykonany przy użyciu mpu6050 i arduino. Używam modułu rf do połączenia bezprzewodowego
Bezprzewodowy punkt dostępowy o zasięgu 50 metrów z TP Link WN7200ND Bezprzewodowy adapter USB na Raspbian Stretch: 6 kroków
Bezprzewodowy punkt dostępowy o zasięgu pięćdziesięciu metrów z bezprzewodowym adapterem TP Link WN7200ND USB na Raspbian Stretch: Raspberry Pi świetnie nadaje się do tworzenia bezpiecznych bezprzewodowych punktów dostępowych, ale nie ma dobrego zasięgu, użyłem bezprzewodowego adaptera USB TP Link WN7200ND, aby go rozszerzyć. Chcę się podzielić jak to zrobićDlaczego zamiast routera używać raspberry pi?T
Konwertuj router bezprzewodowy na bezprzewodowy przedłużacz 2x punkt dostępowy: 5 kroków
Konwersja routera bezprzewodowego na bezprzewodowy przedłużacz 2x punkt dostępowy: Miałem słabe bezprzewodowe połączenie internetowe w moim domu z powodu RSJ (metalowa belka nośna w suficie) i chciałem wzmocnić sygnał lub dodać dodatkowy przedłużacz dla reszty domu. Widziałem przedłużacze przez około 50 funtów w elektro