Taula de continguts:
- Pas 1: equipaments
- Pas 2: fitxer d'imatges del diagrama de circuits
- Pas 3: fitxer Fritzing del diagrama de circuits
- Pas 4: Codi del transmissor
- Pas 5: Codi del receptor
- Pas 6: fitxers INO
- Pas 7: enllaç de biblioteques
Vídeo: Cotxe sense fils controlat per gest: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
En aquest tutorial aprendrem, com fer un cotxe controlat per gestos o qualsevol robot. Aquest projecte té dues parts, una part és unitat transmissora i una altra part és unitat receptora. La unitat transmissora s’instal·la en guants de mà i la unitat receptora es col·loca dins d’un cotxe o qualsevol robot. Ara és hora de fer un bon cotxe. Som-hi!
Pas 1: equipaments
Unitat transmissora
1. Arduino Nano.
2. Mòdul de sensor MPU6050.
3. Transmissor RF 433 MHz.
4. Qualsevol tipus de bateria de 3 cel·les, 11,1 volts (aquí he utilitzat cel·la de moneda).
5. Vero-Junta.
6. Guants de mà.
Unitat receptora
1. Arduino Nano o Arduino Uno.
2. Mòdul de controlador de motor L298N.
3. Bastidor de robot de 4 rodes amb motors.
4. Receptor RF 433 RF.
5. Bateria Li-po de 3 cel·les, 11,1 volts.
6. Vero-tauler.
Altres
1. Enganxar pals i pistola.
2. Cables de pont.
3. Tornavisos
4. Kit de soldadura.
etc.
Pas 2: fitxer d'imatges del diagrama de circuits
Pas 3: fitxer Fritzing del diagrama de circuits
Pas 4: Codi del transmissor
#incloure
#incloure
#incloure
MPU6050 mpu6050 (Cable);
temporitzador llarg = 0;
controlador char *;
configuració nul·la ()
{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (true); vw_set_ptt_inverted (cert); // vw_set_tx_pin (10); vw_setup (4000); // velocitat de transferència de dades a Kbps
}
bucle buit ()
{ ////////////////////////////////////////////////////////////////////////////////////////////////
mpu6050.update ();
if (millis () - temporitzador> 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 "); temporitzador = millis (); }
/////////////////////////////////////////////////////////////////////////////////////
if (mpu6050.getAccAngleX () 30) {controlador = "X2"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espereu fins que desaparegui tot el missatge Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY ()> 40) {controlador = "Y1"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espereu fins que desaparegui tot el missatge Serial.println ("ESQUERRA"); } else if (mpu6050.getAccAngleY () <- 40) {controlador = "Y2"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espereu fins que desaparegui tot el missatge Serial.println ("DRETA"); } else if (mpu6050.getAccAngleX () - 10 && mpu6050.getAccAngleY () - 10) {controlador = "A1"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espereu fins que desaparegui tot el missatge Serial.println ("STOP"); }}
Pas 5: Codi del receptor
#incloure
int LA = 3;
int LB = 11; int RA = 5; int RB = 6; configuració nul·la () {Serial.begin (9600); vw_set_ptt_inverted (cert); // Obligatori per a DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bits per segon pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Inicieu el PLL del receptor amb Serial.println ("Tot bé");
}
bucle buit () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message (buf, & buflen)) // No bloqueja
{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); cap enrere (); retard (100); // off (); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); endavant (); retard (100); // off (); }
else if ((buf [0] == 'Y') && (buf [1] == '1'))
{Serial.println ("ESQUERRA"); left (); retard (100); // off (); }
else if ((buf [0] == 'Y') && (buf [1] == '2'))
{Serial.println ("DRETA"); dret(); retard (100); // off (); } else if ((buf [0] == 'A') && (buf [1] == '1'))) {Serial.println ("STOP"); off (); retard (100); }} else {Serial.println ("No s'ha rebut cap senyal"); }}
void forward ()
{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }
buit cap enrere ()
{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }
buit a l'esquerra ()
{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); }
anul·lar ()
{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }
Pas 6: fitxers INO
Pas 7: enllaç de biblioteques
Biblioteca de cables virtual:
MPU6050_tockn Libraby:
Biblioteca de cables:
Recomanat:
Cotxe controlat a distància: controlat mitjançant un controlador Xbox 360 sense fils: 5 passos
Cotxe controlat a distància: controlat mitjançant controlador Xbox 360 sense fils: són instruccions per construir el vostre propi cotxe controlat a distància mitjançant un controlador Xbox 360 sense fils
Cotxe RC controlat per gest manual: 15 passos
Cotxe RC controlat per gestos manuals: Hola, món! Aquest és el meu primer instructiu. Públic objectiu: aquest projecte és aplicable a qualsevol persona que tingui passió pel que fa a la tecnologia. Tant si sou un expert o un principiant absolut
Cotxe imprès 3D sense fils controlat a distància de Play Station: 7 passos (amb imatges)
Cotxe imprès 3D sense fils controlat a distància de Play Station: a qui no li agrada jugar? Córrer i lluitar al món virtual de Play Station i Xbox !! Així que, per portar aquesta diversió a la vida real, he creat aquest instructiu en el qual us mostraré com podeu utilitzar qualsevol control remot de Play Station (cablejat
Refredador / suport per a portàtils de cost zero (sense cola, sense perforació, sense femelles i cargols, sense cargols): 3 passos
Refredador / suport per a portàtils de cost zero (sense cola, sense perforació, sense femelles i cargols, sense cargols): ACTUALITZACIÓ: SI US PLAU VOT PER EL MEU INSTRUCTABLE, GRÀCIES ^ _ ^ TAMBÉ POTS AGRADAR-ME ENTRADA A www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ O POTS VOTAR ELS MEUS MILLORS AMICS
Introduïu un timbre sense fils en un interruptor d'alarma sense fils o un interruptor d'encesa / apagat: 4 passos
Introduïu un timbre sense fils en un interruptor d'alarma sense fils o en un interruptor d'encès / apagat: recentment he construït un sistema d'alarma i l'he instal·lat a casa. Vaig fer servir interruptors magnètics a les portes i els vaig connectar a través de les golfes: les finestres eren una altra història i el cablejat dur no era una opció. Necessitava una solució sense fils i això és