Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Voiture Arduino 4WD RC

Composants et fournitures

Arduino UNO
× 2
SparkFun Transceiver Breakout - nRF24L01+ (RP-SMA)
× 2
Funduino Joystick Shield V1.A
× 1
Drivers de moteur SparkFun Dual H-Bridge L298
× 2
Kit de châssis de voiture robot intelligent 4WD
× 1
LED (générique)
× 3
Résistance 221 ohm
× 2
Planche à pain (générique)
× 2
Batteries 18650
× 2
Powerbank
× 1
Câbles de raccordement (générique)
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Histoire

Salut à tous! Ceci est mon prochain projet - Arduino 4WD RC Car avec Joystick Controller ou Comme il est facile de contrôler une Arduino 4WD Smart Car avec un Joystick analogique.

Cette voiture commandée par joystick RC utilise NRF24l01 comme émetteur et récepteur. Il a une portée jusqu'à 1 kilomètre dans un espace ouvert. C'est aussi très simple et facile à faire.

1. Manette de commande

Composants pour Joystick :

Le bouclier du joystick se trouve au sommet de votre Arduino et le transforme en un simple contrôleur. 7 boutons poussoirs momentanés (4 gros boutons, 2 petits boutons et un bouton de sélection de joystick) et un joystick à deux axes donnent à votre Arduino des fonctionnalités au niveau des anciennes manettes Nintendo. Cet appareil propose également des interfaces LCD Nokia 5110 et nRF24L01.

Caractéristiques :

  • Interface nRF24L01
  • Interface LCD Nokia 5110
  • Interface Bluetooth
  • Interface I2C
  • Compatible avec Arduino
  • Tension de fonctionnement 3,5 V ou 5 V

En fait, il est étiqueté comme BTE16-49 - modules de communication sans fil nRF24L01+RFX2401C +PA+LNA avec boîtier de blindage d'antenne 2,4 GHz 20dbm 1000m.

Caractéristiques précisées par le vendeur :

  • Bande ISM mondiale ouverte 2,4 GHz, utilisation sans licence
  • la vitesse de fonctionnement maximale de 2 Mbps, la modulation GFSK efficace, la transmission audio, vidéo
  • 125 canaux, pour répondre aux besoins des communications multipoints et des communications à saut de fréquence
  • l'adresse de la détection d'erreur CRC matérielle intégrée et du contrôle de communication point à multipoint
  • Tension de travail 3.0-3.6V, la puissance de transmission 20dBm (VDD =3.3V)
  • l'antenne externe 2,4 GHz
  • Broches au pas de 2,54 mm, entièrement compatibles sans l'interface du module amplificateur, faciles à remplacer, améliorent la distance
  • distance de transmission jusqu'à 1000 m

2. Manette de commande

Joystick Shield a 4 gros boutons + 2 petits boutons + bouton de sélection du joystick et un joystick à deux axes (axe X de 0 à 1023, axe Y de 0 à 1023) Le bouclier se trouve au-dessus de votre Arduino et le transforme en un simple contrôleur. Dans mon croquis, Button Up est pour Buzzer (avertisseur sonore), Button Right - éclairage avant (LED + résistance 200 Ohm), Button Left - éclairage arrière (LED + résistance 200 Ohm). Les autres boutons ne sont pas utilisés.

Test du joystick :

État inactif :X=499, Y=502, Haut=1, Droite=1, Bas=1, Gauche=1

3. Voiture RC Arduino 4WD

Effectuez les connexions comme dans l'image du schéma de câblage ci-dessus.

Remarque :avant de télécharger le code, vous devez déconnecter les cavaliers de la carte Arduino Uno (broches 0, 1).

Que ce soit une fois que vous avez fait toutes les étapes correctement, la voiture est prête à partir !

Après avoir alimenté le contrôleur Arduino Car et Joystick, vous pouvez utiliser le joystick pour contrôler la voiture en déplaçant le joystick vers l'avant et vers l'arrière, la voiture se déplacera vers l'avant ou vers l'arrière, et déplacer le joystick vers la gauche et la droite fera tourner la voiture à gauche et à droite.

Restez à l'écoute!

Code

  • Voiture_nRF24.ino
  • Joystick_nRF24.ino
Car_nRF24.inoArduino
Code pour Arduino RC Car
/* Code récepteur du module JoyStick - CONNEXIONS :Modules nRF24L01 Voir :1 - GND 2 - VCC 3.3V !!! PAS 5V 3 - CE à la broche Arduino 6 4 - CSN à la broche Arduino 8 5 - SCK à la broche Arduino 13 6 - MOSI à la broche Arduino 11 7 - MISO à la broche Arduino 12 8 - UNUSED *///-----( Importez les bibliothèques nécessaires )-----#include #include #include /*-----( Declare Constants and Pin Numbers )-----* /#define CE_PIN 6#define CSN_PIN 8// NOTE :le "LL" à la fin de la constante est "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Définir le tube de transmission#define light_Front 18 //LED Front Right pin A4 pour Arduino Uno#define light_Back 19 //LED Back Right pin A5 pour Arduino Uno#define horn_Buzz 7 #define ENA_m1 3 // Activer/viter le moteur Front Right #define ENB_m1 5 // Activation/vitesse du moteur arrière droit#define ENA_m2 9 // Activation/vitesse du moteur avant gauche#define ENB_m2 10 // Activation/vitesse du moteur arrière gauche#define IN_11 0 // L298N Moteur #1 en 1 avant droite #define IN_12 1 // L298N #1 in 2 motor Front Right#define IN_13 2 // L298N #1 in 3 motor Back Right#define IN_14 4 // L298N #1 in 4 motor Back Right#define IN_21 14 // L298N # Moteur 2 en 1 Front Left#define IN_22 15 // L298N #2 in 2 motor Front Left#define IN_23 16 // L298N #2 in 3 motor Back Left#define IN_24 17 // L298N #2 in 4 motor Back Left/* -----( Déclarer des objets )-----*/RF24 radio(CE_PIN, CSN_PIN); // Créer une radio/*-----( Déclarer des variables )-----*/int joystick[6]; // Tableau de 6 éléments contenant Joystick lecturesint speedRight =0;int speedLeft =0;int xAxis, yAxis;// les quatre variables de bouton du joystickint buttonUp;int buttonRight;int buttonDown;int buttonLeft;void setup(){ pinMode(light_Front, SORTIR); pinMode(light_Back, OUTPUT); pinMode(horn_Buzz, SORTIE); pinMode(ENA_m1, SORTIE); pinMode(ENB_m1, SORTIE); pinMode(ENA_m2, SORTIE); pinMode(ENB_m2, SORTIE); pinMode(IN_11, SORTIE); pinMode(IN_12, SORTIE); pinMode(IN_13, SORTIE); pinMode(IN_14, SORTIE); pinMode(IN_21, SORTIE); pinMode(IN_22, SORTIE); pinMode(IN_23, SORTIE); pinMode(IN_24, OUTPUT);/* Serial.begin(9600); Serial.println ("Démarrage du récepteur Nrf24L01"); */ radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening();}void loop(){ if ( radio.available() ) { radio.read( joystick, sizeof(joystick) ); Axe x =joystick[0] ; Axe y =joystick[1] ; // les quatre variables de bouton du tableau de joystick int buttonUp =joystick[2]; int boutonDroit =​​joystick[3] ; int buttonDown =joystick[4] ; int boutonGauche =joystick[5] ; //Série.println(); // pour le débogage // Récupérer la charge utile des données - Code de débogage ci-dessous if (buttonUp ==HIGH){digitalWrite(horn_Buzz, LOW);} else {digitalWrite(horn_Buzz, HIGH);} if (buttonRight ==HIGH){digitalWrite( light_Front, LOW);} else {digitalWrite(light_Front, HIGH);} if (buttonLeft ==HIGH){digitalWrite(light_Back, LOW);} else {digitalWrite(light_Back, HIGH);}// axe Y utilisé pour avancer et contrôle arrière if (yAxis <470) { // Définir les moteurs droits en arrière digitalWrite (IN_11, LOW); digitalWrite(IN_12, HAUT); digitalWrite(IN_13, HAUT); digitalWrite(IN_14, LOW); // Définit les moteurs gauches en arrière digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); digitalWrite(IN_23, LOW); digitalWrite(IN_24, HAUT); // Convertir les lectures décroissantes de l'axe Y pour reculer de 470 à 0 en valeur 0 à 255 pour le signal PWM pour augmenter la vitesse du moteur speedRight =map(yAxis, 470, 0, 0, 255); speedLeft =map (axe y, 470, 0, 0, 255); } else if (yAxis> 550) { // Définit les moteurs de droite en avant digitalWrite (IN_11, HIGH); digitalWrite(IN_12, LOW); digitalWrite(IN_13, LOW); digitalWrite(IN_14, HAUT); // Définit les moteurs de gauche en avant digitalWrite(IN_21, LOW); digitalWrite(IN_22, HAUT); digitalWrite(IN_23, HAUT); digitalWrite(IN_24, LOW); // Convertir les lectures croissantes de l'axe Y pour aller de l'avant de 550 à 1023 en valeur 0 à 255 pour le signal PWM pour augmenter la vitesse du moteur speedRight =map(yAxis, 550, 1023, 0, 255); speedLeft =map (axe y, 550, 1023, 0, 255); } // Si le joystick reste au milieu les moteurs ne bougent pas else { speedRight =0; vitesseGauche =0 ; }// Axe X utilisé pour le contrôle gauche et droit if (xAxis <470) { // Convertir les lectures décroissantes de l'axe X de 470 à 0 en valeur croissante de 0 à 255 int xMapped =map(xAxis, 470, 0, 0 , 255); // Déplacer vers la gauche - diminuer la vitesse du moteur gauche, augmenter la vitesse du moteur droit speedLeft =speedLeft - xMapped; speedRight =speedRight + xMapped ; // Limite la plage de 0 à 255 if (speedLeft <0) { speedLeft =0; } if (speedRight> 255) { speedRight =255; } } if (xAxis> 550) { // Convertir les lectures croissantes de l'axe X de 550 à 1023 en valeur de 0 à 255 int xMapped =map(xAxis, 550, 1023, 0, 255); // Déplacer vers la droite - diminuer la vitesse du moteur à droite, augmenter la vitesse du moteur à gauche speedLeft =speedLeft + xMapped ; speedRight =speedRight - xMappé ; // Limite la plage de 0 à 255 if (speedLeft> 255) { speedLeft =255; } if (speedRight <0) { speedRight =0; } } // Empêche le bourdonnement à basse vitesse (Ajustez en fonction de vos moteurs. Mes moteurs n'ont pas pu démarrer si la valeur PWM était inférieure à la valeur de 70) if (speedLeft <70) { speedLeft =0; } if (speedRight <70) { speedRight =0; } analogWrite(ENA_m1, speedRight); // Envoie le signal PWM au moteur A analogWrite(ENB_m1, speedRight); analogWrite(ENA_m2, speedLeft); // Envoie le signal PWM au moteur B analogWrite(ENB_m2, speedLeft); /* Serial.print("X ="); Serial.print(xAxis); Serial.print(" Y ="); Serial.print(yAxis); Serial.print(" Up ="); Serial.print(joystick[2]); Serial.print(" Right ="); Serial.print(joystick[3]); Serial.print(" Bas ="); Serial.print(joystick[4]); Serial.print(" Gauche ="); Serial.println(joystick[5]); */ } } 
Joystick_nRF24.inoArduino
Code pour Joystick Controller/* Code émetteur-récepteur du module JoyStick - CONNEXIONS :Modules nRF24L01 Voir :1 - GND 2 - VCC 3.3V !!! PAS 5V 3 - CE à la broche Arduino 9 4 - CSN à la broche Arduino 10 5 - SCK à la broche Arduino 13 6 - MOSI à la broche Arduino 11 7 - MISO à la broche Arduino 12 8 - Broches du bouton par défaut NON UTILISÉES :Haut - broche 2 Droite - broche 3 Bas - broche 4 Gauche - broche 5 - Module Joystick analogique GND vers Arduino GND VCC vers Arduino +5V X Pot vers Arduino A0 Y Pot vers Arduino A1/*----- (Importer les bibliothèques nécessaires) ------ */#include #include "nRF24L01.h"#include "RF24.h"#define CE_PIN 9#define CSN_PIN 10#define xAxis 14 // A0 pour Arduino UNO#define yAxis 15 // A1 pour Arduino UNO// REMARQUE :le "LL" à la fin de la constante est de type "LongLong" const uint64_t pipe =0xE8E8F0F0E1LL ; // Définir le tube de transmission/*-----( Déclarer les objets )-----*/RF24 radio(CE_PIN, CSN_PIN); // Créer une radio/*-----( Déclarer des variables )-----*/int joystick[6]; // Tableau de 6 éléments contenant la lecture du joystick et 4 boutonsint buttonUp =2;int buttonRight =3;int buttonDown =4;int buttonLeft =5;void setup() { Serial.begin(9600); radio.begin(); radio.openWritingPipe(tuyau); radio.stopListening(); //déclare pinMode pour tous les boutons et l'état initial pinMode(buttonUp,INPUT_PULLUP); pinMode (boutonDroit, INPUT_PULLUP); pinMode (bouton vers le bas, INPUT_PULLUP); pinMode (bouton Gauche, INPUT_PULLUP); digitalWrite (bouton Haut, BAS); digitalWrite (boutonDroit, BAS); digitalWrite (bouton Bas, BAS); digitalWrite(buttonLeft,LOW);}void loop() { joystick[0] =analogRead(xAxis); joystick[1] =analogRead(yAxis); joystick[2] =digitalRead(buttonUp); joystick[3] =digitalRead(boutonDroit); joystick[4] =digitalRead(buttonDown); joystick[5] =digitalRead(boutonGauche); radio.write( joystick, sizeof(joystick) ); retard(20); Serial.print("X ="); Serial.print(analogRead(xAxis)); Serial.print(" Y ="); Serial.print(analogRead(yAxis)); Serial.print(" Up ="); Serial.print(digitalRead(buttonUp)); Serial.print(" Right ="); Serial.print(digitalRead(buttonRight)); Serial.print(" Bas ="); Serial.print(digitalRead(buttonDown)); Serial.print(" Gauche ="); Serial.println(digitalRead(buttonLeft));}

Schémas

rc_car_tp3A7JlpYw.fzz

Processus de fabrication

  1. Dés numériques Arduino
  2. Contrôleur de jeu Arduino
  3. Voiture RC contrôlée par joystick
  4. Iron Man
  5. Trouvez-moi
  6. Bras robotique Arduino imprimé en 3D
  7. Contrôle de l'humidificateur Arduino
  8. Compteur de voitures utilisant Arduino + Traitement + PHP
  9. NeoMatrix Arduino Pong