Kazalo:
- 1. korak: Oprema
- 2. korak: slikovna datoteka vezja
- Korak 3: Filtriranje datoteke vezja
- 4. korak: Koda oddajnika
- 5. korak: Koda sprejemnika
- Korak 6: Datoteke INO
- 7. korak: Povezava knjižnic
Video: Brezžični avtomobil s krmiljenjem z gestami: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
V tej vadnici se bomo naučili, kako narediti avtomobil, ki ga upravlja gesta, ali katerega koli robota. Ta projekt ima dva dela, en del je oddajna enota, drugi del pa sprejemna enota. Oddajniška enota je dejansko nameščena na ročne rokavice, sprejemna enota pa v avto ali kateri koli robot. Zdaj je čas, da naredimo lep avto. Pojdimo!
1. korak: Oprema
Enota oddajnika
1. Arduino Nano.
2. Senzorski modul MPU6050.
3. Oddajnik RF 433 MHz.
4. Katera koli vrsta 3 -celične, 11,1 -voltne baterije (tukaj sem uporabil gumbno celico).
5. Vero-Board.
6. Rokavice za roke.
Sprejemna enota
1. Arduino Nano ali Arduino Uno.
2. Modul gonilnika motorja L298N.
3. 4 -kolesni okvir robota, vključno z motorji.
4. RF 433 RF sprejemnik.
5. 3-celična, 11,1-voltna Li-po baterija.
6. Vero-tabla.
Drugi
1. Lepilne palice in pištola.
2. Mostične žice.
3. Vijačni vijaki
4. Komplet za spajkanje.
itd.
2. korak: slikovna datoteka vezja
Korak 3: Filtriranje datoteke vezja
4. korak: Koda oddajnika
#vključi
#vključi
#vključi
MPU6050 mpu6050 (žica);
dolg časovnik = 0;
krmilnik char *;
void setup ()
{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // hitrost prenosa podatkov Kbps
}
void loop ()
{ ////////////////////////////////////////////////////////////////////////////////////////////////
mpu6050.update ();
if (millis () - časovnik> 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 "); timer = millis (); }
/////////////////////////////////////////////////////////////////////////////////////
if (mpu6050.getAccAngleX () 30) {controller = "X2"; vw_send ((uint8_t *) krmilnik, strlen (krmilnik)); vw_wait_tx (); // Počakajte, da izgine celotno sporočilo Serial.println ("NAPREJ"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) krmilnik, strlen (krmilnik)); vw_wait_tx (); // Počakajte, da izgine celotno sporočilo Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) krmilnik, strlen (krmilnik)); vw_wait_tx (); // Počakajte, da izgine celotno sporočilo Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) krmilnik, strlen (krmilnik)); vw_wait_tx (); // Počakajte, da izgine celotno sporočilo Serial.println ("STOP"); }}
5. korak: Koda sprejemnika
#vključi
int LA = 3;
int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // Zahtevano za DR3100 vw_set_rx_pin (12); vw_setup (4000); // bitov na sekundo pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Zaženite sprejemnik PLL z zagonom Serial.println ("Vse v redu");
}
void loop () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message (buf, & buflen)) // Ne blokira
{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("NAZAJ"); nazaj (); zamuda (100); // izklop (); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); naprej (); zamuda (100); // izklop (); }
sicer če ((buf [0] == 'Y') && (buf [1] == '1'))
{Serial.println ("LEFT"); levo (); zamuda (100); // izklop (); }
sicer če ((buf [0] == 'Y') && (buf [1] == '2'))
{Serial.println ("DESNO"); prav(); zamuda (100); // izklop (); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); off (); zamuda (100); }} else {Serial.println ("No Signal Received"); }}
void forward ()
{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }
void backward ()
{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }
praznina levo ()
{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }
void right ()
{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }
void off ()
{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }
Korak 6: Datoteke INO
7. korak: Povezava knjižnic
Knjižnica navideznih žic:
MPU6050_tockn Libraby:
Knjižnica Wire:
Priporočena:
RC avtomobil s krmiljenjem Bluetooth z nadzorom hitrosti in merjenjem razdalje: 8 korakov
RC avtomobil s krmiljenjem Bluetooth z nadzorom hitrosti in merjenjem razdalje: Kot otrok sem bil vedno navdušen nad avtomobili RC. Dandanes lahko najdete veliko vadnic za izdelavo poceni RC avtomobilov, ki jih upravlja Bluetooth, s pomočjo Arduina. Naredimo še korak naprej in uporabimo svoje praktično znanje kinematike za izračun
Brezžični brezžični polnilnik Bluetooth: 5 korakov
Brezžični brezžični polnilnik Bluetooth: Ali imate star zvočnik Bluetooth in brezžični polnilnik? Združimo jih, da naredimo čudovit brezžični polnilnik Bluetooth
Raspberry Pi, Android, IoT in brezžični brezžični dron: 7 korakov (s slikami)
Raspberry Pi, Android, IoT in Bluetooth brezžični upravljalnik: Ta kompaktni, mobilni računalnik bo z uporabo Raspberry Pi za vgrajeno logiko ustvaril lokalna vrata, ki pretočno predvajajo video v realnem času, hkrati pa ustvarijo vtičnice Bluetooth za branje vrednosti pošlje aplikacija za Android po meri. Aplikacija se sinhronizira s t
Brezžični brezžični brezžični podaljšek USB, ki deluje na baterijo: 7 korakov (s slikami)
Brezžični brezžični Wi -Fi podaljševalnik z baterijo USB: kako neprijetno ni, če bivate v hotelu in je WiFi le slab. S podaljševalnikom WiFi lahko izboljšate pogoje, vendar tisti, ki sem jih videl, zahtevajo vtičnico, ki ni vedno na voljo. Odločil sem se, da bom obnovil nizko ceno
Pretvorite brezžični usmerjevalnik v brezžični podaljšek 2x dostopno točko: 5 korakov
Pretvorite brezžični usmerjevalnik v brezžični podaljšek 2x dostopno točko: V hiši sem imel slabo povezavo z brezžičnim internetom zaradi RSJ (kovinski nosilec v stropu) in sem želel povečati signal ali dodati dodaten podaljšek za preostanek hiše. V elektro sem videl podaljševalce za okoli 50 funtov