Turinys:
- 1 žingsnis: Įranga
- 2 žingsnis: grandinės diagramos vaizdo failas
- 3 žingsnis: grandinės schemos fritzavimo failas
- 4 žingsnis: siųstuvo kodas
- 5 veiksmas: imtuvo kodas
- 6 žingsnis: INO failai
- 7 žingsnis: bibliotekų nuoroda
Video: Gestais valdomas belaidis automobilis: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šioje pamokoje mes sužinosime, kaip padaryti gestais valdomą automobilį ar bet kurį robotą. Šis projektas susideda iš dviejų dalių, viena dalis yra siųstuvas, o kita - imtuvas. Siųstuvas iš tikrųjų yra sumontuotas ant rankinių pirštinių, o imtuvas - automobilyje ar bet kokiame robote. Dabar atėjo laikas sukurti gražų automobilį. Eime!
1 žingsnis: Įranga
Siųstuvo blokas
1. „Arduino Nano“.
2. MPU6050 jutiklio modulis.
3. RF 433 MHz siųstuvas.
4. Bet kokio tipo 3 elementų, 11,1 volto baterija (čia aš naudoju monetos elementą).
5. „Vero-Board“.
6. Rankų pirštinės.
Imtuvo blokas
1. „Arduino Nano“arba „Arduino Uno“.
2. L298N variklio vairuotojo modulis.
3. 4 ratų roboto rėmas, įskaitant variklius.
4. RF 433 RF imtuvas.
5. 3 elementų, 11,1 volto Li-po baterija.
6. Vero-lenta.
Kiti
1. Klijų lazdelės ir pistoletas.
2. Jumper laidai.
3. Atsuktuvai
4. Litavimo rinkinys.
ir kt.
2 žingsnis: grandinės diagramos vaizdo failas
3 žingsnis: grandinės schemos fritzavimo failas
4 žingsnis: siųstuvo kodas
#įtraukti
#įtraukti
#įtraukti
MPU6050 mpu6050 (viela);
ilgas laikmatis = 0;
char *valdiklis;
negaliojanti sąranka ()
{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (tiesa); vw_set_ptt_inverted (tiesa); // vw_set_tx_pin (10); vw_setup (4000); // duomenų perdavimo greitis Kbps
}
tuštumos kilpa ()
{ ////////////////////////////////////////////////////////////////////////////////////////////////
mpu6050.update ();
jei (milis () - laikmatis> 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 "); laikmatis = milis (); }
/////////////////////////////////////////////////////////////////////////////////////
if (mpu6050.getAccAngleX () 30) {controller = "X2"; vw_send ((uint8_t *) valdiklis, strlen (valdiklis)); vw_wait_tx (); // Palaukite, kol dings visas pranešimas Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) valdiklis, strlen (valdiklis)); vw_wait_tx (); // Palaukite, kol dings visas pranešimas Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) valdiklis, strlen (valdiklis)); vw_wait_tx (); // Palaukite, kol dings visas pranešimas Serial.println ("RIGHT"); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) valdiklis, strlen (valdiklis)); vw_wait_tx (); // Palaukite, kol dings visas pranešimas Serial.println ("STOP"); }}
5 veiksmas: imtuvo kodas
#įtraukti
int LA = 3;
int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (tiesa); // Reikalingas DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bitai per sekundę pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Paleiskite imtuvo PLL, kuriame veikia Serial.println ("Viskas gerai");
}
void loop () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message (buf, & buflen)) // Neblokuojantis
{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); atgal (); vėlavimas (100); // išjungtas (); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); Persiųsti(); vėlavimas (100); // išjungtas (); }
kitaip jei ((buf [0] == 'Y') && (buf [1] == '1'))
{Serial.println („LEFT“); kairėje (); vėlavimas (100); // išjungtas (); }
kitaip jei ((buf [0] == 'Y') && (buf [1] == '2'))
{Serial.println („RIGHT“); dešinė (); vėlavimas (100); // išjungtas (); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); išjungtas (); vėlavimas (100); }} else {Serial.println ("Negautas signalas"); }}
negalioja pirmyn ()
{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }
negalioja atgal ()
{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }
tuščia liko ()
{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }
negaliojanti teisė ()
{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }
negalioja ()
{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }
6 žingsnis: INO failai
7 žingsnis: bibliotekų nuoroda
„Virtual Wire“biblioteka:
MPU6050_tockn Libraby:
Laidų biblioteka:
Rekomenduojamas:
Gestais valdomas robotas naudojant „Arduino“: 7 žingsniai
Gestais valdomas robotas naudojant „Arduino“: robotai naudojami daugelyje sektorių, pavyzdžiui, statyboje, kariuomenėje, gamyboje, surinkime ir tt Robotai gali būti autonominiai arba pusiau autonomiški. Savarankiškiems robotams nereikia jokio žmogaus įsikišimo ir jie gali veikti patys, atsižvelgdami į situaciją. Žr
„DC MOTOR“rankos gestais valdomas greitis ir kryptis naudojant „Arduino“: 8 žingsniai
„DC MOTOR“rankinio gesto valdymo greitis ir kryptis naudojant „Arduino“: Šioje pamokoje sužinosime, kaip valdyti nuolatinės srovės variklį rankų gestais naudojant „arduino“ir „Visuino“. Žiūrėkite vaizdo įrašą! Taip pat peržiūrėkite tai: Rankų gestų pamoka
Nuotoliniu būdu valdomas automobilis - valdomas naudojant belaidį „Xbox 360“valdiklį: 5 žingsniai
Nuotoliniu būdu valdomas automobilis - valdomas naudojant belaidį „Xbox 360“valdiklį: tai instrukcijos, skirtos sukurti savo nuotoliniu būdu valdomą automobilį, valdomą naudojant belaidį „Xbox 360“valdiklį
Gestais valdomas automobilis: 5 žingsniai (su nuotraukomis)
Gestais valdomas automobilis: robotai vaidina svarbų vaidmenį automatizuojant visus sektorius, tokius kaip statyba, kariuomenė, medicina, gamyba ir tt Po to, kai sukūriau keletą pagrindinių robotų, tokių kaip valdomas automobilis, naudojant „Bluetooth“, sukūriau šį akselerometru pagrįstą gebą
„Play Station“nuotoliniu būdu valdomas belaidis 3D spausdintas automobilis: 7 žingsniai (su nuotraukomis)
„Play Station“nuotoliniu būdu valdomas belaidis 3D spausdintas automobilis: kas nemėgsta žaidimų? Lenktynės ir kovos virtualiame „Play Station“ir „Xbox“pasaulyje !! Taigi, norėdamas atnešti šį malonumą į tikrąjį gyvenimą, sukūriau šį „Instructable“, kuriame parodysiu, kaip galite naudoti bet kurį „Play Station“nuotolinį valdiklį (laidinį