Sommario:
- Passaggio 1: attrezzature
- Passaggio 2: file immagine del diagramma del circuito
- Passaggio 3: file fritzing dello schema elettrico
- Passaggio 4: codice trasmettitore
- Passaggio 5: codice ricevitore
- Passaggio 6: file INO
- Passaggio 7: collegamento delle biblioteche
Video: Auto wireless controllata dai gesti: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
In questo tutorial impareremo come realizzare un'auto controllata da gesti o qualsiasi robot. Questo progetto ha due parti, una parte è l'unità di trasmissione e l'altra parte è l'unità di ricezione. L'unità del trasmettitore è effettivamente montata su un guanto e l'unità del ricevitore è posizionata all'interno di un'auto o di un robot. Ora è il momento di fare una bella macchina. Andiamo!
Passaggio 1: attrezzature
Trasmettitore
1. Arduino nano.
2. Modulo sensore MPU6050.
3. Trasmettitore RF 433 MHz.
4. Qualsiasi tipo di batteria a 3 celle, 11,1 volt (qui ho usato una pila a bottone).
5. Vero-Board.
6. Guanti per le mani.
Unità di ricezione
1. Arduino Nano o Arduino Uno.
2. Modulo driver motore L298N.
3. Telaio del robot a 4 ruote inclusi i motori.
4. Ricevitore RF 433 RF.
5. Batteria Li-Po a 3 celle, 11,1 volt.
6. Vero-board.
Altri
1. Stick di colla e pistola.
2. Ponticelli.
3. Cacciaviti
4. Kit di saldatura.
eccetera.
Passaggio 2: file immagine del diagramma del circuito
Passaggio 3: file fritzing dello schema elettrico
Passaggio 4: codice trasmettitore
#includere
#includere
#includere
MPU6050 mpu6050 (cavo);
timer lungo = 0;
char *controllore;
configurazione nulla()
{ Serial.begin(9600); Wire.begin(); mpu6050.begin(); mpu6050.calcGyroOffsets(true); vw_set_ptt_inverted(true); // vw_set_tx_pin(10); vw_setup(4000); // velocità di trasferimento dati Kbps
}
ciclo vuoto()
{ ////////////////////////////////////////////////////////////////////////////////////////////////
mpu6050.update();
if(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("angleX: ");Serial.print(mpu6050.getAngleX()); Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY()); Serial.print("\tangleZ: ");Serial.println(mpu6050.getAngleZ()); Serial.println("============================================= ==========\n"); temporizzatore = millis(); }
/////////////////////////////////////////////////////////////////////////////////////
if (mpu6050.getAccAngleX()30) { controller="X2"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Attendi che l'intero messaggio scompaia Serial.println("FORWARD"); } else if (mpu6050.getAccAngleY()>40) { controller="Y1"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Attendi che l'intero messaggio scompaia Serial.println("LEFT"); } else if (mpu6050.getAccAngleY()<-40) { controller="Y2"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Attendi che l'intero messaggio scompaia Serial.println("RIGHT"); } else if (mpu6050.getAccAngleX()-10 && mpu6050.getAccAngleY()-10) { controller="A1"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Attendi che l'intero messaggio scompaia Serial.println("STOP"); } }
Passaggio 5: codice ricevitore
#includere
int LA = 3;
int LB = 11; int RA = 5; intRB = 6; void setup() { Serial.begin(9600); vw_set_ptt_inverted(true); // Richiesto per DR3100 vw_set_rx_pin(12); vw_setup(4000); // Bit per sec pinMode(13, OUTPUT); pinMode(LA, OUTPUT); pinMode(LB, USCITA); pinMode(RA, USCITA); pinMode(RB, USCITA); vw_rx_start(); // Avvia il PLL del ricevitore eseguendo Serial.println("All OK");
}
void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non bloccante
{ if((buf[0]=='X')&&(buf[1]=='1')) { Serial.println("BACKWARD"); indietro(); ritardo(100); //spento(); } else if((buf[0]=='X')&&(buf[1]=='2')) { Serial.println("AVANTI"); inoltrare(); ritardo(100); //spento(); }
else if((buf[0]=='Y')&&(buf[1]=='1'))
{ Serial.println("SINISTRA"); sinistra(); ritardo(100); //spento(); }
else if((buf[0]=='Y')&&(buf[1]=='2'))
{ Serial.println("DESTRA"); Giusto(); ritardo(100); //spento(); } else if((buf[0]=='A')&&(buf[1]=='1')) { Serial.println("STOP"); spento(); ritardo(100); } } else { Serial.println("Nessun segnale ricevuto"); } }
vuoto in avanti()
{ analogWrite(LA, 70); analogWrite(LB, 0); analogWrite(RA, 70); analogWrite(RB, 0); }
vuoto indietro()
{ analogWrite(LA, 0); analogWrite(LB, 70); analogWrite(RA, 0); analogWrite(RB, 70); }
vuoto a sinistra()
{ analogWrite(LA, 0); analogWrite(LB, 70); analogWrite(RA, 70); analogWrite(RB, 0); }
vuoto a destra()
{ analogWrite(LA, 70); analogWrite(LB, 0); analogWrite(RA, 0); analogWrite(RB, 70); }
annulla()
{ analogWrite(LA, 0); analogWrite(LB, 0); analogWrite(RA, 0); analogWrite(RB, 0); }
Passaggio 6: file INO
Passaggio 7: collegamento delle biblioteche
Libreria Virtual Wire:
MPU6050_tockn Libraby:
Libreria Wire:
Consigliato:
Robot controllato dai gesti - Spinel Crux: 4 passaggi
Robot controllato dai gesti - Spinel Crux: Spinel Crux Un robot controllato dai gesti per il progetto di sorveglianza wireless. In questa serie costruiremo un robot in grado di viaggiare su terreni accidentati e controllarlo con i gesti delle mani. Per guidare il robot utilizzeremo un guanto di controllo, che
Come Realizzare un Rover Controllato dai Gesti: 4 Passaggi
Come realizzare un rover controllato dai gesti: ecco le istruzioni per costruire un rover controllato dai gesti (rover telecomandato). Consiste in un'unità rover dotata di un sensore anticollisione a bordo. Il trasmettitore invece di essere un goffo telecomando è un bel guanto che può essere indossato o
Labirinto controllato dai gesti: 8 passaggi (con immagini)
Labirinto controllato dai gesti: mi piace giocare con i labirinti. Ho sempre voluto controllare uno di quei giochi di labirinti usando i gesti o il cellulare. Mi sono ispirato a creare questo labirinto di marmo dal labirinto stampato in 3D di blic19933 controllato dal tuo dispositivo AndroidInvece di usare
Costruisci un robot controllato dai gesti: 4 passaggi (con immagini)
Costruisci un robot controllato da gesti: in questo Instructable costruiamo un robot Arcbotics Sparki che può essere controllato con gesti 3D. La caratteristica interessante di questo progetto è che non è necessario alcun dispositivo aggiuntivo come uno smartphone o un guanto per controllare il robot. Basta spostare la mano sull'ele
Mano robotica wireless controllata da gesti e voce: 7 passaggi (con immagini)
Wireless Robotic Hand Controlled by Gesture and Voice: Fondamentalmente questo era il nostro progetto universitario e, a causa della mancanza di tempo per presentare questo progetto, ci siamo dimenticati di fotografare alcuni passaggi. Abbiamo anche progettato un codice utilizzando il quale si può controllare questa mano robotica usando gesti e voce allo stesso tempo, ma a causa di