top of page
Rechercher

Réaliser un châssis 4 roues mecanum

  • L C
  • 27 déc. 2024
  • 7 min de lecture

Dernière mise à jour : 10 janv.

Matériel


  • 1 chassis Dagu HC309

  • 2 contrôleurs moteur L298N

  • 1 boitier pour 6 piles AA

  • 6 piles AA

  • 1 carte Arduino R3 Uno

  • 1 prototype expansion

  • 1 interrupteur 2 bornes

  • 1 bte entretoises nylon M3

  • 1 boîte vis écrous M3

  • 1 ensemble pinces Brucelles

  • 1 lot fils Dupont M-F M-M

  • Fils Dupont rouges et noirs

  • 1 petit tournevis cruciforme

  • 1 petit tournevis plat

  • 1 pinces à dénuder les fils

  • 1 petit domino

  • 1 kit de soudure


Caractéristiques du chassis Dagu HC309

Alimentation moteurs: 7,2 Vcc

Vitesse de rotation moteur: 280 tr/min

Puissance par moteur: 0,7 W

Matériau: acrylique

Charge maxi: 3 kg

Vitesse: 0,9 m/s maxi

Dimensions: 185 x 190 x 61 mm

Poids: 710 g


Les 8 directions possibles avec les roues mecanum


Montage des L298N


Branchements L298N - Carte Arduino



Branchements sur la carte Arduino


Les numéros correspondent aux pins digitaux de la carte Arduino


L298N droit


L298N gauche


ENA et ENB permettent de contrôler la vitesse des moteurs.

Leur programmation est prévue dans le sketch mais ils ne sont pas branchés dans ce projet.

Ils doivent être connectés aux pin digitaux notés ~ de la carte Arduino.


Sketch pour faire tourner les 4 moteurs en marche avant


/ moteur DA : avant droit

// moteur DB : arrière droit

// moteur GA : avant gauche

// moteur GB : arrière gauche


void setup (){


// moteur DA

pinMode (3, OUTPUT);

pinMode (2, OUTPUT);


// moteur DB

pinMode (6, OUTPUT);

pinMode (5, OUTPUT);


// moteur GA

pinMode (9, OUTPUT);

pinMode (8, OUTPUT);


// moteur GB

pinMode (12, OUTPUT);

pinMode (11, OUTPUT);


}


void loop (){


//sens moteur DA

digitalWrite (2, HIGH);

digitalWrite (3, LOW);

//sens moteur DB

digitalWrite (6, HIGH);

digitalWrite (5, LOW);


//sens moteur GA

digitalWrite (11, HIGH);

digitalWrite (12, LOW);

//sens moteur GB

digitalWrite (9, HIGH);

digitalWrite (8, LOW);


}


Montage du Bluetooth HC-05


⚠️ Attention il faudra bien penser à inverser les broches Rx et Tx entre la carte Arduino et le module Bluetooth






IMPORTANT


⚠️ Il faut retirer le module Bluetooth AVANT de televerser le sketch dans la carte Arduino et le replacer ensuite.


Sketch Avec Bluetooth


// DA moteur droit avant
// DB moteur droit arrière
// GA moteur gauche avant
// GB moteur gauche arrière

// Télécommande pavé numérique
//     1     2     3
//
//     4     5     6
//
//     7     8     9
//
// 1 tourner à gauche : gauche - led verte allumée
// 2 marche avant : avancer - led verte allumée
// 3 tourner à droite :droite - led verte allumée
// 4 déplacement lateral gauche - led verte allumée
// 5 arrêt : arreter - ledrouge allumée
// 6 déplacement latéral droit - led verte allumée
// 7 rotation gauche - led verte allumée
// 8 marche arrière : reculer - led verte allumée et led rouge allumée
// 9 rotation  - led verte alluméedroite

// Led rouge sur le pin 13 de l'Arduino
const int ledrouge = 13;
// Led verte sur le pin 10 de l'Arduino
const int ledverte = 10;

// L298N droit, moteur avant droit
#define DIN4 3
#define DIN3 2

// L298N droit, moteur arrière droit
#define DIN2 6
#define DIN1 5

// L298N gauche, moteur avant gauche
#define GIN4 12
#define GIN3 11

// L298N gauche, moteur arrière gauche
#define GIN2 9
#define GIN1 8

// code envoyé par le Bluetooth
String message;
 
void setup(){
  // Leds rouge et verte
  pinMode(ledrouge, OUTPUT);
  pinMode(ledverte, OUTPUT);

  // Bluetooth
  Serial.begin(9600);

  // moteur DA
  pinMode (4, OUTPUT);
  pinMode (3, OUTPUT);
  pinMode (DIN3, OUTPUT);

  // moteur DB
  pinMode (7, OUTPUT);
  pinMode (DIN2, OUTPUT);
  pinMode (DIN1, OUTPUT);

  // moteur GA
  pinMode (10, OUTPUT);
  pinMode (GIN2, OUTPUT);
  pinMode (GIN1, OUTPUT);

  // moteur GB
  pinMode (13, OUTPUT);
  pinMode (GIN4, OUTPUT);
  pinMode (GIN3, OUTPUT);

}
 
// 1 gauche
void tournergauche (){

  // Led verte allumée, Led rouge éteinte
  digitalWrite(ledrouge,LOW);
  digitalWrite(ledverte,HIGH);

  //moteur DA marche avant
  digitalWrite (DIN4, HIGH);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB marche avant
  digitalWrite (DIN1, HIGH);
  digitalWrite (DIN2, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA marche arrière
  digitalWrite (GIN4, LOW);
  digitalWrite (GIN3, HIGH);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB marche arrière
  digitalWrite (GIN1, LOW);
  digitalWrite (GIN2, HIGH);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

  // les moteurs tournent pendant 0.2 seconde
  delay(200);
  // puis ils s'arrêtent

  //moteur DA arrêté
  digitalWrite (DIN4, LOW);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB arrêté
  digitalWrite (DIN1, LOW);
  digitalWrite (DIN2, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA arrêté
  digitalWrite (GIN4, LOW);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB arrêté
  digitalWrite (GIN1, LOW);
  digitalWrite (GIN2, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 2 avancer
void avancer (){

// Led verte allumée, Led rouge éteinte
  digitalWrite(ledrouge,LOW);
  digitalWrite(ledverte,HIGH);

  //moteur DA marche avant
  digitalWrite (DIN4, HIGH);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB marche avant
  digitalWrite (DIN1, HIGH);
  digitalWrite (DIN2, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA marche avant
  digitalWrite (GIN4, HIGH);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB marche avant
  digitalWrite (GIN1, HIGH);
  digitalWrite (GIN2, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 3 droite
void tournerdroite (){

// Led verte allumée, Led rouge éteinte
  digitalWrite(ledrouge,LOW);
  digitalWrite(ledverte,HIGH);

  //moteur DA marche arrière
  digitalWrite (DIN4, LOW);
  digitalWrite (DIN3, HIGH);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB marche arrière
  digitalWrite (DIN1, LOW);
  digitalWrite (DIN2, HIGH);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA marche avant
  digitalWrite (GIN4, HIGH);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB marche avant
  digitalWrite (GIN1, HIGH);
  digitalWrite (GIN2, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100);

  // les moteurs tournent pendant 0.2 seconde
  delay(200);
  // puis ils s'arrêtent

  //moteur DA arrêté
  digitalWrite (DIN4, LOW);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB arrêté
  digitalWrite (DIN1, LOW);
  digitalWrite (DIN2, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA arrêté
  digitalWrite (GIN4, LOW);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB arrêté
  digitalWrite (GIN1, LOW);
  digitalWrite (GIN2, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 4 latéral gauche 90
void lateralgauche90 (){

// Led verte allumée, Led rouge éteinte
  digitalWrite(ledrouge,LOW);
  digitalWrite(ledverte,HIGH);

  //moteur DA marche avant
  digitalWrite (DIN4, HIGH);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB marche arrière
  digitalWrite (DIN1, LOW);
  digitalWrite (DIN2, HIGH);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA marche arrière
  digitalWrite (GIN4, LOW);
  digitalWrite (GIN3, HIGH);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB marche avant
  digitalWrite (GIN1, HIGH);
  digitalWrite (GIN2, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 5 arreter
void arreter (){

// Led verte éteinte, Led rouge allumée
  digitalWrite(ledrouge,HIGH);
  digitalWrite(ledverte,LOW);

  //moteur DA arrêté
  digitalWrite (DIN4, LOW);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB arrêté
  digitalWrite (DIN2, LOW);
  digitalWrite (DIN1, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA arrêté
  digitalWrite (GIN4, LOW);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB arrêté
  digitalWrite (GIN2, LOW);
  digitalWrite (GIN1, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 6 latéral droite 90
void lateraldroite90 (){

// Led verte allumée, Led rouge éteinte
  digitalWrite(ledrouge,LOW);
  digitalWrite(ledverte,HIGH);

  //moteur DA marche arrière
  digitalWrite (DIN4, LOW);
  digitalWrite (DIN3, HIGH);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB marche avant
  digitalWrite (DIN1, HIGH);
  digitalWrite (DIN2, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA marche avant
  digitalWrite (GIN4, HIGH);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB marche arrière
  digitalWrite (GIN1, LOW);
  digitalWrite (GIN2, HIGH);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 7 latéral gauche 45
void lateralgauche45 (){

// Led verte allumée, Led rouge éteinte
  digitalWrite(ledrouge,LOW);
  digitalWrite(ledverte,HIGH);

  //moteur DA marche avant
  digitalWrite (DIN4, HIGH);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB arrêté
  digitalWrite (DIN1, LOW);
  digitalWrite (DIN2, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA arrêté
  digitalWrite (GIN4, LOW);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB marche avant
  digitalWrite (GIN1, HIGH);
  digitalWrite (GIN2, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 8 reculer
void reculer (){

// Led verte allumée, Led rouge allumée
  digitalWrite(ledrouge,HIGH);
  digitalWrite(ledverte,HIGH);

  //moteur DA marche arrière
  digitalWrite (DIN4, LOW);
  digitalWrite (DIN3, HIGH);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB marche arrière
  digitalWrite (DIN1, LOW);
  digitalWrite (DIN2, HIGH);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA marche arrière
  digitalWrite (GIN4, LOW);
  digitalWrite (GIN3, HIGH);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB marche arrière
  digitalWrite (GIN1, LOW);
  digitalWrite (GIN2, HIGH);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

// 9 lateral droite 45
void lateraldroite45 (){
 
// Led verte allumée, Led rouge éteinte
  digitalWrite(ledrouge,LOW);
  digitalWrite(ledverte,HIGH);

  //moteur DA arrêté
  digitalWrite (DIN4, LOW);
  digitalWrite (DIN3, LOW);
  //Vitesse moteur DA
  // analogWrite (4, 100); 

  //moteur DB marche avant
  digitalWrite (DIN1, HIGH);
  digitalWrite (DIN2, LOW);
  //Vitesse moteur DB
  // analogWrite (7, 100); 

  //moteur GA marche avant
  digitalWrite (GIN4, HIGH);
  digitalWrite (GIN3, LOW);
  //Vitesse moteur GA
  // analogWrite (13, 100); 

  //moteur GB arrêté
  digitalWrite (GIN1, LOW);
  digitalWrite (GIN2, LOW);
  //Vitesse moteur GB
  // analogWrite (10, 100); 

}

void loop(){

  // tester si un code Bluetooth a été reçu 
  if (Serial.available() > 0 ) {   
    
    // lire le code envoyé par le Bluetooth
    message=Serial.readString();   
    
    if ( message == "1" ) tournergauche (); 
    if ( message == "2" ) avancer ();
    if ( message == "3" ) tournerdroite ();
    if ( message == "4" ) lateralgauche90 ();
    if ( message == "5" ) arreter ();
    if ( message == "6" ) lateraldroite90 ();
    if ( message == "7" ) lateralgauche45 ();
    if ( message == "8" ) reculer();
    if ( message == "9" ) lateraldroite45 ();
      
  }

}

Application Android Arduino bluetooth controller


Téléchargement


Menu



Affectation des touches


1 : tourner à gauche

2 : marche avant

3 : tourner à droite

4 : lateral gauche 90

5 : arreter

6 : lateral droite 90

7 : lateral gauche 45

8 : marche arrière

9 : lateral droite 45



bottom of page