Talaan ng mga Nilalaman:

Kinokontrol ng Gesture na Wireless Car: 7 Mga Hakbang
Kinokontrol ng Gesture na Wireless Car: 7 Mga Hakbang

Video: Kinokontrol ng Gesture na Wireless Car: 7 Mga Hakbang

Video: Kinokontrol ng Gesture na Wireless Car: 7 Mga Hakbang
Video: Russian Encounters with UFOs and Aliens 2024, Nobyembre
Anonim
Kinokontrol ng Gesture na Wireless Car
Kinokontrol ng Gesture na Wireless Car

Sa tutorial na ito matututunan natin, kung paano gumawa ng isang kilos na kinokontrol na kotse o anumang robot. Ang proyektong ito ay may dalawang bahagi, isang bahagi ay unit ng transmiter at iba pang bahagi ay unit ng tatanggap. Ang unit ng transmiter ay talagang naka-mount sa isang guwantes na kamay at ang unit ng tatanggap ay inilalagay sa loob ng isang kotse o anumang robot. Oras na nito upang gumawa ng magandang kotse. Hayaan mong umalis!

Hakbang 1: Mga Equipment

Transmitter Unit

1. Arduino Nano.

2. Modyul ng Sensor ng MPU6050.

3. RF 433 MHz Transmitter.

4. Anumang uri ng 3 cell, 11.1 volt na Baterya (Dito ko nagamit ang coin cell).

5. Vero-Board.

6. Mga guwantes na Kamay.

Yunit ng Tagatanggap

1. Arduino Nano o Arduino Uno.

2. L298N Motor Driver Module.

3. 4 wheel frame ng robot kasama ang mga motor.

4. RF 433 RF Tagatanggap.

5. 3 cell, 11.1 volt Li-po Battery.

6. Vero-board.

Ang iba pa

1. Mga Pandikit na stick at baril.

2. Jumper wires.

3. Mga Screw Driver

4. Soldering Kit.

atbp.

Hakbang 2: File ng Larawan ng Circuit Diagram

File ng Larawan ng Circuit Diagram
File ng Larawan ng Circuit Diagram

Hakbang 3: Fritzing File ng Circuit Diagram

Hakbang 4: Transmitter Code

# isama

# isama

# isama

MPU6050 mpu6050 (Wire);

mahabang timer = 0;

char * Controller;

walang bisa ang pag-setup ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (totoo); vw_set_ptt_inverted (totoo); // vw_set_tx_pin (10); vw_setup (4000); // bilis ng transfer ng data Kbps

}

walang bisa loop ()

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

mpu6050.update ();

kung (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 ("angguloX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("\ tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("\ tangleZ:"); Serial.println (mpu6050.getAngleZ ()); Serial.println ("=_ ========== / n "); timer = millis (); }

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

kung (mpu6050.getAccAngleX () 30) {controller = "X2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Maghintay hanggang sa mawala ang buong mensahe Serial.println ("FORWARD"); } iba pa kung (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Maghintay hanggang sa mawala ang buong mensahe Serial.println ("KALIWA"); } iba pa kung (mpu6050.getAccAngleY () <- 40) {controller = "Y2"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Maghintay hanggang sa mawala ang buong mensahe Serial.println ("TAMA"); } iba pa kung (mpu6050.getAccAngleX () - 10 && mpu6050.getAccAngleY () - 10) {controller = "A1"; vw_send ((uint8_t *) controller, strlen (controller)); vw_wait_tx (); // Maghintay hanggang sa mawala ang buong mensahe Serial.println ("STOP"); }}

Hakbang 5: Code ng Tagatanggap

# isama

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (totoo); // Kinakailangan para sa DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bits per sec pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Start the receiver PLL running Serial.println ("All OK");

}

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

kung (vw_get_message (buf, & buflen)) // Non-block

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); paatras (); pagkaantala (100); // off (); } iba pa kung ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); pasulong (); pagkaantala (100); // off (); }

kung hindi man ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("KALIWA"); kaliwa (); pagkaantala (100); // off (); }

kung hindi man ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("TAMA"); kanan (); pagkaantala (100); // off (); } iba pa kung ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); off (); pagkaantala (100); }} iba pa {Serial.println ("Walang Natanggap na Signal"); }}

walang bisa pasulong ()

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

walang bisa pabalik ()

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

walang bisa ()

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

walang bisa ()

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

walang bisa ()

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

Hakbang 6: INO Files

Hakbang 7: Link ng Mga Aklatan

Virtual Wire Library:

MPU6050_tockn Libraryaby:

Wire Library:

Inirerekumendang: