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

Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino

Composants et fournitures

Composant Quantité
Arduino UNO 1
Shield USB Host pour Arduino 1
Manette sans fil Xbox 360 1
Récepteur sans fil Xbox 360 1
Driver moteur L293D (ou SN754410) 1
Régulateur 7812 (12 V) 1
Régulateur 78S12 (12 V, courant élevé) 1
Interrupteur 1
Radiateurs pour régulateurs 1 lot
Connecteur d'alimentation (jack) 1
Connecteur pile 8×AA 1,5 V avec fiche 9 V 1

À propos du projet

1. Récupérez la voiture RC

Trouvez une vieille voiture RC (ici un monster truck). Retirez toute l'électronique d'origine, ne conservez que les fils des deux moteurs (propulsion et direction).

Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino

2. Arduino et shield USB Host

Empilez le shield USB Host sur l'Arduino UNO.

Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino

3. Fixez l'Arduino sur la voiture

Vissez l'ensemble sur le châssis, en réutilisant les trous de l'ancien circuit.

Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino

4. Réalisez le circuit de puissance

Sur plaque d'essai (ou circuit imprimé) : deux drivers L293D (un par moteur) et deux régulateurs de tension. Les régulateurs limitent la tension des piles. Utilisez 10 à 12 piles AA 1,5 V (15–18 V) pour une bonne autonomie. Le moteur demande ~2 A au démarrage, d'où le 78S12 (courant élevé) pour l'alimentation moteur. Voir le schéma ci-dessous.

Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino

5. Installez le circuit et le récepteur

Placez le circuit sur le châssis, reliez les sorties aux deux moteurs. Branchez le récepteur Xbox 360 sur le shield USB Host.

Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino

6. Le code

Basé sur la bibliothèque USB Host Shield Library 2.0 de Kristian Lauszus (GitHub). Le sketch gère jusqu'à 4 manettes sans fil.

Contrôles :

/* Sketch pour récepteur Xbox Wireless - Kristian Lauszus */
#include <XBOXRECV.h>
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
USB Usb;
XBOXRECV Xbox(&Usb);

#define motorPinOne 5   // PWM
#define motorPinTwo 6   // PWM
#define motor2PinOne 4
#define motor2PinTwo 7
#define BRAKE 2

int pulse = 0;
int forward = 0;
int brake_on = 0;

void setup() {
  TCCR1B = TCCR1B & 0b11111000 | 0x02; // Fréquence PWM ~3,9 kHz
  Serial.begin(115200);
  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while(1); // halt
  }
  Serial.print(F("\r\nXbox Wireless Receiver Library Started"));
  pinMode(motorPinOne, OUTPUT);
  pinMode(motorPinTwo, OUTPUT);
  pinMode(motor2PinOne, OUTPUT);
  pinMode(motor2PinTwo, OUTPUT);
  pinMode(BRAKE, OUTPUT);
  digitalWrite(BRAKE, LOW);
}

void loop() {
  Usb.Task();
  if (Xbox.XboxReceiverConnected) {
    for (uint8_t i = 0; i < 4; i++) {
      // Gâchettes analogiques
      if (Xbox.getButtonPress(L2, i)) {
        pulse = Xbox.getButtonPress(L2, i);
        forward = 0;
        clockwise();
      }
      if (Xbox.getButtonPress(R2, i)) {
        pulse = Xbox.getButtonPress(R2, i);
        forward = 1;
        counterClockwise();
      }
      // Joystick gauche -> direction
      if (abs(Xbox.getAnalogHat(LeftHatX, i)) > 7500) {
        if (Xbox.getAnalogHat(LeftHatX, i) > 26000) turn_right();
        else if (Xbox.getAnalogHat(LeftHatX, i) < -26000) turn_left();
        else center();
      }
      // Boutons
      if (Xbox.getButtonClick(B, i)) {
        digitalWrite(BRAKE, HIGH);
        brake_on = 1;
        pulse = 100;
        if (forward) clockwise(); else counterClockwise();
      }
      if (Xbox.getButtonClick(Y, i)) motors_stop();
      // ... autres boutons (START, BACK, A, X, etc.) pour debug
    }
  }
  delay(1);
}

void clockwise() {      // marche avant
  analogWrite(motorPinOne, pulse);
  analogWrite(motorPinTwo, 0);
  if (brake_on) { delay(600); digitalWrite(BRAKE, LOW); brake_on = 0; pulse = 0; }
}
void counterClockwise() { // marche arrière
  analogWrite(motorPinOne, 0);
  analogWrite(motorPinTwo, pulse);
  if (brake_on) { delay(600); digitalWrite(BRAKE, LOW); brake_on = 0; pulse = 0; }
}
void turn_left()  { digitalWrite(motor2PinOne, HIGH); digitalWrite(motor2PinTwo, LOW); }
void turn_right() { digitalWrite(motor2PinOne, LOW);  digitalWrite(motor2PinTwo, HIGH); }
void motors_stop() { analogWrite(motorPinOne, 0); analogWrite(motorPinTwo, 0); pulse = 0; }
void center() { digitalWrite(motor2PinOne, LOW); digitalWrite(motor2PinTwo, LOW); }

Ressources

Processus de fabrication

  1. Construire un robot Raspberry Pi piloté par Bluetooth avec retour audio
  2. Lampe de table RGB à commande gestuelle – Éclairage interactif, mains libres
  3. Contrôler des LED avec Alexa via Raspberry Pi – Guide Pas à Pas
  4. Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega
  5. Contrôler 2 moteurs pas-à-pas avec Arduino Nano et joystick – Tutoriel Visuino
  6. Robot commandé par la voix avec Arduino Nano et Bluetooth
  7. Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP
  8. PiBot : Robot pianiste Arduino pour performance musicale de précision
  9. Wi-Servo : Contrôlez des servomoteurs via Wi-Fi depuis un navigateur Web