Taula de continguts:
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-23 14:38
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
Robòtica manual sense fils controlada per gest i veu: 7 passos (amb imatges)
Robòtica manual sense fils controlada per gest i veu: bàsicament aquest era el nostre projecte universitari i, a causa de la manca de temps per enviar aquest projecte, ens vam oblidar de fer fotos d'alguns passos. També hem dissenyat un codi amb el qual es pot controlar aquesta mà robòtica mitjançant gest i veu alhora, però a causa de l
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