Kinokontrol ng Gesture na Wireless Car: 7 Mga Hakbang
Kinokontrol ng Gesture na Wireless Car: 7 Mga Hakbang
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: