Mundarija:

Imo -ishora bilan boshqariladigan simsiz avtomobil: 7 qadam
Imo -ishora bilan boshqariladigan simsiz avtomobil: 7 qadam

Video: Imo -ishora bilan boshqariladigan simsiz avtomobil: 7 qadam

Video: Imo -ishora bilan boshqariladigan simsiz avtomobil: 7 qadam
Video: REDMI telefonlarini TOP 5 ajoyib SIRLI Funksiyalari! 2024, Dekabr
Anonim
Imo -ishora bilan boshqariladigan simsiz avtomobil
Imo -ishora bilan boshqariladigan simsiz avtomobil

Bu darslikda biz imo -ishorali boshqariladigan mashina yoki boshqa robotni yasashni o'rganamiz. Loyihaning ikki qismi bor, bir qismi uzatuvchi, ikkinchisi qabul qiluvchi. Transmitter birligi aslida qo'lqoplarga o'rnatiladi va qabul qilgich mashina yoki boshqa robotning ichiga joylashtiriladi. Endi chiroyli mashina yasash vaqti keldi. Qani ketdik!

1 -qadam: uskunalar

Transmitter birligi

1. Arduino Nano.

2. MPU6050 sensori moduli.

3. RF 433 MGts chastotali uzatuvchi.

4. Har qanday turdagi 3 uyali, 11,1 voltli batareya (Bu erda men tanga xujayrasini ishlatganman).

5. Vero-Board.

6. Qo'l qo'lqoplari.

Qabul qiluvchilar birligi

1. Arduino Nano yoki Arduino Uno.

2. L298N dvigatel haydovchi moduli.

3. Dvigatellarni o'z ichiga olgan 4 g'ildirakli robot ramkasi.

4. RF 433 RF qabul qiluvchisi.

5. 3 uyali, 11,1 voltli Li-po batareyasi.

6. Vero-taxta.

Boshqalar

1. Yelim tayoqchalari va qurol.

2. Jumper simlari.

3. Vintli haydovchilar

4. Lehim to'plami.

va boshqalar.

2 -qadam: O'chirish diagrammasi tasvir fayli

O'chirish diagrammasi tasvir fayli
O'chirish diagrammasi tasvir fayli

3 -qadam: O'chirish diagrammasi

4 -qadam: uzatuvchi kodi

#qo'shing

#qo'shing

#qo'shing

MPU6050 mpu6050 (simli);

uzoq taymer = 0;

char *nazorat qiluvchi;

bo'sh o'rnatish ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (haqiqiy); vw_set_ptt_inverted (rost); // vw_set_tx_pin (10); vw_setup (4000); // ma'lumotlarni uzatish tezligi Kbps

}

bo'sh halqa ()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050. yangilash ();

if (millis () - taymer> 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 "); taymer = millis (); }

/////////////////////////////////////////////////////////////////////////////////////

agar (mpu6050.getAccAngleX () 30) {tekshiruvchi = "X2"; vw_send ((uint8_t *) boshqaruvchi, strlen (nazoratchi)); vw_wait_tx (); // Butun xabar ketguncha kutib turing Serial.println ("FORWARD"); } if if (mpu6050.getAccAngleY ()> 40) {tekshiruvchi = "Y1"; vw_send ((uint8_t *) boshqaruvchi, strlen (nazoratchi)); vw_wait_tx (); // Butun xabar yo'qolguncha kuting Serial.println ("LEFT"); } boshqa if (mpu6050.getAccAngleY () <-40) {tekshiruvchi = "Y2"; vw_send ((uint8_t *) boshqaruvchi, strlen (nazoratchi)); vw_wait_tx (); // Butun xabar yo'qolguncha kuting Serial.println ("O'ng"); } boshqa if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {tekshiruvchi = "A1"; vw_send ((uint8_t *) boshqaruvchi, strlen (nazoratchi)); vw_wait_tx (); // Butun xabar yo'qolguncha kuting Serial.println ("STOP"); }}

5 -qadam: qabul qiluvchining kodi

#qo'shing

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (rost); // DR3100 vw_set_rx_pin uchun talab qilinadi (12); vw_setup (4000); // Bit soniya pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Serial.println ("Hammasi OK") ishlaydigan PLL qabul qilgichini ishga tushiring;

}

void loop () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message (buf, & buflen)) // Bloklanmagan

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); orqaga (); kechikish (100); // o'chirilgan (); } if if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("OLGA"); oldinga (); kechikish (100); // o'chirilgan (); }

aks holda ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("SOL"); chap (); kechikish (100); // o'chirilgan (); }

aks holda ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("O'ng"); o'ng (); kechikish (100); // o'chirilgan (); } if if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); o'chirish (); kechikish (100); }} boshqa {Serial.println ("Signal qabul qilinmadi"); }}

oldinga bo'sh ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }

orqaga bo'sh joy ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }

chap bo'sh ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }

o'ng bo'sh ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }

bekor qilish ()

{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }

6 -qadam: INO fayllari

7 -qadam: Kutubxonalar havolasi

Virtual simlar kutubxonasi:

MPU6050_tockn Libraby:

Simlar kutubxonasi:

Tavsiya: