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 RC 4 roues motrices Arduino : Liste complète des pièces et guide de construction

Composants et fournitures

Arduino UNO × 2
Module transceiver nRF24L01+ (RP-SMA) SparkFun × 2
Shield Joystick Funduino V1.A × 1
Double driver de moteur L298 SparkFun × 2
Kit châssis voiture robot 4WD intelligente × 1
LED (générique) × 3
Résistance 221 Ω × 2
Plaque d'essai (breadboard) générique × 2
Batteries 18650 × 2
Powerbank × 1
Fils de connexion (jumper wires) génériques × 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Histoire

Bonjour à tous ! Voici mon prochain projet : une voiture RC 4WD Arduino avec contrôleur à joystick, ou comment il est facile de contrôler une voiture intelligente 4WD Arduino avec un joystick analogique.

Cette voiture RC contrôlée par joystick utilise le nRF24L01 comme émetteur et récepteur. Elle a une portée jusqu'à 1 kilomètre en espace ouvert. C'est aussi très simple et facile à réaliser.

1. Contrôleur Joystick

Composants pour le joystick :

Le shield joystick se place au-dessus de votre Arduino et le transforme en contrôleur simple. 7 boutons poussoirs momentanés (4 gros boutons, 2 petits boutons, et un bouton de sélection du joystick) et un joystick à pouce à deux axes donnent à votre Arduino une fonctionnalité au niveau des vieilles manettes Nintendo. Cette unité offre également des interfaces pour écran LCD Nokia 5110 et module nRF24L01.

Caractéristiques :

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

2. Contrôleur Joystick (détails)

Le shield joystick possède 4 gros boutons + 2 petits boutons + bouton de sélection du joystick et un joystick à pouce à deux axes (axe X de 0 à 1023, axe Y de 0 à 1023). Le shield se place sur votre Arduino et le transforme en contrôleur simple. Dans mon sketch : Bouton Haut = Buzzer (klaxon), Bouton Droite = feu avant (LED + résistance 200 Ω), Bouton Gauche = feux arrière (LEDs + résistance 200 Ω). Les autres boutons ne sont pas utilisés.

3. Voiture RC 4WD Arduino

Faites les connexions comme indiqué dans le schéma de câblage ci-dessus.

Note : Avant de téléverser le code, vous devez déconnecter les fils de liaison de la carte Arduino Uno (broches 0, 1).

Une fois toutes les étapes correctement effectuées, la voiture est prête à partir !

Après avoir alimenté la voiture Arduino et le contrôleur joystick, vous pouvez utiliser le joystick pour contrôler la voiture : en bougeant le joystick vers l'avant et l'arrière, la voiture avancera ou reculera, et en le bougeant à gauche et à droite, la voiture tournera à gauche et à droite.

Code

Car_nRF24.ino (Arduino - Code pour la voiture RC)

/* Code récepteur module Joystick - CONNEXIONS: Modules nRF24L01
1 - GND
2 - VCC 3.3V !!! PAS 5V
3 - CE vers broche Arduino 6
4 - CSN vers broche Arduino 8
5 - SCK vers broche Arduino 13
6 - MOSI vers broche Arduino 11
7 - MISO vers broche Arduino 12
8 - INUTILISÉ */
#include 
#include 
#include 

#define CE_PIN 6
#define CSN_PIN 8
const uint64_t pipe = 0xE8E8F0F0E1LL;

#define light_Front 18 // LED Avant Droite broche A4 pour Arduino Uno
#define light_Back 19  // LED Arrière Droite broche A5 pour Arduino Uno
#define horn_Buzz 7
#define ENA_m1 3  // Enable/vitesse moteur Avant Droite
#define ENB_m1 5  // Enable/vitesse moteur Arrière Droite
#define ENA_m2 9  // Enable/vitesse moteur Avant Gauche
#define ENB_m2 10 // Enable/vitesse moteur Arrière Gauche
#define IN_11 0   // L298N #1 in 1 moteur Avant Droite
#define IN_12 1   // L298N #1 in 2 moteur Avant Droite
#define IN_13 2   // L298N #1 in 3 moteur Arrière Droite
#define IN_14 4   // L298N #1 in 4 moteur Arrière Droite
#define IN_21 14  // L298N #2 in 1 moteur Avant Gauche
#define IN_22 15  // L298N #2 in 2 moteur Avant Gauche
#define IN_23 16  // L298N #2 in 3 moteur Arrière Gauche
#define IN_24 17  // L298N #2 in 4 moteur Arrière Gauche

RF24 radio(CE_PIN, CSN_PIN);
int joystick[6];
int speedRight = 0, speedLeft = 0;
int xAxis, yAxis;
int buttonUp, buttonRight, buttonDown, buttonLeft;

void setup() {
  pinMode(light_Front, OUTPUT); pinMode(light_Back, OUTPUT); pinMode(horn_Buzz, OUTPUT);
  pinMode(ENA_m1, OUTPUT); pinMode(ENB_m1, OUTPUT); pinMode(ENA_m2, OUTPUT); pinMode(ENB_m2, OUTPUT);
  pinMode(IN_11, OUTPUT); pinMode(IN_12, OUTPUT); pinMode(IN_13, OUTPUT); pinMode(IN_14, OUTPUT);
  pinMode(IN_21, OUTPUT); pinMode(IN_22, OUTPUT); pinMode(IN_23, OUTPUT); pinMode(IN_24, OUTPUT);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
}

void loop() {
  if (radio.available()) {
    radio.read(joystick, sizeof(joystick));
    xAxis = joystick[0]; yAxis = joystick[1];
    buttonUp = joystick[2]; buttonRight = joystick[3];
    buttonDown = joystick[4]; buttonLeft = joystick[5];

    // Boutons
    digitalWrite(horn_Buzz, buttonUp == HIGH ? LOW : HIGH);
    digitalWrite(light_Front, buttonRight == HIGH ? LOW : HIGH);
    digitalWrite(light_Back, buttonLeft == HIGH ? LOW : HIGH);

    // Axe Y : avance/recule
    if (yAxis < 470) { // Recule
      digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH);
      digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW);
      digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW);
      digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH);
      speedRight = map(yAxis, 470, 0, 0, 255);
      speedLeft = map(yAxis, 470, 0, 0, 255);
    } else if (yAxis > 550) { // Avance
      digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW);
      digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH);
      digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH);
      digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW);
      speedRight = map(yAxis, 550, 1023, 0, 255);
      speedLeft = map(yAxis, 550, 1023, 0, 255);
    } else {
      speedRight = 0; speedLeft = 0;
    }

    // Axe X : gauche/droite
    if (xAxis < 470) {
      int xMapped = map(xAxis, 470, 0, 0, 255);
      speedLeft -= xMapped; speedRight += xMapped;
      if (speedLeft < 0) speedLeft = 0;
      if (speedRight > 255) speedRight = 255;
    }
    if (xAxis > 550) {
      int xMapped = map(xAxis, 550, 1023, 0, 255);
      speedLeft += xMapped; speedRight -= xMapped;
      if (speedLeft > 255) speedLeft = 255;
      if (speedRight < 0) speedRight = 0;
    }

    // Éviter le bourdonnement à basse vitesse
    if (speedLeft < 70) speedLeft = 0;
    if (speedRight < 70) speedRight = 0;

    analogWrite(ENA_m1, speedRight); analogWrite(ENB_m1, speedRight);
    analogWrite(ENA_m2, speedLeft); analogWrite(ENB_m2, speedLeft);
  }
}

Joystick_nRF24.ino (Arduino - Code pour le contrôleur Joystick)

/* Code émetteur module Joystick - CONNEXIONS: Modules nRF24L01
1 - GND
2 - VCC 3.3V !!! PAS 5V
3 - CE vers broche Arduino 9
4 - CSN vers broche Arduino 10
5 - SCK vers broche Arduino 13
6 - MOSI vers broche Arduino 11
7 - MISO vers broche Arduino 12
8 - INUTILISÉ
Boutons par défaut: Haut - broche 2, Droite - broche 3, Bas - broche 4, Gauche - broche 5
Joystick analogique: GND vers Arduino GND, VCC vers Arduino +5V, X vers A0, Y vers A1 */
#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
const uint64_t pipe = 0xE8E8F0F0E1LL;

RF24 radio(CE_PIN, CSN_PIN);
int joystick[6];
int buttonUp = 2, buttonRight = 3, buttonDown = 4, buttonLeft = 5;

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
  radio.stopListening();
  pinMode(buttonUp, INPUT_PULLUP); pinMode(buttonRight, INPUT_PULLUP);
  pinMode(buttonDown, INPUT_PULLUP); pinMode(buttonLeft, INPUT_PULLUP);
  digitalWrite(buttonUp, LOW); digitalWrite(buttonRight, LOW);
  digitalWrite(buttonDown, LOW); digitalWrite(buttonLeft, LOW);
}

void loop() {
  joystick[0] = analogRead(xAxis);
  joystick[1] = analogRead(yAxis);
  joystick[2] = digitalRead(buttonUp);
  joystick[3] = digitalRead(buttonRight);
  joystick[4] = digitalRead(buttonDown);
  joystick[5] = digitalRead(buttonLeft);
  radio.write(joystick, sizeof(joystick));
  delay(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(" Down = "); Serial.print(digitalRead(buttonDown));
  Serial.print(" Left = "); Serial.println(digitalRead(buttonLeft));
}

Schémas

Fichier : rc_car_tp3A7JlpYw.fzz

Processus de fabrication

  1. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  2. Manette de jeu USB Arduino DIY – Construisez votre propre gamepad haute performance
  3. Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino
  4. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  5. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  6. Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
  7. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  8. Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP
  9. Jeu Pong sur Matrice NeoPixel avec Arduino Nano